Rafał Pitoń 11 лет назад
Родитель
Сommit
e2816dff10

+ 1 - 0
misago/conf/defaults.py

@@ -98,6 +98,7 @@ INSTALLED_APPS = (
     'misago.conf',
     'misago.users',
     'misago.faker',
+    'misago.forums',
 )
 
 MIDDLEWARE_CLASSES = (

+ 0 - 0
misago/forums/__init__.py


+ 74 - 0
misago/forums/migrations/0001_initial.py

@@ -0,0 +1,74 @@
+# -*- 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 'Forum'
+        db.create_table(u'forums_forum', (
+            (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('parent', self.gf('mptt.fields.TreeForeignKey')(blank=True, related_name='children', null=True, to=orm['forums.Forum'])),
+            ('special_role', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
+            ('role', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
+            ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
+            ('slug', self.gf('django.db.models.fields.SlugField')(max_length=255)),
+            ('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('description_preparsed', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('is_closed', self.gf('django.db.models.fields.BooleanField')(default=False)),
+            ('redirect_url', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
+            ('redirects_count', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
+            ('threads', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
+            ('threads_count', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
+            ('posts', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
+            ('posts_count', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
+            ('prune_started_after', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
+            ('prune_replied_after', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
+            ('archive_pruned_in', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='pruned_archive', null=True, on_delete=models.SET_NULL, to=orm['forums.Forum'])),
+            ('css_class', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
+            (u'lft', self.gf('django.db.models.fields.PositiveIntegerField')(db_index=True)),
+            (u'rght', self.gf('django.db.models.fields.PositiveIntegerField')(db_index=True)),
+            (u'tree_id', self.gf('django.db.models.fields.PositiveIntegerField')(db_index=True)),
+            (u'level', self.gf('django.db.models.fields.PositiveIntegerField')(db_index=True)),
+        ))
+        db.send_create_signal(u'forums', ['Forum'])
+
+
+    def backwards(self, orm):
+        # Deleting model 'Forum'
+        db.delete_table(u'forums_forum')
+
+
+    models = {
+        u'forums.forum': {
+            'Meta': {'object_name': 'Forum'},
+            'archive_pruned_in': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'pruned_archive'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['forums.Forum']"}),
+            'css_class': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'description_preparsed': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            u'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            u'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'parent': ('mptt.fields.TreeForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': u"orm['forums.Forum']"}),
+            'posts': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+            'posts_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+            'prune_replied_after': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+            'prune_started_after': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+            'redirect_url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'redirects_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+            u'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'role': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'}),
+            'special_role': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'threads': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+            'threads_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+            u'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+        }
+    }
+
+    complete_apps = ['forums']

+ 0 - 0
misago/forums/migrations/__init__.py


+ 36 - 0
misago/forums/models.py

@@ -0,0 +1,36 @@
+from django.db import models
+from mptt.managers import TreeManager
+from mptt.models import MPTTModel, TreeForeignKey
+
+
+class ForumManager(TreeManager):
+    pass
+
+
+class Forum(MPTTModel):
+    parent = TreeForeignKey(
+        'self', null=True, blank=True, related_name='children')
+    special_role = models.CharField(max_length=255, null=True, blank=True)
+    role = models.CharField(max_length=255, null=True, blank=True)
+    name = models.CharField(max_length=255)
+    slug = models.SlugField(max_length=255)
+    description = models.TextField(null=True, blank=True)
+    description_preparsed = models.TextField(null=True, blank=True)
+    is_closed = models.BooleanField(default=False)
+    redirect_url = models.CharField(max_length=255, null=True, blank=True)
+    redirects_count = models.PositiveIntegerField(default=0)
+    threads = models.PositiveIntegerField(default=0)
+    threads_count = models.PositiveIntegerField(default=0)
+    posts = models.PositiveIntegerField(default=0)
+    posts_count = models.PositiveIntegerField(default=0)
+    prune_started_after = models.PositiveIntegerField(default=0)
+    prune_replied_after = models.PositiveIntegerField(default=0)
+    archive_pruned_in = models.ForeignKey(
+        'self',
+        related_name='pruned_archive',
+        null=True,
+        blank=True,
+        on_delete=models.SET_NULL)
+    css_class = models.CharField(max_length=255, null=True, blank=True)
+
+    objects = ForumManager()

+ 1 - 0
misago/project_template/requirements.txt

@@ -1,6 +1,7 @@
 django==1.6.1
 django-debug-toolbar==1.0.1
 django-crispy-forms==1.4.0
+django-mptt=0.6.1
 django-pipeline==1.3.20
 fake-factory
 south==0.8.4