diff --git a/taiga/projects/history/models.py b/taiga/projects/history/models.py index 82d1667d..ae0dd356 100644 --- a/taiga/projects/history/models.py +++ b/taiga/projects/history/models.py @@ -94,7 +94,10 @@ class HistoryEntry(models.Model): def owner(self): pk = self.user["pk"] model = apps.get_model("users", "User") - return model.objects.get(pk=pk) + try: + return model.objects.get(pk=pk) + except model.DoesNotExist: + return None @cached_property def values_diff(self): diff --git a/taiga/projects/history/serializers.py b/taiga/projects/history/serializers.py index 2b5f4e00..ac6cf0d2 100644 --- a/taiga/projects/history/serializers.py +++ b/taiga/projects/history/serializers.py @@ -39,12 +39,13 @@ class HistoryEntrySerializer(serializers.ModelSerializer): def get_user(self, entry): user = {"pk": None, "username": None, "name": None, "photo": None, "is_active": False} user.update(entry.user) - user["photo"] = get_photo_or_gravatar_url(entry.owner) - user["is_active"] = entry.owner.is_active - if entry.owner.is_active or entry.owner.is_system: - user["name"] = entry.owner.get_full_name() - user["username"] = entry.owner.username + if entry.owner: + user["is_active"] = entry.owner.is_active + + if entry.owner.is_active or entry.owner.is_system: + user["name"] = entry.owner.get_full_name() + user["username"] = entry.owner.username return user diff --git a/taiga/users/services.py b/taiga/users/services.py index 0ce318bd..4be2f405 100644 --- a/taiga/users/services.py +++ b/taiga/users/services.py @@ -34,6 +34,7 @@ from taiga.projects.notifications.choices import NotifyLevel from .gravatar import get_gravatar_url +from django.conf import settings def get_and_validate_user(*, username:str, password:str) -> bool: """ @@ -70,7 +71,7 @@ def get_photo_or_gravatar_url(user): """Get the user's photo/gravatar url.""" if user: return get_photo_url(user.photo) if user.photo else get_gravatar_url(user.email) - return "" + return settings.GRAVATAR_DEFAULT_AVATAR def get_big_photo_url(photo):