Ticket #4682: UUIDField.py

File UUIDField.py, 1.3 KB (added by anonymous, 8 years ago)

UUIDFIeld

Line 
1from django.db import models
2
3class UUIDField(models.CharField):
4    def __init__(self, version=None, node=None, clock_seq=None, namespace=None, name=None, **kwargs):
5        kwargs['maxlength'] = 36
6        kwargs['blank'] = True
7        self.version = version
8        if version==1:
9            self.node, self.clock_seq = node, clock_seq
10        elif version==3 or version==5:
11            self.namespace, self.name = namespace, name
12        models.CharField.__init__(self, **kwargs)
13
14    def get_internal_type(self):
15        return "CharField"     
16
17    def pre_save(self, model_instance, add):
18        if add:
19            import sys
20            if sys.version_info < (2,5):
21                                try:
22                        from django.utils import uuid
23                                except ImportError:
24                        import uuid
25            else:
26                import uuid
27            if not self.version or self.version==4:
28                return unicode(uuid.uuid4())
29            elif self.version==1:
30                return unicode(uuid.uuid1(self.node, self.clock_seq))
31            elif self.version==3:
32                return unicode(uuid.uuid3(self.namespace, self.name))
33            elif self.version==5:
34                return unicode(uuid.uuid5(self.namespace, self.name))
35        else:
36            return super(UUIDField, self).pre_save(model_instance, add)
37
Back to Top