diff --git a/apps/bootstrap/literals.py b/apps/bootstrap/literals.py index 7362290c25..8c0ca8fe61 100644 --- a/apps/bootstrap/literals.py +++ b/apps/bootstrap/literals.py @@ -71,5 +71,6 @@ FIXTURE_METADATA_EDITED = 'edited' FIXTURE_METADATA_MAYAN_VERSION = 'mayan_edms_version' FIXTURE_METADATA_FORMAT = 'format' FIXTURE_METADATA_NAME = 'name' +FIXTURE_METADATA_SLUG = 'slug' FIXTURE_METADATA_DESCRIPTION = 'description' BOOTSTRAP_EXTENSION = 'txt' diff --git a/apps/bootstrap/migrations/0003_auto__add_field_bootstrapsetup_slug.py b/apps/bootstrap/migrations/0003_auto__add_field_bootstrapsetup_slug.py new file mode 100644 index 0000000000..9ceafa9412 --- /dev/null +++ b/apps/bootstrap/migrations/0003_auto__add_field_bootstrapsetup_slug.py @@ -0,0 +1,35 @@ +# -*- 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): + # Adding field 'BootstrapSetup.slug' + db.add_column('bootstrap_bootstrapsetup', 'slug', + self.gf('django.db.models.fields.SlugField')(default='', unique=True, max_length=128, blank=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'BootstrapSetup.slug' + db.delete_column('bootstrap_bootstrapsetup', 'slug') + + + models = { + 'bootstrap.bootstrapsetup': { + 'Meta': {'ordering': "['name']", 'object_name': 'BootstrapSetup'}, + 'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 10, 16, 0, 0)'}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'fixture': ('django.db.models.fields.TextField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'blank': 'True'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '16'}) + } + } + + complete_apps = ['bootstrap'] \ No newline at end of file diff --git a/apps/bootstrap/models.py b/apps/bootstrap/models.py index 4d6104e704..3954a05527 100644 --- a/apps/bootstrap/models.py +++ b/apps/bootstrap/models.py @@ -5,6 +5,8 @@ import tempfile import re import datetime +import slugify + try: from cStringIO import StringIO except ImportError: @@ -26,6 +28,7 @@ class BootstrapSetup(models.Model): Model to store the fixture for a pre configured setup. """ name = models.CharField(max_length=128, verbose_name=_(u'name'), unique=True) + slug = models.SlugField(max_length=128, verbose_name=_(u'slug'), unique=True, blank=True) description = models.TextField(verbose_name=_(u'description'), blank=True) fixture = models.TextField(verbose_name=_(u'fixture'), help_text=_(u'These are the actual database structure creation instructions.')) type = models.CharField(max_length=16, verbose_name=_(u'type'), choices=FIXTURE_TYPES_CHOICES) @@ -92,6 +95,8 @@ class BootstrapSetup(models.Model): self.get_metadata_string(), self.cleaned_fixture ) + if not self.slug: + self.slug = slugify.slugify(self.name) return super(BootstrapSetup, self).save(*args, **kwargs) class Meta: diff --git a/apps/bootstrap/post_init.py b/apps/bootstrap/post_init.py index d682b29eab..e3e0d829a2 100644 --- a/apps/bootstrap/post_init.py +++ b/apps/bootstrap/post_init.py @@ -13,7 +13,7 @@ from .models import BootstrapSetup from .classes import FixtureMetadata from .literals import (FIXTURE_METADATA_CREATED, FIXTURE_METADATA_EDITED, FIXTURE_METADATA_MAYAN_VERSION, FIXTURE_METADATA_FORMAT, FIXTURE_METADATA_NAME, - FIXTURE_METADATA_DESCRIPTION, DATETIME_STRING_FORMAT) + FIXTURE_METADATA_DESCRIPTION, DATETIME_STRING_FORMAT, FIXTURE_METADATA_SLUG) register_links([BootstrapSetup], [link_bootstrap_setup_view, link_bootstrap_setup_edit, link_bootstrap_setup_delete, link_bootstrap_setup_execute, link_bootstrap_setup_export]) register_links([BootstrapSetup], [link_bootstrap_setup_list, link_bootstrap_setup_create, link_bootstrap_setup_dump, link_bootstrap_setup_import], menu_name='secondary_menu') @@ -24,4 +24,5 @@ FixtureMetadata(FIXTURE_METADATA_EDITED, generate_function=lambda fixture_instan FixtureMetadata(FIXTURE_METADATA_MAYAN_VERSION, generate_function=lambda fixture_instance: __version__) FixtureMetadata(FIXTURE_METADATA_FORMAT, generate_function=lambda fixture_instance: fixture_instance.type, property_name='type') FixtureMetadata(FIXTURE_METADATA_NAME, generate_function=lambda fixture_instance: fixture_instance.name, property_name='name') +FixtureMetadata(FIXTURE_METADATA_SLUG, generate_function=lambda fixture_instance: fixture_instance.slug, property_name='slug') FixtureMetadata(FIXTURE_METADATA_DESCRIPTION, generate_function=lambda fixture_instance: fixture_instance.description, property_name='description') diff --git a/requirements/production.txt b/requirements/production.txt index 91e52394f4..b8b71e5268 100644 --- a/requirements/production.txt +++ b/requirements/production.txt @@ -21,3 +21,4 @@ pbs==0.105 psutil==0.5.1 GitPython==0.3.2.RC1 PyYAML==3.10 +unicode-slugify==0.1