1234567891011121314151617181920212223242526272829303132333435363738394041 |
- from django.db import models
- from django.contrib.auth.models import User
- from django.contrib.contenttypes.models import ContentType
- from django.urls import reverse
- from adhesions.models import Adhesion, Corporation
- class Profile(models.Model):
- user = models.OneToOneField(User, related_name='profile', verbose_name='Utilisateur')
- phone_number = models.CharField(max_length=16, blank=True, default='',
- verbose_name='Numéro de téléphone')
- address = models.TextField(blank=True, default='', verbose_name='Adresse')
- notes = models.TextField(blank=True, default='')
- class Meta:
- verbose_name = 'profil'
- @property
- def adhesion(self): # user adhesion
- ctype = ContentType.objects.get_for_model(User)
- try:
- return Adhesion.objects.get(adherent_type=ctype, adherent_id=self.user.pk)
- except Adhesion.DoesNotExist:
- return None
- @property
- def adhesions(self): # user and corporations (for which the user is a member) adhesions
- user_type = ContentType.objects.get_for_model(User)
- corp_type = ContentType.objects.get_for_model(Corporation)
- return Adhesion.objects.filter(
- models.Q(adherent_type=user_type, adherent_id=self.user.pk)
- | models.Q(adherent_type=corp_type, adherent_id__in=Corporation.objects.filter(members=self.user).values_list('pk'))
- )
- def get_absolute_url(self):
- return reverse('user-detail', kwargs={'pk': self.user.pk})
- def __str__(self):
- return self.user.get_full_name() or self.user.username
|