/
fields.py
54 lines (42 loc) · 1.57 KB
/
fields.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
from django.conf import settings as django_settings
from django.db import models
from django.utils.translation import gettext_lazy as _
from .utils import generate_regular_udid, generate_small_udid
from . import validators as speedy_core_base_validators
# Never use this class directly. Only use inherited classes below.
class UDIDField(models.CharField):
class Meta:
abstract = True
def __init__(self, *args, **kwargs):
given_kwargs = kwargs
defaults = {
'verbose_name': _('ID'),
'primary_key': True,
'db_index': True,
'unique': True,
}
kwargs = defaults
kwargs.update(given_kwargs)
super().__init__(*args, **kwargs)
class SmallUDIDField(UDIDField):
generate_id = staticmethod(generate_small_udid)
def __init__(self, *args, **kwargs):
given_kwargs = kwargs
defaults = {
'max_length': django_settings.SMALL_UDID_LENGTH,
'validators': [speedy_core_base_validators.small_udid_validator],
}
kwargs = defaults
kwargs.update(given_kwargs)
super().__init__(*args, **kwargs)
class RegularUDIDField(UDIDField):
generate_id = staticmethod(generate_regular_udid)
def __init__(self, *args, **kwargs):
given_kwargs = kwargs
defaults = {
'max_length': django_settings.REGULAR_UDID_LENGTH,
'validators': [speedy_core_base_validators.regular_udid_validator],
}
kwargs = defaults
kwargs.update(given_kwargs)
super().__init__(*args, **kwargs)