From 5db6223bc0be94e47dd03f21654f5e42a436baaf Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 25 May 2014 14:53:58 +0200 Subject: [PATCH] introduce new app domains - generate domains app - duplicate managemails.models.MailDomain as domains.models.MailDomain - add domains app to gnuviechadmin.settings.base.LOCAL_APPS - repair managemails.tests.test_models - fix handling of empty results in osusers.models.GroupManager.get_next_gid and osusers.models.UserManager.get_next_uid --- gnuviechadmin/domains/__init__.py | 0 gnuviechadmin/domains/admin.py | 3 ++ .../domains/migrations/0001_initial.py | 36 +++++++++++++++++++ gnuviechadmin/domains/migrations/__init__.py | 0 gnuviechadmin/domains/models.py | 17 +++++++++ gnuviechadmin/domains/tests/__init__.py | 0 gnuviechadmin/domains/tests/test_models.py | 9 +++++ gnuviechadmin/domains/views.py | 3 ++ gnuviechadmin/gnuviechadmin/settings/base.py | 1 + .../managemails/tests/test_models.py | 4 ++- gnuviechadmin/osusers/models.py | 4 +++ 11 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 gnuviechadmin/domains/__init__.py create mode 100644 gnuviechadmin/domains/admin.py create mode 100644 gnuviechadmin/domains/migrations/0001_initial.py create mode 100644 gnuviechadmin/domains/migrations/__init__.py create mode 100644 gnuviechadmin/domains/models.py create mode 100644 gnuviechadmin/domains/tests/__init__.py create mode 100644 gnuviechadmin/domains/tests/test_models.py create mode 100644 gnuviechadmin/domains/views.py diff --git a/gnuviechadmin/domains/__init__.py b/gnuviechadmin/domains/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/gnuviechadmin/domains/admin.py b/gnuviechadmin/domains/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/gnuviechadmin/domains/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/gnuviechadmin/domains/migrations/0001_initial.py b/gnuviechadmin/domains/migrations/0001_initial.py new file mode 100644 index 0000000..25f8e74 --- /dev/null +++ b/gnuviechadmin/domains/migrations/0001_initial.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +from south.utils import datetime_utils as 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 'MailDomain' + db.create_table(u'domains_maildomain', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('created', self.gf('model_utils.fields.AutoCreatedField')(default=datetime.datetime.now)), + ('modified', self.gf('model_utils.fields.AutoLastModifiedField')(default=datetime.datetime.now)), + ('domain', self.gf('django.db.models.fields.CharField')(unique=True, max_length=128)), + )) + db.send_create_signal(u'domains', ['MailDomain']) + + + def backwards(self, orm): + # Deleting model 'MailDomain' + db.delete_table(u'domains_maildomain') + + + models = { + u'domains.maildomain': { + 'Meta': {'object_name': 'MailDomain'}, + 'created': ('model_utils.fields.AutoCreatedField', [], {'default': 'datetime.datetime.now'}), + 'domain': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'modified': ('model_utils.fields.AutoLastModifiedField', [], {'default': 'datetime.datetime.now'}) + } + } + + complete_apps = ['domains'] \ No newline at end of file diff --git a/gnuviechadmin/domains/migrations/__init__.py b/gnuviechadmin/domains/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/gnuviechadmin/domains/models.py b/gnuviechadmin/domains/models.py new file mode 100644 index 0000000..cdb1cac --- /dev/null +++ b/gnuviechadmin/domains/models.py @@ -0,0 +1,17 @@ +from django.db import models +from django.utils.encoding import python_2_unicode_compatible +from django.utils.translation import ugettext as _ + +from model_utils.models import TimeStampedModel + + +@python_2_unicode_compatible +class MailDomain(TimeStampedModel, models.Model): + domain = models.CharField(max_length=128, unique=True) + + class Meta: + verbose_name = _('Mail domain') + verbose_name_plural = _('Mail domains') + + def __str__(self): + return self.domain diff --git a/gnuviechadmin/domains/tests/__init__.py b/gnuviechadmin/domains/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/gnuviechadmin/domains/tests/test_models.py b/gnuviechadmin/domains/tests/test_models.py new file mode 100644 index 0000000..233844b --- /dev/null +++ b/gnuviechadmin/domains/tests/test_models.py @@ -0,0 +1,9 @@ +from django.test import TestCase + +from domains.models import MailDomain + + +class MailDomainTest(TestCase): + def test__str__(self): + md = MailDomain.objects.create(domain='example.org') + self.assertEqual(str(md), 'example.org') diff --git a/gnuviechadmin/domains/views.py b/gnuviechadmin/domains/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/gnuviechadmin/domains/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/gnuviechadmin/gnuviechadmin/settings/base.py b/gnuviechadmin/gnuviechadmin/settings/base.py index 23c2338..0a1b858 100644 --- a/gnuviechadmin/gnuviechadmin/settings/base.py +++ b/gnuviechadmin/gnuviechadmin/settings/base.py @@ -219,6 +219,7 @@ DJANGO_APPS = ( # Apps specific for this project go here. LOCAL_APPS = ( + 'domains', 'osusers', 'managemails', ) diff --git a/gnuviechadmin/managemails/tests/test_models.py b/gnuviechadmin/managemails/tests/test_models.py index f7a9f9d..a324a50 100644 --- a/gnuviechadmin/managemails/tests/test_models.py +++ b/gnuviechadmin/managemails/tests/test_models.py @@ -1,6 +1,7 @@ from django.test import TestCase from passlib.hash import sha512_crypt +from osusers.models import User from managemails.models import ( MailAddress, MailDomain, @@ -16,7 +17,8 @@ class MailDomainTest(TestCase): class MailboxTest(TestCase): def test_set_password(self): - mb = Mailbox.objects.create(username='test', uid=1000, gid=1000) + user = User.objects.create_user() + mb = Mailbox.objects.create(username='test', osuser=user) mb.set_password('test') self.assertTrue(sha512_crypt.verify('test', mb.password)) diff --git a/gnuviechadmin/osusers/models.py b/gnuviechadmin/osusers/models.py index d73e27e..ecb9beb 100644 --- a/gnuviechadmin/osusers/models.py +++ b/gnuviechadmin/osusers/models.py @@ -18,6 +18,8 @@ class GroupManager(models.Manager): def get_next_gid(self): q = self.aggregate(models.Max('gid')) + if q['gid__max'] is None: + return settings.OSUSER_MINGID return max(settings.OSUSER_MINGID, q['gid__max'] + 1) @@ -45,6 +47,8 @@ class UserManager(models.Manager): def get_next_uid(self): q = self.aggregate(models.Max('uid')) + if q['uid__max'] is None: + return settings.OSUSER_MINUID return max(settings.OSUSER_MINUID, q['uid__max'] + 1) def get_next_username(self):