root / ui / userdata / models.py @ c72a830d
History | View | Annotate | Download (993 Bytes)
1 | eee0487e | Kostas Papadimitriou | from django.db import models |
---|---|---|---|
2 | c72a830d | Kostas Papadimitriou | from django.conf import settings |
3 | c72a830d | Kostas Papadimitriou | from django.core.exceptions import ValidationError, NON_FIELD_ERRORS |
4 | c72a830d | Kostas Papadimitriou | |
5 | eee0487e | Kostas Papadimitriou | from synnefo.db import models as synnefo_models |
6 | eee0487e | Kostas Papadimitriou | |
7 | eee0487e | Kostas Papadimitriou | User = synnefo_models.SynnefoUser |
8 | eee0487e | Kostas Papadimitriou | |
9 | eee0487e | Kostas Papadimitriou | class ProfileModel(models.Model): |
10 | eee0487e | Kostas Papadimitriou | """
|
11 | eee0487e | Kostas Papadimitriou | Abstract model, provides a basic interface for models that store
|
12 | eee0487e | Kostas Papadimitriou | user specific information
|
13 | eee0487e | Kostas Papadimitriou | """
|
14 | eee0487e | Kostas Papadimitriou | |
15 | eee0487e | Kostas Papadimitriou | user = models.ForeignKey(User) |
16 | eee0487e | Kostas Papadimitriou | |
17 | eee0487e | Kostas Papadimitriou | class Meta: |
18 | eee0487e | Kostas Papadimitriou | abstract = True
|
19 | 26bade45 | Kostas Papadimitriou | app_label = 'userdata'
|
20 | eee0487e | Kostas Papadimitriou | |
21 | eee0487e | Kostas Papadimitriou | |
22 | eee0487e | Kostas Papadimitriou | class PublicKeyPair(ProfileModel): |
23 | eee0487e | Kostas Papadimitriou | """
|
24 | eee0487e | Kostas Papadimitriou | Public key model
|
25 | eee0487e | Kostas Papadimitriou | """
|
26 | eee0487e | Kostas Papadimitriou | name = models.CharField(max_length=255, null=False, blank=False) |
27 | eee0487e | Kostas Papadimitriou | content = models.TextField() |
28 | eee0487e | Kostas Papadimitriou | |
29 | 26bade45 | Kostas Papadimitriou | class Meta: |
30 | 26bade45 | Kostas Papadimitriou | app_label = 'userdata'
|
31 | c72a830d | Kostas Papadimitriou | |
32 | c72a830d | Kostas Papadimitriou | def clean(self): |
33 | c72a830d | Kostas Papadimitriou | if PublicKeyPair.user_limit_exceeded(self.user): |
34 | c72a830d | Kostas Papadimitriou | raise ValidationError("SSH keys limit exceeded.") |
35 | c72a830d | Kostas Papadimitriou | |
36 | c72a830d | Kostas Papadimitriou | @classmethod
|
37 | c72a830d | Kostas Papadimitriou | def user_limit_exceeded(cls, user): |
38 | c72a830d | Kostas Papadimitriou | return PublicKeyPair.objects.filter(user=user).count() >= settings.MAX_SSH_KEYS_PER_USER |