diff --git a/categories/migrations/0005_auto__add_field_category_alternate_url.py b/categories/migrations/0005_auto__add_field_category_alternate_url.py new file mode 100644 index 0000000..06cb713 --- /dev/null +++ b/categories/migrations/0005_auto__add_field_category_alternate_url.py @@ -0,0 +1,44 @@ +# encoding: 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): + + # Adding field 'Category.alternate_url' + db.add_column('categories_category', 'alternate_url', self.gf('django.db.models.fields.URLField')(default='', max_length=200, blank=True), keep_default=False) + + + def backwards(self, orm): + + # Deleting field 'Category.alternate_url' + db.delete_column('categories_category', 'alternate_url') + + + models = { + 'categories.category': { + 'Meta': {'ordering': "('tree_id', 'lft')", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Category'}, + 'alternate_title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '100', 'blank': 'True'}), + 'alternate_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'meta_extra': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'meta_keywords': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'order': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['categories.Category']"}), + 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}), + 'thumbnail': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'thumbnail_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'thumbnail_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) + } + } + + complete_apps = ['categories'] diff --git a/categories/models.py b/categories/models.py index 75a2cea..d14b901 100644 --- a/categories/models.py +++ b/categories/models.py @@ -34,8 +34,11 @@ class Category(MPTTModel): blank=True, default="", max_length=100, - help_text="An alternative title to use on pages with this category." - ) + help_text="An alternative title to use on pages with this category.") + alternate_url = models.URLField( + blank=True, + verify_exists=False, + help_text="An alternative URL to use instead of the one derived from the category hierarchy.") description = models.TextField(blank=True, null=True) meta_keywords = models.CharField( blank=True, @@ -53,6 +56,8 @@ class Category(MPTTModel): def get_absolute_url(self): """Return a path""" + if self.alternate_url: + return self.alternate_url prefix = reverse('categories_tree_list') ancestors = list(self.get_ancestors()) + [self,] return prefix + '/'.join([force_unicode(i.slug) for i in ancestors]) + '/'