示例#1
0
    def get(self, user_id=None):
        # One
        if user_id is not None:
            user_doc = users.find_one({'_id': ObjectId(user_id)})
            user = convert_user_object_from(user_doc)
            return response.success(user)

        # Many
        cursor = users.find({})
        existing_users = []
        for user_doc in cursor:
            user = convert_user_object_from(user_doc)
            existing_users.append(user)
        return response.success(existing_users)
示例#2
0
def action_update():
    content = request.get_json(silent=True)
    content = content if content is not None else {}

    form = DeviceUpdateForm.from_json(content)

    if form.validate():
        device = Device.query.get(form.id.data)

        if device:
            device.name = form.name.data
            device.updated_at = datetime.utcnow()

            db.session.flush()
            db.session.commit()

            device = Device.query.get(device.id)

            return response.success(data={
                'device': device.to_dict('update')
            })
        else:
            return response.not_success('not-found')
    else:
        return response.from_form(form)
示例#3
0
def action_data_out_by_random():
    content = request.get_json(silent=True)
    content = content if content is not None else {}

    form = DeviceDataOutByRandomForm.from_json(content)

    if form.validate():
        datasets = form.datasets.data
        dataset_list = []

        for _ in range(datasets):
            items = random_int_values(form.amount.data, form.min_value.data, form.max_value.data)

            dataset_list.append({
                'items': items
            })

        labels = random_datetime_range(
            datetime.now() - timedelta(seconds=form.amount.data - 1),
            datetime.now(),
            dt_format='%H:%M:%S'
        )

        return response.success(data={
            'labels': labels,
            'datasets': dataset_list
        })
    else:
        return response.from_form(form)
def book():
    book = request.args.get('collection')

    book_page = requests.get(endpoints.pergamum.collection.format(book=book))

    return success(message="Livro retornado com sucesso",
                   book=str(book_page.content))
示例#5
0
def action_list():
    devices = Device.query.order_by(Device.created_at.desc()).all()
    devices = [r.to_dict('list') for r in devices]

    return response.success(data={
        'list': devices,
    })
示例#6
0
def action_data_out_by_device():
    content = request.get_json(silent=True)
    content = content if content is not None else {}

    form = DeviceDataOutByDeviceForm.from_json(content)

    if form.validate():
        device = Device.query.get(form.device_id.data)

        if device:
            items = DeviceData.query.filter(
                DeviceData.device_id == form.device_id.data,
                DeviceData.type == form.type.data,
                DeviceData.created_at >= form.start_dt.data,
                DeviceData.created_at <= form.end_dt.data
            ).all()

            if items:
                labels = map(lambda item: item.created_at.strftime(form.format_dt.data), items)
                items = map(lambda item: item.value, items)

                return response.success(data={
                    'labels': labels,
                    'datasets': [{
                        'items': items
                    }]
                })
            else:
                return response.not_success('empty')
        else:
            return response.not_success('not-found')
    else:
        return response.from_form(form)
示例#7
0
def action_create(account):
    if not account.is_admin:
        return response.unauthorized()

    content = request.get_json(silent=True)
    content = content if content is not None else {}

    form = AccountCreateForm.from_json(content)

    if form.validate():
        new_account = Account()

        new_account.name = form.name.data
        new_account.email = form.email.data
        new_account.photo_url = form.photo_url.data
        new_account.is_admin = form.is_admin.data
        new_account.created_at = datetime.utcnow()

        new_account.set_password(form.password.data)

        db.session.add(new_account)
        db.session.flush()
        db.session.commit()

        new_account = Account.query.get(new_account.id)

        return response.success(
            data={'account': new_account.to_dict('create')})
    else:
        return response.from_form(form)
示例#8
0
def news_item():
    date = request.args.get("date")
    date = datetime.datetime.strptime(date, '%d/%m/%Y')

    news = portal_repository.news_item(date)

    return success(message="Noticias retornadas com sucesso", daily_news=news)
def renew():
    book = request.form.get('book')
    token = request.headers.get("phpsessid")

    pergamum_repository.renew(token, book)

    return success(message="Livro renovado com sucesso", token=token)
示例#10
0
文件: lambda.py 项目: heeki/tick
def handler(event, context):
    # print("event={}".format(json.dumps(event)))
    # print("request_id={}".format(context.aws_request_id))

    for record in event["Records"]:
        payload = base64.b64decode(record["kinesis"]["data"])
        partition_key = record["kinesis"]["partitionKey"]
        output = {
            "request_id": context.aws_request_id,
            "sandbox_id": str(sandbox_id),
            "partition_key": partition_key
        }

        try:
            output["payload"] = json.loads(payload)
            status = 200
        except json.JSONDecodeError:
            output["payload"] = payload.decode("utf-8")
            status = 500
        print(json.dumps(output))

    if status == 200:
        response = success("success")
    else:
        response = failure("failure")

    return response
def login():
    login = request.form.get('login')
    password = request.form.get('password')

    token = pergamum_repository.authenticate(login, password)

    return success(message="Login realizado com sucesso", token=token)
示例#12
0
def action_delete(account):
    if not account.is_admin:
        return response.unauthorized()

    content = request.get_json(silent=True)
    content = content if content is not None else {}

    form = AccountDeleteForm.from_json(content)

    if form.validate():
        if form.id.data > 1:
            found_account = Account.query.get(form.id.data)

            if found_account:
                db.session.delete(found_account)
                db.session.flush()
                db.session.commit()

                return response.success()
            else:
                return response.not_success("not-found")
        else:
            return response.with_validate_error(
                "id", ["Cannot delete this account."])
    else:
        return response.from_form(form)
示例#13
0
def action_update(account):
    if not account.is_admin:
        return response.unauthorized()

    content = request.get_json(silent=True)
    content = content if content is not None else {}

    form = AccountUpdateForm.from_json(content)

    if form.validate():
        found_account = Account.query.get(form.id.data)

        if found_account:
            found_account.name = form.name.data
            found_account.token = form.token.data
            found_account.email = form.email.data
            found_account.photo_url = form.photo_url.data
            found_account.is_admin = form.is_admin.data
            found_account.updated_at = datetime.utcnow()

            if form.password.data:
                found_account.set_password(form.password.data)

            db.session.flush()
            db.session.commit()

            found_account = Account.query.get(found_account.id)

            return response.success(
                data={"account": found_account.to_dict("update")})
        else:
            return response.not_success("not-found")
    else:
        return response.from_form(form)
示例#14
0
def set_password():
    data = request.get_json()
    token = request.headers.get("x-api-token")

    acadonline_repository.set_password(token, data)

    return success(message="Perfil atualizado com sucesso", token=token)
示例#15
0
def api_outage_fix():
    set_outage(False)

    control = get_control()
    emit('control', control, namespace='/app', broadcast=True)

    return success(get_state())
示例#16
0
def action_list(account):
    if not account.is_admin:
        return response.unauthorized()

    accounts = Account.query.order_by(Account.created_at.desc()).all()
    accounts = [r.to_dict("list") for r in accounts]

    return response.success(data={"list": accounts})
def weekly_news_items():
    date = request.args.get("date")
    date = datetime.datetime.strptime(date, '%d/%m/%Y')

    _weekly_news_items = portal_repository.weekly_news_items(date)

    return success(message="Noticias retornadas com sucesso",
                   weekly_news=_weekly_news_items)
def home():
    phpsessid = request.headers.get("phpsessid")
    headers = {"cookie": f"PHPSESSID={phpsessid};"}

    home_page = requests.get(pergamum_urls["home"], headers=headers)

    return success(message="Meu pergamum capturado com sucesso!",
                   token=phpsessid)
示例#19
0
def api_set_clock_skew():
    skew = request.args.get('skew', 1)

    set_clock_skew(skew)

    control = get_control()
    emit('control', control, namespace='/app', broadcast=True)

    return success(get_state())
def books():
    token = request.headers.get("phpsessid")

    # loans = pergamum_repository.books(token)
    loans = pergamum_repository.books_mock()

    return success(message="Livros retornados com sucesso",
                   token=token,
                   loans=loans)
示例#21
0
def api_outage_strategy():
    strategy = request.args.get('strategy', 'immediate')

    set_outage_strategy(strategy)

    control = get_control()
    emit('control', control, namespace='/app', broadcast=True)

    return success(get_state())
示例#22
0
def api_set_data_frequency():
    frequency = request.args.get('frequency', 1)

    set_data_frequency(frequency)

    control = get_control()
    emit('control', control, namespace='/app', broadcast=True)

    return success(get_state())
示例#23
0
def menu():
    campus = request.args.get("campus")
    shift = request.args.get("shift")
    next = request.args.get("next")
    sample = request.args.get("sample")

    weekly_menu = ru_repository.weekly_menu(campus, shift, next, sample)

    return success(message="Cardápio retornado com sucesso",
                   weekly_menu=weekly_menu)
示例#24
0
def get_additional_activities():
    token = request.headers.get("x-api-token")

    activities = acadonline_repository.get_additional_activities(token)

    return success(
        message="Atividades capturadas com sucesso!",
        token=token,
        activities=activities,
    )
示例#25
0
def get_perfil():
    token = request.headers.get("x-api-token")

    perfil = acadonline_repository.get_perfil(token)

    return conditional_response(
        perfil,
        success(message="Perfil capturado com sucesso!",
                perfil=perfil,
                token=token), error(message="Perfil inválido"))
def news_items():
    page = int(request.args.get("page", 1))

    initial_date = now_subtracted_weeks(page * 2)
    final_date = now_subtracted_weeks((page - 1) * 2)

    _news_items = portal_repository.news_items(initial_date, final_date)

    return success(message="Noticias retornadapys com sucesso",
                   news_items=_news_items)
 def test_return_success(self):
     data = {
         'name': 'Steve Jobs',
         'age': 30,
         'gender': "male",
         'email': "*****@*****.**"
     }
     r, status_code = response.success(data)
     assert r == {'status': 'success', 'data': data}
     assert status_code == 200
示例#28
0
def action_data_out_by_device():
    content = request.get_json(silent=True)
    content = content if content is not None else {}

    form = DeviceDataOutByDeviceForm.from_json(content)

    if form.validate():
        device = Device.query.filter(
            Device.token == form.device_token.data).first()

        if device:
            if form.order.data == "asc":
                order_by = asc(DeviceData.created_at)
            else:
                order_by = desc(DeviceData.created_at)

            items = (DeviceData.query.filter(
                DeviceData.device_id == device.id,
                DeviceData.type == form.type.data,
                DeviceData.created_at >= form.start_dt.data,
                DeviceData.created_at <= form.end_dt.data,
            ).order_by(order_by).limit(form.amount.data).all())

            if items:
                if form.format_dt.data:
                    labels = map(
                        lambda item: item.created_at.strftime(form.format_dt.
                                                              data),
                        items,
                    )
                else:
                    labels = map(
                        lambda item: int(
                            calendar.timegm(item.created_at.timetuple()) * 1000
                        ),
                        items,
                    )

                items = map(lambda item: item.value, items)

                return response.success(data={
                    "labels": labels,
                    "datasets": [{
                        "items": items
                    }]
                })
            else:
                return response.not_success("empty")
        else:
            return response.not_success("not-found")
    else:
        return response.from_form(form)
示例#29
0
def get_disciplines():
    token = request.headers.get("x-api-token")

    disciplines = acadonline_repository.get_disciplines(token)

    condition = len(disciplines) > 0

    return conditional_response(
        condition,
        success(message="Disciplinas returnadas com sucesso!",
                token=token,
                disciplines=disciplines),
        error(message="Erro ao retornar disciplinas"))
示例#30
0
def get_grade():
    token = request.headers.get("x-api-token")
    extra = request.args.get("extra")

    grade = acadonline_repository.get_grade_with_info(
        token) if extra else acadonline_repository.get_grade(token)

    condition = len(grade["disciplines"]) > 0

    return conditional_response(
        condition,
        success(message="Notas capturadas com sucesso!",
                token=token,
                grade=grade), error(message="Erro ao capturar notas"))