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))
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.']}))
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)
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)