Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

bug 889015, switched to South for migrations, removed nashvegas, r=pe…

…terbe
  • Loading branch information...
commit 5acbdd4e74376d8da5d255fa14f4349d6fd44047 1 parent 6184c84
@AdrianGaudebert AdrianGaudebert authored
Showing with 12,661 additions and 1,298 deletions.
  1. +0 −3  .gitmodules
  2. +258 −0 apps/l10nstats/migrations/0001_initial.py
  3. 0  apps/l10nstats/migrations/__init__.py
  4. +218 −0 apps/life/migrations/0001_initial.py
  5. 0  apps/life/migrations/__init__.py
  6. +12 −2 apps/mbdb/fields.py
  7. +356 −0 apps/mbdb/migrations/0001_initial.py
  8. 0  apps/mbdb/migrations/__init__.py
  9. +89 −0 apps/privacy/migrations/0001_initial.py
  10. 0  apps/privacy/migrations/__init__.py
  11. +301 −0 apps/shipping/migrations/0001_initial.py
  12. 0  apps/shipping/migrations/__init__.py
  13. +57 −0 apps/tinder/migrations/0001_initial.py
  14. 0  apps/tinder/migrations/__init__.py
  15. +152 −0 apps/webby/migrations/0001_initial.py
  16. 0  apps/webby/migrations/__init__.py
  17. +0 −790 migrations/0000_initial_schema.sql
  18. +0 −7 migrations/0001_webby-stage-auth_bug653180.sql
  19. +0 −5 migrations/0002_webby-archived-flag_bug640155.sql
  20. +0 −7 migrations/0003_shipping-appversion-without-tree_bug668806.sql
  21. +0 −6 migrations/0004_shipping-appversion-with-lasttree_bug668806.sql
  22. +0 −150 migrations/0005_data1_sql.py
  23. +0 −23 migrations/0006_data1_non_rapid.py
  24. +0 −70 migrations/0007_data1_rapid_cloned_signoffs.py
  25. +0 −183 migrations/0008_data1_rapid_trees.py
  26. +0 −6 migrations/0009_milestone_code_unique.sql
  27. +0 −40 migrations/0010_utcify_dates.sql
  28. +1 −0  requirements/prod.txt
  29. +2 −3 scripts/update_site.py
  30. +1 −1  settings/base.py
  31. +9 −0 vendor-local/lib/python/south/__init__.py
  32. +5 −0 vendor-local/lib/python/south/creator/__init__.py
  33. +556 −0 vendor-local/lib/python/south/creator/actions.py
  34. +506 −0 vendor-local/lib/python/south/creator/changes.py
  35. +192 −0 vendor-local/lib/python/south/creator/freezer.py
  36. +82 −0 vendor-local/lib/python/south/db/__init__.py
  37. +353 −0 vendor-local/lib/python/south/db/firebird.py
  38. +1,160 −0 vendor-local/lib/python/south/db/generic.py
  39. +283 −0 vendor-local/lib/python/south/db/mysql.py
  40. +318 −0 vendor-local/lib/python/south/db/oracle.py
  41. +96 −0 vendor-local/lib/python/south/db/postgresql_psycopg2.py
  42. 0  vendor-local/lib/python/south/db/sql_server/__init__.py
  43. +447 −0 vendor-local/lib/python/south/db/sql_server/pyodbc.py
  44. +272 −0 vendor-local/lib/python/south/db/sqlite3.py
  45. +155 −0 vendor-local/lib/python/south/exceptions.py
  46. +10 −0 vendor-local/lib/python/south/hacks/__init__.py
  47. +109 −0 vendor-local/lib/python/south/hacks/django_1_0.py
  48. +11 −0 vendor-local/lib/python/south/introspection_plugins/__init__.py
  49. +11 −0 vendor-local/lib/python/south/introspection_plugins/annoying_autoonetoone.py
  50. +30 −0 vendor-local/lib/python/south/introspection_plugins/django_audit_log.py
  51. +16 −0 vendor-local/lib/python/south/introspection_plugins/django_objectpermissions.py
  52. +24 −0 vendor-local/lib/python/south/introspection_plugins/django_tagging.py
  53. +14 −0 vendor-local/lib/python/south/introspection_plugins/django_taggit.py
  54. +21 −0 vendor-local/lib/python/south/introspection_plugins/django_timezones.py
  55. +45 −0 vendor-local/lib/python/south/introspection_plugins/geodjango.py
  56. +38 −0 vendor-local/lib/python/south/logger.py
  57. 0  vendor-local/lib/python/south/management/__init__.py
  58. +40 −0 vendor-local/lib/python/south/management/commands/__init__.py
  59. +95 −0 vendor-local/lib/python/south/management/commands/convert_to_south.py
  60. +128 −0 vendor-local/lib/python/south/management/commands/datamigration.py
  61. +63 −0 vendor-local/lib/python/south/management/commands/graphmigrations.py
  62. +264 −0 vendor-local/lib/python/south/management/commands/migrate.py
  63. +67 −0 vendor-local/lib/python/south/management/commands/migrationcheck.py
  64. +226 −0 vendor-local/lib/python/south/management/commands/schemamigration.py
  65. +33 −0 vendor-local/lib/python/south/management/commands/startmigration.py
  66. +113 −0 vendor-local/lib/python/south/management/commands/syncdb.py
  67. +8 −0 vendor-local/lib/python/south/management/commands/test.py
  68. +8 −0 vendor-local/lib/python/south/management/commands/testserver.py
  69. +235 −0 vendor-local/lib/python/south/migration/__init__.py
  70. +440 −0 vendor-local/lib/python/south/migration/base.py
  71. +357 −0 vendor-local/lib/python/south/migration/migrators.py
  72. +94 −0 vendor-local/lib/python/south/migration/utils.py
  73. +37 −0 vendor-local/lib/python/south/models.py
  74. +463 −0 vendor-local/lib/python/south/modelsinspector.py
  75. +403 −0 vendor-local/lib/python/south/orm.py
  76. +24 −0 vendor-local/lib/python/south/signals.py
  77. +108 −0 vendor-local/lib/python/south/tests/__init__.py
  78. +353 −0 vendor-local/lib/python/south/tests/autodetection.py
  79. 0  vendor-local/lib/python/south/tests/brokenapp/__init__.py
  80. +13 −0 vendor-local/lib/python/south/tests/brokenapp/migrations/0001_depends_on_unmigrated.py
  81. +13 −0 vendor-local/lib/python/south/tests/brokenapp/migrations/0002_depends_on_unknown.py
  82. +13 −0 vendor-local/lib/python/south/tests/brokenapp/migrations/0003_depends_on_higher.py
  83. +11 −0 vendor-local/lib/python/south/tests/brokenapp/migrations/0004_higher.py
  84. 0  vendor-local/lib/python/south/tests/brokenapp/migrations/__init__.py
  85. +55 −0 vendor-local/lib/python/south/tests/brokenapp/models.py
  86. 0  vendor-local/lib/python/south/tests/circular_a/__init__.py
  87. +13 −0 vendor-local/lib/python/south/tests/circular_a/migrations/0001_first.py
  88. 0  vendor-local/lib/python/south/tests/circular_a/migrations/__init__.py
  89. 0  vendor-local/lib/python/south/tests/circular_a/models.py
  90. 0  vendor-local/lib/python/south/tests/circular_b/__init__.py
  91. +13 −0 vendor-local/lib/python/south/tests/circular_b/migrations/0001_first.py
  92. 0  vendor-local/lib/python/south/tests/circular_b/migrations/__init__.py
  93. 0  vendor-local/lib/python/south/tests/circular_b/models.py
  94. +952 −0 vendor-local/lib/python/south/tests/db.py
  95. +164 −0 vendor-local/lib/python/south/tests/db_mysql.py
  96. 0  vendor-local/lib/python/south/tests/deps_a/__init__.py
  97. +11 −0 vendor-local/lib/python/south/tests/deps_a/migrations/0001_a.py
  98. +11 −0 vendor-local/lib/python/south/tests/deps_a/migrations/0002_a.py
  99. +11 −0 vendor-local/lib/python/south/tests/deps_a/migrations/0003_a.py
  100. +13 −0 vendor-local/lib/python/south/tests/deps_a/migrations/0004_a.py
  101. +11 −0 vendor-local/lib/python/south/tests/deps_a/migrations/0005_a.py
  102. 0  vendor-local/lib/python/south/tests/deps_a/migrations/__init__.py
  103. 0  vendor-local/lib/python/south/tests/deps_a/models.py
  104. 0  vendor-local/lib/python/south/tests/deps_b/__init__.py
  105. +11 −0 vendor-local/lib/python/south/tests/deps_b/migrations/0001_b.py
  106. +13 −0 vendor-local/lib/python/south/tests/deps_b/migrations/0002_b.py
  107. +13 −0 vendor-local/lib/python/south/tests/deps_b/migrations/0003_b.py
  108. +11 −0 vendor-local/lib/python/south/tests/deps_b/migrations/0004_b.py
  109. +11 −0 vendor-local/lib/python/south/tests/deps_b/migrations/0005_b.py
  110. 0  vendor-local/lib/python/south/tests/deps_b/migrations/__init__.py
  111. 0  vendor-local/lib/python/south/tests/deps_b/models.py
  112. 0  vendor-local/lib/python/south/tests/deps_c/__init__.py
  113. +11 −0 vendor-local/lib/python/south/tests/deps_c/migrations/0001_c.py
  114. +11 −0 vendor-local/lib/python/south/tests/deps_c/migrations/0002_c.py
  115. +11 −0 vendor-local/lib/python/south/tests/deps_c/migrations/0003_c.py
  116. +11 −0 vendor-local/lib/python/south/tests/deps_c/migrations/0004_c.py
  117. +13 −0 vendor-local/lib/python/south/tests/deps_c/migrations/0005_c.py
  118. 0  vendor-local/lib/python/south/tests/deps_c/migrations/__init__.py
  119. 0  vendor-local/lib/python/south/tests/deps_c/models.py
  120. 0  vendor-local/lib/python/south/tests/emptyapp/__init__.py
  121. 0  vendor-local/lib/python/south/tests/emptyapp/migrations/__init__.py
  122. 0  vendor-local/lib/python/south/tests/emptyapp/models.py
  123. 0  vendor-local/lib/python/south/tests/fakeapp/__init__.py
  124. +17 −0 vendor-local/lib/python/south/tests/fakeapp/migrations/0001_spam.py
  125. +20 −0 vendor-local/lib/python/south/tests/fakeapp/migrations/0002_eggs.py
  126. +18 −0 vendor-local/lib/python/south/tests/fakeapp/migrations/0003_alter_spam.py
  127. 0  vendor-local/lib/python/south/tests/fakeapp/migrations/__init__.py
  128. +111 −0 vendor-local/lib/python/south/tests/fakeapp/models.py
  129. +15 −0 vendor-local/lib/python/south/tests/freezer.py
  130. +109 −0 vendor-local/lib/python/south/tests/inspector.py
  131. +82 −0 vendor-local/lib/python/south/tests/logger.py
  132. +902 −0 vendor-local/lib/python/south/tests/logic.py
  133. 0  vendor-local/lib/python/south/tests/non_managed/__init__.py
  134. 0  vendor-local/lib/python/south/tests/non_managed/migrations/__init__.py
  135. +16 −0 vendor-local/lib/python/south/tests/non_managed/models.py
  136. 0  vendor-local/lib/python/south/tests/otherfakeapp/__init__.py
  137. +15 −0 vendor-local/lib/python/south/tests/otherfakeapp/migrations/0001_first.py
  138. +11 −0 vendor-local/lib/python/south/tests/otherfakeapp/migrations/0002_second.py
  139. +14 −0 vendor-local/lib/python/south/tests/otherfakeapp/migrations/0003_third.py
  140. 0  vendor-local/lib/python/south/tests/otherfakeapp/migrations/__init__.py
  141. +1 −0  vendor-local/lib/python/south/tests/otherfakeapp/models.py
  142. +73 −0 vendor-local/lib/python/south/utils/__init__.py
  143. +28 −0 vendor-local/lib/python/south/utils/datetime_utils.py
  144. +21 −0 vendor-local/lib/python/south/utils/py3.py
  145. +19 −0 vendor-local/lib/python/south/v2.py
  146. +0 −1  vendor-local/src/nashvegas
  147. +0 −1  vendor-local/vendor.pth
View
3  .gitmodules
@@ -4,6 +4,3 @@
[submodule "vendor-local/src/compare-locales"]
path = vendor-local/src/compare-locales
url = git://github.com/Pike/compare-locales.git
-[submodule "vendor-local/src/nashvegas"]
- path = vendor-local/src/nashvegas
- url = git://github.com/paltman/nashvegas.git
View
258 apps/l10nstats/migrations/0001_initial.py
@@ -0,0 +1,258 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding model 'ModuleCount'
+ db.create_table('l10nstats_modulecount', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=50)),
+ ('count', self.gf('django.db.models.fields.IntegerField')()),
+ ))
+ db.send_create_signal('l10nstats', ['ModuleCount'])
+
+ # Adding model 'Run'
+ db.create_table('l10nstats_run', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('locale', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['life.Locale'])),
+ ('tree', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['life.Tree'])),
+ ('build', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['mbdb.Build'], unique=True, null=True, blank=True)),
+ ('srctime', self.gf('django.db.models.fields.DateTimeField')(db_index=True, null=True, blank=True)),
+ ('missing', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('missingInFiles', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('obsolete', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('total', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('changed', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('unchanged', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('keys', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('errors', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('report', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('warnings', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('completion', self.gf('django.db.models.fields.SmallIntegerField')(default=0)),
+ ))
+ db.send_create_signal('l10nstats', ['Run'])
+
+ # Adding M2M table for field unchangedmodules on 'Run'
+ m2m_table_name = db.shorten_name('l10nstats_run_unchangedmodules')
+ db.create_table(m2m_table_name, (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('run', models.ForeignKey(orm['l10nstats.run'], null=False)),
+ ('modulecount', models.ForeignKey(orm['l10nstats.modulecount'], null=False))
+ ))
+ db.create_unique(m2m_table_name, ['run_id', 'modulecount_id'])
+
+ # Adding M2M table for field revisions on 'Run'
+ m2m_table_name = db.shorten_name('l10nstats_run_revisions')
+ db.create_table(m2m_table_name, (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('run', models.ForeignKey(orm['l10nstats.run'], null=False)),
+ ('changeset', models.ForeignKey(orm['life.changeset'], null=False))
+ ))
+ db.create_unique(m2m_table_name, ['run_id', 'changeset_id'])
+
+ # Adding model 'UnchangedInFile'
+ db.create_table('l10nstats_unchangedinfile', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('module', self.gf('django.db.models.fields.CharField')(max_length=50, db_index=True)),
+ ('file', self.gf('django.db.models.fields.CharField')(max_length=400, db_index=True)),
+ ('count', self.gf('django.db.models.fields.IntegerField')(db_index=True)),
+ ('run', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['l10nstats.Run'])),
+ ))
+ db.send_create_signal('l10nstats', ['UnchangedInFile'])
+
+ # Adding model 'Active'
+ db.create_table('l10nstats_active', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('run', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['l10nstats.Run'], unique=True)),
+ ))
+ db.send_create_signal('l10nstats', ['Active'])
+
+
+ def backwards(self, orm):
+ # Deleting model 'ModuleCount'
+ db.delete_table('l10nstats_modulecount')
+
+ # Deleting model 'Run'
+ db.delete_table('l10nstats_run')
+
+ # Removing M2M table for field unchangedmodules on 'Run'
+ db.delete_table(db.shorten_name('l10nstats_run_unchangedmodules'))
+
+ # Removing M2M table for field revisions on 'Run'
+ db.delete_table(db.shorten_name('l10nstats_run_revisions'))
+
+ # Deleting model 'UnchangedInFile'
+ db.delete_table('l10nstats_unchangedinfile')
+
+ # Deleting model 'Active'
+ db.delete_table('l10nstats_active')
+
+
+ models = {
+ 'l10nstats.active': {
+ 'Meta': {'object_name': 'Active'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'run': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['l10nstats.Run']", 'unique': 'True'})
+ },
+ 'l10nstats.modulecount': {
+ 'Meta': {'object_name': 'ModuleCount'},
+ 'count': ('django.db.models.fields.IntegerField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'l10nstats.run': {
+ 'Meta': {'object_name': 'Run'},
+ 'build': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['mbdb.Build']", 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'changed': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'completion': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'errors': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'keys': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'locale': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['life.Locale']"}),
+ 'missing': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'missingInFiles': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'obsolete': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'report': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'revisions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['life.Changeset']", 'symmetrical': 'False'}),
+ 'srctime': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'total': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tree': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['life.Tree']"}),
+ 'unchanged': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'unchangedmodules': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'runs'", 'symmetrical': 'False', 'to': "orm['l10nstats.ModuleCount']"}),
+ 'warnings': ('django.db.models.fields.IntegerField', [], {'default': '0'})
+ },
+ 'l10nstats.unchangedinfile': {
+ 'Meta': {'object_name': 'UnchangedInFile'},
+ 'count': ('django.db.models.fields.IntegerField', [], {'db_index': 'True'}),
+ 'file': ('django.db.models.fields.CharField', [], {'max_length': '400', 'db_index': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'module': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}),
+ 'run': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['l10nstats.Run']"})
+ },
+ 'life.branch': {
+ 'Meta': {'object_name': 'Branch'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {})
+ },
+ 'life.changeset': {
+ 'Meta': {'object_name': 'Changeset'},
+ 'branch': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'related_name': "'changesets'", 'to': "orm['life.Branch']"}),
+ 'description': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True'}),
+ 'files': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['mbdb.File']", 'symmetrical': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'parents': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'_children'", 'symmetrical': 'False', 'to': "orm['life.Changeset']"}),
+ 'revision': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '40', 'db_index': 'True'}),
+ 'user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '200', 'db_index': 'True'})
+ },
+ 'life.forest': {
+ 'Meta': {'object_name': 'Forest'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}),
+ 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
+ },
+ 'life.locale': {
+ 'Meta': {'object_name': 'Locale'},
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'native': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'})
+ },
+ 'life.repository': {
+ 'Meta': {'object_name': 'Repository'},
+ 'changesets': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'repositories'", 'symmetrical': 'False', 'to': "orm['life.Changeset']"}),
+ 'forest': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'repositories'", 'null': 'True', 'to': "orm['life.Forest']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'locale': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['life.Locale']", 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}),
+ 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
+ },
+ 'life.tree': {
+ 'Meta': {'object_name': 'Tree'},
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'l10n': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['life.Forest']"}),
+ 'repositories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['life.Repository']", 'symmetrical': 'False'})
+ },
+ 'mbdb.build': {
+ 'Meta': {'object_name': 'Build'},
+ 'builder': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'builds'", 'to': "orm['mbdb.Builder']"}),
+ 'buildnumber': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'db_index': 'True'}),
+ 'endtime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'properties': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'builds'", 'symmetrical': 'False', 'to': "orm['mbdb.Property']"}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'result': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'slave': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mbdb.Slave']", 'null': 'True', 'blank': 'True'}),
+ 'sourcestamp': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'builds'", 'null': 'True', 'to': "orm['mbdb.SourceStamp']"}),
+ 'starttime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'mbdb.builder': {
+ 'Meta': {'object_name': 'Builder'},
+ 'bigState': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'category': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'builders'", 'to': "orm['mbdb.Master']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'mbdb.change': {
+ 'Meta': {'unique_together': "(('number', 'master'),)", 'object_name': 'Change'},
+ 'branch': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'files': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['mbdb.File']", 'symmetrical': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'master': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mbdb.Master']"}),
+ 'number': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['mbdb.Tag']", 'symmetrical': 'False'}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '100', 'null': 'True', 'blank': 'True'})
+ },
+ 'mbdb.file': {
+ 'Meta': {'object_name': 'File'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'path': ('django.db.models.fields.CharField', [], {'max_length': '400', 'db_index': 'True'})
+ },
+ 'mbdb.master': {
+ 'Meta': {'object_name': 'Master'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'mbdb.numberedchange': {
+ 'Meta': {'object_name': 'NumberedChange'},
+ 'change': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'numbered_changes'", 'to': "orm['mbdb.Change']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'number': ('django.db.models.fields.IntegerField', [], {'db_index': 'True'}),
+ 'sourcestamp': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'numbered_changes'", 'to': "orm['mbdb.SourceStamp']"})
+ },
+ 'mbdb.property': {
+ 'Meta': {'object_name': 'Property'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '20', 'db_index': 'True'}),
+ 'source': ('django.db.models.fields.CharField', [], {'max_length': '20', 'db_index': 'True'}),
+ 'value': ('mbdb.fields.PickledObjectField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'})
+ },
+ 'mbdb.slave': {
+ 'Meta': {'object_name': 'Slave'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '150'})
+ },
+ 'mbdb.sourcestamp': {
+ 'Meta': {'object_name': 'SourceStamp'},
+ 'branch': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'changes': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'stamps'", 'symmetrical': 'False', 'through': "orm['mbdb.NumberedChange']", 'to': "orm['mbdb.Change']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'revision': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'})
+ },
+ 'mbdb.tag': {
+ 'Meta': {'object_name': 'Tag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ }
+ }
+
+ complete_apps = ['l10nstats']
View
0  apps/l10nstats/migrations/__init__.py
No changes.
View
218 apps/life/migrations/0001_initial.py
@@ -0,0 +1,218 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding model 'Locale'
+ db.create_table('life_locale', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('code', self.gf('django.db.models.fields.CharField')(unique=True, max_length=30)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=100, null=True, blank=True)),
+ ('native', self.gf('django.db.models.fields.CharField')(max_length=100, null=True, blank=True)),
+ ))
+ db.send_create_signal('life', ['Locale'])
+
+ # Adding model 'Branch'
+ db.create_table('life_branch', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.TextField')()),
+ ))
+ db.send_create_signal('life', ['Branch'])
+
+ # Adding model 'Changeset'
+ db.create_table('life_changeset', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('revision', self.gf('django.db.models.fields.CharField')(unique=True, max_length=40, db_index=True)),
+ ('user', self.gf('django.db.models.fields.CharField')(default='', max_length=200, db_index=True)),
+ ('description', self.gf('django.db.models.fields.TextField')(default='', null=True)),
+ ('branch', self.gf('django.db.models.fields.related.ForeignKey')(default=1, related_name='changesets', to=orm['life.Branch'])),
+ ))
+ db.send_create_signal('life', ['Changeset'])
+
+ # Adding M2M table for field files on 'Changeset'
+ m2m_table_name = db.shorten_name('life_changeset_files')
+ db.create_table(m2m_table_name, (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('changeset', models.ForeignKey(orm['life.changeset'], null=False)),
+ ('file', models.ForeignKey(orm['mbdb.file'], null=False))
+ ))
+ db.create_unique(m2m_table_name, ['changeset_id', 'file_id'])
+
+ # Adding M2M table for field parents on 'Changeset'
+ m2m_table_name = db.shorten_name('life_changeset_parents')
+ db.create_table(m2m_table_name, (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('from_changeset', models.ForeignKey(orm['life.changeset'], null=False)),
+ ('to_changeset', models.ForeignKey(orm['life.changeset'], null=False))
+ ))
+ db.create_unique(m2m_table_name, ['from_changeset_id', 'to_changeset_id'])
+
+ # Adding model 'Forest'
+ db.create_table('life_forest', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=100)),
+ ('url', self.gf('django.db.models.fields.URLField')(max_length=200)),
+ ))
+ db.send_create_signal('life', ['Forest'])
+
+ # Adding model 'Repository'
+ db.create_table('life_repository', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=100)),
+ ('url', self.gf('django.db.models.fields.URLField')(max_length=200)),
+ ('forest', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='repositories', null=True, to=orm['life.Forest'])),
+ ('locale', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['life.Locale'], null=True, blank=True)),
+ ))
+ db.send_create_signal('life', ['Repository'])
+
+ # Adding M2M table for field changesets on 'Repository'
+ m2m_table_name = db.shorten_name('life_repository_changesets')
+ db.create_table(m2m_table_name, (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('repository', models.ForeignKey(orm['life.repository'], null=False)),
+ ('changeset', models.ForeignKey(orm['life.changeset'], null=False))
+ ))
+ db.create_unique(m2m_table_name, ['repository_id', 'changeset_id'])
+
+ # Adding model 'Push'
+ db.create_table('life_push', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('repository', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['life.Repository'])),
+ ('user', self.gf('django.db.models.fields.CharField')(max_length=200, db_index=True)),
+ ('push_date', self.gf('django.db.models.fields.DateTimeField')(db_index=True)),
+ ('push_id', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
+ ))
+ db.send_create_signal('life', ['Push'])
+
+ # Adding M2M table for field changesets on 'Push'
+ m2m_table_name = db.shorten_name('life_push_changesets')
+ db.create_table(m2m_table_name, (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('push', models.ForeignKey(orm['life.push'], null=False)),
+ ('changeset', models.ForeignKey(orm['life.changeset'], null=False))
+ ))
+ db.create_unique(m2m_table_name, ['push_id', 'changeset_id'])
+
+ # Adding model 'Tree'
+ db.create_table('life_tree', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('code', self.gf('django.db.models.fields.CharField')(unique=True, max_length=50)),
+ ('l10n', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['life.Forest'])),
+ ))
+ db.send_create_signal('life', ['Tree'])
+
+ # Adding M2M table for field repositories on 'Tree'
+ m2m_table_name = db.shorten_name('life_tree_repositories')
+ db.create_table(m2m_table_name, (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('tree', models.ForeignKey(orm['life.tree'], null=False)),
+ ('repository', models.ForeignKey(orm['life.repository'], null=False))
+ ))
+ db.create_unique(m2m_table_name, ['tree_id', 'repository_id'])
+
+
+ def backwards(self, orm):
+ # Deleting model 'Locale'
+ db.delete_table('life_locale')
+
+ # Deleting model 'Branch'
+ db.delete_table('life_branch')
+
+ # Deleting model 'Changeset'
+ db.delete_table('life_changeset')
+
+ # Removing M2M table for field files on 'Changeset'
+ db.delete_table(db.shorten_name('life_changeset_files'))
+
+ # Removing M2M table for field parents on 'Changeset'
+ db.delete_table(db.shorten_name('life_changeset_parents'))
+
+ # Deleting model 'Forest'
+ db.delete_table('life_forest')
+
+ # Deleting model 'Repository'
+ db.delete_table('life_repository')
+
+ # Removing M2M table for field changesets on 'Repository'
+ db.delete_table(db.shorten_name('life_repository_changesets'))
+
+ # Deleting model 'Push'
+ db.delete_table('life_push')
+
+ # Removing M2M table for field changesets on 'Push'
+ db.delete_table(db.shorten_name('life_push_changesets'))
+
+ # Deleting model 'Tree'
+ db.delete_table('life_tree')
+
+ # Removing M2M table for field repositories on 'Tree'
+ db.delete_table(db.shorten_name('life_tree_repositories'))
+
+
+ models = {
+ 'life.branch': {
+ 'Meta': {'object_name': 'Branch'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {})
+ },
+ 'life.changeset': {
+ 'Meta': {'object_name': 'Changeset'},
+ 'branch': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'related_name': "'changesets'", 'to': "orm['life.Branch']"}),
+ 'description': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True'}),
+ 'files': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['mbdb.File']", 'symmetrical': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'parents': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'_children'", 'symmetrical': 'False', 'to': "orm['life.Changeset']"}),
+ 'revision': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '40', 'db_index': 'True'}),
+ 'user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '200', 'db_index': 'True'})
+ },
+ 'life.forest': {
+ 'Meta': {'object_name': 'Forest'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}),
+ 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
+ },
+ 'life.locale': {
+ 'Meta': {'object_name': 'Locale'},
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'native': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'})
+ },
+ 'life.push': {
+ 'Meta': {'object_name': 'Push'},
+ 'changesets': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'pushes'", 'symmetrical': 'False', 'to': "orm['life.Changeset']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'push_date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
+ 'push_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'repository': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['life.Repository']"}),
+ 'user': ('django.db.models.fields.CharField', [], {'max_length': '200', 'db_index': 'True'})
+ },
+ 'life.repository': {
+ 'Meta': {'object_name': 'Repository'},
+ 'changesets': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'repositories'", 'symmetrical': 'False', 'to': "orm['life.Changeset']"}),
+ 'forest': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'repositories'", 'null': 'True', 'to': "orm['life.Forest']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'locale': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['life.Locale']", 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}),
+ 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
+ },
+ 'life.tree': {
+ 'Meta': {'object_name': 'Tree'},
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'l10n': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['life.Forest']"}),
+ 'repositories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['life.Repository']", 'symmetrical': 'False'})
+ },
+ 'mbdb.file': {
+ 'Meta': {'object_name': 'File'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'path': ('django.db.models.fields.CharField', [], {'max_length': '400', 'db_index': 'True'})
+ }
+ }
+
+ complete_apps = ['life']
View
0  apps/life/migrations/__init__.py
No changes.
View
14 apps/mbdb/fields.py
@@ -15,6 +15,8 @@
except ImportError:
import pickle
+from south.modelsinspector import add_introspection_rules
+
class PickledObject(str):
"""A subclass of string so it can be told whether a string is
@@ -23,7 +25,7 @@ class PickledObject(str):
pass
-class PickledObjectField(models.Field):
+class PickledObjectField(models.TextField):
__metaclass__ = models.SubfieldBase
def to_python(self, value):
@@ -66,7 +68,11 @@ def get_db_prep_lookup(self, lookup_type, value, connection,
connection=connection, prepared=True))
-class ListField(models.Field):
+# For South migrations to understand what this field is
+add_introspection_rules([], ["^mbdb\.fields\.PickledObjectField"])
+
+
+class ListField(models.TextField):
__metaclass__ = models.SubfieldBase
def to_python(self, value):
@@ -103,3 +109,7 @@ def get_db_prep_lookup(self, lookup_type, value, connection,
return super(ListField, self).get_db_prep_lookup(lookup_type, value,
connection=connection,
prepared=True)
+
+
+# For South migrations to understand what this field is
+add_introspection_rules([], ["^mbdb\.fields\.ListField"])
View
356 apps/mbdb/migrations/0001_initial.py
@@ -0,0 +1,356 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding model 'Master'
+ db.create_table('mbdb_master', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=100)),
+ ))
+ db.send_create_signal('mbdb', ['Master'])
+
+ # Adding model 'Slave'
+ db.create_table('mbdb_slave', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=150)),
+ ))
+ db.send_create_signal('mbdb', ['Slave'])
+
+ # Adding model 'File'
+ db.create_table('mbdb_file', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('path', self.gf('django.db.models.fields.CharField')(max_length=400, db_index=True)),
+ ))
+ db.send_create_signal('mbdb', ['File'])
+
+ # Adding model 'Tag'
+ db.create_table('mbdb_tag', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('value', self.gf('django.db.models.fields.CharField')(unique=True, max_length=50, db_index=True)),
+ ))
+ db.send_create_signal('mbdb', ['Tag'])
+
+ # Adding model 'Change'
+ db.create_table('mbdb_change', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('number', self.gf('django.db.models.fields.PositiveIntegerField')()),
+ ('master', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['mbdb.Master'])),
+ ('branch', self.gf('django.db.models.fields.CharField')(max_length=100, null=True, blank=True)),
+ ('revision', self.gf('django.db.models.fields.CharField')(max_length=50, null=True, blank=True)),
+ ('who', self.gf('django.db.models.fields.CharField')(db_index=True, max_length=100, null=True, blank=True)),
+ ('comments', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('when', self.gf('django.db.models.fields.DateTimeField')()),
+ ))
+ db.send_create_signal('mbdb', ['Change'])
+
+ # Adding unique constraint on 'Change', fields ['number', 'master']
+ db.create_unique('mbdb_change', ['number', 'master_id'])
+
+ # Adding M2M table for field files on 'Change'
+ m2m_table_name = db.shorten_name('mbdb_change_files')
+ db.create_table(m2m_table_name, (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('change', models.ForeignKey(orm['mbdb.change'], null=False)),
+ ('file', models.ForeignKey(orm['mbdb.file'], null=False))
+ ))
+ db.create_unique(m2m_table_name, ['change_id', 'file_id'])
+
+ # Adding M2M table for field tags on 'Change'
+ m2m_table_name = db.shorten_name('mbdb_change_tags')
+ db.create_table(m2m_table_name, (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('change', models.ForeignKey(orm['mbdb.change'], null=False)),
+ ('tag', models.ForeignKey(orm['mbdb.tag'], null=False))
+ ))
+ db.create_unique(m2m_table_name, ['change_id', 'tag_id'])
+
+ # Adding model 'SourceStamp'
+ db.create_table('mbdb_sourcestamp', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('branch', self.gf('django.db.models.fields.CharField')(max_length=100, null=True, blank=True)),
+ ('revision', self.gf('django.db.models.fields.CharField')(max_length=50, null=True, blank=True)),
+ ))
+ db.send_create_signal('mbdb', ['SourceStamp'])
+
+ # Adding model 'NumberedChange'
+ db.create_table('mbdb_numberedchange', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('change', self.gf('django.db.models.fields.related.ForeignKey')(related_name='numbered_changes', to=orm['mbdb.Change'])),
+ ('sourcestamp', self.gf('django.db.models.fields.related.ForeignKey')(related_name='numbered_changes', to=orm['mbdb.SourceStamp'])),
+ ('number', self.gf('django.db.models.fields.IntegerField')(db_index=True)),
+ ))
+ db.send_create_signal('mbdb', ['NumberedChange'])
+
+ # Adding model 'Property'
+ db.create_table('mbdb_property', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=20, db_index=True)),
+ ('source', self.gf('django.db.models.fields.CharField')(max_length=20, db_index=True)),
+ ('value', self.gf('mbdb.fields.PickledObjectField')(db_index=True, null=True, blank=True)),
+ ))
+ db.send_create_signal('mbdb', ['Property'])
+
+ # Adding model 'Builder'
+ db.create_table('mbdb_builder', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=50, db_index=True)),
+ ('master', self.gf('django.db.models.fields.related.ForeignKey')(related_name='builders', to=orm['mbdb.Master'])),
+ ('category', self.gf('django.db.models.fields.CharField')(db_index=True, max_length=30, null=True, blank=True)),
+ ('bigState', self.gf('django.db.models.fields.CharField')(max_length=30, null=True, blank=True)),
+ ))
+ db.send_create_signal('mbdb', ['Builder'])
+
+ # Adding model 'Build'
+ db.create_table('mbdb_build', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('buildnumber', self.gf('django.db.models.fields.IntegerField')(null=True, db_index=True)),
+ ('builder', self.gf('django.db.models.fields.related.ForeignKey')(related_name='builds', to=orm['mbdb.Builder'])),
+ ('slave', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['mbdb.Slave'], null=True, blank=True)),
+ ('starttime', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('endtime', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('result', self.gf('django.db.models.fields.SmallIntegerField')(null=True, blank=True)),
+ ('reason', self.gf('django.db.models.fields.CharField')(max_length=50, null=True, blank=True)),
+ ('sourcestamp', self.gf('django.db.models.fields.related.ForeignKey')(related_name='builds', null=True, to=orm['mbdb.SourceStamp'])),
+ ))
+ db.send_create_signal('mbdb', ['Build'])
+
+ # Adding M2M table for field properties on 'Build'
+ m2m_table_name = db.shorten_name('mbdb_build_properties')
+ db.create_table(m2m_table_name, (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('build', models.ForeignKey(orm['mbdb.build'], null=False)),
+ ('property', models.ForeignKey(orm['mbdb.property'], null=False))
+ ))
+ db.create_unique(m2m_table_name, ['build_id', 'property_id'])
+
+ # Adding model 'Step'
+ db.create_table('mbdb_step', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=50)),
+ ('text', self.gf('mbdb.fields.ListField')(null=True, blank=True)),
+ ('text2', self.gf('mbdb.fields.ListField')(null=True, blank=True)),
+ ('result', self.gf('django.db.models.fields.SmallIntegerField')(null=True, blank=True)),
+ ('starttime', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('endtime', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('build', self.gf('django.db.models.fields.related.ForeignKey')(related_name='steps', to=orm['mbdb.Build'])),
+ ))
+ db.send_create_signal('mbdb', ['Step'])
+
+ # Adding model 'URL'
+ db.create_table('mbdb_url', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=20)),
+ ('url', self.gf('django.db.models.fields.URLField')(max_length=200)),
+ ('step', self.gf('django.db.models.fields.related.ForeignKey')(related_name='urls', to=orm['mbdb.Step'])),
+ ))
+ db.send_create_signal('mbdb', ['URL'])
+
+ # Adding model 'Log'
+ db.create_table('mbdb_log', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=100, null=True, blank=True)),
+ ('filename', self.gf('django.db.models.fields.CharField')(max_length=200, unique=True, null=True, blank=True)),
+ ('step', self.gf('django.db.models.fields.related.ForeignKey')(related_name='logs', to=orm['mbdb.Step'])),
+ ('isFinished', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('html', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ))
+ db.send_create_signal('mbdb', ['Log'])
+
+ # Adding model 'BuildRequest'
+ db.create_table('mbdb_buildrequest', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('builder', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['mbdb.Builder'])),
+ ('submitTime', self.gf('django.db.models.fields.DateTimeField')()),
+ ('sourcestamp', self.gf('django.db.models.fields.related.ForeignKey')(related_name='requests', to=orm['mbdb.SourceStamp'])),
+ ))
+ db.send_create_signal('mbdb', ['BuildRequest'])
+
+ # Adding M2M table for field builds on 'BuildRequest'
+ m2m_table_name = db.shorten_name('mbdb_buildrequest_builds')
+ db.create_table(m2m_table_name, (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('buildrequest', models.ForeignKey(orm['mbdb.buildrequest'], null=False)),
+ ('build', models.ForeignKey(orm['mbdb.build'], null=False))
+ ))
+ db.create_unique(m2m_table_name, ['buildrequest_id', 'build_id'])
+
+
+ def backwards(self, orm):
+ # Removing unique constraint on 'Change', fields ['number', 'master']
+ db.delete_unique('mbdb_change', ['number', 'master_id'])
+
+ # Deleting model 'Master'
+ db.delete_table('mbdb_master')
+
+ # Deleting model 'Slave'
+ db.delete_table('mbdb_slave')
+
+ # Deleting model 'File'
+ db.delete_table('mbdb_file')
+
+ # Deleting model 'Tag'
+ db.delete_table('mbdb_tag')
+
+ # Deleting model 'Change'
+ db.delete_table('mbdb_change')
+
+ # Removing M2M table for field files on 'Change'
+ db.delete_table(db.shorten_name('mbdb_change_files'))
+
+ # Removing M2M table for field tags on 'Change'
+ db.delete_table(db.shorten_name('mbdb_change_tags'))
+
+ # Deleting model 'SourceStamp'
+ db.delete_table('mbdb_sourcestamp')
+
+ # Deleting model 'NumberedChange'
+ db.delete_table('mbdb_numberedchange')
+
+ # Deleting model 'Property'
+ db.delete_table('mbdb_property')
+
+ # Deleting model 'Builder'
+ db.delete_table('mbdb_builder')
+
+ # Deleting model 'Build'
+ db.delete_table('mbdb_build')
+
+ # Removing M2M table for field properties on 'Build'
+ db.delete_table(db.shorten_name('mbdb_build_properties'))
+
+ # Deleting model 'Step'
+ db.delete_table('mbdb_step')
+
+ # Deleting model 'URL'
+ db.delete_table('mbdb_url')
+
+ # Deleting model 'Log'
+ db.delete_table('mbdb_log')
+
+ # Deleting model 'BuildRequest'
+ db.delete_table('mbdb_buildrequest')
+
+ # Removing M2M table for field builds on 'BuildRequest'
+ db.delete_table(db.shorten_name('mbdb_buildrequest_builds'))
+
+
+ models = {
+ 'mbdb.build': {
+ 'Meta': {'object_name': 'Build'},
+ 'builder': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'builds'", 'to': "orm['mbdb.Builder']"}),
+ 'buildnumber': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'db_index': 'True'}),
+ 'endtime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'properties': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'builds'", 'symmetrical': 'False', 'to': "orm['mbdb.Property']"}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'result': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'slave': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mbdb.Slave']", 'null': 'True', 'blank': 'True'}),
+ 'sourcestamp': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'builds'", 'null': 'True', 'to': "orm['mbdb.SourceStamp']"}),
+ 'starttime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'mbdb.builder': {
+ 'Meta': {'object_name': 'Builder'},
+ 'bigState': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'category': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'builders'", 'to': "orm['mbdb.Master']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'mbdb.buildrequest': {
+ 'Meta': {'object_name': 'BuildRequest'},
+ 'builder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mbdb.Builder']"}),
+ 'builds': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'requests'", 'symmetrical': 'False', 'to': "orm['mbdb.Build']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'sourcestamp': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'requests'", 'to': "orm['mbdb.SourceStamp']"}),
+ 'submitTime': ('django.db.models.fields.DateTimeField', [], {})
+ },
+ 'mbdb.change': {
+ 'Meta': {'unique_together': "(('number', 'master'),)", 'object_name': 'Change'},
+ 'branch': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'comments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'files': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['mbdb.File']", 'symmetrical': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'master': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mbdb.Master']"}),
+ 'number': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['mbdb.Tag']", 'symmetrical': 'False'}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '100', 'null': 'True', 'blank': 'True'})
+ },
+ 'mbdb.file': {
+ 'Meta': {'object_name': 'File'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'path': ('django.db.models.fields.CharField', [], {'max_length': '400', 'db_index': 'True'})
+ },
+ 'mbdb.log': {
+ 'Meta': {'object_name': 'Log'},
+ 'filename': ('django.db.models.fields.CharField', [], {'max_length': '200', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'isFinished': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'step': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': "orm['mbdb.Step']"})
+ },
+ 'mbdb.master': {
+ 'Meta': {'object_name': 'Master'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'mbdb.numberedchange': {
+ 'Meta': {'object_name': 'NumberedChange'},
+ 'change': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'numbered_changes'", 'to': "orm['mbdb.Change']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'number': ('django.db.models.fields.IntegerField', [], {'db_index': 'True'}),
+ 'sourcestamp': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'numbered_changes'", 'to': "orm['mbdb.SourceStamp']"})
+ },
+ 'mbdb.property': {
+ 'Meta': {'object_name': 'Property'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '20', 'db_index': 'True'}),
+ 'source': ('django.db.models.fields.CharField', [], {'max_length': '20', 'db_index': 'True'}),
+ 'value': ('mbdb.fields.PickledObjectField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'})
+ },
+ 'mbdb.slave': {
+ 'Meta': {'object_name': 'Slave'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '150'})
+ },
+ 'mbdb.sourcestamp': {
+ 'Meta': {'object_name': 'SourceStamp'},
+ 'branch': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'changes': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'stamps'", 'symmetrical': 'False', 'through': "orm['mbdb.NumberedChange']", 'to': "orm['mbdb.Change']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'revision': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'})
+ },
+ 'mbdb.step': {
+ 'Meta': {'object_name': 'Step'},
+ 'build': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'steps'", 'to': "orm['mbdb.Build']"}),
+ 'endtime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+ 'result': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'starttime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'text': ('mbdb.fields.ListField', [], {'null': 'True', 'blank': 'True'}),
+ 'text2': ('mbdb.fields.ListField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'mbdb.tag': {
+ 'Meta': {'object_name': 'Tag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'value': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'mbdb.url': {
+ 'Meta': {'object_name': 'URL'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
+ 'step': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'urls'", 'to': "orm['mbdb.Step']"}),
+ 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
+ }
+ }
+
+ complete_apps = ['mbdb']
View
0  apps/mbdb/migrations/__init__.py
No changes.
View
89 apps/privacy/migrations/0001_initial.py
@@ -0,0 +1,89 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding model 'Policy'
+ db.create_table('privacy_policy', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('text', self.gf('django.db.models.fields.TextField')()),
+ ('active', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ))
+ db.send_create_signal('privacy', ['Policy'])
+
+ # Adding model 'Comment'
+ db.create_table('privacy_comment', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('text', self.gf('django.db.models.fields.TextField')()),
+ ('policy', self.gf('django.db.models.fields.related.ForeignKey')(related_name='comments', to=orm['privacy.Policy'])),
+ ('who', self.gf('django.db.models.fields.related.ForeignKey')(related_name='privacy_comments', to=orm['auth.User'])),
+ ))
+ db.send_create_signal('privacy', ['Comment'])
+
+
+ def backwards(self, orm):
+ # Deleting model 'Policy'
+ db.delete_table('privacy_policy')
+
+ # Deleting model 'Comment'
+ db.delete_table('privacy_comment')
+
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'privacy.comment': {
+ 'Meta': {'object_name': 'Comment'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'policy': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['privacy.Policy']"}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'privacy_comments'", 'to': "orm['auth.User']"})
+ },
+ 'privacy.policy': {
+ 'Meta': {'object_name': 'Policy'},
+ 'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {})
+ }
+ }
+
+ complete_apps = ['privacy']
View
0  apps/privacy/migrations/__init__.py
No changes.
View
301 apps/shipping/migrations/0001_initial.py
@@ -0,0 +1,301 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding model 'Application'
+ db.create_table('shipping_application', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=50)),
+ ('code', self.gf('django.db.models.fields.CharField')(max_length=30)),
+ ))
+ db.send_create_signal('shipping', ['Application'])
+
+ # Adding model 'AppVersionTreeThrough'
+ db.create_table('shipping_appversiontreethrough', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('start', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.utcnow, null=True, blank=True)),
+ ('end', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('appversion', self.gf('django.db.models.fields.related.ForeignKey')(related_name='trees_over_time', to=orm['shipping.AppVersion'])),
+ ('tree', self.gf('django.db.models.fields.related.ForeignKey')(related_name='appvers_over_time', to=orm['life.Tree'])),
+ ))
+ db.send_create_signal('shipping', ['AppVersionTreeThrough'])
+
+ # Adding unique constraint on 'AppVersionTreeThrough', fields ['start', 'end', 'appversion', 'tree']
+ db.create_unique('shipping_appversiontreethrough', ['start', 'end', 'appversion_id', 'tree_id'])
+
+ # Adding model 'AppVersion'
+ db.create_table('shipping_appversion', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('app', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['shipping.Application'])),
+ ('version', self.gf('django.db.models.fields.CharField')(max_length=10)),
+ ('code', self.gf('django.db.models.fields.CharField')(max_length=20, blank=True)),
+ ('codename', self.gf('django.db.models.fields.CharField')(max_length=30, null=True, blank=True)),
+ ('fallback', self.gf('django.db.models.fields.related.ForeignKey')(related_name='followups', on_delete=models.SET_NULL, default=None, to=orm['shipping.AppVersion'], blank=True, null=True)),
+ ('accepts_signoffs', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ))
+ db.send_create_signal('shipping', ['AppVersion'])
+
+ # Adding model 'Signoff'
+ db.create_table('shipping_signoff', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('push', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['life.Push'])),
+ ('appversion', self.gf('django.db.models.fields.related.ForeignKey')(related_name='signoffs', to=orm['shipping.AppVersion'])),
+ ('author', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
+ ('when', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.utcnow)),
+ ('locale', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['life.Locale'])),
+ ))
+ db.send_create_signal('shipping', ['Signoff'])
+
+ # Adding model 'Action'
+ db.create_table('shipping_action', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('signoff', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['shipping.Signoff'])),
+ ('flag', self.gf('django.db.models.fields.IntegerField')()),
+ ('author', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
+ ('when', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.utcnow)),
+ ('comment', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ))
+ db.send_create_signal('shipping', ['Action'])
+
+ # Adding model 'Snapshot'
+ db.create_table('shipping_snapshot', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('signoff', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['shipping.Signoff'])),
+ ('test', self.gf('django.db.models.fields.IntegerField')()),
+ ('tid', self.gf('django.db.models.fields.IntegerField')()),
+ ))
+ db.send_create_signal('shipping', ['Snapshot'])
+
+ # Adding model 'Milestone'
+ db.create_table('shipping_milestone', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('code', self.gf('django.db.models.fields.CharField')(unique=True, max_length=30)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=50)),
+ ('appver', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['shipping.AppVersion'])),
+ ('status', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ))
+ db.send_create_signal('shipping', ['Milestone'])
+
+ # Adding M2M table for field signoffs on 'Milestone'
+ m2m_table_name = db.shorten_name('shipping_milestone_signoffs')
+ db.create_table(m2m_table_name, (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('milestone', models.ForeignKey(orm['shipping.milestone'], null=False)),
+ ('signoff', models.ForeignKey(orm['shipping.signoff'], null=False))
+ ))
+ db.create_unique(m2m_table_name, ['milestone_id', 'signoff_id'])
+
+ # Adding model 'Event'
+ db.create_table('shipping_event', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=50)),
+ ('type', self.gf('django.db.models.fields.IntegerField')()),
+ ('date', self.gf('django.db.models.fields.DateField')()),
+ ('milestone', self.gf('django.db.models.fields.related.ForeignKey')(related_name='events', to=orm['shipping.Milestone'])),
+ ))
+ db.send_create_signal('shipping', ['Event'])
+
+
+ def backwards(self, orm):
+ # Removing unique constraint on 'AppVersionTreeThrough', fields ['start', 'end', 'appversion', 'tree']
+ db.delete_unique('shipping_appversiontreethrough', ['start', 'end', 'appversion_id', 'tree_id'])
+
+ # Deleting model 'Application'
+ db.delete_table('shipping_application')
+
+ # Deleting model 'AppVersionTreeThrough'
+ db.delete_table('shipping_appversiontreethrough')
+
+ # Deleting model 'AppVersion'
+ db.delete_table('shipping_appversion')
+
+ # Deleting model 'Signoff'
+ db.delete_table('shipping_signoff')
+
+ # Deleting model 'Action'
+ db.delete_table('shipping_action')
+
+ # Deleting model 'Snapshot'
+ db.delete_table('shipping_snapshot')
+
+ # Deleting model 'Milestone'
+ db.delete_table('shipping_milestone')
+
+ # Removing M2M table for field signoffs on 'Milestone'
+ db.delete_table(db.shorten_name('shipping_milestone_signoffs'))
+
+ # Deleting model 'Event'
+ db.delete_table('shipping_event')
+
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'life.branch': {
+ 'Meta': {'object_name': 'Branch'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {})
+ },
+ 'life.changeset': {
+ 'Meta': {'object_name': 'Changeset'},
+ 'branch': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'related_name': "'changesets'", 'to': "orm['life.Branch']"}),
+ 'description': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True'}),
+ 'files': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['mbdb.File']", 'symmetrical': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'parents': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'_children'", 'symmetrical': 'False', 'to': "orm['life.Changeset']"}),
+ 'revision': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '40', 'db_index': 'True'}),
+ 'user': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '200', 'db_index': 'True'})
+ },
+ 'life.forest': {
+ 'Meta': {'object_name': 'Forest'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}),
+ 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
+ },
+ 'life.locale': {
+ 'Meta': {'object_name': 'Locale'},
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'native': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'})
+ },
+ 'life.push': {
+ 'Meta': {'object_name': 'Push'},
+ 'changesets': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'pushes'", 'symmetrical': 'False', 'to': "orm['life.Changeset']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'push_date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
+ 'push_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'repository': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['life.Repository']"}),
+ 'user': ('django.db.models.fields.CharField', [], {'max_length': '200', 'db_index': 'True'})
+ },
+ 'life.repository': {
+ 'Meta': {'object_name': 'Repository'},
+ 'changesets': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'repositories'", 'symmetrical': 'False', 'to': "orm['life.Changeset']"}),
+ 'forest': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'repositories'", 'null': 'True', 'to': "orm['life.Forest']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'locale': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['life.Locale']", 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}),
+ 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
+ },
+ 'life.tree': {
+ 'Meta': {'object_name': 'Tree'},
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '50'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'l10n': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['life.Forest']"}),
+ 'repositories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['life.Repository']", 'symmetrical': 'False'})
+ },
+ 'mbdb.file': {
+ 'Meta': {'object_name': 'File'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'path': ('django.db.models.fields.CharField', [], {'max_length': '400', 'db_index': 'True'})
+ },
+ 'shipping.action': {
+ 'Meta': {'object_name': 'Action'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'flag': ('django.db.models.fields.IntegerField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'signoff': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['shipping.Signoff']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.utcnow'})
+ },
+ 'shipping.application': {
+ 'Meta': {'object_name': 'Application'},
+ 'code': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'shipping.appversion': {
+ 'Meta': {'object_name': 'AppVersion'},
+ 'accepts_signoffs': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'app': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['shipping.Application']"}),
+ 'code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'fallback': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'followups'", 'on_delete': 'models.SET_NULL', 'default': 'None', 'to': "orm['shipping.AppVersion']", 'blank': 'True', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'trees': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['life.Tree']", 'through': "orm['shipping.AppVersionTreeThrough']", 'symmetrical': 'False'}),
+ 'version': ('django.db.models.fields.CharField', [], {'max_length': '10'})
+ },
+ 'shipping.appversiontreethrough': {
+ 'Meta': {'ordering': "['-start', '-end']", 'unique_together': "(('start', 'end', 'appversion', 'tree'),)", 'object_name': 'AppVersionTreeThrough'},
+ 'appversion': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'trees_over_time'", 'to': "orm['shipping.AppVersion']"}),
+ 'end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'start': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.utcnow', 'null': 'True', 'blank': 'True'}),
+ 'tree': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'appvers_over_time'", 'to': "orm['life.Tree']"})
+ },
+ 'shipping.event': {
+ 'Meta': {'object_name': 'Event'},
+ 'date': ('django.db.models.fields.DateField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'milestone': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'events'", 'to': "orm['shipping.Milestone']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+ 'type': ('django.db.models.fields.IntegerField', [], {})
+ },
+ 'shipping.milestone': {
+ 'Meta': {'object_name': 'Milestone'},
+ 'appver': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['shipping.AppVersion']"}),
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+ 'signoffs': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'shipped_in'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['shipping.Signoff']"}),
+ 'status': ('django.db.models.fields.IntegerField', [], {'default': '0'})
+ },
+ 'shipping.signoff': {
+ 'Meta': {'object_name': 'Signoff'},
+ 'appversion': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'signoffs'", 'to': "orm['shipping.AppVersion']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'locale': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['life.Locale']"}),
+ 'push': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['life.Push']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.utcnow'})
+ },
+ 'shipping.snapshot': {
+ 'Meta': {'object_name': 'Snapshot'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'signoff': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['shipping.Signoff']"}),
+ 'test': ('django.db.models.fields.IntegerField', [], {}),
+ 'tid': ('django.db.models.fields.IntegerField', [], {})
+ }
+ }
+
+ complete_apps = ['shipping']
View
0  apps/shipping/migrations/__init__.py
No changes.
View
57 apps/tinder/migrations/0001_initial.py
@@ -0,0 +1,57 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding model 'WebHead'
+ db.create_table('tinder_webhead', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=50)),
+ ))
+ db.send_create_signal('tinder', ['WebHead'])
+
+ # Adding model 'MasterMap'
+ db.create_table('tinder_mastermap', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('master', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['mbdb.Master'])),
+ ('webhead', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['tinder.WebHead'])),
+ ('logmount', self.gf('django.db.models.fields.CharField')(max_length=200)),
+ ))
+ db.send_create_signal('tinder', ['MasterMap'])
+
+
+ def backwards(self, orm):
+ # Deleting model 'WebHead'
+ db.delete_table('tinder_webhead')
+
+ # Deleting model 'MasterMap'
+ db.delete_table('tinder_mastermap')
+
+
+ models = {
+ 'mbdb.master': {
+ 'Meta': {'object_name': 'Master'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'tinder.mastermap': {
+ 'Meta': {'object_name': 'MasterMap'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'logmount': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ 'master': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['mbdb.Master']"}),
+ 'webhead': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['tinder.WebHead']"})
+ },
+ 'tinder.webhead': {
+ 'Meta': {'object_name': 'WebHead'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'masters': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['mbdb.Master']", 'through': "orm['tinder.MasterMap']", 'symmetrical': 'False'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ }
+ }
+
+ complete_apps = ['tinder']
View
0  apps/tinder/migrations/__init__.py
No changes.
View
152 apps/webby/migrations/0001_initial.py
@@ -0,0 +1,152 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding model 'ProjectType'
+ db.create_table('webby_projecttype', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=80)),
+ ))
+ db.send_create_signal('webby', ['ProjectType'])
+
+ # Adding model 'Project'
+ db.create_table('webby_project', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=80)),
+ ('slug', self.gf('django.db.models.fields.SlugField')(max_length=80)),
+ ('description', self.gf('django.db.models.fields.TextField')()),
+ ('is_archived', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('verbatim_url', self.gf('django.db.models.fields.CharField')(max_length=150, null=True, blank=True)),
+ ('l10n_repo_url', self.gf('django.db.models.fields.CharField')(max_length=150, null=True, blank=True)),
+ ('code_repo_url', self.gf('django.db.models.fields.CharField')(max_length=150, null=True, blank=True)),
+ ('stage_url', self.gf('django.db.models.fields.URLField')(max_length=200, null=True, blank=True)),
+ ('final_url', self.gf('django.db.models.fields.URLField')(max_length=200, null=True, blank=True)),
+ ('stage_auth_url', self.gf('django.db.models.fields.CharField')(max_length=250, null=True, blank=True)),
+ ('stage_login', self.gf('django.db.models.fields.CharField')(max_length=80, null=True, blank=True)),
+ ('stage_passwd', self.gf('django.db.models.fields.CharField')(max_length=80, null=True, blank=True)),
+ ('string_count', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('word_count', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['webby.ProjectType'])),
+ ))
+ db.send_create_signal('webby', ['Project'])
+
+ # Adding model 'Weblocale'
+ db.create_table('webby_weblocale', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('project', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['webby.Project'])),
+ ('locale', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['life.Locale'])),
+ ('requestee', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True, blank=True)),
+ ('in_verbatim', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('in_vcs', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('is_on_stage', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('is_on_prod', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ))
+ db.send_create_signal('webby', ['Weblocale'])
+
+ # Adding unique constraint on 'Weblocale', fields ['project', 'locale']
+ db.create_unique('webby_weblocale', ['project_id', 'locale_id'])
+
+
+ def backwards(self, orm):
+ # Removing unique constraint on 'Weblocale', fields ['project', 'locale']
+ db.delete_unique('webby_weblocale', ['project_id', 'locale_id'])
+
+ # Deleting model 'ProjectType'
+ db.delete_table('webby_projecttype')
+
+ # Deleting model 'Project'
+ db.delete_table('webby_project')
+
+ # Deleting model 'Weblocale'
+ db.delete_table('webby_weblocale')
+
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'life.locale': {
+ 'Meta': {'object_name': 'Locale'},
+ 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'native': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'})
+ },
+ 'webby.project': {
+ 'Meta': {'object_name': 'Project'},
+ 'code_repo_url': ('django.db.models.fields.CharField', [], {'max_length': '150', 'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {}),
+ 'final_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_archived': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'l10n_repo_url': ('django.db.models.fields.CharField', [], {'max_length': '150', 'null': 'True', 'blank': 'True'}),
+ 'locales': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['life.Locale']", 'symmetrical': 'False',