Remove common app's Singleton model and use django-solo's SingletonModel instead
This commit is contained in:
@@ -51,8 +51,8 @@ class BaseHolderSelectionForm(forms.Form):
|
||||
|
||||
|
||||
class HolderSelectionForm(BaseHolderSelectionForm):
|
||||
special_holders = [AnonymousUserSingleton.objects.get()]
|
||||
special_holders = [AnonymousUserSingleton.objects.get_or_create()[0]]
|
||||
|
||||
|
||||
class ClassHolderSelectionForm(BaseHolderSelectionForm):
|
||||
special_holders = [AnonymousUserSingleton.objects.get(), CreatorSingleton.objects.get()]
|
||||
special_holders = [AnonymousUserSingleton.objects.get_or_create()[0], CreatorSingleton.objects.get_or_create()[0]]
|
||||
|
||||
89
mayan/apps/acls/migrations/0001_initial.py
Normal file
89
mayan/apps/acls/migrations/0001_initial.py
Normal file
@@ -0,0 +1,89 @@
|
||||
# -*- 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 'AccessEntry'
|
||||
db.create_table(u'acls_accessentry', (
|
||||
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('permission', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['permissions.StoredPermission'])),
|
||||
('holder_type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='access_holder', to=orm['contenttypes.ContentType'])),
|
||||
('holder_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
|
||||
('content_type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='object_content_type', to=orm['contenttypes.ContentType'])),
|
||||
('object_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
|
||||
))
|
||||
db.send_create_signal(u'acls', ['AccessEntry'])
|
||||
|
||||
# Adding model 'DefaultAccessEntry'
|
||||
db.create_table(u'acls_defaultaccessentry', (
|
||||
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('permission', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['permissions.StoredPermission'])),
|
||||
('holder_type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='default_access_entry_holder', to=orm['contenttypes.ContentType'])),
|
||||
('holder_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
|
||||
('content_type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='default_access_entry_class', to=orm['contenttypes.ContentType'])),
|
||||
))
|
||||
db.send_create_signal(u'acls', ['DefaultAccessEntry'])
|
||||
|
||||
# Adding model 'CreatorSingleton'
|
||||
db.create_table(u'acls_creatorsingleton', (
|
||||
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('lock_id', self.gf('django.db.models.fields.CharField')(default='1', unique=True, max_length=1)),
|
||||
))
|
||||
db.send_create_signal(u'acls', ['CreatorSingleton'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting model 'AccessEntry'
|
||||
db.delete_table(u'acls_accessentry')
|
||||
|
||||
# Deleting model 'DefaultAccessEntry'
|
||||
db.delete_table(u'acls_defaultaccessentry')
|
||||
|
||||
# Deleting model 'CreatorSingleton'
|
||||
db.delete_table(u'acls_creatorsingleton')
|
||||
|
||||
|
||||
models = {
|
||||
u'acls.accessentry': {
|
||||
'Meta': {'object_name': 'AccessEntry'},
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'object_content_type'", 'to': u"orm['contenttypes.ContentType']"}),
|
||||
'holder_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'holder_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'access_holder'", 'to': u"orm['contenttypes.ContentType']"}),
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['permissions.StoredPermission']"})
|
||||
},
|
||||
u'acls.creatorsingleton': {
|
||||
'Meta': {'object_name': 'CreatorSingleton'},
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'lock_id': ('django.db.models.fields.CharField', [], {'default': "'1'", 'unique': 'True', 'max_length': '1'})
|
||||
},
|
||||
u'acls.defaultaccessentry': {
|
||||
'Meta': {'object_name': 'DefaultAccessEntry'},
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_access_entry_class'", 'to': u"orm['contenttypes.ContentType']"}),
|
||||
'holder_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'holder_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_access_entry_holder'", 'to': u"orm['contenttypes.ContentType']"}),
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['permissions.StoredPermission']"})
|
||||
},
|
||||
u'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'}),
|
||||
u'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'})
|
||||
},
|
||||
u'permissions.storedpermission': {
|
||||
'Meta': {'ordering': "('namespace',)", 'unique_together': "(('namespace', 'name'),)", 'object_name': 'StoredPermission'},
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'namespace': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['acls']
|
||||
@@ -0,0 +1,59 @@
|
||||
# -*- 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):
|
||||
# Deleting field 'CreatorSingleton.lock_id'
|
||||
db.delete_column(u'acls_creatorsingleton', 'lock_id')
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Adding field 'CreatorSingleton.lock_id'
|
||||
db.add_column(u'acls_creatorsingleton', 'lock_id',
|
||||
self.gf('django.db.models.fields.CharField')(default='1', max_length=1, unique=True),
|
||||
keep_default=False)
|
||||
|
||||
|
||||
models = {
|
||||
u'acls.accessentry': {
|
||||
'Meta': {'object_name': 'AccessEntry'},
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'object_content_type'", 'to': u"orm['contenttypes.ContentType']"}),
|
||||
'holder_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'holder_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'access_holder'", 'to': u"orm['contenttypes.ContentType']"}),
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['permissions.StoredPermission']"})
|
||||
},
|
||||
u'acls.creatorsingleton': {
|
||||
'Meta': {'object_name': 'CreatorSingleton'},
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
u'acls.defaultaccessentry': {
|
||||
'Meta': {'object_name': 'DefaultAccessEntry'},
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_access_entry_class'", 'to': u"orm['contenttypes.ContentType']"}),
|
||||
'holder_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
'holder_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_access_entry_holder'", 'to': u"orm['contenttypes.ContentType']"}),
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['permissions.StoredPermission']"})
|
||||
},
|
||||
u'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'}),
|
||||
u'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'})
|
||||
},
|
||||
u'permissions.storedpermission': {
|
||||
'Meta': {'ordering': "('namespace',)", 'unique_together': "(('namespace', 'name'),)", 'object_name': 'StoredPermission'},
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'namespace': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['acls']
|
||||
0
mayan/apps/acls/migrations/__init__.py
Normal file
0
mayan/apps/acls/migrations/__init__.py
Normal file
@@ -8,8 +8,9 @@ from django.utils.translation import ugettext
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.contenttypes import generic
|
||||
|
||||
from solo.models import SingletonModel
|
||||
|
||||
from permissions.models import StoredPermission
|
||||
from common.models import Singleton, SingletonManager
|
||||
|
||||
from .managers import AccessEntryManager, DefaultAccessEntryManager
|
||||
from .classes import AccessObjectClass
|
||||
@@ -92,7 +93,7 @@ class DefaultAccessEntry(models.Model):
|
||||
return u'%s: %s' % (self.content_type, self.content_object)
|
||||
|
||||
|
||||
class CreatorSingletonManager(SingletonManager):
|
||||
class CreatorSingletonManager(models.Manager):
|
||||
def passthru_check(self, holder, creator=None):
|
||||
if isinstance(holder, self.model):
|
||||
# TODO: raise explicit error if is instance and creator=None
|
||||
@@ -101,7 +102,7 @@ class CreatorSingletonManager(SingletonManager):
|
||||
return holder
|
||||
|
||||
|
||||
class CreatorSingleton(Singleton):
|
||||
class CreatorSingleton(SingletonModel):
|
||||
objects = CreatorSingletonManager()
|
||||
|
||||
def __unicode__(self):
|
||||
|
||||
@@ -17,7 +17,7 @@ from navigation.api import register_links, register_top_menu
|
||||
from .conf import settings as common_settings
|
||||
from .conf.settings import (AUTO_CREATE_ADMIN, AUTO_ADMIN_USERNAME,
|
||||
AUTO_ADMIN_PASSWORD, TEMPORARY_DIRECTORY)
|
||||
from .models import AutoAdminSingleton
|
||||
from .models import AnonymousUserSingleton, AutoAdminSingleton
|
||||
from .utils import validate_path
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ def create_superuser(sender, **kwargs):
|
||||
assert auth_models.User.objects.create_superuser(AUTO_ADMIN_USERNAME, 'autoadmin@autoadmin.com', AUTO_ADMIN_PASSWORD)
|
||||
admin = auth_models.User.objects.get(username=AUTO_ADMIN_USERNAME)
|
||||
# Store the auto admin password properties to display the first login message
|
||||
auto_admin_properties = AutoAdminSingleton.objects.get()
|
||||
auto_admin_properties, created = AutoAdminSingleton.objects.get_or_create()
|
||||
auto_admin_properties.account = admin
|
||||
auto_admin_properties.password = AUTO_ADMIN_PASSWORD
|
||||
auto_admin_properties.password_hash = admin.password
|
||||
@@ -74,7 +74,7 @@ def create_superuser(sender, **kwargs):
|
||||
def auto_admin_account_passwd_change(sender, instance, **kwargs):
|
||||
try:
|
||||
with transaction.atomic():
|
||||
auto_admin_properties = AutoAdminSingleton.objects.get()
|
||||
auto_admin_properties, created = AutoAdminSingleton.objects.get_or_create()
|
||||
if instance == auto_admin_properties.account and instance.password != auto_admin_properties.password_hash:
|
||||
# Only delete the auto admin properties when the password has been changed
|
||||
auto_admin_properties.delete(force=True)
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
# -*- 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):
|
||||
# Deleting field 'AutoAdminSingleton.lock_id'
|
||||
db.delete_column(u'common_autoadminsingleton', 'lock_id')
|
||||
|
||||
# Deleting field 'AnonymousUserSingleton.lock_id'
|
||||
db.delete_column(u'common_anonymoususersingleton', 'lock_id')
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Adding field 'AutoAdminSingleton.lock_id'
|
||||
db.add_column(u'common_autoadminsingleton', 'lock_id',
|
||||
self.gf('django.db.models.fields.CharField')(default=1, max_length=1, unique=True),
|
||||
keep_default=False)
|
||||
|
||||
# Adding field 'AnonymousUserSingleton.lock_id'
|
||||
db.add_column(u'common_anonymoususersingleton', 'lock_id',
|
||||
self.gf('django.db.models.fields.CharField')(default=1, max_length=1, unique=True),
|
||||
keep_default=False)
|
||||
|
||||
|
||||
models = {
|
||||
u'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
u'auth.permission': {
|
||||
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
u'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', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
|
||||
u'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', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
u'common.anonymoususersingleton': {
|
||||
'Meta': {'object_name': 'AnonymousUserSingleton'},
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||
},
|
||||
u'common.autoadminsingleton': {
|
||||
'Meta': {'object_name': 'AutoAdminSingleton'},
|
||||
'account': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'auto_admin_account'", 'null': 'True', 'to': u"orm['auth.User']"}),
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
|
||||
'password_hash': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
u'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'}),
|
||||
u'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'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['common']
|
||||
@@ -4,43 +4,10 @@ from django.utils.translation import ugettext
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
SINGLETON_LOCK_ID = 1
|
||||
from solo.models import SingletonModel
|
||||
|
||||
|
||||
class SingletonManager(models.Manager):
|
||||
def get(self, **kwargs):
|
||||
instance, created = self.model.objects.get_or_create(lock_id=SINGLETON_LOCK_ID, **kwargs)
|
||||
return instance
|
||||
|
||||
|
||||
class Singleton(models.Model):
|
||||
lock_id = models.CharField(max_length=1, default=SINGLETON_LOCK_ID, editable=False, verbose_name=_(u'lock field'), unique=True)
|
||||
|
||||
objects = SingletonManager()
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
self.id = 1
|
||||
super(Singleton, self).save(*args, **kwargs)
|
||||
|
||||
def delete(self, force=False, *args, **kwargs):
|
||||
if force:
|
||||
return super(Singleton, self).delete(*args, **kwargs)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class AnonymousUserSingletonManager(SingletonManager):
|
||||
def passthru_check(self, user):
|
||||
if isinstance(user, AnonymousUser):
|
||||
return self.model.objects.get()
|
||||
else:
|
||||
return user
|
||||
|
||||
|
||||
class AnonymousUserSingleton(Singleton):
|
||||
objects = AnonymousUserSingletonManager()
|
||||
|
||||
class AnonymousUserSingleton(SingletonModel):
|
||||
def __unicode__(self):
|
||||
return ugettext('Anonymous user')
|
||||
|
||||
@@ -49,7 +16,7 @@ class AnonymousUserSingleton(Singleton):
|
||||
verbose_name_plural = _(u'anonymous user')
|
||||
|
||||
|
||||
class AutoAdminSingleton(Singleton):
|
||||
class AutoAdminSingleton(SingletonModel):
|
||||
account = models.ForeignKey(User, null=True, blank=True, related_name='auto_admin_account', verbose_name=_(u'account'))
|
||||
password = models.CharField(null=True, blank=True, verbose_name=_(u'password'), max_length=128)
|
||||
password_hash = models.CharField(null=True, blank=True, verbose_name=_(u'password hash'), max_length=128)
|
||||
|
||||
@@ -19,7 +19,7 @@ from .models import Installation
|
||||
@receiver(post_migrate, dispatch_uid='trigger_first_time')
|
||||
def trigger_first_time(sender, **kwargs):
|
||||
if kwargs['app'] == 'installation':
|
||||
details = Installation.objects.get()
|
||||
details, created = Installation.objects.get_or_create()
|
||||
details.is_first_run = True
|
||||
details.save()
|
||||
|
||||
@@ -27,7 +27,7 @@ def trigger_first_time(sender, **kwargs):
|
||||
def check_first_run():
|
||||
try:
|
||||
with transaction.atomic():
|
||||
details = Installation.objects.get()
|
||||
details, created = Installation.objects.get_or_create()
|
||||
except DatabaseError:
|
||||
# Avoid database errors when the app tables haven't been created yet
|
||||
pass
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
# -*- 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):
|
||||
# Deleting field 'Installation.lock_id'
|
||||
db.delete_column(u'installation_installation', 'lock_id')
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Adding field 'Installation.lock_id'
|
||||
db.add_column(u'installation_installation', 'lock_id',
|
||||
self.gf('django.db.models.fields.CharField')(default=1, max_length=1, unique=True),
|
||||
keep_default=False)
|
||||
|
||||
|
||||
models = {
|
||||
u'installation.installation': {
|
||||
'Meta': {'object_name': 'Installation'},
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_first_run': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'uuid': ('django.db.models.fields.CharField', [], {'default': "u'745d2184-d011-4a19-a3d9-df3bab80f82c'", 'max_length': '48', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['installation']
|
||||
@@ -24,7 +24,8 @@ from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.datastructures import SortedDict
|
||||
from django.conf import settings
|
||||
|
||||
from common.models import Singleton
|
||||
from solo.models import SingletonModel
|
||||
|
||||
from common.utils import pretty_size
|
||||
from mayan import __version__ as mayan_version
|
||||
from lock_manager import Lock, LockError
|
||||
@@ -35,7 +36,7 @@ from .literals import (FORM_SUBMIT_URL, FORM_KEY, FORM_RECEIVER_FIELD,
|
||||
TIMEOUT, FABFILE_MARKER)
|
||||
|
||||
|
||||
class Installation(Singleton):
|
||||
class Installation(SingletonModel):
|
||||
_properties = SortedDict()
|
||||
|
||||
is_first_run = models.BooleanField(default=False)
|
||||
|
||||
@@ -20,6 +20,6 @@ register_links(['form_view', 'about_view', 'license_view'], [form_view], menu_na
|
||||
|
||||
try:
|
||||
with transaction.atomic():
|
||||
RegistrationSingleton.objects.get()
|
||||
RegistrationSingleton.objects.get_or_create()
|
||||
except DatabaseError:
|
||||
pass
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
# -*- 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):
|
||||
# Deleting field 'RegistrationSingleton.lock_id'
|
||||
db.delete_column(u'registration_registrationsingleton', 'lock_id')
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Adding field 'RegistrationSingleton.lock_id'
|
||||
db.add_column(u'registration_registrationsingleton', 'lock_id',
|
||||
self.gf('django.db.models.fields.CharField')(default=1, max_length=1, unique=True),
|
||||
keep_default=False)
|
||||
|
||||
|
||||
models = {
|
||||
u'registration.registrationsingleton': {
|
||||
'Meta': {'object_name': 'RegistrationSingleton'},
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'registered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'registration_data': ('django.db.models.fields.TextField', [], {'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['registration']
|
||||
@@ -6,14 +6,15 @@ import requests
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from common.models import Singleton
|
||||
from solo.models import SingletonModel
|
||||
|
||||
from lock_manager import Lock, LockError
|
||||
|
||||
from .literals import FORM_SUBMIT_URL, FORM_KEY, FORM_RECEIVER_FIELD, TIMEOUT
|
||||
from .exceptions import AlreadyRegistered
|
||||
|
||||
|
||||
class RegistrationSingleton(Singleton):
|
||||
class RegistrationSingleton(SingletonModel):
|
||||
_cached_name = None
|
||||
_registered = None
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@ INSTALLED_APPS = (
|
||||
'mptt',
|
||||
'compressor',
|
||||
'rest_framework',
|
||||
'solo',
|
||||
# Base generic
|
||||
'permissions',
|
||||
'project_setup',
|
||||
|
||||
@@ -10,6 +10,7 @@ django-taggit==0.12
|
||||
django-mptt==0.6.1
|
||||
django-rest-swagger==0.1.14
|
||||
django-sendfile==0.3.6
|
||||
django-solo==1.0.5
|
||||
djangorestframework==2.3.14
|
||||
|
||||
GitPython==0.3.2.RC1
|
||||
|
||||
Reference in New Issue
Block a user