593eff2c60a3e880b34670f3dd1777b8a226853d
[cas.git] / src / services / models.py
1 from django.conf import settings
2 from django.contrib.auth.models import User
3 from django.db import models
4 from django.utils.translation import ugettext_lazy as _
5
6
7 class Service(models.Model):
8     name = models.CharField(_('name'), max_length=255)
9     url = models.URLField(_('URL'), blank=True)
10     key = models.CharField(_('key'), max_length=255, blank=True)
11     uses_ssh = models.BooleanField(_('uses SSH'), default=False)
12     groups = models.ManyToManyField('auth.Group', verbose_name=_('groups'), blank=True)
13     users = models.ManyToManyField(settings.AUTH_USER_MODEL, verbose_name=_('users'), blank=True)
14
15     class Meta:
16         ordering = ('name', )
17         verbose_name = _('service')
18         verbose_name_plural = _('services')
19
20     def __str__(self):
21         return self.name
22
23     def all_users(self):
24         return User.objects.filter(
25                 models.Q(service=self) |
26                 models.Q(groups__service=self)
27             ).distinct()
28
29     @classmethod
30     def for_user(cls, user):
31         return cls.objects.filter(models.Q(users=user) | models.Q(groups__user=user))
32
33
34 class Hook(models.Model):
35     service = models.ForeignKey(Service, on_delete=models.CASCADE)
36     email = models.CharField(max_length=255)