Send Email does not work #20

Open
opened 2023-07-02 00:17:29 +02:00 by magicfelix · 1 comment
Member

Tested with an own invoice. A click on Send email (invoice detail page) produces the following error:

Internal Server Error: /django/app/tezor/invoice/07b3973a-a1b2-40da-aec2-906909caa760/send/
Traceback (most recent call last):
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/core/handlers/exception.py", line 56, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/views/generic/base.py", line 103, in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/contrib/auth/mixins.py", line 107, in dispatch
    if not self.has_permission():
           ^^^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/contrib/views.py", line 47, in has_permission
    return self.request.user.has_perms(perms, obj)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/contrib/auth/models.py", line 320, in has_perms
    return all(self.has_perm(perm, obj) for perm in perm_list)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/contrib/auth/models.py", line 320, in <genexpr>
    return all(self.has_perm(perm, obj) for perm in perm_list)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/contrib/auth/models.py", line 311, in has_perm
    return _user_has_perm(self, perm, obj)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/contrib/auth/models.py", line 220, in _user_has_perm
    if backend.has_perm(user, perm, obj):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/permissions.py", line 31, in has_perm
    return has_perm(perm, user, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/permissions.py", line 23, in has_perm
    return permissions.test_rule(name, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/rulesets.py", line 6, in test_rule
    return name in self and self[name].test(*args, **kwargs)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 172, in test
    return bool(self._apply(*args))
                ^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 235, in _apply
    result = self.fn(*callargs)
             ^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 184, in OR
    return self._combine(other, operator.or_, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 206, in _combine
    self_result = self._apply(*args)
                  ^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 235, in _apply
    result = self.fn(*callargs)
             ^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 184, in OR
    return self._combine(other, operator.or_, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 206, in _combine
    self_result = self._apply(*args)
                  ^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 235, in _apply
    result = self.fn(*callargs)
             ^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 178, in AND
    return self._combine(other, operator.and_, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 216, in _combine
    other_result = other._apply(*args)
                   ^^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 235, in _apply
    result = self.fn(*callargs)
             ^^^^^^^^^^^^^^^^^^
  File "/srv/www/aleksis/venv/lib/python3.11/site-packages/aleksis/apps/tezor/predicates.py", line 13, in is_own_invoice
    return obj.get_person() == user.person
           ^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'get_person'
Tested with an own invoice. A click on `Send email` (invoice detail page) produces the following error: ```plain Internal Server Error: /django/app/tezor/invoice/07b3973a-a1b2-40da-aec2-906909caa760/send/ Traceback (most recent call last): File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/core/handlers/exception.py", line 56, in inner response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/views/generic/base.py", line 103, in view return self.dispatch(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/contrib/auth/mixins.py", line 107, in dispatch if not self.has_permission(): ^^^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/contrib/views.py", line 47, in has_permission return self.request.user.has_perms(perms, obj) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/contrib/auth/models.py", line 320, in has_perms return all(self.has_perm(perm, obj) for perm in perm_list) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/contrib/auth/models.py", line 320, in <genexpr> return all(self.has_perm(perm, obj) for perm in perm_list) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/contrib/auth/models.py", line 311, in has_perm return _user_has_perm(self, perm, obj) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/django/contrib/auth/models.py", line 220, in _user_has_perm if backend.has_perm(user, perm, obj): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/permissions.py", line 31, in has_perm return has_perm(perm, user, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/permissions.py", line 23, in has_perm return permissions.test_rule(name, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/rulesets.py", line 6, in test_rule return name in self and self[name].test(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 172, in test return bool(self._apply(*args)) ^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 235, in _apply result = self.fn(*callargs) ^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 184, in OR return self._combine(other, operator.or_, args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 206, in _combine self_result = self._apply(*args) ^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 235, in _apply result = self.fn(*callargs) ^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 184, in OR return self._combine(other, operator.or_, args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 206, in _combine self_result = self._apply(*args) ^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 235, in _apply result = self.fn(*callargs) ^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 178, in AND return self._combine(other, operator.and_, args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 216, in _combine other_result = other._apply(*args) ^^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/rules/predicates.py", line 235, in _apply result = self.fn(*callargs) ^^^^^^^^^^^^^^^^^^ File "/srv/www/aleksis/venv/lib/python3.11/site-packages/aleksis/apps/tezor/predicates.py", line 13, in is_own_invoice return obj.get_person() == user.person ^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'get_person' ```
Author
Member

Difficult … the predicate doesn't get the object, because the view SendInvoiceEmail has no get_object method: https://github.com/dfunckt/django-rules/blob/master/rules/contrib/views.py#L41

And I have no idea how a get_object method called with no further arguments than self would be able to return the invoice.

Difficult … the predicate doesn't get the object, because the view `SendInvoiceEmail` has no `get_object` method: https://github.com/dfunckt/django-rules/blob/master/rules/contrib/views.py#L41 And I have no idea how a `get_object` method called with no further arguments than `self` would be able to return the invoice.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
aleksis/AlekSIS-App-Tezor#20
No description provided.