コード例 #1
0
    def post(self, request):
        serializer = UserSerializer()

        try:
            user = serializer.load(request.json)
        except ValidationError as error:
            return response.json(error.messages, status=400)

        register(user)
        return response.empty(status=201)
コード例 #2
0
ファイル: user.py プロジェクト: Rubenrod18/flask_api
class UserService(BaseService):
    def __init__(self, *args, **kwargs):
        super(UserService, self).__init__(*args, **kwargs)
        self.manager = UserManager()
        self.role_manager = RoleManager()
        self.user_serializer = UserSerializer()

    def create(self, user_data):
        deserialized_data = self.user_serializer.load(user_data)

        with db_wrapper.database.atomic():
            role = self.role_manager.find(deserialized_data['role_id'])

            user = self.manager.get_last_record()
            fs_uniquifier = 1 if user is None else user.id + 1

            deserialized_data.update({
                'created_by': current_user.id,
                'roles': [role],
                'fs_uniquifier': fs_uniquifier
            })
            user = user_datastore.create_user(**deserialized_data)

        return user

    def find(self, user_id: int, *args):
        self.user_serializer.load({'id': user_id}, partial=True)
        return self.manager.find(user_id, *args)

    def save(self, user_id: int, **kwargs):
        kwargs['id'] = user_id
        data = self.user_serializer.load(kwargs, unknown=EXCLUDE)

        user = self.manager.find(user_id)
        with db_wrapper.database.atomic():
            self.manager.save(user_id, **data)

            if 'role_id' in data:
                user_datastore.remove_role_from_user(user, user.roles[0])
                role = self.role_manager.find(data['role_id'])
                user_datastore.add_role_to_user(user, role)

        return user.reload()

    def delete(self, user_id: int):
        self.user_serializer.load({'id': user_id}, partial=True)
        return self.manager.delete(user_id)