예제 #1
0
파일: app.py 프로젝트: tikki-fi/tikki
def post_user():
    try:
        utils.flask_validate_request_is_json(request)
        payload = utils.get_auth0_payload(app, request)
        now = datetime.datetime.now()
        uuid = str(utils.generate_uuid())
        in_user = utils.get_args(
            received=request.json,
            defaultable={
                'id': uuid,
                'created_at': now,
                'updated_at': now,
                'payload': {}
            },
            constant={'type_id': 1},
        )
        in_user['username'] = payload['sub']
        user = db_api.add_row(User, in_user)
        identity = utils.create_jwt_identity(user, payload)
        return utils.flask_return_success({
            'jwt': create_jwt(identity),
            'user': user.json_dict
        })
    except Exception as e:
        return utils.flask_handle_exception(e)
예제 #2
0
파일: app.py 프로젝트: tikki-fi/tikki
def put_event():
    try:
        utils.flask_validate_request_is_json(request)
        now = datetime.datetime.now()
        uuid = str(utils.generate_uuid())
        user = get_jwt_identity()
        row = utils.get_args(
            received=request.json,
            required={
                'name': str,
                'description': str,
                'address': str,
                'postal_code': str,
                'event_at': datetime.datetime
            },
            defaultable={
                'id': uuid,
                'created_at': now,
                'updated_at': now,
                'payload': {},
                'organization_id': 0,
                'user_id': user
            },
        )

        filters = {'id': row.pop('id', None)}
        event = db_api.update_row(Event, filters, row)
        return utils.flask_return_success(event.json_dict)
    except Exception as e:
        return utils.flask_handle_exception(e)
예제 #3
0
파일: app.py 프로젝트: tikki-fi/tikki
def get_uuid():
    try:
        args = utils.get_args(
            received=request.args,
            defaultable={'count': 1},
        )
        count = args['count']
        if 0 < count <= 1024:
            return utils.flask_return_success(utils.generate_uuid(count))
        else:
            return utils.flask_return_exception(
                'The count parameter cannot be below 1 '
                'or greater than 1024.', 400)
    except Exception as e:
        return utils.flask_handle_exception(e)
예제 #4
0
파일: app.py 프로젝트: tikki-fi/tikki
def login():
    app.logger.debug(request)
    token = utils.get_args(request.json, required={'token': str})['token']
    user_payload: Dict[str, Any] = {}
    try:
        if "." not in token:
            # "new" opaque token
            response = requests.get(
                url="https://tikkifi.eu.auth0.com/userinfo",
                headers={"Authorization": f"Bearer {token}"},
            )
            body = response.json()
            if 'email' in body:
                user_payload["email"] = body["email"]
            if 'name' in body:
                user_payload["name"] = body["name"]
            username = body["sub"]
        else:
            # legacy token
            utils.flask_validate_request_is_json(request)
            payload = utils.get_auth0_payload(app, request)
            username = payload['sub']

        user = db_api.get_row(User, {'username': username})
        if not user:
            uuid = str(utils.generate_uuid())
            user_payload = {
                "id": uuid,
                "username": username,
                "payload": {},
                "type_id": 1
            }
            user = db_api.add_row(User, user_payload)

        identity = utils.create_jwt_identity(user)
        return utils.flask_return_success({
            'jwt':
            create_jwt(identity),
            'user':
            user_payload if user_payload else user.json_dict
        })
    except Exception as e:
        return utils.flask_handle_exception(e)
예제 #5
0
파일: app.py 프로젝트: tikki-fi/tikki
def put_record():
    try:
        utils.flask_validate_request_is_json(request)
        now = datetime.datetime.now()
        uuid = str(utils.generate_uuid())
        user = get_jwt_identity()
        row = utils.get_args(
            received=request.json,
            defaultable={
                'id': uuid,
                'created_at': now,
                'updated_at': now,
                'payload': {},
                'type_id': 0,
                'user_id': user
            },
            optional={'event_id': str},
        )
        filters = {'id': row.pop('id', None)}

        # Add created_user which defaults to the user_id, merging it with the
        # main row object.
        created_user = utils.get_args(
            received=request.json,
            defaultable={'created_user': user},
        )
        row.update(created_user)

        # And finally add details of who validated the record and when if provided.
        validated = utils.get_args(
            received=request.json,
            defaultable={'validated_at': now},
            optional={'validated_user_id': str},
        )
        if validated.get('validated_user_id') is not None:
            row.update(validated)

        record = db_api.update_row(Record, filters, row)
        return utils.flask_return_success(record.json_dict)
    except Exception as e:
        return utils.flask_handle_exception(e)
예제 #6
0
파일: app.py 프로젝트: tikki-fi/tikki
def post_record():
    try:
        utils.flask_validate_request_is_json(request)
        now = datetime.datetime.now()
        uuid = str(utils.generate_uuid())
        row = utils.get_args(received=request.json,
                             optional={'event_id': str},
                             constant={
                                 'user_id': get_jwt_identity(),
                             },
                             defaultable={
                                 'id': uuid,
                                 'created_at': now,
                                 'updated_at': now,
                                 'payload': {},
                                 'type_id': 0,
                             })

        # Add created_user which defaults to the user_id, merging it with the
        # main row object.
        user_id = row['user_id']
        created_user = utils.get_args(
            received=request.json,
            defaultable={'created_user_id': user_id},
        )
        row.update(created_user)

        # And finally add details of who validated the record and when if provided.
        validated = utils.get_args(
            received=request.json,
            defaultable={'validated_at': now},
            optional={'validated_user_id': str},
        )
        if 'validated_user_id' in validated:
            row.update(validated)

        record = db_api.add_row(Record, row)
        return utils.flask_return_success(record.json_dict)
    except Exception as e:
        return utils.flask_handle_exception(e)
예제 #7
0
 def test_generate_uuid_zero(self):
     self.assertIsNone(utils.generate_uuid(0))
예제 #8
0
 def test_generate_uuid_many(self):
     obj_count = 10
     val = utils.generate_uuid(obj_count)
     self.assertEqual(len(val), obj_count)
     self.assertIsInstance(val[0], UUID)
예제 #9
0
 def test_generate_uuid_default(self):
     val = utils.generate_uuid()
     self.assertIsInstance(val, UUID)