aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki/irdb/models.py
diff options
context:
space:
mode:
authorMichael Elkins <melkins@tislabs.com>2012-11-10 01:05:05 +0000
committerMichael Elkins <melkins@tislabs.com>2012-11-10 01:05:05 +0000
commit5ef8df1ca9de2fa6f6518e048da9bf666dc28c9b (patch)
tree6231caffa900d0a3d7928cd0c01acf6802880b64 /rpkid/rpki/irdb/models.py
parent9a9ddea7d897912fa2b3c35b9ffdae0fdf26fc18 (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.py32
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'])