Package: nm.debian.org Severity: important We now have a case of a person who wants to retire upon receiving a WAT ping, but who already received and turned down a previos WAT ping.
This causes a 500 error trying to follow the tokenized url: Internal Server Error: /process/emeritus MultipleObjectsReturned at /process/emeritus get() returned more than one Process -- it returned 2! File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in inner 42. response = get_response(request) File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _legacy_get_response 249. response = self._get_response(request) File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response 187. response = self.process_exception_by_middleware(e, request) File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response 185. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in view 68. return self.dispatch(request, *args, **kwargs) File "/srv/nm.debian.org/nm2/backend/mixins.py" in dispatch 66. self.load_objects() File "/srv/nm.debian.org/nm2/process/views.py" in load_objects 753. const.STATUS_EMERITUS_DD, const.STATUS_REMOVED_DD)) File "/usr/lib/python3/dist-packages/django/db/models/manager.py" in manager_method 85. return getattr(self.get_queryset(), name)(*args, **kwargs) File "/usr/lib/python3/dist-packages/django/db/models/query.py" in get 389. (self.model._meta.object_name, num) Now, the issue is due to this query in process/views.py: try: self.process = pmodels.Process.objects.get(person=self.person, applying_for__in=( const.STATUS_EMERITUS_DD, const.STATUS_REMOVED_DD)) except pmodels.Process.DoesNotExist: self.process = None I tried to change that to filter out closed processes, but now I understand that's not correct: the presence of a closed process is considered as a sign that the process has already been processed and therefore the applicant can't retire that way anymore. It's unclear to me how it should behave in this situation: * the presence of an open process for dd_e/dd_r definitely means the applicant should be able to follow the one-click-emeritus url * the presence of one closed process doesn't necassarily mean the person is "too late": the closed process might be from an old process that is already long over and doens't matter anymore * but how to distiguish the previous case from a current dd_r process that has already been approved (besides, approved but not closed processes are not filtered currently, they probably should) and so the applicant can't do anything anymore? -- regards, Mattia Rizzolo GPG Key: 66AE 2B4A FCCF 3F52 DA18 4D18 4B04 3FCD B944 4540 .''`. more about me: https://mapreri.org : :' : Launchpad user: https://launchpad.net/~mapreri `. `'` Debian QA page: https://qa.debian.org/developer.php?login=mattia `-
signature.asc
Description: PGP signature