[Patchew-devel] [PATCH] models: return None from MessageManager query methods
Fam Zheng
fam at euphon.net
Tue Mar 19 05:28:25 UTC 2019
On Mon, 03/18 12:16, Paolo Bonzini wrote:
> Otherwise, we get 500 errors on series views such as
> https://patchew.org/XYZ/abc@def/ or message views such as
> https://patchew.org/XYZ/abc@def/ghi@jkl/.
>
> Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
> ---
> api/models.py | 30 ++++++++++++++++++++++++------
> 1 file changed, 24 insertions(+), 6 deletions(-)
>
> diff --git a/api/models.py b/api/models.py
> index 7d1b609..41228df 100644
> --- a/api/models.py
> +++ b/api/models.py
> @@ -329,25 +329,43 @@ class MessageManager(models.Manager):
>
> def project_messages(self, project):
> q = super(MessageManager, self).get_queryset()
> - if isinstance(project, str):
> - po = Project.objects.get(name=project)
> - elif isinstance(project, int):
> - po = Project.objects.get(id=project)
> + try:
> + if isinstance(project, str):
> + po = Project.objects.get(name=project)
> + elif isinstance(project, int):
> + po = Project.objects.get(id=project)
> + except Project.DoesNotExist:
> + return None
> q = q.filter(project=po) | q.filter(project__parent_project=po)
> return q
>
> def series_heads(self, project=None):
> if project:
> q = self.project_messages(project)
> + if not q:
> + return None
> else:
> q = super(MessageManager, self).get_queryset()
> return q.filter(is_series_head=True).prefetch_related('properties', 'project')
>
> def find_series(self, message_id, project_name=None):
> - return self.series_heads(project_name).filter(message_id=message_id).first()
> + heads = self.series_heads(project_name)
> + if not heads:
> + return None
> + try:
> + return heads.filter(message_id=message_id).first()
> + except Message.DoesNotExist:
> + return None
> +
>
> def find_message(self, message_id, project_name):
> - return self.project_messages(project_name).filter(message_id=message_id).first()
> + messages = self.project_messages(project_name)
> + if not messages:
> + return None
> + try:
> + return messages.filter(message_id=message_id).first()
For above two: does first() throw DoesNotExist at all? If not, all
except: are not necessary by using first().
Fam
> + except Message.DoesNotExist:
> + return None
>
> def patches(self):
> return super(MessageManager, self).get_queryset().filter(is_patch=True)
More information about the Patchew-devel
mailing list