diff options
author | Michael Elkins <melkins@tislabs.com> | 2012-11-10 01:05:05 +0000 |
---|---|---|
committer | Michael Elkins <melkins@tislabs.com> | 2012-11-10 01:05:05 +0000 |
commit | 5ef8df1ca9de2fa6f6518e048da9bf666dc28c9b (patch) | |
tree | 6231caffa900d0a3d7928cd0c01acf6802880b64 /rpkid/rpki/irdb/models.py | |
parent | 9a9ddea7d897912fa2b3c35b9ffdae0fdf26fc18 (diff) |
initial support for using django south on rpki.gui.app
svn path=/branches/tk317/; revision=4824
Diffstat (limited to 'rpkid/rpki/irdb/models.py')
-rw-r--r-- | rpkid/rpki/irdb/models.py | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/rpkid/rpki/irdb/models.py b/rpkid/rpki/irdb/models.py index 8235a33e..1b25a98f 100644 --- a/rpkid/rpki/irdb/models.py +++ b/rpkid/rpki/irdb/models.py @@ -28,6 +28,7 @@ import rpki.sundial import rpki.resource_set import rpki.ipaddrs import socket +from south.modelsinspector import add_introspection_rules ## @var ip_version_choices # Choice argument for fields implementing IP version numbers. @@ -64,6 +65,7 @@ class HandleField(django.db.models.CharField): kwargs["max_length"] = 120 django.db.models.CharField.__init__(self, *args, **kwargs) + class EnumField(django.db.models.PositiveSmallIntegerField): """ An enumeration type that uses strings in Python and small integers @@ -75,8 +77,9 @@ class EnumField(django.db.models.PositiveSmallIntegerField): __metaclass__ = django.db.models.SubfieldBase def __init__(self, *args, **kwargs): - if isinstance(kwargs["choices"], (tuple, list)) and isinstance(kwargs["choices"][0], str): - kwargs["choices"] = tuple(enumerate(kwargs["choices"], 1)) + if 'choices' in kwargs: + if isinstance(kwargs["choices"], (tuple, list)) and isinstance(kwargs["choices"][0], str): + kwargs["choices"] = tuple(enumerate(kwargs["choices"], 1)) django.db.models.PositiveSmallIntegerField.__init__(self, *args, **kwargs) self.enum_i2s = dict(self.flatchoices) self.enum_s2i = dict((v, k) for k, v in self.flatchoices) @@ -165,6 +168,20 @@ class CertificateField(django.db.models.Field): description = "X.509 certificate" rpki_type = rpki.x509.X509 + +add_introspection_rules([ + ( + [CertificateField], + [], + { + 'serialize': ('serialize', {}), + 'blank': ('blank', {}), + 'default': ('default', {}) + } + ), +], ['^rpki\.irdb\.models\.CertificateField']) + + @DERField class RSAKeyField(django.db.models.Field): __metaclass__ = django.db.models.SubfieldBase @@ -588,3 +605,14 @@ class Client(CrossCertification): # This shouldn't be necessary class Meta: unique_together = ("issuer", "handle") + + +# for Django South -- these are just simple subclasses +add_introspection_rules([], + ['^rpki\.irdb\.models\.HandleField', + '^rpki\.irdb\.models\.SundialField', + '^rpki\.irdb\.models\.RSAKeyField', + '^rpki\.irdb\.models\.CRLField', + '^rpki\.irdb\.models\.SignedReferralField']) + +add_introspection_rules([], ['^rpki\.irdb\.models\.EnumField']) |