def get_all(): try: req_args = request.args properties = { key: value for key, value in req_args.iteritems() if key in AcquisitionModel._properties } properties['is_deleted'] = properties.get('is_deleted', False) query = AcquisitionModel.find_all_by_properties(**properties) page = req_args.get('page', None) size = req_args.get('size', 20 if page else None) sort = AcquisitionModel._properties[req_args.get('sort', 'created')] order = req_args.get('order', 'desc') query = query.order(sort if order == 'asc' else -sort if order == 'desc' else None) return create_json_response({ 'data': (query.fetch(size, offset=((page - 1) * size)) if page else query.fetch(size) if size else query.fetch()), 'total_count': query.count() }) except Exception as error: handle_error(error)
def login(): email = g.json.get('email') password = g.json.get('password') user = services.user.get_by_email(email) if not user: logging.debug(f"No user found for {email}") return handle_error(401, 'Incorrect user or password') if not services.user.verify_password(user, password): logging.warning(f"Incorrect password for {email}") return handle_error(401, 'Incorrect user or password') if not user.confirmed: logging.warning(f"User {user.email} hasn't been confirmed!") return handle_error(401, f'Please confirm user {user.email} first') token = services.user.generate_auth_token(user, expiration=TOKEN_EXPIRATION) ascii_token = token.decode('ascii') response = ApiResponse(content_type=request.accept_mimetypes.best, next=url_for('windfarm.index'), context={'token': ascii_token}) response.set_cookie('token', ascii_token, expires=datetime.datetime.now() + datetime.timedelta(minutes=TOKEN_EXPIRATION)) return response()
def get(url_safe): try: entity = ndb.Key(urlsafe=url_safe).get() if entity is None or entity.is_deleted: raise ResourceNotFoundException( "No entity with url-safe '{}' exist.".format(url_safe)) return create_json_response(entity) except Exception as error: handle_error(error)
def create(): try: req_body = request.get_json() {"name": "Syd" "Last_na"} {publishers} properties = { key: value for key, value in req_body.iteritems() if key in AcquisitionModel._properties } return create_json_response(AcquisitionModel(**properties).put().get()) except Exception as error: handle_error(error)
def new(): company_id = g.user.company_id start_date = request.form.get('start_date') end_date = request.form.get('end_date') turbine = request.form.get('turbine') component = request.form.get('component') reason = request.form.get('reason') note = request.form.get('note') if not all([start_date, end_date, turbine, component]): return handle_error(400, 'Invalid form have been filled') new_maintenance = MaintenanceEvent(company_id=company_id, start_date=start_date, end_date=end_date, turbine=turbine, component=component, reason=reason, note=note) db_session.add(new_maintenance) db_session.commit() return redirect(url_for('maintenance.index'))
def turbine(turbine_id): company = g.user.company latest_turbine_health_status = TurbineHealth.get_by_turbine_id( company_id=company.id, turbine_id=turbine_id) print(latest_turbine_health_status) if not latest_turbine_health_status: handle_error(404, f'Turbine with id {turbine_id} not found') return redirect(url_for('windfarm.index')) context = { 'turbine': latest_turbine_health_status, 'windfarm': company.windfarm_configuration, 'turbine_id': turbine_id } return render_template("windfarm/turbine.html", **context)
def configuration_update(company_id): company = services.company.get_by_id(company_id) if not company: return handle_error(404, "No company could be found!") configuration_request = g.json data, errors = ModelConfigurationSchema().load(configuration_request) if errors or not data: logging.debug(f"Invalid configuration supplied: {str(errors)}") return abort(400, f"Invalid configuration: {str(errors)}") configuration = CompanyConfiguration(company_id=company_id, user_id=g.user.id, configuration=json_reload(data)) configuration = services.company.insert_configuration(configuration) response = ApiResponse(content_type=request.accept_mimetypes.best, context=configuration.configuration, status_code=201) return response()