diff --git a/categories/admin.py b/categories/admin.py index 460974e..2a4512a 100644 --- a/categories/admin.py +++ b/categories/admin.py @@ -36,6 +36,12 @@ class CategoryAdminForm(forms.ModelForm): self.cleaned_data['slug'] = slugify(self.cleaned_data['name']) return self.cleaned_data['slug'] + def clean_alternate_title(self): + if self.instance is None or not self.cleaned_data['alternate_title']: + return self.cleaned_data['name'] + else: + return self.cleaned_data['alternate_title'] + def clean(self): super(CategoryAdminForm, self).clean() @@ -65,6 +71,19 @@ class CategoryAdmin(TreeEditor, admin.ModelAdmin): list_display = ('__unicode__',) search_fields = (('name',)) prepopulated_fields = {'slug': ('name',)} + fieldsets = ( + (None, { + 'fields': ('parent', 'name') + }), + ('Meta Data', { + 'fields': ('alternate_title', 'description', 'meta_keywords', 'meta_extra'), + 'classes': ('collapse',), + }), + ('Advanced', { + 'fields': ('order', 'slug'), + 'classes': ('collapse',), + }), + ) admin.site.register(Category, CategoryAdmin) diff --git a/categories/migration/2add_metadata.sql b/categories/migration/2add_metadata.sql new file mode 100644 index 0000000..c677794 --- /dev/null +++ b/categories/migration/2add_metadata.sql @@ -0,0 +1,6 @@ +BEGIN; +ALTER TABLE "categories_category" ADD COLUMN "alternate_title" varchar(100); +ALTER TABLE "categories_category" ADD COLUMN "meta_keywords" varchar(255); +ALTER TABLE "categories_category" ADD COLUMN "meta_extra" text; +ALTER TABLE "categories_category" ALTER COLUMN "description" TYPE text; +COMMIT; diff --git a/categories/migration/2drop_metadata.sql b/categories/migration/2drop_metadata.sql new file mode 100644 index 0000000..5a4c7b0 --- /dev/null +++ b/categories/migration/2drop_metadata.sql @@ -0,0 +1,6 @@ +BEGIN; +ALTER TABLE "categories_category" DROP COLUMN "alternate_title" varchar(100); +ALTER TABLE "categories_category" DROP COLUMN "meta_keywords" varchar(255); +ALTER TABLE "categories_category" DROP COLUMN "meta_extra" text; +ALTER TABLE "categories_category" ALTER COLUMN "description" TYPE varchar(255); +COMMIT; diff --git a/categories/models.py b/categories/models.py index fba6a6d..729886b 100644 --- a/categories/models.py +++ b/categories/models.py @@ -13,9 +13,25 @@ class Category(models.Model): help_text="Leave this blank for an Category Tree", verbose_name='Parent') name = models.CharField(max_length=100) - description = models.CharField(blank=True, null=True, max_length=255) order = models.IntegerField(blank=True, null=True) slug = models.SlugField() + alternate_title = models.CharField( + blank=True, + default="", + max_length=100, + help_text="An alternative title to use on pages with this category." + ) + description = models.TextField(blank=True, null=True) + meta_keywords = models.CharField( + blank=True, + default="", + max_length=255, + help_text="Comma-separated keywords for search engines.") + meta_extra = models.TextField( + blank=True, + default="", + help_text="(Advanced) Any additional HTML to be placed verbatim in the <head>") + def get_absolute_url(self): """Return a path"""