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)
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 }
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'))
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'))
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
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"}
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}
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}
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 }
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'))
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!'
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
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'))
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'))
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'))
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}
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(