Esempio n. 1
0
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)
Esempio n. 2
0
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()
Esempio n. 3
0
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)
Esempio n. 4
0
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)
Esempio n. 7
0
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()