Exemple #1
0
    def mutate(self, info, email):
        errors = dict()
        email = email

        try:
            user = User.objects.get(email=email)
        except User.DoesNotExist:
            errors['email'] = [EMAIL_ADDRESS_DOES_NOT_EXIST]

            return RestorePasswordRequest(
                success=False, field_errors=ErrorType.from_errors(errors))

        if not user.is_active or user.is_deleted:

            return RestorePasswordRequest(
                message=MessageType(title=RESTORE_PASSWORD_EMAIL_ACTIVE,
                                    description=RESTORE_PASSWORD_EMAIL_ACTIVE,
                                    type=WARNING_MESSAGE_TYPE))

        domain = get_domain(info.context)

        send_restore_password_link.delay(
            user_id=user.pk,
            email=email,
            domain=domain,
        )

        return RestorePasswordRequest(success=True,
                                      message=MessageType(
                                          title='RESTORE_PASSWORD_EMAIL_TITLE',
                                          description='RESTORE_PASSWORD_EMAIL',
                                          type=SUCCESS_MESSAGE_TYPE))
Exemple #2
0
 def perform_delete_mutate(cls, info, id):
     try:
         obj = cls._meta.model._default_manager.get(pk=id)
         obj.delete()
         kwargs = {cls._meta.return_field_name: obj}
         return cls(errors=[], **kwargs)
     except cls._meta.model.DoesNotExist:
         return cls(errors=ErrorType.from_errors({'id': ['Not found.']}))
Exemple #3
0
    def mutate_and_get_payload(cls, root, info, **input):
        form = cls.get_form(root, info, **input)

        if form.is_valid():
            return cls.perform_mutate(form, info)
        else:
            errors = ErrorType.from_errors(form.errors)

            return cls(errors=errors, **form.data)
Exemple #4
0
    def mutate_and_get_payload(cls, root, info, **input):
        if cls._meta.is_relay:
            input = normalize_global_ids(cls._meta.model, input)

        cls.check_permissions(info)
        
        if cls._meta.deleting:
            id = input.get("id")
            return cls.perform_delete_mutate(info, id)

        form = cls.get_form(root, info, **input)

        if form.is_valid():
            return cls.perform_mutate(form, info)
        else:
            errors = ErrorType.from_errors(form.errors)

            return cls(errors=errors)
    def mutate_and_get_payload(cls, root, info, **input):
        if hasattr(cls, 'has_permission') and callable(
                getattr(cls, 'has_permission')):
            if not cls.has_permission(root, info, input):
                # errors = ErrorType.from_errors(
                #     {'permission': [_('Você não tem permissão para isso!')]})
                # return cls(errors=errors)
                raise PermissionDenied()

        search_key = 'id'
        convert_hash_id_to_plain_id(input, search_key)

        # return super(RNASerializerMutation, cls).mutate_and_get_payload(root, info, **input)

        kwargs = cls.get_serializer_kwargs(root, info, **input)
        serializer = cls._meta.serializer_class(**kwargs)

        if serializer.is_valid():
            return cls.perform_mutate(serializer, info)
        else:
            errors = ErrorType.from_errors(
                serializer_errors_to_graphql(serializer.errors))
            return cls(errors=errors)