3 from django.contrib.auth.models import AbstractUser
4 from django.core import validators
5 from django.db import models
6 from django.utils.translation import ugettext_lazy as _
8 from emissions.models import Emission, Episode, NewsItem, NewsCategory, SoundFile
11 class User(AbstractUser):
12 emissions = models.ManyToManyField(Emission, blank=True)
13 news_categories = models.ManyToManyField(NewsCategory, blank=True)
15 phone = models.CharField(_('Phone'), max_length=20, null=True, blank=True)
16 mobile = models.CharField(_('Mobile'), max_length=20, null=True, blank=True)
17 share_contact_details = models.BooleanField(_('Share contact detais with members'), default=True)
20 ordering = ['first_name', 'last_name']
22 def can_manage(self, object):
25 if isinstance(object, Emission):
26 return self.has_perm('emissions.change_emission') or object in self.emissions.all()
27 if isinstance(object, Episode):
28 return self.has_perm('emissions.change_episode') or object.emission in self.emissions.all()
29 if isinstance(object, SoundFile):
30 return self.has_perm('emissions.change_soundfile') or object.episode.emission in self.emissions.all()
31 if isinstance(object, NewsItem):
32 return self.has_perm('emissions.change_newsitem') or object.emission in self.emissions.all()
35 def active_emissions(self):
36 return self.emissions.exclude(archived=True)
39 return self.groups.filter(name='CA').exists()
42 return self.groups.filter(name='CP').exists()
48 parts.append(self.first_name)
50 parts.append(self.last_name)