forked from kompetenzinventar/ki-backend
added model and migration for resume
This commit is contained in:
24
ki/resume.py
24
ki/resume.py
@ -1,7 +1,14 @@
|
||||
# SPDX-FileCopyrightText: WTF Kooperative eG <https://wtf-eg.de/>
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
from flask import Blueprint
|
||||
from ki.token_auth import token_auth
|
||||
from ki.resume_models import Resume
|
||||
|
||||
bp_resume = Blueprint('resume', __name__,
|
||||
template_folder='templates')
|
||||
template_folder='templates')
|
||||
|
||||
|
||||
@bp_resume.route('/')
|
||||
@token_auth
|
||||
@ -9,20 +16,17 @@ def show(page):
|
||||
"""
|
||||
return the list of resumes as object with data array inside
|
||||
"""
|
||||
return jsonify()
|
||||
pass
|
||||
|
||||
|
||||
@bp_resume.route("/<resume_id>")
|
||||
@token_auth
|
||||
def get_resume(resume_id):
|
||||
"""
|
||||
lookup for resume with resume_id, check if its from this user and provide its contents
|
||||
in the appropriate format
|
||||
lookup for resume with resume_id, check if its from this user
|
||||
and provide its contents in the appropriate format
|
||||
shall support 'format' parameter with values of 'html', 'pdf'
|
||||
if no parameter is given, json is returned
|
||||
"""
|
||||
return jsonify(
|
||||
id=resume_id
|
||||
)
|
||||
|
||||
|
||||
|
||||
r = Resume()
|
||||
return r.to_dict()
|
||||
|
@ -2,11 +2,9 @@
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import Boolean, Column, Integer, SmallInteger, String, DateTime, ForeignKey
|
||||
from sqlalchemy import Column, Integer, String, ForeignKey, JSON
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from app import db
|
||||
|
||||
|
||||
@ -14,10 +12,17 @@ class Resume(db.Model):
|
||||
__tablename__ = 'resume'
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
profile_id = Column(Integer, ForeignKey("profile.id"), nullable=True)
|
||||
|
||||
user_id = Column(Integer, ForeignKey("user.id", ondelete='CASCADE'))
|
||||
label = Column("label", String(50), nullable=True)
|
||||
data = Column('data', JSON)
|
||||
|
||||
user = relationship("User", backref='user', passive_deletes=True)
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
"id": self.id,
|
||||
'profile_id': profile_id
|
||||
'user_id': self.user_id,
|
||||
"label": self.label,
|
||||
"data": self.data
|
||||
}
|
||||
|
28
ki/routes.py
28
ki/routes.py
@ -4,42 +4,18 @@
|
||||
|
||||
import os
|
||||
from flask import g, make_response, request, send_file
|
||||
from functools import wraps
|
||||
|
||||
from ki.auth import auth
|
||||
from ki.handlers import find_profiles as find_profiles_handler
|
||||
from ki.handlers import update_profile as update_profile_handler
|
||||
from ki.models import ContactType, Language, Skill, Token, User
|
||||
from ki.models import ContactType, Language, Skill, User
|
||||
from app import app
|
||||
from ki.token_auth import token_auth
|
||||
|
||||
content_type_svg = "image/svg+xml"
|
||||
content_type_png = "image/png"
|
||||
|
||||
|
||||
def token_auth(func):
|
||||
|
||||
@wraps(func)
|
||||
def _token_auth(*args, **kwargs):
|
||||
auth_header = request.headers.get("Authorization")
|
||||
|
||||
if (auth_header is None):
|
||||
return make_response({}, 401)
|
||||
|
||||
if not auth_header.startswith("Bearer"):
|
||||
return make_response({}, 401)
|
||||
|
||||
token = Token.query.filter(Token.token == auth_header[7:]).first()
|
||||
|
||||
if token is None:
|
||||
return make_response({}, 403)
|
||||
|
||||
g.user = token.user
|
||||
|
||||
return func(*args, **kwargs)
|
||||
|
||||
return _token_auth
|
||||
|
||||
|
||||
def models_to_list(models):
|
||||
models_list = []
|
||||
|
||||
|
31
ki/token_auth.py
Normal file
31
ki/token_auth.py
Normal file
@ -0,0 +1,31 @@
|
||||
# SPDX-FileCopyrightText: WTF Kooperative eG <https://wtf-eg.de/>
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
from flask import g, make_response, request
|
||||
from functools import wraps
|
||||
|
||||
from ki.models import Token
|
||||
|
||||
|
||||
def token_auth(func):
|
||||
@wraps(func)
|
||||
def _token_auth(*args, **kwargs):
|
||||
auth_header = request.headers.get("Authorization")
|
||||
|
||||
if (auth_header is None):
|
||||
return make_response({}, 401)
|
||||
|
||||
if not auth_header.startswith("Bearer"):
|
||||
return make_response({}, 401)
|
||||
|
||||
token = Token.query.filter(Token.token == auth_header[7:]).first()
|
||||
|
||||
if token is None:
|
||||
return make_response({}, 403)
|
||||
|
||||
g.user = token.user
|
||||
|
||||
return func(*args, **kwargs)
|
||||
|
||||
return _token_auth
|
Reference in New Issue
Block a user