29 lines
992 B
Python
29 lines
992 B
Python
from django.core.validators import RegexValidator
|
|
from django.db import models
|
|
|
|
|
|
class PGPKeyField(models.CharField):
|
|
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:
|