X-Git-Url: https://git.mdrn.pl/cas.git/blobdiff_plain/6e3dcb6d3a61a9dcd85dc5bf5e44c2d49a5a1cb3..db7516d6dd2c1613cb73690b873502171349f966:/src/services/models.py?ds=sidebyside diff --git a/src/services/models.py b/src/services/models.py index 593eff2..3261257 100644 --- a/src/services/models.py +++ b/src/services/models.py @@ -1,6 +1,8 @@ +import secrets from django.conf import settings from django.contrib.auth.models import User from django.db import models +from django.urls import reverse from django.utils.translation import ugettext_lazy as _ @@ -9,6 +11,11 @@ class Service(models.Model): url = models.URLField(_('URL'), blank=True) key = models.CharField(_('key'), max_length=255, blank=True) uses_ssh = models.BooleanField(_('uses SSH'), default=False) + + for_all = models.BooleanField(_('for all'), default=False) + description = models.TextField(_('description'), blank=True) + icon = models.FileField(_('icon'), blank=True, upload_to='service/icon') + groups = models.ManyToManyField('auth.Group', verbose_name=_('groups'), blank=True) users = models.ManyToManyField(settings.AUTH_USER_MODEL, verbose_name=_('users'), blank=True) @@ -20,6 +27,14 @@ class Service(models.Model): def __str__(self): return self.name + def get_absolute_url(self): + return reverse('service_detail', args=[self.pk]) + + def save(self, *args, **kwargs): + if not self.key: + self.key = secrets.token_urlsafe() + return super().save(*args, **kwargs) + def all_users(self): return User.objects.filter( models.Q(service=self) | @@ -28,7 +43,9 @@ class Service(models.Model): @classmethod def for_user(cls, user): - return cls.objects.filter(models.Q(users=user) | models.Q(groups__user=user)) + return cls.objects.filter( + models.Q(for_all=True) | models.Q(users=user) | models.Q(groups__user=user) + ) class Hook(models.Model):