示例#1
0
async def register_user(username: str, password: str):
    if db.query(User).filter(User.username == username).first():
        raise HTTPException(status_code=409, detail='Username already exists')
    user = User(username, pwd_context.hash(password))
    db.add(user)
    db.commit()
    return Response('Created User.', 201)
示例#2
0
async def check_exercise(user_result: int, user=Depends(get_user)):
    exercise: Exercises = db.query(Exercises).filter(Exercises.user_id == user.id).first()
    if exercise is None:
        return {
            'status': 400,
            'message': 'Exercise does not exists'
        }
    duration = 1  # TODO Measure Duration in the backend
    points = 1 if exercise.result == user_result else 0  # TODO Calculate Points with the Duration
    evaluation = db.query(Evaluation).filter(Evaluation.user_id == 0,
                                             Evaluation.factor1 == exercise.factor1,
                                             Evaluation.factor2 == exercise.factor2).first()
    if evaluation is None:
        user = db.query(User).filter(User.id == user.id).first()
        evaluation = Evaluation(user, exercise.factor1, exercise.factor2, points)
        db.add(evaluation)
        db.commit()
    else:
        db.query(Evaluation).filter(Evaluation.id == evaluation.id).update({
            Evaluation.points: evaluation.points + points,
            Evaluation.count: evaluation.count + 1,
        })
    db.commit()
    return {
        'status': 200,
        'result': exercise.result == user_result
    }
示例#3
0
文件: auth.py 项目: fenixfl1/Taskbook
def register_study_plan():

    form = PlanForm()

    if form.validate_on_submit():

        try:
            name = form.name.data
            start_date = form.start_date.data

            plan = StudyPlan(name, start_date, current_user.id)

            db.add(plan)
            db.commit()

            messages = 'Plan de estudio creado exitosamente'
            category = 'success'

        except ValueError as e:

            messages = 'No fue posible crear el plan de estudios'
            category = 'error'
            raise e

        finally:
            flash(messages, category)

    return redirect(url_for('users.plan_de_estudio'))
示例#4
0
文件: auth.py 项目: fenixfl1/Taskbook
def register_study_plan_goals():

    form = PlanGoalsForm()

    if form.validate_on_submit():

        try:
            title = form.title.data
            deadline = form.deadline.data
            study_plan = request.form['study_plan']
            comment = form.comment.data

            user = StudyPlanGoals(title=title,
                                  deadline=deadline,
                                  comment=comment,
                                  plan_id=study_plan)

            db.add(user)
            db.commit()

            messages = "Objetivo guardado exitosamente!"
            category = "success"

        except Exception as e:

            messages = "Ha ocurrido un error desconocido!"
            category = "error"

            raise e

        finally:

            flash(messages, category)

    return redirect(url_for('users.plan_de_estudio'))
示例#5
0
async def signup(body: RequestBody, response: Response):
    username = body.username
    name = body.name
    password_hash = hashlib.sha256(str.encode(body.password)).hexdigest()

    # Check if username already exists
    exists = db.query(User).filter_by(username=username).first()
    if exists:
        response.status_code = status.HTTP_409_CONFLICT
        return {"result": "fail", "reason": "Username already taken"}

    user = User(username=username, name=name, password_hash=password_hash)
    db.add(user)
    db.commit()

    payload = {
        "exp": datetime.utcnow() + timedelta(days=0, hours=24),
        "iat": datetime.utcnow(),
        "iss": username,
    }
    token = jwt.encode(payload, ACCESS_TOKEN_KEY, algorithm="HS256")
    content = {"result": "ok"}
    response = JSONResponse(content=content)
    response.headers["X-AUTH-TOKEN"] = f"{token}"
    return response
示例#6
0
async def register(new_user: UserModel):
    """register a new user"""
    if db.query(User).get(new_user.name) is not None:
        raise HTTPException(status_code=422, detail="Username already in use")

    new_user.password = get_password_hash(new_user.password)
    db.add(User(name=new_user.name, password=new_user.password))
    db.commit()
    return {"action": "successful"}
示例#7
0
async def log_add(factor1: int,
                  factor2: int,
                  user_result: int,
                  duration: int,
                  user=Depends(get_user)):
    user_db = db.query(User).filter(User.id == user.id).first()
    db.add(
        LogEntry(user_db, factor1, factor2, user_result,
                 factor1 * factor2 == user_result, duration))
    db.commit()
    return {'message': 'Created Log', 'status': 201}
示例#8
0
async def upload_entry(category: str, price: float, date: datetime, file: UploadFile = File(...),
                       current_user: UserModel = Depends(get_current_active_user)):
    file_uuid = uuid()
    filename = f"./pictures/{file_uuid}.{file.filename.split('.')[-1]}"
    f = open(filename, "wb")
    file_content = await file.read()
    f.write(file_content)
    f.close()
    db.add(Bill(uuid=file_uuid, filepath=filename, price=price, date=date, category=category, user=current_user.name))
    db.commit()

    return {"filename": file.filename}
示例#9
0
async def generate_exercise(user=Depends(get_user)):
    factor1, factor2 = (await generateExercise(user.id)).values()
    if db.query(Exercises).filter(Exercises.user_id == user.id).first() is None:
        user_db = db.query(User).filter(User.id == user.id).first()
        db.add(Exercises(user_db, factor1, factor2))
    else:
        db.query(Exercises).filter(Exercises.user_id == user.id).update({Exercises.factor1: factor1,
                                                                            Exercises.factor2: factor2,
                                                                            Exercises.result: factor1 * factor2})
    db.commit()
    return {
        'factor1': factor1,
        'factor2': factor2
    }
示例#10
0
文件: auth.py 项目: fenixfl1/Taskbook
def register_profesor():

    form = ProfeForm()

    if form.validate_on_submit():

        name = form.full_name.data

        check = db.query(Teachers).\
            filter(Teachers.user_id == current_user.id).\
            filter(Teachers.full_name == name).first()

        if not check:

            if form.subjects.data is not None:

                user = Teachers(full_name=name,
                                course=[form.subjects.data],
                                email=form.email.data,
                                phone_number=form.phone.data,
                                user_id=current_user.id)

            else:
                user = Teachers(full_name=name,
                                email=form.email.data,
                                phone_number=form.phone.data,
                                user_id=current_user.id)

            try:
                db.add(user)
                db.commit()

                messages = 'Registro guardado con exito!'
                category = 'success'

            except ValueError as e:
                messages = 'Ha ocurrido un error desconocido!'
                category = 'error'

                raise e

        else:

            messages = '{} ya esta registrado!'.format(name)
            category = 'error'

    flash(messages, category)
    return redirect(url_for('users.teachers'))
示例#11
0
def notifications(title, msg, notify_date, user_id):

    try:
        notify = Notify(user_id=user_id,
                        title=title,
                        msg=msg,
                        notify_time=notify_date)

        db.add(notify)
        db.commit()

        return {'User ID': user_id, 'Msg': msg}

    except ValueError as e:
        raise e
        return 'Error!'
示例#12
0
    def post(self):
        args = libraryReqparse.parse_args()

        library = Library(**args)

        try:
            db.add(library)
            db.commit()
        except IntegrityError as e:
            print(str(e))
            db.rollback()
            raise DuplicatedDataError(str(e.orig))
        except Exception as e:
            print(str(e))
            db.rollback()
            raise e

        return library
示例#13
0
文件: auth.py 项目: fenixfl1/Taskbook
def register_subjects():

    form = SubjectsForm()

    if form.validate_on_submit():

        name = form.name.data
        profe = form.profe.data
        finished = form.estado.data

        # check that there's no subject with that name
        check = db.query(Courses).\
            filter(Courses.user_id == current_user.id).\
            filter(Courses.state == 1).\
            filter(Courses.name == name).first()

        if not check:

            try:
                user = Courses(name=name,
                               finished=finished,
                               user_id=current_user.id,
                               teacher=profe)

                db.add(user)
                db.commit()

                messages = 'Asignatura registrada con exito!'
                category = 'success'

            except ValueError as e:

                messages = 'No fue posible registrada la asignatura!'
                category = 'error'

                raise e

        else:
            messages = '{} ya esta registrada!'.format(name)
            category = 'error'

    flash(messages, category)
    return redirect(url_for('users.subjects'))
示例#14
0
文件: auth.py 项目: fenixfl1/Taskbook
def register_task():

    messages = ''
    category = ''

    form = TaskForm()

    if form.validate_on_submit():

        name = form.name.data
        materia = form.materia.data
        asignada_en = form.asignada_en.data
        dia_entrega = form.dia_entrega.data
        comentario = form.nota.data

        try:

            task = Tasks(name=name,
                         user_id=current_user.id,
                         course=materia,
                         assigned_in=asignada_en,
                         delivery_day=dia_entrega,
                         comment=comentario)

            db.add(task)
            db.commit()

            messages = 'Tasks guardada con exito!'
            category = 'success'

        except ValueError as e:

            db.delete(task)
            messages = 'No fue posible guardar los cambios!'
            category = 'error'

            raise e

        finally:
            db.commit()

        flash(messages, category)
        return redirect(url_for('users.tasks'))
示例#15
0
文件: auth.py 项目: fenixfl1/Taskbook
def register_event():

    form = EventForm()

    if form.validate_on_submit():

        title = form.name.data
        lugar = form.lugar.data
        url = form.url.data
        start = form.start_date.data
        end = form.end_date.data
        comment = form.nota.data

        try:
            event = Events(user_id=current_user.id,
                           title=title,
                           lugar=lugar,
                           url=url,
                           start_date=start,
                           end_date=end,
                           comentario=comment)

            db.add(event)
            db.commit()

            messages = 'Evento creado exitosamente!'
            category = 'success'

        except ValueError as e:

            messages = 'No fue posible crear el evento!'
            category = 'error'
            raise e

        finally:
            flash(messages, category)

    return redirect(url_for('users.eventos'))
示例#16
0
async def create_model(req: Request, resp: Response):
    if "X-Auth-Token".lower() not in req.headers.keys():
        resp.status_code = status.HTTP_401_UNAUTHORIZED
        return {"result": "fail", "reason": "No auth token specified"}

    # TODO: Check header key case
    token = req.headers["X-Auth-Token"]
    try:
        _ = json.loads(
            json.dumps(jwt.decode(token, ACCESS_TOKEN_KEY, algorithms="HS256"))
        )
    except Exception as e:
        resp.status_code = status.HTTP_401_UNAUTHORIZED
        return {"result": "fail", "reason": str(e)}

    # TODO: Use pydantic models to auto-validate body params
    body = await req.json()
    name = body["name"]
    username = body["username"]
    description = body["description"]

    uid_slug = uuid.uuid4().hex[:6]
    model_uid = f"{username}-{uid_slug}"
    try:
        user = db.query(User).filter_by(username=username).first()
        m = DeployedModel(
            name=name, uid=model_uid, author=user, description=description
        )
        db.add(m)
        db.commit()
    except Exception as e:
        db.rollback()
        resp.status_code = status.HTTP_400_BAD_REQUEST
        return {"result": "fail", "reason": str(e)}

    return {"result": "ok", "uid": model_uid}
示例#17
0
from app.users.models import User
from app.users.constants import ADMIN_USERNAME
from app.events.constants import SITTING_EVENT, POSTURE_EVENT
import datetime
"""
DO NOT RUN THIS SCRIPT IN ''PROD'' IF DATABASE ALREADY HAS LIVE DATA!
"""

# # Drop and recreate DB
init_db()

print "DB tables created"

# # Insert Admin User
admin_user = User(ADMIN_USERNAME)
db.add(admin_user)
db.commit()

print "User table loaded"

print "Event Tracking Status Types loaded"

# # Insert Test Event
# current_time = datetime.datetime.now()
# event_complete = Event(User.query.filter_by(
#     username=ADMIN_USERNAME).first().id,
#     current_time, SEIZURE_EVENT_TYPE, 4, "1-3", 'COMPLETE')
# event_complete1 = Event(User.query.filter_by(
#     username=ADMIN_USERNAME).first().id,
#     current_time, SEIZURE_EVENT_TYPE, 3, "1-3", 'COMPLETE')
# event_complete2 = Event(User.query.filter_by(