Compare commits

..

9 Commits

Author SHA1 Message Date
9e48953fc3 Merge pull request 'Logging' (#7) from feature-logging into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #7
2021-06-21 21:44:33 +02:00
d96dfa8800 fix code style
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-21 21:22:39 +02:00
2f0dd2ab9f users/login: Provider user_id together with token
Some checks failed
continuous-integration/drone/push Build is failing
2021-06-21 18:41:35 +02:00
ea7b6391c1 Merge pull request 'Add yapf to Pipenv environment' (#6) from add-yapf into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #6
2021-06-21 17:38:05 +02:00
3dcba71a6d add logging
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2021-06-21 17:35:28 +02:00
cbf3002b93 Reformat source code
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2021-06-21 17:28:57 +02:00
59de00527d Ignore *.pyc-files for git
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-21 16:12:54 +02:00
6d4f933585 Add yapf to Pipfile 2021-06-21 16:09:37 +02:00
1390dfa8e6 Add usage of yapf to README 2021-06-21 16:09:26 +02:00
9 changed files with 48 additions and 40 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
/.env /.env
*.pyc

View File

@ -14,6 +14,7 @@ pyyaml = "~=5.4.1"
[dev-packages] [dev-packages]
flake8 = "~=3.9.2" flake8 = "~=3.9.2"
yapf = "~=0.31.0"
[requires] [requires]
python_version = "3.8" python_version = "3.8"

View File

@ -21,7 +21,6 @@ rm data/ki.sqlite
cp env.dev .env cp env.dev .env
pipenv install --dev pipenv install --dev
pipenv shell pipenv shell
export FLASK_APP=app.py
flask db upgrade flask db upgrade
flask seed flask seed
flask run flask run
@ -43,6 +42,13 @@ python -m unittest discover ki
flake8 flake8
``` ```
### Formatierung
Um ein einheitliches Quellcode-Erlebnis zu haben, kann der Code mit yapf neu formatiert werden:
```
yapf -i --recursive ki/
```
### Testbenutzer ### Testbenutzer

10
app.py
View File

@ -1,3 +1,4 @@
import logging
import os import os
from dotenv import load_dotenv, find_dotenv from dotenv import load_dotenv, find_dotenv
@ -7,9 +8,14 @@ from flask_migrate import Migrate
load_dotenv(find_dotenv()) load_dotenv(find_dotenv())
loglevel = os.getenv("KI_LOGLEVEL", logging.WARNING)
loglevel = int(loglevel)
logging.basicConfig(level=loglevel)
logging.debug("Hello from KI")
app = Flask(__name__) app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv("SQLALCHEMY_DATABASE_URI") app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("SQLALCHEMY_DATABASE_URI")
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["KI_DATA_DIR"] = os.path.dirname(__file__) + "/data" app.config["KI_DATA_DIR"] = os.path.dirname(__file__) + "/data"
app.config["KI_AUTH"] = os.getenv("KI_AUTH") app.config["KI_AUTH"] = os.getenv("KI_AUTH")
db = SQLAlchemy(app) db = SQLAlchemy(app)

View File

@ -1,3 +1,9 @@
SQLALCHEMY_DATABASE_URI = 'sqlite:///data/ki.sqlite' SQLALCHEMY_DATABASE_URI = 'sqlite:///data/ki.sqlite'
FLASK_APP=app.py
FLASK_ENV=development
KI_AUTH=file KI_AUTH=file
# 10 = debug
KI_LOGLEVEL=10

View File

@ -5,41 +5,28 @@ from app import app, db
from ki.models import User, Token from ki.models import User, Token
class UserWrongCredentialsException(Exception):
pass
class UserAllreadyLoggedInException(Exception):
pass
def auth(username, password): def auth(username, password):
auth_file_path = app.config["KI_DATA_DIR"] + "/auth.yml" auth_file_path = app.config["KI_DATA_DIR"] + "/auth.yml"
with open(auth_file_path, "r") as auth_file_stream: with open(auth_file_path, "r") as auth_file_stream:
users = yaml.safe_load(auth_file_stream)
try: if username not in users:
users = yaml.safe_load(auth_file_stream)
except yaml.YAMLError:
print('Could not parse auth.yml.')
try:
auth_user = users[username]
if auth_user["password"] != password:
raise UserWrongCredentialsException
except (UserWrongCredentialsException, KeyError):
print('Wrong username/password combination')
return None return None
else: auth_user = users[username]
user = User.query.filter(User.auth_id.__eq__(username)).first()
token = Token(token=str(uuid.uuid4()), user=user) if auth_user["password"] != password:
return None
db.session.add(token) user = User.query.filter(User.auth_id.__eq__(username)).first()
db.session.commit()
return token if user is None:
user = User(auth_id=username)
db.session.add(user)
token = Token(token=str(uuid.uuid4()), user=user)
db.session.add(token)
db.session.commit()
return token

View File

@ -1 +1 @@
from ki import models, commands, routes # noqa from ki import models, commands, routes # noqa

View File

@ -99,7 +99,7 @@ def login():
if token is None: if token is None:
return make_response({}, 403) return make_response({}, 403)
return make_response({"token": token.token}) return make_response({"token": token.token, "user_id": token.user_id})
@app.route("/users/<user_id>/profile") @app.route("/users/<user_id>/profile")

View File

@ -22,13 +22,14 @@ class TestSkillsEndpoint(unittest.TestCase):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual( self.assertEqual(
{ {
"skills": [ "skills": [{
{"id": 1, "name": "PHP"}, "id": 1,
{"id": 3, "name": "Python"} "name": "PHP"
] }, {
}, "id": 3,
response.json "name": "Python"
) }]
}, response.json)
if __name__ == "main": if __name__ == "main":