diff --git a/README b/README index e69de29..b90fd56 100644 --- a/README +++ b/README @@ -0,0 +1,2 @@ +Dependencies: + - django-hvad: https://github.com/KristianOellegaard/django-hvad diff --git a/portfolio/admin.py b/portfolio/admin.py index e143ecd..a351a02 100644 --- a/portfolio/admin.py +++ b/portfolio/admin.py @@ -1,8 +1,9 @@ from django.contrib import admin from django.db import models from django.contrib import admin +from nani.admin import TranslatableAdmin -from models import Service, Client, Proyect, Image, Country +from models import Service, Client, Project, Image, Country from cms.plugins.text.widgets.wymeditor_widget import WYMEditor from sorl.thumbnail.admin import AdminInlineImageMixin, AdminImageWidget from django.conf.urls.defaults import patterns @@ -17,13 +18,13 @@ def formfield_for_dbfield(self,db_field, **kwargs): return super(ImageInline, self).formfield_for_dbfield(db_field, **kwargs) -class ProyectAdmin(admin.ModelAdmin): +class ProjectAdmin(TranslatableAdmin): inlines = [ImageInline] formfield_overrides = { # models.TextField : {'widget': WYMEditor}, } - list_display = ("name", "sequence",) - list_editable = ( "sequence", ) + #list_display = ("name", "sequence",) + #list_editable = ( "sequence", ) search_fields = ['name'] class Media: js = ( @@ -31,9 +32,17 @@ class Media: "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js", "js/order.js") +class ServiceAdmin(TranslatableAdmin): + pass -admin.site.register(Service) -admin.site.register(Client) -admin.site.register(Country) -admin.site.register(Proyect,ProyectAdmin) +class ClientAdmin(TranslatableAdmin): + pass + +class CountryAdmin(TranslatableAdmin): + pass + +admin.site.register(Service, ServiceAdmin) +admin.site.register(Client, ClientAdmin) +admin.site.register(Country, CountryAdmin) +admin.site.register(Project, ProjectAdmin) diff --git a/portfolio/cms_plugins.py b/portfolio/cms_plugins.py index 7be1872..7275ebc 100644 --- a/portfolio/cms_plugins.py +++ b/portfolio/cms_plugins.py @@ -8,8 +8,9 @@ class PortfolioPluginBase(CMSPluginBase): model = PortfolioPlugin render_template = 'portfolio/portfolio.html' name = _("Portafolio") + def render(self, context, instance, placeholder): - context.update({'instance':instance,'placeholder':placeholder}) + context.update({'instance':instance, 'placeholder':placeholder}) return context plugin_pool.register_plugin(PortfolioPluginBase) diff --git a/portfolio/locale/es/LC_MESSAGES/django.mo b/portfolio/locale/es/LC_MESSAGES/django.mo new file mode 100644 index 0000000..45944ad Binary files /dev/null and b/portfolio/locale/es/LC_MESSAGES/django.mo differ diff --git a/portfolio/locale/es/LC_MESSAGES/django.po b/portfolio/locale/es/LC_MESSAGES/django.po new file mode 100644 index 0000000..b0f547a --- /dev/null +++ b/portfolio/locale/es/LC_MESSAGES/django.po @@ -0,0 +1,83 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-01-03 18:47+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: cms_app.py:6 cms_plugins.py:10 +msgid "Portafolio" +msgstr "" + +#: models.py:9 models.py:16 models.py:23 models.py:40 +msgid "name" +msgstr "nombre" + +#: models.py:29 +msgid "service" +msgstr "servicio" + +#: models.py:30 +msgid "country" +msgstr "país" + +#: models.py:31 +msgid "client" +msgstr "cliente" + +#: models.py:32 +msgid "main image" +msgstr "imágen principal" + +#: models.py:33 +msgid "url" +msgstr "url" + +#: models.py:34 +msgid "slug" +msgstr "slug" + +#: models.py:35 +msgid "twitter" +msgstr "twitter" + +#: models.py:36 +msgid "facebook like" +msgstr "me gusta - facebook" + +#: models.py:37 models.py:66 +msgid "sequence" +msgstr "secuencia" + +#: models.py:41 +msgid "short description" +msgstr "descripción corta" + +#: models.py:42 +msgid "long description" +msgstr "descripción larga" + +#: models.py:64 +msgid "image" +msgstr "imágen" + +#: models.py:65 +msgid "main" +msgstr "principal" + +#: models.py:67 +msgid "project" +msgstr "proyecto" diff --git a/portfolio/migrations/0001_initial.py b/portfolio/migrations/0001_initial.py deleted file mode 100644 index 31be419..0000000 --- a/portfolio/migrations/0001_initial.py +++ /dev/null @@ -1,164 +0,0 @@ -# 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 model 'Service' - db.create_table('portfolio_service', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('name', self.gf('django.db.models.fields.CharField')(max_length=100)), - )) - db.send_create_signal('portfolio', ['Service']) - - # Adding model 'Client' - db.create_table('portfolio_client', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('name', self.gf('django.db.models.fields.CharField')(max_length=100)), - )) - db.send_create_signal('portfolio', ['Client']) - - # Adding model 'Country' - db.create_table('portfolio_country', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('name', self.gf('django.db.models.fields.CharField')(max_length=100)), - )) - db.send_create_signal('portfolio', ['Country']) - - # Adding model 'Proyect' - db.create_table('portfolio_proyect', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('service', self.gf('django.db.models.fields.related.ForeignKey')(related_name='proyects', to=orm['portfolio.Service'])), - ('country', self.gf('django.db.models.fields.related.ForeignKey')(related_name='proyects', to=orm['portfolio.Country'])), - ('client', self.gf('django.db.models.fields.related.ForeignKey')(related_name='proyects', to=orm['portfolio.Client'])), - ('name', self.gf('django.db.models.fields.CharField')(max_length=100)), - ('description_short', self.gf('django.db.models.fields.TextField')()), - ('description_long', self.gf('django.db.models.fields.TextField')()), - ('url', self.gf('django.db.models.fields.URLField')(max_length=200, blank=True)), - ('slug', self.gf('django.db.models.fields.SlugField')(max_length=50, db_index=True)), - ('twitter', self.gf('django.db.models.fields.CharField')(max_length=20, null=True, blank=True)), - ('facebook_like', self.gf('django.db.models.fields.URLField')(max_length=200, null=True, blank=True)), - ('sequence', self.gf('django.db.models.fields.IntegerField')()), - )) - db.send_create_signal('portfolio', ['Proyect']) - - # Adding model 'Image' - db.create_table('portfolio_image', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('image', self.gf('django.db.models.fields.files.ImageField')(max_length=100)), - ('main', self.gf('django.db.models.fields.BooleanField')(default=False)), - ('sequence', self.gf('django.db.models.fields.IntegerField')()), - ('proyect', self.gf('django.db.models.fields.related.ForeignKey')(related_name='images', to=orm['portfolio.Proyect'])), - )) - db.send_create_signal('portfolio', ['Image']) - - # Adding model 'PortfolioPlugin' - db.create_table('cmsplugin_portfolioplugin', ( - ('cmsplugin_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['cms.CMSPlugin'], unique=True, primary_key=True)), - )) - db.send_create_signal('portfolio', ['PortfolioPlugin']) - - # Adding M2M table for field portfolio on 'PortfolioPlugin' - db.create_table('portfolio_portfolioplugin_portfolio', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('portfolioplugin', models.ForeignKey(orm['portfolio.portfolioplugin'], null=False)), - ('proyect', models.ForeignKey(orm['portfolio.proyect'], null=False)) - )) - db.create_unique('portfolio_portfolioplugin_portfolio', ['portfolioplugin_id', 'proyect_id']) - - - def backwards(self, orm): - - # Deleting model 'Service' - db.delete_table('portfolio_service') - - # Deleting model 'Client' - db.delete_table('portfolio_client') - - # Deleting model 'Country' - db.delete_table('portfolio_country') - - # Deleting model 'Proyect' - db.delete_table('portfolio_proyect') - - # Deleting model 'Image' - db.delete_table('portfolio_image') - - # Deleting model 'PortfolioPlugin' - db.delete_table('cmsplugin_portfolioplugin') - - # Removing M2M table for field portfolio on 'PortfolioPlugin' - db.delete_table('portfolio_portfolioplugin_portfolio') - - - models = { - 'cms.cmsplugin': { - 'Meta': {'object_name': 'CMSPlugin'}, - 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), - 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), - 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), - 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), - 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), - 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), - 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), - 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), - 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) - }, - 'cms.placeholder': { - 'Meta': {'object_name': 'Placeholder'}, - 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) - }, - 'portfolio.client': { - 'Meta': {'object_name': 'Client'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'portfolio.country': { - 'Meta': {'object_name': 'Country'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'portfolio.image': { - 'Meta': {'ordering': "('sequence',)", 'object_name': 'Image'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}), - 'main': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'proyect': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'images'", 'to': "orm['portfolio.Proyect']"}), - 'sequence': ('django.db.models.fields.IntegerField', [], {}) - }, - 'portfolio.portfolioplugin': { - 'Meta': {'object_name': 'PortfolioPlugin', 'db_table': "'cmsplugin_portfolioplugin'", '_ormbases': ['cms.CMSPlugin']}, - 'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), - 'portfolio': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['portfolio.Proyect']", 'symmetrical': 'False'}) - }, - 'portfolio.proyect': { - 'Meta': {'object_name': 'Proyect'}, - 'client': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'proyects'", 'to': "orm['portfolio.Client']"}), - 'country': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'proyects'", 'to': "orm['portfolio.Country']"}), - 'description_long': ('django.db.models.fields.TextField', [], {}), - 'description_short': ('django.db.models.fields.TextField', [], {}), - 'facebook_like': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'sequence': ('django.db.models.fields.IntegerField', [], {}), - 'service': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'proyects'", 'to': "orm['portfolio.Service']"}), - 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}), - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}), - 'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) - }, - 'portfolio.service': { - 'Meta': {'object_name': 'Service'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - } - } - - complete_apps = ['portfolio'] diff --git a/portfolio/migrations/0002_auto__add_field_proyect_main_image.py b/portfolio/migrations/0002_auto__add_field_proyect_main_image.py deleted file mode 100644 index c41436c..0000000 --- a/portfolio/migrations/0002_auto__add_field_proyect_main_image.py +++ /dev/null @@ -1,88 +0,0 @@ -# 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 'Proyect.main_image' - db.add_column('portfolio_proyect', 'main_image', self.gf('django.db.models.fields.files.ImageField')(default='', max_length=100), keep_default=False) - - - def backwards(self, orm): - - # Deleting field 'Proyect.main_image' - db.delete_column('portfolio_proyect', 'main_image') - - - models = { - 'cms.cmsplugin': { - 'Meta': {'object_name': 'CMSPlugin'}, - 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), - 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), - 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), - 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), - 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), - 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), - 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), - 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), - 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) - }, - 'cms.placeholder': { - 'Meta': {'object_name': 'Placeholder'}, - 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) - }, - 'portfolio.client': { - 'Meta': {'object_name': 'Client'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'portfolio.country': { - 'Meta': {'object_name': 'Country'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'portfolio.image': { - 'Meta': {'ordering': "('sequence',)", 'object_name': 'Image'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}), - 'main': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'proyect': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'images'", 'to': "orm['portfolio.Proyect']"}), - 'sequence': ('django.db.models.fields.IntegerField', [], {}) - }, - 'portfolio.portfolioplugin': { - 'Meta': {'object_name': 'PortfolioPlugin', 'db_table': "'cmsplugin_portfolioplugin'", '_ormbases': ['cms.CMSPlugin']}, - 'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), - 'portfolio': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['portfolio.Proyect']", 'symmetrical': 'False'}) - }, - 'portfolio.proyect': { - 'Meta': {'object_name': 'Proyect'}, - 'client': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'proyects'", 'to': "orm['portfolio.Client']"}), - 'country': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'proyects'", 'to': "orm['portfolio.Country']"}), - 'description_long': ('django.db.models.fields.TextField', [], {}), - 'description_short': ('django.db.models.fields.TextField', [], {}), - 'facebook_like': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'main_image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'sequence': ('django.db.models.fields.IntegerField', [], {}), - 'service': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'proyects'", 'to': "orm['portfolio.Service']"}), - 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}), - 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}), - 'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) - }, - 'portfolio.service': { - 'Meta': {'object_name': 'Service'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - } - } - - complete_apps = ['portfolio'] diff --git a/portfolio/migrations/__init__.py b/portfolio/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/portfolio/models.py b/portfolio/models.py index 4a223ef..627b8e2 100644 --- a/portfolio/models.py +++ b/portfolio/models.py @@ -1,41 +1,57 @@ from django.db import models from cms.models import CMSPlugin from django.core.exceptions import ValidationError +from django.utils.translation import ugettext_lazy as _ +from nani.models import TranslatableModel, TranslatedFields - -class Service(models.Model): - name = models.CharField(max_length=100) - +class Service(TranslatableModel): + translations = TranslatedFields( + name = models.CharField(_("name"), max_length=100) + ) def __unicode__(self): - return self.name -class Client(models.Model): - name = models.CharField(max_length= 100) + return self.lazy_translation_getter('name', 'Service: %s' % self.pk) +class Client(TranslatableModel): + translations = TranslatedFields( + name = models.CharField(_("name"), max_length=100) + ) + + # TODO: solve nani issue with related models + def is_project(self): + return Project.objects.untranslated().use_fallbacks().filter(client=self.id) or None + def __unicode__(self): - return self.name + return self.lazy_translation_getter('name', 'Client: %s' % self.pk) + -class Country(models.Model): - name = models.CharField(max_length = 100) +class Country(TranslatableModel): + translations = TranslatedFields( + name = models.CharField(_("name"), max_length=100) + ) def __unicode__(self): - return self.name + return self.lazy_translation_getter('name', 'Country: %s' % self.pk) -class Proyect(models.Model): - service = models.ForeignKey(Service, related_name="proyects") - country = models.ForeignKey(Country, related_name="proyects") - client = models.ForeignKey(Client, related_name ="proyects") - name = models.CharField(max_length= 100) - main_image = models.ImageField(upload_to= "uploaded_images") - description_short = models.TextField( help_text = u"las lineas nuevas son consideradas br tag") - description_long = models.TextField(help_text=u"las lineas nuevas son consideradas br tag ") - url = models.URLField(blank=True) - slug = models.SlugField() - twitter = models.CharField(max_length=20, help_text="twitt via ..", blank = True, null = True) - facebook_like = models.URLField( blank =True, null = True) - sequence = models.IntegerField() +class Project(TranslatableModel): + service = models.ForeignKey(Service, related_name="proyects", blank=True, null=True, verbose_name=_("service")) + country = models.ForeignKey(Country, related_name="proyects", blank=True, null=True, verbose_name=_("country")) + client = models.ForeignKey(Client, related_name ="proyects", verbose_name=_("client")) + main_image = models.ImageField(_("main image"), upload_to= "uploaded_images", blank=True, null=True) + url = models.URLField(_("url"), blank=True) + slug = models.SlugField(_("slug"), blank=True, null=True,) + twitter = models.CharField(_("twitter"), max_length=20, help_text="twitt via ..", blank=True, null=True) + facebook_like = models.URLField(_("facebook like"), blank=True, null=True) + sequence = models.IntegerField(_("sequence"), blank=True, null=True) + + translations = TranslatedFields( + name = models.CharField(_("name"), max_length=100, blank=True, null=True), + description_short = models.TextField(_("short description"), blank=True, null=True, help_text = u"las lineas nuevas son consideradas br tag"), + description_long = models.TextField(_("long description"), blank=True, null=True, help_text=u"las lineas nuevas son consideradas br tag "), + ) @models.permalink def get_absolute_url(self): - return ("portafolio-proyect", [self.slug]) + return ("portafolio-project", [self.slug]) + def get_url(self): if "http://" in self.url: st = self.url.split("http://")[1] @@ -47,18 +63,19 @@ def get_url(self): st = st[:-1] return st - def __unicode__(self): - return self.name + return self.client.name or self.lazy_translation_getter('name', 'Project: %s' % self.pk) + #return '' % self.id + class Image(models.Model): - image = models.ImageField(upload_to= "uploaded_images") - main = models.BooleanField(default =False) - sequence = models.IntegerField() - proyect = models.ForeignKey(Proyect, related_name="images") + image = models.ImageField(_("image"), upload_to= "uploaded_images") + main = models.BooleanField(_("main"), default=False) + sequence = models.IntegerField(_("sequence")) + project = models.ForeignKey(Project, related_name="images", verbose_name=_("project")) class Meta: ordering = ("sequence",) class PortfolioPlugin(CMSPlugin): - portfolio = models.ManyToManyField(Proyect) + portfolio = models.ManyToManyField(Project) diff --git a/portfolio/templates/portfolio/index.html b/portfolio/templates/portfolio/index.html index 0f20684..300b73a 100644 --- a/portfolio/templates/portfolio/index.html +++ b/portfolio/templates/portfolio/index.html @@ -1,15 +1,14 @@ {% load i18n cms_tags portfolio_menu thumbnail %} {% block menu_casos %} - {% portfolio_menu_client proyect %} + {% portfolio_menu_client project %} {% endblock %} -
-

{{ proyect.service.name }}

-

{{proyect.name}}

-

{{ proyect.country.name }}

+

{{ project.service.name }}

+

{{project.name}}

+

{{ project.country.name }}

- {{proyect.description_short|safe }} + {{project.description_short|safe }}

- {{proyect.description_long|safe }} + {{project.description_long|safe }}

- {{proyect.get_url}} + {{project.get_url}}

- {% if proyect.twitter%} - + {% if project.twitter%} + {% endif %}

- {%if proyect.facebook_like%} - + {%if project.facebook_like%} + {% endif %}
diff --git a/portfolio/templates/portfolio/menu.html b/portfolio/templates/portfolio/menu.html index 1571292..6999f1c 100644 --- a/portfolio/templates/portfolio/menu.html +++ b/portfolio/templates/portfolio/menu.html @@ -4,11 +4,11 @@