BryanDavis has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/364138 )

Change subject: Tools LDAP model migrations
......................................................................

Tools LDAP model migrations

Django really wants to manage all the models it can find. This doesn't
work out very well with the LDAP backend so we need to remember to mark
LDAP models as unmanaged. I'm not really sure why they don't do this in
the base class. Even when marked as unmanaged Django wants to have
a no-op migration that tell it that the models exist.

Change-Id: Ie38d4fabb275665837ad23e5cdf0e05f07a8a14c
---
A striker/tools/migrations/0008_ldap_models.py
M striker/tools/models.py
2 files changed, 78 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/labs/striker 
refs/changes/38/364138/1

diff --git a/striker/tools/migrations/0008_ldap_models.py 
b/striker/tools/migrations/0008_ldap_models.py
new file mode 100644
index 0000000..e608b06
--- /dev/null
+++ b/striker/tools/migrations/0008_ldap_models.py
@@ -0,0 +1,66 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import ldapdb.models.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('tools', '0007_toolinfo_tags'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            # Unmanaged model. This won't actually apply when you run the
+            # migration. There's no way to convince Django not to generate
+            # these migrations in the first place.
+            name='SudoRole',
+            fields=[
+                ('dn', models.CharField(primary_key=True, serialize=False, 
max_length=200)),
+                ('cn', ldapdb.models.fields.CharField(primary_key=True, 
db_column='cn', serialize=False, max_length=200)),
+                ('users', 
ldapdb.models.fields.ListField(db_column='sudoUser')),
+                ('hosts', 
ldapdb.models.fields.ListField(db_column='sudoHost')),
+                ('commands', 
ldapdb.models.fields.ListField(db_column='sudoCommand')),
+                ('options', 
ldapdb.models.fields.ListField(db_column='sudoOption')),
+                ('runas_users', 
ldapdb.models.fields.ListField(db_column='sudoRunAsUser')),
+            ],
+            options={
+                'managed': False,
+            },
+        ),
+        migrations.CreateModel(
+            # Unmanaged model. This won't actually apply when you run the
+            # migration. There's no way to convince Django not to generate
+            # these migrations in the first place.
+            name='ToolUser',
+            fields=[
+                ('dn', models.CharField(primary_key=True, serialize=False, 
max_length=200)),
+                ('uid', ldapdb.models.fields.CharField(primary_key=True, 
db_column='uid', serialize=False, max_length=200)),
+                ('cn', ldapdb.models.fields.CharField(db_column='cn', 
unique=True, max_length=200)),
+                ('sn', ldapdb.models.fields.CharField(db_column='sn', 
unique=True, max_length=200)),
+                ('uid_number', 
ldapdb.models.fields.IntegerField(db_column='uidNumber', unique=True)),
+                ('gid_number', 
ldapdb.models.fields.IntegerField(db_column='gidNumber')),
+                ('home_directory', 
ldapdb.models.fields.CharField(db_column='homeDirectory', max_length=200)),
+                ('login_shell', 
ldapdb.models.fields.CharField(db_column='loginShell', max_length=64)),
+            ],
+            options={
+                'managed': False,
+            },
+        ),
+        migrations.AlterModelOptions(
+            # Unmanaged model. This won't actually apply when you run the
+            # migration. There's no way to convince Django not to generate
+            # these migrations in the first place.
+            name='maintainer',
+            options={'managed': False},
+        ),
+        migrations.AlterModelOptions(
+            # Unmanaged model. This won't actually apply when you run the
+            # migration. There's no way to convince Django not to generate
+            # these migrations in the first place.
+            name='tool',
+            options={'managed': False},
+        ),
+    ]
diff --git a/striker/tools/models.py b/striker/tools/models.py
index 3feae27..9384b12 100644
--- a/striker/tools/models.py
+++ b/striker/tools/models.py
@@ -60,6 +60,9 @@
 
     objects = MaintainerManager()
 
+    class Meta:
+        managed = False
+
     def __str__(self):
         return self.username
 
@@ -80,6 +83,9 @@
     cn = fields.CharField(db_column='cn', max_length=200, primary_key=True)
     gid_number = fields.IntegerField(db_column='gidNumber', unique=True)
     members = fields.ListField(db_column='member')
+
+    class Meta:
+        managed = False
 
     @property
     def name(self):
@@ -142,6 +148,9 @@
         db_column='homeDirectory', max_length=200)
     login_shell = fields.CharField(db_column='loginShell', max_length=64)
 
+    class Meta:
+        managed = False
+
     @property
     def name(self):
         return self.cn[6:]
@@ -165,6 +174,9 @@
     options = fields.ListField(db_column='sudoOption')
     runas_users = fields.ListField(db_column='sudoRunAsUser')
 
+    class Meta:
+        managed = False
+
     def __str__(self):
         return 'cn=%s,%s' % (self.cn, self.base_dn)
 

-- 
To view, visit https://gerrit.wikimedia.org/r/364138
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie38d4fabb275665837ad23e5cdf0e05f07a8a14c
Gerrit-PatchSet: 1
Gerrit-Project: labs/striker
Gerrit-Branch: master
Gerrit-Owner: BryanDavis <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to