From 8f8a686c3bb0c0227463be591744febcb0ecde5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felipe=20Mart=C3=ADn?= Date: Mon, 13 Apr 2015 13:33:40 +0000 Subject: [PATCH] Added new models and base templates --- shelfzilla/apps/faq/admin.py | 12 ++--- .../apps/faq/migrations/0001_initial.py | 17 +++++-- .../0002_translatedquestion_language.py | 21 -------- shelfzilla/apps/faq/models.py | 49 +++++++++++++++---- shelfzilla/apps/faq/urls.py | 12 +++++ shelfzilla/apps/faq/views.py | 27 +++++++++- shelfzilla/settings/base.py | 5 ++ .../themes/bootflat/templates/_layout.html | 5 ++ .../themes/bootflat/templates/faq/layout.html | 1 + .../themes/bootflat/templates/faq/list.html | 20 ++++++++ shelfzilla/urls.py | 1 + 11 files changed, 127 insertions(+), 43 deletions(-) delete mode 100644 shelfzilla/apps/faq/migrations/0002_translatedquestion_language.py create mode 100644 shelfzilla/apps/faq/urls.py create mode 100644 shelfzilla/themes/bootflat/templates/faq/layout.html create mode 100644 shelfzilla/themes/bootflat/templates/faq/list.html diff --git a/shelfzilla/apps/faq/admin.py b/shelfzilla/apps/faq/admin.py index 0fb8403..07b08be 100644 --- a/shelfzilla/apps/faq/admin.py +++ b/shelfzilla/apps/faq/admin.py @@ -4,14 +4,14 @@ from django.contrib import admin # app -from .models import Question, TranslatedQuestion +from .models import QuestionAnswerCategory, QuestionAnswer -class TranslatedQuestionInline(admin.TabularInline): - model = TranslatedQuestion +class QuestionAnswerInline(admin.TabularInline): + model = QuestionAnswer -class QuestionAdmin(admin.ModelAdmin): - inlines = (TranslatedQuestionInline, ) +class QuestionAnswerCategoryAdmin(admin.ModelAdmin): + inlines = (QuestionAnswerInline, ) -admin.site.register(Question, QuestionAdmin) +admin.site.register(QuestionAnswerCategory, QuestionAnswerCategoryAdmin) diff --git a/shelfzilla/apps/faq/migrations/0001_initial.py b/shelfzilla/apps/faq/migrations/0001_initial.py index 5b6d588..707a2c0 100644 --- a/shelfzilla/apps/faq/migrations/0001_initial.py +++ b/shelfzilla/apps/faq/migrations/0001_initial.py @@ -11,24 +11,31 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name='Question', + name='QuestionAnswer', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('ord', models.PositiveIntegerField(default=1)), + ('title_es', models.CharField(max_length=256)), + ('answer_es', models.TextField()), ], options={ }, bases=(models.Model,), ), migrations.CreateModel( - name='TranslatedQuestion', + name='QuestionAnswerCategory', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('title', models.CharField(max_length=256)), - ('answer', models.TextField()), - ('question', models.ForeignKey(to='faq.Question')), + ('name_es', models.CharField(max_length=32)), ], options={ }, bases=(models.Model,), ), + migrations.AddField( + model_name='questionanswer', + name='category', + field=models.ForeignKey(to='faq.QuestionAnswerCategory'), + preserve_default=True, + ), ] diff --git a/shelfzilla/apps/faq/migrations/0002_translatedquestion_language.py b/shelfzilla/apps/faq/migrations/0002_translatedquestion_language.py deleted file mode 100644 index 180a220..0000000 --- a/shelfzilla/apps/faq/migrations/0002_translatedquestion_language.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('manga', '0001_initial'), - ('faq', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='translatedquestion', - name='language', - field=models.ForeignKey(default=1, to='manga.Language'), - preserve_default=False, - ), - ] diff --git a/shelfzilla/apps/faq/models.py b/shelfzilla/apps/faq/models.py index f528047..6179958 100644 --- a/shelfzilla/apps/faq/models.py +++ b/shelfzilla/apps/faq/models.py @@ -1,16 +1,47 @@ +# coding: utf-8 + +# django from django.db import models +from django.utils.translation import get_language, ugettext_lazy as _ + + +class QuestionAnswerCategory(models.Model): + name_es = models.CharField(max_length=32) + + class Meta: + ordering = ('name_es', ) + verbose_name = _('Category') + verbose_name_plural = _('Categories') -# Create your models here. -class Question(models.Model): def __unicode__(self): - return self.translations.get(language__code='es').title + return self.name + + @property + def name(self): + return getattr(self, u'name_{}'.format(get_language()), u'') - -class TranslatedQuestion(models.Model): - question = models.ForeignKey(Question, related_name='translations') - language = models.ForeignKey('manga.Language') - title = models.CharField(max_length=256) - answer = models.TextField() + +class QuestionAnswer(models.Model): + category = models.ForeignKey(QuestionAnswerCategory, + related_name='questions') + ord = models.PositiveIntegerField(default=1) + + # Spanish + title_es = models.CharField(max_length=256) + answer_es = models.TextField() + + class Meta: + ordering = ('ord', ) + verbose_name = _('Question') + verbose_name_plural = _('Questions') def __unicode__(self): return self.title + + @property + def title(self): + return getattr(self, u'title_{}'.format(get_language()), u'') + + @property + def answer(self): + return getattr(self, u'answer_{}'.format(get_language()), u'') diff --git a/shelfzilla/apps/faq/urls.py b/shelfzilla/apps/faq/urls.py new file mode 100644 index 0000000..8fa8d0a --- /dev/null +++ b/shelfzilla/apps/faq/urls.py @@ -0,0 +1,12 @@ +# coding: utf-8 + +# django +from django.conf.urls import patterns, url + +# app +from .views import FaqListView + +urlpatterns = patterns( + '', + url(r'^$', FaqListView.as_view(), name='faq.list'), +) diff --git a/shelfzilla/apps/faq/views.py b/shelfzilla/apps/faq/views.py index 91ea44a..0f30352 100644 --- a/shelfzilla/apps/faq/views.py +++ b/shelfzilla/apps/faq/views.py @@ -1,3 +1,26 @@ -from django.shortcuts import render +# coding: utf-8 -# Create your views here. +# django +from django.views.generic import View +from django.template import RequestContext +from django.shortcuts import render_to_response +from django.db.models import Count +from django.contrib.auth import get_user_model + +# shelfzilla.faq +from .models import QuestionAnswerCategory + + +class FaqListView(View): + template = 'faq/list.html' + + def get(self, request): + data = { + 'categories': QuestionAnswerCategory.objects.all(), + 'navigation': { + 'section': 'faqs', + }, + } + + ctx = RequestContext(request, data) + return render_to_response(self.template, context_instance=ctx) diff --git a/shelfzilla/settings/base.py b/shelfzilla/settings/base.py index 2613503..b4a521c 100644 --- a/shelfzilla/settings/base.py +++ b/shelfzilla/settings/base.py @@ -281,6 +281,11 @@ SUIT_CONFIG = { 'label': 'Manga', 'icon': 'icon-book', }, + { + 'app': 'faq', + 'label': 'FAQs', + 'icon': 'icon-book', + }, { 'label': 'Files', 'icon': 'icon-file', diff --git a/shelfzilla/themes/bootflat/templates/_layout.html b/shelfzilla/themes/bootflat/templates/_layout.html index 6680bb7..81a0414 100644 --- a/shelfzilla/themes/bootflat/templates/_layout.html +++ b/shelfzilla/themes/bootflat/templates/_layout.html @@ -41,6 +41,11 @@
  • {% trans "Publishers" %}
  • +