Example #1
0
def _add_task():
    try:
        data = request.form.to_dict()

        if 'text' not in data or len(data['text'].strip()) < 1:
            raise BadRequest('text is empty')

        if 'subject' not in data or len(data['subject'].strip()) < 1:
            raise BadRequest('subject is empty')

        subject = get_subject(data['subject'])
        if not subject:
            raise BadRequest('subject not found')

        if 'day' in data and not data['day'].isdigit():
            raise BadRequest('day must be integer')

        if 'day' not in data:
            data['day'] = 0

        task = add_task(data['subject'], data['text'], data['day'])
        if not task:
            raise BadRequest('task not found')

        return jsonify(task.to_json())
    except BadRequest as e:
        abort(400, description=str(e))
    except Exception as e:
        current_app.logger.error(e)
        abort(500, description='Server error')
Example #2
0
 def add_argument(self,
                  name,
                  type=str,
                  required=False,
                  help="Bad Request",
                  location=('form', 'json'),
                  default=None):
     """request参数验证
     :param name: 
     :param type: 
     :param required: 
     :param help: 
     :param location: str or tuple. 
     :param default: 
     :return: 
     """
     location = self.get_location(location, help)
     value = location.get(name, default)
     if required and value is None:
         raise BadRequest(msg=help)
     try:
         value = type(value)
     except TypeError:
         raise BadRequest(msg=help)
     self._args[name] = value
Example #3
0
async def signature_middleware(request: Request) -> None:
    path: str = request.path

    if path in settings.SIGNATURE_WHITE_LIST:
        return

    timestamp: str = request.headers.get("Timestamp")
    signature: str = request.headers.get("Signature")
    if timestamp is None or signature is None:
        raise BadRequest()

    expect_signature: str = generate_signature(timestamp)
    if signature != expect_signature:
        raise BadRequest()
Example #4
0
def _update_task(id: int):
    try:
        if 'text' not in request.form or len(request.form['text'].strip()) < 1:
            raise BadRequest('text is empty')

        task = edit_task(id, request.form['text'])
        if not task:
            raise BadRequest('task not found')

        return jsonify(task.to_json())
    except BadRequest as e:
        abort(400, description=str(e))
    except Exception as e:
        current_app.logger.error(e)
        abort(500, description='Server error')
Example #5
0
def _update_subject(codename: str):
    try:
        assert request.json
        assert request.json['name'] or request.json['aliases'] or request.json['info'] \
               or request.json['teacher'] or request.json['audience'] or request.json['files']

        params = {}

        for name in [
                'name', 'aliases', 'info', 'teacher', 'audience', 'files'
        ]:
            if name in request.json:
                params[name] = request.json[name]

        subject = edit_subject(codename, **params)
        if not subject:
            raise BadRequest('subject not found')

        return jsonify(subject.to_full_json())
    except BadRequest as e:
        abort(400, description=str(e))
    except AssertionError as e:
        abort(400, description='send at least one parameter')
    except Exception as e:
        current_app.logger.error(e)
        abort(500, description='Server error')
Example #6
0
def add(request):
    data = json.loads(request.data)
    product_name = data.get("product_name")
    stock = data.get("stock")
    if product_name is None or stock is None:
        raise BadRequest("Product Name and Stock are required")
    product = Product.create(product_name=product_name, stock=stock)
    return 200, json.dumps(model_to_dict(product))
def _get_timetable_by_date(input_date: str):
    try:
        try:
            date_to_get = datetime.strptime(input_date, '%Y-%m-%d').date()
        except ValueError:
            raise BadRequest('the date must be in the format %Y-%m-%d')

        subjects = get_subjects_by_date(date_to_get)
        if not subjects:
            raise BadRequest('there are no subjects on this date')

        return jsonify(list(map(lambda s: s.to_json(), subjects)))
    except BadRequest as e:
        abort(400, description=str(e))
    except Exception as e:
        current_app.logger.error(e)
        abort(500, description='Server error')
def edit_stock(request, pk):
    data = json.loads(request.data)
    stock = data.get("stock")
    if stock is None:
        raise BadRequest("Stock is required")

    Sale = Sale.update(stock=stock).where(Sale.id == pk).execute()

    return 200, json.dumps(model_to_dict(Sale.select().where(Sale.id == pk).get()))
def register(request, dispatcher):
    data = json.loads(request.data)
    user_name = data.get("user_name")
    password = data.get("password")
    if password is None or user_name is None:
        raise BadRequest("User Name and Password are required")
    user = User.create(password=password, user_name=user_name)
    dispatcher("user_created", data)
    return 201, json.dumps({"user_name": user.user_name})
def login(request):
    data = json.loads(request.data)
    user_name = data.get("user_name")
    password = data.get("password")
    if password is None or user_name is None:
        raise BadRequest("User Name and Password are required")
    user = User.get(User.user_name == user_name)
    if user is None or user.password != password:
        raise Unauthorized("Invalid user name or password")
    return 200, json.dumps({"success": True})
Example #11
0
    def post(self):
        auth_header = self.request.headers.get('X-Verify-Credentials-Authorization')
        provider = self.request.headers.get('X-Auth-Service-Provider')

        if (not auth_header or not provider):
            raise BadRequest(reason='missing auth header and provider',
                             status_code=int(HTTPStatus.BAD_REQUEST))

        try:
            request_body = json_decode(self.request.body)
            gender = request_body['gender']
            push_id = request_body['push_id']
        except:
            raise BadRequest(reason='missing required fields', status_code=400)

        if gender not in (0, 1):
            raise BadRequest(reason='invalid gender provided', status_code=400)

        try:
            digits_user = self.auth_service.fetch_digits_provider(
                provider_url=provider, auth_header=auth_header)

            user_id = digits_user['id']
            phone_number = digits_user['phone_number']
        except AuthError:
            raise AuthError(reason='invalid user provided',
                            status_code=int(HTTPStatus.UNAUTHORIZED))


        self.user_service.verify_user_resource(
            user_id=user_id, phone_number=phone_number, gender=gender, push_id=push_id)

        jwt_token = self.jwt_service.sign_jwt_token({'id': user_id, 'push_id': push_id})

        response = {
            'token': jwt_token
        }

        self.write(response)
        self.set_status(int(HTTPStatus.CREATED))
        self.finish()
Example #12
0
def _get_task(id: int):
    try:
        task = get_task(id)
        if not task:
            raise BadRequest('task not found')

        return jsonify(task.to_json())
    except BadRequest as e:
        abort(400, description=str(e))
    except Exception as e:
        current_app.logger.error(e)
        abort(500, description='Server error')
Example #13
0
def _get_user(id: int):
    try:
        user = get_user(id)
        if not user:
            raise BadRequest('user not found')

        return jsonify(user.to_json())
    except BadRequest as e:
        abort(400, description=str(e))
    except Exception as e:
        current_app.logger.error(e)
        abort(500, description='Server error')
Example #14
0
def _get_subject_tasks(codename: str):
    try:
        subject = get_subject(codename)
        if not subject:
            raise BadRequest('subject not found')

        return jsonify(list(map(lambda s: s.to_json(), subject.tasks)))
    except BadRequest as e:
        abort(400, description=str(e))
    except Exception as e:
        current_app.logger.error(e)
        abort(500, description='Server error')
Example #15
0
def _get_subject_timetable(codename: str):
    try:
        subject = get_subject(codename)
        if not subject:
            raise BadRequest('subject not found')

        subject_timetable = get_subject_timetable(codename)

        return jsonify(subject_timetable)
    except BadRequest as e:
        abort(400, description=str(e))
    except Exception as e:
        current_app.logger.error(e)
        abort(500, description='Server error')
Example #16
0
 def get_location(self, locations, help='Bad Request'):
     location_obj = None
     if isinstance(locations, str):
         locations = (locations, )
     for location in locations:
         if not hasattr(request, location):
             continue
         if not getattr(request, location):
             continue
         location_obj = getattr(request, location)
         break
     if location_obj is not None:
         return location_obj
     raise BadRequest(msg=help)
Example #17
0
def _get_tasks_by_week(week: int):
    try:
        if 0 > week or week > 52:
            raise BadRequest('invalid week number')

        tasks = get_tasks_by_week(week)

        return jsonify(
            list(map(lambda day: list(map(lambda s: s.to_json(), day)), tasks)))
    except BadRequest as e:
        abort(400, description=str(e))
    except Exception as e:
        current_app.logger.error(e)
        abort(500, description='Server error')
Example #18
0
def _get_tasks_by_date(input_date: int):
    try:
        try:
            date_to_get = datetime.strptime(input_date, '%Y-%m-%d').date()
        except ValueError:
            raise BadRequest('the date must be in the format %Y-%m-%d')

        tasks = get_tasks_by_date(date_to_get)

        return jsonify(list(map(lambda s: s.to_json(), tasks)))
    except BadRequest as e:
        abort(400, description=str(e))
    except Exception as e:
        current_app.logger.error(e)
        abort(500, description='Server error')
def add(request, dispatcher):
    data = json.loads(request.data)
    user_id = data.get("user_id")
    quantity = data.get("quantity")
    product_id = data.get("product_id")
    if user_id is None or quantity is None or product_id is None:
        raise BadRequest("Sale Id, User  Id and are Quantity required")

    sale = Sale.create(Sale_name=Sale_name, stock=stock)
    payload  = {
        "stock": (stock - quantity),
        "product_id": product_id
        }
    dispatcher("update_stock", payload)
    return 200, json.dumps(model_to_dict(Sale))
Example #20
0
def _delete_task(id: int):
    try:
        task = get_task(id)
        if not task:
            raise BadRequest('task not found')

        if delete_task(id):
            return jsonify('')
        else:
            abort(501, 'failed to delete task')
    except BadRequest as e:
        abort(400, description=str(e))
    except Exception as e:
        current_app.logger.error(e)
        abort(500, description='Server error')
Example #21
0
def delete(request, pk):
    if pk is None:
        raise BadRequest("Product id is required")
    product = Product.delete().where(Product.id == pk).execute()

    return 200, json.dumps({"Product Deleted": True})
                # is declined:
                nested_metrics = set(self.nested_metrics)
                raise InvalidQuery(details=(
                    f"Nested metrics - e.g. {nested_metrics} - cannot be requested "
                    f"alongside other metrics. "
                    f"Remove {set(self.metric) - nested_metrics} and try again."
                ))
            else:
                # When no nested metric is present in `self.metric`:
                if self.area_type == "msoa":
                    query = const.DBQueries.nested_object
                else:
                    query = const.DBQueries.main_data

                query = query.substitute(partition=self.partition_id,
                                         filters=filters)

        elif self.method == RequestMethod.Head:
            query = const.DBQueries.exists
            query = query.substitute(partition=self.partition_id,
                                     filters=filters)

        else:
            raise BadRequest()

        logger.info(dumps({"query": query}))

        self._db_query = query

        return self._db_query
def delete(request, pk):
    if pk is None:
        raise BadRequest("Sale id is required")
    Sale = Sale.delete().where(Sale.id == pk).execute()

    return 200, json.dumps({"Sale Deleted": True})