diff options
author | Johannes Krampf <johannes.krampf@gmail.com> | 2011-12-03 11:59:46 +0100 |
---|---|---|
committer | Johannes Krampf <johannes.krampf@gmail.com> | 2011-12-03 11:59:46 +0100 |
commit | c6deca08fa2a4a71483ad5d7ba9f16e0795bcf02 (patch) | |
tree | 49123983cc2150dc232a966a124dc9e5d98cef68 /main/fields.py | |
parent | ce034483ab02eca8921fe3441012b48a646de47b (diff) | |
parent | 4d02cd5b5d4437dd1543e2d45044db72da1989f4 (diff) |
Merge https://projects.archlinux.org/git/archweb
Diffstat (limited to 'main/fields.py')
-rw-r--r-- | main/fields.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/main/fields.py b/main/fields.py new file mode 100644 index 00000000..948cb5d9 --- /dev/null +++ b/main/fields.py @@ -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: |