Moved permissions into a the tag system as a separate handler. Permissions still don't work quite right yet.

This commit is contained in:
Griatch 2013-08-24 23:57:44 +02:00
parent 2acff2d1ab
commit 06e858b3f6
21 changed files with 1003 additions and 389 deletions

View file

@ -0,0 +1,54 @@
# -*- 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):
# Deleting field 'HelpEntry.db_permissions'
db.delete_column(u'help_helpentry', 'db_permissions')
# Adding M2M table for field db_tags on 'HelpEntry'
m2m_table_name = db.shorten_name(u'help_helpentry_db_tags')
db.create_table(m2m_table_name, (
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
('helpentry', models.ForeignKey(orm[u'help.helpentry'], null=False)),
('tag', models.ForeignKey(orm[u'typeclasses.tag'], null=False))
))
db.create_unique(m2m_table_name, ['helpentry_id', 'tag_id'])
def backwards(self, orm):
# Adding field 'HelpEntry.db_permissions'
db.add_column(u'help_helpentry', 'db_permissions',
self.gf('django.db.models.fields.CharField')(default='', max_length=255, blank=True),
keep_default=False)
# Removing M2M table for field db_tags on 'HelpEntry'
db.delete_table(db.shorten_name(u'help_helpentry_db_tags'))
models = {
u'help.helpentry': {
'Meta': {'object_name': 'HelpEntry'},
'db_entrytext': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'db_help_category': ('django.db.models.fields.CharField', [], {'default': "'General'", 'max_length': '255'}),
'db_key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'db_staff_only': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
},
u'typeclasses.tag': {
'Meta': {'unique_together': "(('db_key', 'db_category'),)", 'object_name': 'Tag', 'index_together': "(('db_key', 'db_category'),)"},
'db_category': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'db_index': 'True'}),
'db_data': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'db_index': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
}
}
complete_apps = ['help']

View file

@ -13,6 +13,7 @@ from django.db import models
from src.utils.idmapper.models import SharedMemoryModel
from src.help.manager import HelpEntryManager
from src.utils import ansi
from src.typeclasses.models import Tag, TagHandler
from src.locks.lockhandler import LockHandler
from src.utils.utils import is_iter
__all__ = ("HelpEntry",)
@ -52,10 +53,11 @@ class HelpEntry(SharedMemoryModel):
help_text='organizes help entries in lists')
# the actual help entry text, in any formatting.
db_entrytext = models.TextField('help entry', blank=True, help_text='the main body of help text')
# a string of permissionstrings, separated by commas. Not used by help entries.
db_permissions = models.CharField('permissions', max_length=255, blank=True)
# lock string storage
db_lock_storage = models.TextField('locks', blank=True, help_text='normally view:all().')
# tags are primarily used for permissions
db_tags = models.ManyToManyField(Tag, null=True,
help_text='tags on this object. Tags are simple string markers to identify, group and alias objects.')
# (deprecated, only here to allow MUX helpfile load (don't use otherwise)).
# TODO: remove this when not needed anymore.
db_staff_only = models.BooleanField(default=False)
@ -66,6 +68,7 @@ class HelpEntry(SharedMemoryModel):
def __init__(self, *args, **kwargs):
SharedMemoryModel.__init__(self, *args, **kwargs)
self.locks = LockHandler(self)
self.tags = TagHandler(self)
class Meta:
"Define Django meta options"
@ -130,24 +133,24 @@ class HelpEntry(SharedMemoryModel):
# self.save()
#entrytext = property(__entrytext_get, __entrytext_set, __entrytext_del)
# permissions property
#@property
def __permissions_get(self):
"Getter. Allows for value = self.permissions. Returns a list of permissions."
return [perm.strip() for perm in self.db_permissions.split(',')]
#@permissions.setter
def __permissions_set(self, value):
"Setter. Allows for self.permissions = value. Stores as a comma-separated string."
if is_iter(value):
value = ",".join([str(val).strip().lower() for val in value])
self.db_permissions = value
self.save()
#@permissions.deleter
def __permissions_del(self):
"Deleter. Allows for del self.permissions"
self.db_permissions = ""
self.save()
permissions = property(__permissions_get, __permissions_set, __permissions_del)
## permissions property
##@property
#def __permissions_get(self):
# "Getter. Allows for value = self.permissions. Returns a list of permissions."
# return [perm.strip() for perm in self.db_permissions.split(',')]
##@permissions.setter
#def __permissions_set(self, value):
# "Setter. Allows for self.permissions = value. Stores as a comma-separated string."
# if is_iter(value):
# value = ",".join([str(val).strip().lower() for val in value])
# self.db_permissions = value
# self.save()
##@permissions.deleter
#def __permissions_del(self):
# "Deleter. Allows for del self.permissions"
# self.db_permissions = ""
# self.save()
#permissions = property(__permissions_get, __permissions_set, __permissions_del)
# lock_storage property (wraps db_lock_storage)
##@property