Move main fields to separate module
Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
04e830a1da
commit
0afedf606f
42
main/fields.py
Normal file
42
main/fields.py
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
from django.db import models
|
||||||
|
from django.core.validators import RegexValidator
|
||||||
|
|
||||||
|
|
||||||
|
class PositiveBigIntegerField(models.BigIntegerField):
|
||||||
|
_south_introspects = True
|
||||||
|
|
||||||
|
def get_internal_type(self):
|
||||||
|
return "BigIntegerField"
|
||||||
|
|
||||||
|
def formfield(self, **kwargs):
|
||||||
|
defaults = { 'min_value': 0 }
|
||||||
|
defaults.update(kwargs)
|
||||||
|
return super(PositiveBigIntegerField, self).formfield(**defaults)
|
||||||
|
|
||||||
|
class PGPKeyField(models.CharField):
|
||||||
|
_south_introspects = True
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(PGPKeyField, self).__init__(*args, **kwargs)
|
||||||
|
self.validators.append(RegexValidator(r'^[0-9A-F]{40}$',
|
||||||
|
"Ensure this value consists of 40 hex characters.", 'hex_char'))
|
||||||
|
|
||||||
|
def to_python(self, value):
|
||||||
|
if value == '' or value is None:
|
||||||
|
return None
|
||||||
|
value = super(PGPKeyField, self).to_python(value)
|
||||||
|
# remove all spaces
|
||||||
|
value = value.replace(' ', '')
|
||||||
|
# prune prefixes, either 0x or 2048R/ type
|
||||||
|
if value.startswith('0x'):
|
||||||
|
value = value[2:]
|
||||||
|
value = value.split('/')[-1]
|
||||||
|
# make all (hex letters) uppercase
|
||||||
|
return value.upper()
|
||||||
|
|
||||||
|
def formfield(self, **kwargs):
|
||||||
|
# override so we don't set max_length form field attribute
|
||||||
|
return models.Field.formfield(self, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
# vim: set ts=4 sw=4 et:
|
@ -1,47 +1,17 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models.signals import pre_save
|
from django.db.models.signals import pre_save
|
||||||
from django.core.validators import RegexValidator
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.contrib.sites.models import Site
|
from django.contrib.sites.models import Site
|
||||||
from django.forms import ValidationError
|
from django.forms import ValidationError
|
||||||
|
|
||||||
from main.utils import cache_function, make_choice, set_created_field
|
from .fields import PositiveBigIntegerField, PGPKeyField
|
||||||
|
from .utils import cache_function, make_choice, set_created_field
|
||||||
from packages.models import PackageRelation
|
from packages.models import PackageRelation
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from itertools import groupby
|
from itertools import groupby
|
||||||
import pytz
|
import pytz
|
||||||
|
|
||||||
class PositiveBigIntegerField(models.BigIntegerField):
|
|
||||||
_south_introspects = True
|
|
||||||
|
|
||||||
def get_internal_type(self):
|
|
||||||
return "BigIntegerField"
|
|
||||||
|
|
||||||
def formfield(self, **kwargs):
|
|
||||||
defaults = {'min_value': 0}
|
|
||||||
defaults.update(kwargs)
|
|
||||||
return super(PositiveBigIntegerField, self).formfield(**defaults)
|
|
||||||
|
|
||||||
class PGPKeyField(models.CharField):
|
|
||||||
_south_introspects = True
|
|
||||||
|
|
||||||
def to_python(self, value):
|
|
||||||
if value == '' or value is None:
|
|
||||||
return None
|
|
||||||
value = super(PGPKeyField, self).to_python(value)
|
|
||||||
# remove all spaces
|
|
||||||
value = value.replace(' ', '')
|
|
||||||
# prune prefixes, either 0x or 2048R/ type
|
|
||||||
if value.startswith('0x'):
|
|
||||||
value = value[2:]
|
|
||||||
value = value.split('/')[-1]
|
|
||||||
# make all (hex letters) uppercase
|
|
||||||
return value.upper()
|
|
||||||
|
|
||||||
def formfield(self, **kwargs):
|
|
||||||
# override so we don't set max_length form field attribute
|
|
||||||
return models.Field.formfield(self, **kwargs)
|
|
||||||
|
|
||||||
class UserProfile(models.Model):
|
class UserProfile(models.Model):
|
||||||
notify = models.BooleanField(
|
notify = models.BooleanField(
|
||||||
@ -62,8 +32,6 @@ class UserProfile(models.Model):
|
|||||||
other_contact = models.CharField(max_length=100, null=True, blank=True)
|
other_contact = models.CharField(max_length=100, null=True, blank=True)
|
||||||
pgp_key = PGPKeyField(max_length=40, null=True, blank=True,
|
pgp_key = PGPKeyField(max_length=40, null=True, blank=True,
|
||||||
verbose_name="PGP key fingerprint",
|
verbose_name="PGP key fingerprint",
|
||||||
validators=[RegexValidator(r'^[0-9A-F]{40}$',
|
|
||||||
"Ensure this value consists of 40 hex characters.", 'hex_char')],
|
|
||||||
help_text="consists of 40 hex digits; use `gpg --fingerprint`")
|
help_text="consists of 40 hex digits; use `gpg --fingerprint`")
|
||||||
website = models.CharField(max_length=200, null=True, blank=True)
|
website = models.CharField(max_length=200, null=True, blank=True)
|
||||||
yob = models.IntegerField("Year of birth", null=True, blank=True)
|
yob = models.IntegerField("Year of birth", null=True, blank=True)
|
||||||
|
Loading…
Reference in New Issue
Block a user