source: trunk/sara_cmt/sara_cmt/cluster/migrations/0017_standardize_mac_addresses.py @ 12020

Last change on this file since 12020 was 12020, checked in by sil, 14 years ago

Made a migration and enhancement in Interface-model to be sure the existing
MAC-addresses will be reformated to lowercase with a colon as separator, and
new MAC-addresses wil be stored like that (no matter how the input-format was
like).

File size: 17.4 KB
Line 
1# encoding: utf-8
2import datetime
3from south.db import db
4from south.v2 import DataMigration
5from django.db import models
6
7import re
8
9class Migration(DataMigration):
10
11    def forwards(self, orm):
12        "Write your forwards methods here."
13        # All existing mac-addresses have to be converted to lowercase notation delimited by a colon.
14        for iface in orm.Interface.objects.all():
15            iface.hwaddress = ':'.join(re.findall(r'[A-Za-z\d]{2}', iface.hwaddress.lower()))
16            iface.save()
17
18
19    def backwards(self, orm):
20        "Write your backwards methods here."
21        # Not necessary to go backwards
22
23
24    models = {
25        'cluster.address': {
26            'Meta': {'unique_together': "(('address', 'city'),)", 'object_name': 'Address'},
27            'address': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
28            'city': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
29            'country': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'addresses'", 'null': 'True', 'to': "orm['cluster.Country']"}),
30            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
31            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
32            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
33            'postalcode': ('django.db.models.fields.CharField', [], {'max_length': '9', 'blank': 'True'}),
34            'tags': ('tagging.fields.TagField', [], {}),
35            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
36        },
37        'cluster.cluster': {
38            'Meta': {'object_name': 'Cluster'},
39            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
40            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
41            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
42            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
43            'tags': ('tagging.fields.TagField', [], {}),
44            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
45        },
46        'cluster.company': {
47            'Meta': {'object_name': 'Company'},
48            'addresses': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'_companies'", 'symmetrical': 'False', 'to': "orm['cluster.Address']"}),
49            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
50            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
51            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
52            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
53            'tags': ('tagging.fields.TagField', [], {}),
54            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
55            'website': ('django.db.models.fields.URLField', [], {'max_length': '200'})
56        },
57        'cluster.connection': {
58            'Meta': {'unique_together': "(('company', 'name'),)", 'object_name': 'Connection'},
59            'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
60            'address': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'connections'", 'null': 'True', 'to': "orm['cluster.Address']"}),
61            'company': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'companies'", 'to': "orm['cluster.Company']"}),
62            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
63            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
64            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
65            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
66            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
67            'tags': ('tagging.fields.TagField', [], {}),
68            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
69        },
70        'cluster.country': {
71            'Meta': {'object_name': 'Country'},
72            'country_code': ('django.db.models.fields.PositiveIntegerField', [], {'unique': 'True'}),
73            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
74            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
75            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
76            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
77            'tags': ('tagging.fields.TagField', [], {}),
78            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
79        },
80        'cluster.hardwaremodel': {
81            'Meta': {'object_name': 'HardwareModel'},
82            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
83            'expansions': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
84            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
85            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
86            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
87            'rackspace': ('django.db.models.fields.PositiveIntegerField', [], {}),
88            'tags': ('tagging.fields.TagField', [], {}),
89            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
90            'vendor': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'model specifications'", 'to': "orm['cluster.Company']"})
91        },
92        'cluster.hardwareunit': {
93            'Meta': {'unique_together': "(('rack', 'first_slot'),)", 'object_name': 'HardwareUnit'},
94            'cluster': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'hardware'", 'to': "orm['cluster.Cluster']"}),
95            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
96            'first_slot': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
97            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
98            'label': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
99            'network': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'hardware'", 'symmetrical': 'False', 'through': "orm['cluster.Interface']", 'to': "orm['cluster.Network']"}),
100            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
101            'rack': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'contents'", 'to': "orm['cluster.Rack']"}),
102            'role': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'hardware'", 'symmetrical': 'False', 'to': "orm['cluster.Role']"}),
103            'specifications': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'hardware'", 'null': 'True', 'to': "orm['cluster.HardwareModel']"}),
104            'tags': ('tagging.fields.TagField', [], {}),
105            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
106            'warranty': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'hardware'", 'null': 'True', 'to': "orm['cluster.WarrantyContract']"}),
107            'warranty_tag': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'})
108        },
109        'cluster.interface': {
110            'Meta': {'object_name': 'Interface'},
111            'aliases': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
112            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
113            'host': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'interfaces'", 'to': "orm['cluster.HardwareUnit']"}),
114            'hwaddress': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '17', 'blank': 'True'}),
115            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
116            'iftype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'interfaces'", 'to': "orm['cluster.InterfaceType']"}),
117            'ip': ('django.db.models.fields.IPAddressField', [], {'max_length': '15', 'blank': 'True'}),
118            'label': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
119            'network': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'interfaces'", 'to': "orm['cluster.Network']"}),
120            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
121            'tags': ('tagging.fields.TagField', [], {}),
122            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
123        },
124        'cluster.interfacetype': {
125            'Meta': {'object_name': 'InterfaceType'},
126            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
127            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
128            'label': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
129            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
130            'tags': ('tagging.fields.TagField', [], {}),
131            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
132            'vendor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'interfaces'", 'null': 'True', 'to': "orm['cluster.Company']"})
133        },
134        'cluster.network': {
135            'Meta': {'object_name': 'Network'},
136            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
137            'domain': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
138            'gateway': ('django.db.models.fields.IPAddressField', [], {'max_length': '15', 'blank': 'True'}),
139            'hostnames': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
140            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
141            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
142            'netaddress': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
143            'netmask': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
144            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
145            'tags': ('tagging.fields.TagField', [], {}),
146            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
147            'vlan': ('django.db.models.fields.PositiveIntegerField', [], {'max_length': '3', 'null': 'True', 'blank': 'True'})
148        },
149        'cluster.rack': {
150            'Meta': {'object_name': 'Rack'},
151            'capacity': ('django.db.models.fields.PositiveIntegerField', [], {}),
152            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
153            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
154            'label': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'db_index': 'True'}),
155            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
156            'room': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'racks'", 'to': "orm['cluster.Room']"}),
157            'tags': ('tagging.fields.TagField', [], {}),
158            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
159        },
160        'cluster.role': {
161            'Meta': {'object_name': 'Role'},
162            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
163            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
164            'label': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
165            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
166            'tags': ('tagging.fields.TagField', [], {}),
167            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
168        },
169        'cluster.room': {
170            'Meta': {'unique_together': "(('address', 'floor', 'label'),)", 'object_name': 'Room'},
171            'address': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rooms'", 'to': "orm['cluster.Address']"}),
172            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
173            'floor': ('django.db.models.fields.IntegerField', [], {'max_length': '2'}),
174            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
175            'label': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
176            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
177            'tags': ('tagging.fields.TagField', [], {}),
178            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
179        },
180        'cluster.telephonenumber': {
181            'Meta': {'object_name': 'Telephonenumber'},
182            'areacode': ('django.db.models.fields.CharField', [], {'max_length': '4'}),
183            'connection': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'telephone_numbers'", 'to': "orm['cluster.Connection']"}),
184            'country': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'telephone_numbers'", 'to': "orm['cluster.Country']"}),
185            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
186            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
187            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
188            'subscriber_number': ('django.db.models.fields.IntegerField', [], {'max_length': '15'}),
189            'tags': ('tagging.fields.TagField', [], {}),
190            'type': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
191            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
192        },
193        'cluster.warrantycontract': {
194            'Meta': {'object_name': 'WarrantyContract'},
195            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
196            'date_from': ('django.db.models.fields.DateField', [], {}),
197            'date_to': ('django.db.models.fields.DateField', [], {}),
198            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
199            'label': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
200            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
201            'tags': ('tagging.fields.TagField', [], {}),
202            'type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'contracts'", 'null': 'True', 'to': "orm['cluster.WarrantyType']"}),
203            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
204        },
205        'cluster.warrantytype': {
206            'Meta': {'object_name': 'WarrantyType'},
207            'contact': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'warranty types'", 'to': "orm['cluster.Connection']"}),
208            'created_on': ('django_extensions.db.fields.CreationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'}),
209            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
210            'label': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
211            'note': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
212            'tags': ('tagging.fields.TagField', [], {}),
213            'updated_on': ('django_extensions.db.fields.ModificationDateTimeField', [], {'default': 'datetime.datetime.now', 'blank': 'True'})
214        }
215    }
216
217    complete_apps = ['cluster']
Note: See TracBrowser for help on using the repository browser.