Compare commits
24 Commits
revert-pyt
...
docker-dry
Author | SHA1 | Date | |
---|---|---|---|
9a95baf106
|
|||
3d128d771c | |||
6b7517fc7a | |||
5ceb361da3 | |||
4379a06f26 | |||
c43f375e4b | |||
621a90b8ab | |||
033dee7836 | |||
ca81e8bf70
|
|||
d507a20a93 | |||
3f2c23c386
|
|||
b46ac5e379 | |||
fa4429b6ef | |||
7a0f2434db | |||
8c3fe3fe7d | |||
56ade6de68 | |||
28cf714217 | |||
9ff56f6676 | |||
2412df4960
|
|||
469ef511d6 | |||
47d2c94b79
|
|||
384dd82454 | |||
b0dcfacd25
|
|||
86edb246bf |
14
.drone.yml
14
.drone.yml
@ -15,7 +15,7 @@ trigger:
|
||||
|
||||
steps:
|
||||
- name: install-lint-test
|
||||
image: python:3.8.19-alpine@sha256:3bd7ea88cb637e09d6c7de24c5394657163a85c2be82bfebe0305cf07f8de1ea
|
||||
image: python:3.8.19-alpine@sha256:c2f31d16113f2c1152934d321855c9f0169143dff96d716dada19e0047d6ddee
|
||||
env:
|
||||
PYROOT: '/pyroot'
|
||||
PYTHONUSERBASE: '/pyroot'
|
||||
@ -26,6 +26,16 @@ steps:
|
||||
- pipenv run flake8
|
||||
- pipenv run reuse lint
|
||||
- pipenv run python -m unittest discover ki
|
||||
- name: docker-dry-run
|
||||
image: plugins/docker:20.18.4@sha256:a8d3d86853c721492213264815f1d00d3ed13f42f5c1855a02f47fa4d5f1e042
|
||||
settings:
|
||||
registry: git.wtf-eg.de
|
||||
repo: git.wtf-eg.de/kompetenzinventar/backend
|
||||
target: ki-backend
|
||||
dry_run: true
|
||||
when:
|
||||
event:
|
||||
- pull_request
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
@ -93,7 +103,7 @@ trigger:
|
||||
|
||||
steps:
|
||||
- name: install-lint-test
|
||||
image: python:3.8.19-alpine@sha256:3bd7ea88cb637e09d6c7de24c5394657163a85c2be82bfebe0305cf07f8de1ea
|
||||
image: python:3.8.19-alpine@sha256:c2f31d16113f2c1152934d321855c9f0169143dff96d716dada19e0047d6ddee
|
||||
env:
|
||||
PYROOT: '/pyroot'
|
||||
PYTHONUSERBASE: '/pyroot'
|
||||
|
1
.python-version
Normal file
1
.python-version
Normal file
@ -0,0 +1 @@
|
||||
3.8.19
|
@ -11,6 +11,6 @@ Files: Pipfile.lock migrations/*
|
||||
Copyright: WTF Kooperative eG <https://wtf-eg.de/>
|
||||
License: AGPL-3.0-or-later
|
||||
|
||||
Files: renovate.json
|
||||
Files: renovate.json .python-version
|
||||
Copyright: WTF Kooperative eG <https://wtf-eg.de/>
|
||||
License: AGPL-3.0-or-later
|
||||
|
5
.yapfignore
Normal file
5
.yapfignore
Normal file
@ -0,0 +1,5 @@
|
||||
# SPDX-FileCopyrightText: WTF Kooperative eG <https://wtf-eg.de/>
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
migrations/*.py
|
@ -2,7 +2,7 @@
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
FROM python:3.8.19-alpine@sha256:3bd7ea88cb637e09d6c7de24c5394657163a85c2be82bfebe0305cf07f8de1ea AS builder
|
||||
FROM python:3.8.19-alpine@sha256:c2f31d16113f2c1152934d321855c9f0169143dff96d716dada19e0047d6ddee AS builder
|
||||
|
||||
ENV PYROOT=/pyroot
|
||||
ENV PYTHONUSERBASE=$PYROOT
|
||||
@ -20,7 +20,7 @@ RUN PIP_USER=1 PIP_IGNORE_INSTALLED=1 pipenv install --system --deploy --ignore-
|
||||
RUN pip3 uninstall --yes pipenv
|
||||
|
||||
|
||||
FROM python:3.8.19-alpine@sha256:3bd7ea88cb637e09d6c7de24c5394657163a85c2be82bfebe0305cf07f8de1ea AS ki-backend
|
||||
FROM python:3.8.19-alpine@sha256:c2f31d16113f2c1152934d321855c9f0169143dff96d716dada19e0047d6ddee AS ki-backend
|
||||
|
||||
ENV PYROOT=/pyroot
|
||||
ENV PYTHONUSERBASE=$PYROOT
|
||||
|
12
Pipfile
12
Pipfile
@ -8,21 +8,21 @@ verify_ssl = true
|
||||
name = "pypi"
|
||||
|
||||
[packages]
|
||||
flask = "==2.0.3"
|
||||
python-dotenv = "==0.17.1"
|
||||
flask = "==2.3.3"
|
||||
python-dotenv = "==0.21.1"
|
||||
flask-migrate = "==3.0.1"
|
||||
flask-sqlalchemy = "==2.5.1"
|
||||
sqlalchemy = "==1.4.53"
|
||||
waitress = "==2.1.2"
|
||||
pyyaml = "==6.0.2"
|
||||
flask-cors = "==3.0.10"
|
||||
flask-cors = "==5.0.0"
|
||||
ldap3 = "==2.9.1"
|
||||
pymysql = "==1.0.3"
|
||||
pymysql = "==1.1.1"
|
||||
werkzeug = "==2.3.8"
|
||||
|
||||
[dev-packages]
|
||||
flake8 = "==3.9.2"
|
||||
yapf = "==0.31.0"
|
||||
flake8 = "==7.1.1"
|
||||
yapf = "==0.40.2"
|
||||
pre-commit = "==2.13.0"
|
||||
reuse = "==0.14.0"
|
||||
|
||||
|
135
Pipfile.lock
generated
135
Pipfile.lock
generated
@ -1,7 +1,7 @@
|
||||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "3e2ddadb687d67eee6974c15de24ee02b77941eae9901b4939249f7e2881110e"
|
||||
"sha256": "c7c51d821de23f17e5623bd82defc446f61a8ad85a86a7206dc97d1c4d4f2b10"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
@ -24,6 +24,14 @@
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==1.13.2"
|
||||
},
|
||||
"blinker": {
|
||||
"hashes": [
|
||||
"sha256:1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01",
|
||||
"sha256:8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==1.8.2"
|
||||
},
|
||||
"click": {
|
||||
"hashes": [
|
||||
"sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28",
|
||||
@ -34,20 +42,20 @@
|
||||
},
|
||||
"flask": {
|
||||
"hashes": [
|
||||
"sha256:59da8a3170004800a2837844bfa84d49b022550616070f7cb1a659682b2e7c9f",
|
||||
"sha256:e1120c228ca2f553b470df4a5fa927ab66258467526069981b3eb0a91902687d"
|
||||
"sha256:09c347a92aa7ff4a8e7f3206795f30d826654baf38b873d0744cd571ca609efc",
|
||||
"sha256:f69fcd559dc907ed196ab9df0e48471709175e696d6e698dd4dbe940f96ce66b"
|
||||
],
|
||||
"index": "pypi",
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==2.0.3"
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==2.3.3"
|
||||
},
|
||||
"flask-cors": {
|
||||
"hashes": [
|
||||
"sha256:74efc975af1194fc7891ff5cd85b0f7478be4f7f59fe158102e91abb72bb4438",
|
||||
"sha256:b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de"
|
||||
"sha256:5aadb4b950c4e93745034594d9f3ea6591f734bb3662e16e255ffbf5e89c88ef",
|
||||
"sha256:b9e307d082a9261c100d8fb0ba909eec6a228ed1b60a8315fd85f783d61910bc"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==3.0.10"
|
||||
"version": "==5.0.0"
|
||||
},
|
||||
"flask-migrate": {
|
||||
"hashes": [
|
||||
@ -135,7 +143,7 @@
|
||||
"sha256:66f342cc6ac9818fc6ff340576acd24d65ba0b3efabb2b4ac08b598965a4a2f1",
|
||||
"sha256:9a547d3bc3608b025f93d403fdd1aae741c24fbb8314df4b155675742ce303c5"
|
||||
],
|
||||
"markers": "python_version < '3.9'",
|
||||
"markers": "python_version < '3.10'",
|
||||
"version": "==8.4.0"
|
||||
},
|
||||
"importlib-resources": {
|
||||
@ -257,20 +265,21 @@
|
||||
},
|
||||
"pymysql": {
|
||||
"hashes": [
|
||||
"sha256:3dda943ef3694068a75d69d071755dbecacee1adf9a1fc5b206830d2b67d25e8",
|
||||
"sha256:89fc6ae41c0aeb6e1f7710cdd623702ea2c54d040565767a78b00a5ebb12f4e5"
|
||||
"sha256:4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c",
|
||||
"sha256:e127611aaf2b417403c60bf4dc570124aeb4a57f5f37b8e95ae399a42f904cd0"
|
||||
],
|
||||
"index": "pypi",
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==1.0.3"
|
||||
"version": "==1.1.1"
|
||||
},
|
||||
"python-dotenv": {
|
||||
"hashes": [
|
||||
"sha256:00aa34e92d992e9f8383730816359647f358f4a3be1ba45e5a5cefd27ee91544",
|
||||
"sha256:b1ae5e9643d5ed987fc57cc2583021e38db531946518130777734f9589b3141f"
|
||||
"sha256:1c93de8f636cde3ce377292818d0e440b6e45a82f215c3744979151fa8151c49",
|
||||
"sha256:41e12e0318bebc859fcc4d97d4db8d20ad21721a6aa5047dd59f090391cb549a"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.17.1"
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==0.21.1"
|
||||
},
|
||||
"pyyaml": {
|
||||
"hashes": [
|
||||
@ -332,14 +341,6 @@
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==6.0.2"
|
||||
},
|
||||
"six": {
|
||||
"hashes": [
|
||||
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
|
||||
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==1.16.0"
|
||||
},
|
||||
"sqlalchemy": {
|
||||
"hashes": [
|
||||
"sha256:0465b8a68f8f4de754c1966c45b187ac784ad97bc9747736f913130f0e1adea0",
|
||||
@ -419,11 +420,11 @@
|
||||
},
|
||||
"zipp": {
|
||||
"hashes": [
|
||||
"sha256:0145e43d89664cfe1a2e533adc75adafed82fe2da404b4bbb6b026c0157bdb31",
|
||||
"sha256:58da6168be89f0be59beb194da1250516fdaa062ccebd30127ac65d30045e10d"
|
||||
"sha256:9960cd8967c8f85a56f920d5d507274e74f9ff813a0ab8889a5b5be2daf44064",
|
||||
"sha256:c22b14cc4763c5a5b04134207736c107db42e9d3ef2d9779d465f5f1bcba572b"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==3.20.0"
|
||||
"version": "==3.20.1"
|
||||
}
|
||||
},
|
||||
"develop": {
|
||||
@ -443,11 +444,11 @@
|
||||
},
|
||||
"certifi": {
|
||||
"hashes": [
|
||||
"sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b",
|
||||
"sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"
|
||||
"sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8",
|
||||
"sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==2024.7.4"
|
||||
"version": "==2024.8.30"
|
||||
},
|
||||
"cfgv": {
|
||||
"hashes": [
|
||||
@ -578,12 +579,12 @@
|
||||
},
|
||||
"flake8": {
|
||||
"hashes": [
|
||||
"sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b",
|
||||
"sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"
|
||||
"sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38",
|
||||
"sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"
|
||||
],
|
||||
"index": "pypi",
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||
"version": "==3.9.2"
|
||||
"markers": "python_full_version >= '3.8.1'",
|
||||
"version": "==7.1.1"
|
||||
},
|
||||
"identify": {
|
||||
"hashes": [
|
||||
@ -595,11 +596,19 @@
|
||||
},
|
||||
"idna": {
|
||||
"hashes": [
|
||||
"sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc",
|
||||
"sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"
|
||||
"sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac",
|
||||
"sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"
|
||||
],
|
||||
"markers": "python_version >= '3.5'",
|
||||
"version": "==3.7"
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==3.8"
|
||||
},
|
||||
"importlib-metadata": {
|
||||
"hashes": [
|
||||
"sha256:66f342cc6ac9818fc6ff340576acd24d65ba0b3efabb2b4ac08b598965a4a2f1",
|
||||
"sha256:9a547d3bc3608b025f93d403fdd1aae741c24fbb8314df4b155675742ce303c5"
|
||||
],
|
||||
"markers": "python_version < '3.10'",
|
||||
"version": "==8.4.0"
|
||||
},
|
||||
"jinja2": {
|
||||
"hashes": [
|
||||
@ -685,10 +694,11 @@
|
||||
},
|
||||
"mccabe": {
|
||||
"hashes": [
|
||||
"sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42",
|
||||
"sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"
|
||||
"sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325",
|
||||
"sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"
|
||||
],
|
||||
"version": "==0.6.1"
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==0.7.0"
|
||||
},
|
||||
"nodeenv": {
|
||||
"hashes": [
|
||||
@ -717,19 +727,19 @@
|
||||
},
|
||||
"pycodestyle": {
|
||||
"hashes": [
|
||||
"sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068",
|
||||
"sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"
|
||||
"sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3",
|
||||
"sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==2.7.0"
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==2.12.1"
|
||||
},
|
||||
"pyflakes": {
|
||||
"hashes": [
|
||||
"sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3",
|
||||
"sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"
|
||||
"sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f",
|
||||
"sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==2.3.1"
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==3.2.0"
|
||||
},
|
||||
"python-debian": {
|
||||
"hashes": [
|
||||
@ -819,11 +829,11 @@
|
||||
},
|
||||
"setuptools": {
|
||||
"hashes": [
|
||||
"sha256:b208925fcb9f7af924ed2dc04708ea89791e24bde0d3020b27df0e116088b34e",
|
||||
"sha256:d59a3e788ab7e012ab2c4baed1b376da6366883ee20d7a5fc426816e3d7b1193"
|
||||
"sha256:2353af060c06388be1cecbf5953dcdb1f38362f87a2356c480b6b4d5fcfc8847",
|
||||
"sha256:fc91b5f89e392ef5b77fe143b17e32f65d3024744fba66dc3afe07201684d766"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==73.0.1"
|
||||
"version": "==74.1.1"
|
||||
},
|
||||
"toml": {
|
||||
"hashes": [
|
||||
@ -833,6 +843,14 @@
|
||||
"markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==0.10.2"
|
||||
},
|
||||
"tomli": {
|
||||
"hashes": [
|
||||
"sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
|
||||
"sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==2.0.1"
|
||||
},
|
||||
"urllib3": {
|
||||
"hashes": [
|
||||
"sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472",
|
||||
@ -851,11 +869,20 @@
|
||||
},
|
||||
"yapf": {
|
||||
"hashes": [
|
||||
"sha256:408fb9a2b254c302f49db83c59f9aa0b4b0fd0ec25be3a5c51181327922ff63d",
|
||||
"sha256:e3a234ba8455fe201eaa649cdac872d590089a18b661e39bbac7020978dd9c2e"
|
||||
"sha256:4dab8a5ed7134e26d57c1647c7483afb3f136878b579062b786c9ba16b94637b",
|
||||
"sha256:adc8b5dd02c0143108878c499284205adb258aad6db6634e5b869e7ee2bd548b"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.31.0"
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==0.40.2"
|
||||
},
|
||||
"zipp": {
|
||||
"hashes": [
|
||||
"sha256:9960cd8967c8f85a56f920d5d507274e74f9ff813a0ab8889a5b5be2daf44064",
|
||||
"sha256:c22b14cc4763c5a5b04134207736c107db42e9d3ef2d9779d465f5f1bcba572b"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==3.20.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ content_type_png = "image/png"
|
||||
|
||||
|
||||
def token_auth(func):
|
||||
|
||||
@wraps(func)
|
||||
def _token_auth(*args, **kwargs):
|
||||
auth_header = request.headers.get("Authorization")
|
||||
|
@ -8,6 +8,7 @@ from ki.test.ApiTest import ApiTest
|
||||
|
||||
|
||||
class TestContactTypesEndpoint(ApiTest):
|
||||
|
||||
def test_skills_options(self):
|
||||
response = self.client.options("/contacttypes")
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
@ -8,6 +8,7 @@ from ki.test.ApiTest import ApiTest
|
||||
|
||||
|
||||
class TestFindProfilesEndpoint(ApiTest):
|
||||
|
||||
def test_find_profiles_options(self):
|
||||
response = self.client.options("/users/profiles")
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
@ -8,6 +8,7 @@ from ki.test.ApiTest import ApiTest
|
||||
|
||||
|
||||
class TestLanguagesEndpoint(ApiTest):
|
||||
|
||||
def test_skills_options(self):
|
||||
response = self.client.options("/languages")
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
@ -10,6 +10,7 @@ from ki.test.ApiTest import ApiTest
|
||||
|
||||
|
||||
class TestLoginEndpoint(ApiTest):
|
||||
|
||||
def test_login(self):
|
||||
response1_data = self.login("peter", "geheim")
|
||||
response2_data = self.login("peter", "geheim")
|
||||
|
@ -8,6 +8,7 @@ from ki.test.ApiTest import ApiTest
|
||||
|
||||
|
||||
class TestSkillsEndpoint(ApiTest):
|
||||
|
||||
def test_skills_options(self):
|
||||
response = self.client.options("/skills")
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
Reference in New Issue
Block a user