from pirates import models as pirates_models class User(pirates_models.AbstractUser): def set_unusable_password(self) -> None: # Purely for compatibility with Guardian pass def get_username(self) -> str: first_name = self.first_name if len(first_name) != 0: first_name += " " return f"{first_name}{self.last_name}" @property def can_approve_contracts(self) -> bool: # TODO: Do we need the superuser check? return self.is_superuser or self.has_perm("contracts.approve") @property def can_create_contracts(self) -> bool: # TODO: Do we need the superuser check? return self.is_superuser or self.has_perm("contracts.add") @property def can_view_confidential(self) -> bool: return self.is_superuser or self.has_perm("contracts.view_confidential") @property def contracts_to_approve_count(self) -> int: if not self.can_approve_contracts: return 0 from contracts.models import Contract return Contract.objects.filter( is_approved=False ).count() class Meta: app_label = "users" verbose_name = "Uživatel" verbose_name_plural = "Uživatelé"