def create_user(): try: data = request.get_json() if (User.find_by_email(data['email']) is not None or User.find_by_username( data['username']) is not None): # already exist user return response_with(resp.INVALID_INPUT_422) data['password'] = User.generate_hash( data['password']) # password to hash user_schmea = UserSchema() user = user_schmea.load(data).data token = generate_verification_token( data['email']) # generate token by email verification_email = url_for('user_routes.verify_email', token=token, _external=True) html = render_template_string( "<p>Welcome! Thanks for signing up. Please follow this link to activate your account:</p> <p><a href='{{ verification_email }}'>{{ verification_email }}</a></p> <br> <p>Thanks!</p>", verification_email=verification_email) subject = "Please Verify your email" send_email(user.email, subject, html) result = user_schmea.dump(user.create()) return response_with(resp.SUCCESS_201) except Exception as e: print(e) return response_with(resp.INVALID_INPUT_422)
def authenticate_user(): try: data = request.get_json() if data.get('email'): # find user is exist by emial current_user = User.find_by_email(data['email']) elif data.get('username'): # find user is exist by username current_user = User.find_by_username(data['username']) if not current_user: # not find register user ,return 404 return response_with(resp.SERVER_ERROR_404) if current_user and not current_user.isVerified: return response_with( resp.BAD_REQUEST_400) # find user , but not verrify if User.verify_hash(data['password'], current_user.password): # check password is right access_token = create_access_token( identity=current_user.username) # generate access token return response_with(resp.SUCCESS_200, value={ 'message': 'Logged in as admin', "access_token": access_token }) else: return response_with(resp.UNAUTHORIZED_401) except Exception as e: print(e) return response_with(resp.INVALID_INPUT_422)
def create_role(**kwargs): if("login" in session) == False: return response_with(FORBIDDEN_403) if not (session["role"] == 'administrator'): return response_with(FORBIDDEN_403) query = UserRolesDB() for key, value in kwargs.items(): setattr(query, key, value) db.session.add(query) db.session.commit() schema = RolesSchema() roles = UserRolesDB.query.all() for role in roles: for table in editableTables: query = UserPermissionsDB.query.all() permissions = UserPermissionsDB.query.filter_by(table = table[0], role = role.role) if(permissions.count() == 0): item = UserPermissionsDB( table = table[0], role = role.role, get = False, put = False, delete = False, ) db.session.add(item) db.session.commit() return response_with(resp.SUCCESS_200, value={"query": schema.dump(query)})
def get_users(): if("login" in session) == False: return response_with(FORBIDDEN_403) if not (session["role"] == 'administrator'): return response_with(FORBIDDEN_403) query = UsersDB.query.order_by("login").all() query_schema = UsersSchema(many=True, exclude=("password_hash", )) return response_with(resp.SUCCESS_200, value={"query": query_schema.dump(query)})
def get_roless(): if("login" in session) == False: return response_with(FORBIDDEN_403) if not (session["role"] == 'administrator'): return response_with(FORBIDDEN_403) query = UserRolesDB.query.order_by("role").all() query_schema = RolesSchema(many=True) return response_with(resp.SUCCESS_200, value={"query": query_schema.dump(query)})
def login(**kwargs): query = UsersDB.authentificate(login=kwargs['login'], password=kwargs['password_hash']) if (not query): return response_with(resp.UNAUTHORIZED_401) session["username"] = query.username session["login"] = query.login session["role"] = query.role return response_with(resp.SUCCESS_200)
def delete_user(id): if("login" in session) == False: return response_with(FORBIDDEN_403) if not (session["role"] == 'administrator'): return response_with(FORBIDDEN_403) query = UsersDB.query.get_or_404(id) db.session.delete(query) db.session.commit() return response_with(resp.SUCCESS_200)
def create_author(): try: data = request.get_json() author_schema = AuthorsSchema() author = author_schema.load(data) result = author_schema.dump( author.data.create()) ##这里作为一个修改点,可能是新版本的的接口调整了 return response_with(resp.SUCCESS_201, value={"author": result}) except Exception as e: return response_with(resp.INVALID_INPUT_422)
def restore_db(name): if ("login" in session) == False: return response_with(FORBIDDEN_403) if not (session["role"] == 'administrator'): return response_with(FORBIDDEN_403) res = os.system('psql ' + DB_URL + ' < ' + 'db_backup/' + name + '.sql') if (res == 0): return response_with(resp.SUCCESS_200) else: return response_with(resp.SERVER_ERROR_500)
def create_author(): try: data = request.get_json() author_schema = AuthorSchmea() author = author_schema.load(data) result = author_schema.dump(author.create()).data return response_with(resp.SUCCESS_201, value={"author": result}) except Exception as e: print(e) return response_with(resp.INVALID_INPUT_422)
def create_book(): try: data = request.get_json() book_schema = BookSchema() book = book_schema.load(data) result = book_schema.dump(book.data.create()) return response_with(resp.SUCCESS_201, value={"book": result}) except Exception as e: print(e) return response_with(resp.INVALID_INPUT_422)
def update_permission(id, **kwargs): if("login" in session) == False: return response_with(FORBIDDEN_403) if not (session["role"] == 'administrator'): return response_with(FORBIDDEN_403) query = UserPermissionsDB.query.get_or_404(id) for key, value in kwargs.items(): setattr(query, key, value) db.session.commit() schema = PermissionsSchema() return response_with(resp.SUCCESS_200, value={"query": schema.dump(query)})
def create_user(): try: data = request.get_json() data['password'] = User.generate_hash(data['password']) user_schmea = UserSchema() user = user_schmea.load(data) result = user_schmea.dump(user.data.create()) return response_with(resp.SUCCESS_201) except Exception as e: print(e) return response_with(resp.INVALID_INPUT_422)
def authenticate_user(): try: data = request.get_json() current_user = User.find_by_username(data['username']) if not current_user: return response_with(resp.SERVER_ERROR_404) if User.verify_hash(data['password'], current_user.password): access_token = create_access_token(identity = data['username']) return response_with(resp.SUCCESS_201,value={'message': 'Logged in as {}'.format(current_user.username), "access_token": access_token}) else: return response_with(resp.UNAUTHORIZED_401) except Exception as e: print(e) return response_with(resp.INVALID_INPUT_422)
def delete_role(id): if("login" in session) == False: return response_with(FORBIDDEN_403) if not (session["role"] == 'administrator'): return response_with(FORBIDDEN_403) query = UserRolesDB.query.get_or_404(id) name = query.role db.session.delete(query) db.session.commit() query = UserPermissionsDB.query.filter_by(role = name) for q in query: db.session.delete(q) db.session.commit() return response_with(resp.SUCCESS_200)
def update_batch(id, **kwargs): query = BatchDB.query.get_or_404(id) for key, value in kwargs.items(): setattr(query, key, value) db.session.commit() schema = BatchSchema() return response_with(resp.SUCCESS_200, value={"query": schema.dump(query)})
def verify_email(token): # register username , then check the email try: email = confirm_verification_token(token) except Exception as e: return response_with(resp.SERVER_ERROR_401) user = User.query.filter_by(email=email).first_or_404() if user.isVerified: return response_with(resp.INVALID_INPUT_422) else: user.isVerified = True db.session.add(user) db.session.commit() return response_with( resp.SUCCESS_200, value={ 'message': 'E-mail verified, you can proceed to login now.' })
def create_batch(**kwargs): query = BatchDB() for key, value in kwargs.items(): setattr(query, key, value) db.session.add(query) db.session.commit() schema = BatchSchema() return response_with(resp.SUCCESS_200, value={"query": schema.dump(query)})
def get_marklog_path(id, begin, end): begin = begin.replace("T", " ").replace(".000Z", "") end = end.replace("T", " ").replace(".000Z", "") query = MarklogDB.query.filter(MarklogDB.timeis.between( begin, end)).filter_by(id_mark=id).order_by("timeis").all() query_schema = MarklogSchema(many=True) return response_with(resp.SUCCESS_200, value={"query": query_schema.dump(query)})
def delete_department(id): query = DepartmentDB.query.get_or_404(id) db.session.delete(query) db.session.commit() query = LocationsDB.query.filter_by(dept_id=id).all() for item in query: db.session.delete(item) db.session.commit() return response_with(resp.SUCCESS_200)
def delete_specifications(id): query = RouteDB.query.filter_by(spec_id=id).all() for item in query: db.session.delete(item) db.session.commit() query = SpecDB.query.get_or_404(id) db.session.delete(query) db.session.commit() return response_with(resp.SUCCESS_200)
def create_tmetrics(**kwargs): query = TmetricDB() for key, value in kwargs.items(): setattr(query, key, value) query.created = datetime.now(timezone.utc) db.session.add(query) db.session.commit() schema = TmetricSchema() return response_with(resp.SUCCESS_200, value={"query": schema.dump(query)})
def get_report_batch(id, time_start=None, time_end=None): query = create_report_on_batch_by_filters(id, time_start, time_end) # { # 'batch_id', # 'current_location', # 'last_events' : [ {'time', 'location'} ] # } # return response_with(resp.SUCCESS_200, value=query)
def delete_markgroupsetting(id): query = MarkSettingsDB.query.get_or_404(id) db.session.delete(query) query_marks = MarkersDB.query.filter_by( markgroup_id=query.markgroup_id).all() for q in query_marks: q.set_settings = True db.session.commit() return response_with(resp.SUCCESS_200)
def update_author_detail(id): data = request.get_json() get_author = Authors.query.get_or_404(id) get_author.first_name = data['first_name'] get_author.last_name = data['last_name'] db.session.add(get_author) db.session.commit() author_schema = AuthorsSchema() author, error = author_schema.dump(get_author) return response_with(resp.SUCCESS_200, value={"author": author})
def update_book_detail(id): data = request.get_json() get_book = Book.query.get_or_404(id) get_book.title = data['title'] get_book.year = data['year'] db.session.add(get_book) db.session.commit() book_schema = BookSchema() book, error = book_schema.dump(get_book) return response_with(resp.SUCCESS_200, value={"book": book})
def upload_location(id): if request.method == 'POST': file = request.files['file'] if file.filename == '': return response_with(resp.MISSING_PARAMETERS_422, value={"result": "No file to load"}) if file and allowed_file(file.filename): filename = secure_filename(file.filename) extension = os.path.splitext(filename)[1] new_filename = str(id) + extension path = os.path.join(app.config['UPLOAD_FOLDER'], new_filename) file.save(path) my_data = LocationsDB.query.get(id) my_data.imageurl = new_filename db.session.commit() return response_with(resp.SUCCESS_200, value={"result": "OK"}) else: return response_with(resp.INVALID_INPUT_422, value={"result": "Invalid file extension"})
def update_markgroupsetting(id, **kwargs): query = MarkSettingsDB.query.get_or_404(id) for key, value in kwargs.items(): setattr(query, key, value) query_marks = MarkersDB.query.filter_by( markgroup_id=query.markgroup_id).all() for q in query_marks: q.set_settings = True db.session.commit() schema = MarkSettingSchema() return response_with(resp.SUCCESS_200, value={"query": schema.dump(query)})
def registration(**kwargs): query = UsersDB() for key, value in kwargs.items(): if(key == 'password_hash'): pass_hash = bcrypt.generate_password_hash(value, 10) pass_hash_decoded = pass_hash.decode('utf-8') query.password_hash = pass_hash_decoded else: setattr(query, key, value) query.role = '' db.session.add(query) db.session.commit() return response_with(resp.SUCCESS_200)
def get_batches(): """ Список всех партий. ID партии ; код спецификации; время создания ; ID метки, к которой привязана партия ; количество деталей ; название ; время закрытия партии ; ID маршрута ; метрика отставания ; критика отставания ; время на сколько отстаёт\опережает ; время до завершения ; название зоны, текущего местоположения TODO Убрать тестовые данные. """ # query = BatchDB.query.all() query = batches matrix = list() index = 0 for i in query: matrix.append(list()) hour = random.randint(0, 23) r = random.random() if r > 0.5: first = 2 else: first = 1 second = first r = random.random() if r > 0.5: second += 1 if first == second: location = f'В пути со станка №{first} на станок №{first + 1}' else: location = f'На станке №{second}' """ metrics = metrics_lag(datetime(2021, 11, 29, hour, 0, 0), (first, second), technology, i.batch_size) critics = criterion_lag(metrics[0]) matrix[index].append([i.batch_id, i.code, i.created_at, i.id_mark, i.batch_size, i.product_name, i.closed, i.route_id, metrics[0], critics, metrics[1], metrics[2], location]) """ metrics = metrics_lag(datetime(2021, 11, 29, hour, 0, 0), (first, second), technology, i[4]) critics = criterion_lag(metrics[0]) matrix[index] = [ i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], metrics[0], critics, metrics[1], metrics[2], location ] index += 1 return response_with(resp.SUCCESS_200, value={"query": json.dump(matrix)})