Ejemplo n.º 1
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
    }
Ejemplo n.º 2
0
def staty_plan_edit():

    messages = ""
    category = ""

    form = request.form

    try:
        user = db.query(StudyPlan).get(form.get('id'))
        # user.one()

        user.name = form.get('name')
        user.start_date = form.get('start_date')

        db.commit()

        messages = "La informacion fue editada exitosamente!"
        category = "success"

    except ValueError as e:
        raise e

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

    finally:
        flash(messages, category)

    return redirect(url_for('users.plan_de_estudio'))
Ejemplo n.º 3
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)
Ejemplo n.º 4
0
def assing_teacher():

    form = AssignForm()

    if form.validate_on_submit():

        # name = form.profe.data
        id_teacher = request.form['profe']
        id_subject = form.id.data

        try:

            update = db.query(Courses).\
                filter(Courses.user_id == current_user.id)\
                .filter(Courses.id == id_subject)

            new_teacher = update.one()
            new_teacher.Teachers_id = id_teacher
            db.commit()

            messages = 'La operacion se realizo con exito!'
            category = 'success'

        except ValueError as e:
            raise e

            messages = 'Ha ocurrido un error!'
            category = 'error'

        flash(messages, category)

    return redirect(url_for('users.subjects'))
Ejemplo n.º 5
0
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'))
Ejemplo n.º 6
0
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'))
Ejemplo n.º 7
0
def add_qualification():

    form = QualificationForm()

    if form.validate_on_submit():

        id = form.id.data

        try:
            qualification = db.query(Courses).filter(Courses.id == id)

            new = qualification.one()
            new.qualification = request.form['calificacion']

            db.commit()

            messages = 'La operacion se realizo con exito!'
            category = 'success'

        except ValueError as e:

            messages = 'No fue posible completar la operacion!'
            category = 'error'

            raise e

    flash(messages, category)
    return redirect(url_for('users.subjects_finished'))
Ejemplo n.º 8
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
Ejemplo n.º 9
0
def forget_pass(token):
    from app.crypt import get_token_data
    if request.method == 'POST':
        password = request.form["password"]
        mail_id = get_token_data(token, salt="forget-password", max_age=3600)
        user = User.query.filter_by(username=mail_id,
                                    type='regular-user').first_or_404()
        user.is_verified = True
        user.password = password
        db.commit()
        logout_user()
        return redirect(url_for('html_blueprint.index'))
    else:
        try:
            mail_id = get_token_data(token,
                                     salt="forget-password",
                                     max_age=3600)
            return render_template('reset_pass.html',
                                   token=token,
                                   mail_id=mail_id)
        except SignatureExpired:
            return 'Token Expired'
        except BadTimeSignature:
            return 'Invalid Token'
        return f'Tokens Works'
Ejemplo n.º 10
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"}
Ejemplo n.º 11
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}
Ejemplo n.º 12
0
    def delete(self, pk):
        library = get_or_404(Library, pk)

        try:
            db.delete(library)
            db.commit()
        except Exception as e:
            print(str(e))
            db.rollback()
            raise e

        return '', 204
Ejemplo n.º 13
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}
Ejemplo n.º 14
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
    }
Ejemplo n.º 15
0
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'))
Ejemplo n.º 16
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!'
Ejemplo n.º 17
0
def edit_tasks(id):

    try:
        task = db.query(Tasks).filter(Tasks.user_id == current_user.id).\
            filter(Tasks.id == id)

        task.id = id
        db.commit()

        flash('Registro modificado con exito!', category='success')

    except ValueError as e:

        flash('No fue posible modificar los datos!', category='danger')
        raise e

    return redirect(url_for('users.tasks'))
Ejemplo n.º 18
0
def apply():
    try:
        args = json.loads(request.data.decode('utf-8'))
    except:  # noqa: E722
        print("Invalid Request Payload")
        return json.dumps({
            "result": -1,
            "cause": "Invalid request payload"
        })

    register_session(args)

    db.add_all([
        Library(
            name=args["name"],
            location_road=args["roadAddress"],
            location_number=args["numberAddress"],
            location_detail=args["detailAddress"],
            manager_name=args["managerName"],
            manager_email=args["managerEmail"],
            manager_phone=args["managerPhone"],
            audiences=args["capacity"],
            fac_beam_screen=1 if args["facilityBeamOrScreen"] else 0,
            fac_sound=1 if args["facilitySound"] else 0,
            fac_record=1 if args["facilityRecord"] else 0,
            fac_placard=1 if args["facilityPlacard"] else 0,
            fac_self_promo=1 if args["facilitySelfPromo"] else 0,
            fac_other=args["facilityOther"],
            req_speaker=args["requirements"]
        )
    ])

    try:
        db.commit()

        return json.dumps({
            "result": 0
        })
    except:  # noqa: E722
        db.rollback()
        print("Unexpected DB server error")
        return json.dumps({
            "result": 1,
            "cause": "Unexpected DB server error"
        })
Ejemplo n.º 19
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
Ejemplo n.º 20
0
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'))
Ejemplo n.º 21
0
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'))
Ejemplo n.º 22
0
def delete_teachers(id):

    dato = db.query(Teachers).filter(Teachers.user_id == current_user.id).\
        filter(Teachers.id == id).one()

    try:
        db.delete(dato)
        db.commit()

        messages = 'Registro eliminado con exito!'
        category = 'success'
    except ValueError as e:

        messages = 'No fue posible eliminar el registro!'
        category = 'error'
        raise e

    flash(messages, category)
    return redirect(url_for('users.teachers'))
Ejemplo n.º 23
0
def delete_plan(id):

    try:
        user = db.query(spg).get(id)
        user.state = 0
        db.commit()

        messages = "Registro eliminado con exitosamente!"
        category = "success"
    except Exception as e:
        raise e
        messages = "Ha ocurrido un error desconocido!"
        category = "error"
    finally:
        flash(messages, category)

    plan_id = request.args.get('plan_id')

    return redirect(url_for('users.study_plan_goals', id=plan_id))
Ejemplo n.º 24
0
def update_subjects():

    form = SubjectsForm()

    name = form.name.data
    id = request.form['id']
    teacher_id = request.form['profe']

    try:

        data = db.query(Courses).filter(Courses.user_id == current_user.id).\
            filter(Courses.id == id)

        new_data = data.one()

        new_data.name = name

        if teacher_id != '__None':

            teacher = db.query(Teachers).\
                filter(Teachers.user_id == current_user.id).\
                filter(Teachers.id == teacher_id).one()

            new_data.Teachers = teacher

        db.commit()

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

    except ValueError as e:
        messages = 'No fue posible editar el registro!'
        category = 'error'

        raise e

    flash(messages, category)
    return redirect(url_for('users.subjects'))
Ejemplo n.º 25
0
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'))
Ejemplo n.º 26
0
    def put(self, pk):
        args = libraryReqparse.parse_args()
        library = get_or_404(Library, pk)

        for key, value in args.items():
            if value is None:
                continue

            setattr(library, key, value)

        try:
            db.merge(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
Ejemplo n.º 27
0
def marck_as_done(id):

    try:
        user = db.query(spg).get(id)
        user.done = 1

        db.commit()

        messages = "Has completado un nuevo objetivo!"
        category = "success"

    except Exception as e:
        raise e

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

    finally:
        flash(messages, category)

    plan_id = request.args.get('plan_id')

    return redirect(url_for('users.study_plan_goals', id=plan_id))
Ejemplo n.º 28
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}
Ejemplo n.º 29
0
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(
#     username=ADMIN_USERNAME).first().id,