From 5b561a7ebb1389ce26ba63cb59686b6918d717f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B0=D0=B7=D0=B0=D1=80=20=D0=9A=D0=BE=D1=82=D1=8E?= =?UTF-8?q?=D0=BA?= Date: Wed, 6 May 2015 02:15:42 +0300 Subject: [PATCH] Task 160 --- article/admin.py | 1 + article/forms.py | 7 ++- article/models.py | 2 +- exposition/models.py | 6 +-- service/order_forms.py | 4 +- service/views.py | 12 ++++- templates/admin/article/blog_form.html | 23 +++++++++ templates/client/article/article.html | 5 +- templates/client/article/news.html | 5 +- templates/client/base_catalog.html | 2 +- .../exposition/exposition_object.html | 2 +- templates/client/service/translator.html | 2 + theme/management/commands/tag_translate.py | 48 ++++--------------- 13 files changed, 66 insertions(+), 53 deletions(-) diff --git a/article/admin.py b/article/admin.py index 62f22d21..f961d887 100644 --- a/article/admin.py +++ b/article/admin.py @@ -157,6 +157,7 @@ class BlogView(FormView): data = {} data['theme'] = [item.id for item in article.theme.all()] data['exposition'] = article.exposition + data['publish_date'] = article.publish_date data['conference'] = article.conference a = ','.join(['%s:%s'%(item.id, item.name) for item in article.tag.all()]) diff --git a/article/forms.py b/article/forms.py index 0f7c8537..5c44439d 100644 --- a/article/forms.py +++ b/article/forms.py @@ -21,6 +21,7 @@ class BlogForm(forms.Form): type = Article.blog theme = forms.ModelMultipleChoiceField(label='Тематики', queryset=Theme.objects.all(), required=False, widget=forms.SelectMultiple(attrs={'style':'width: 550px'})) + publish_date = forms.DateField(label=u'Дата публикации', input_formats=['%Y-%m-%d', '%d.%m.%Y'], required=False) tag = forms.CharField(label=u'Теги', widget=forms.HiddenInput(), required=False) logo = forms.ImageField(label=u'Лого', required=False) def __init__(self, *args, **kwargs): @@ -51,10 +52,12 @@ class BlogForm(forms.Form): #create new Article object or get exists if not article: article = Article() + article.author = author - article.author = author article.type = self.type - article.logo = data['logo'] + if data['logo']: + article.logo = data['logo'] + article.publish_date = data['publish_date'] # fill translated fields and save object fill_with_signal(Article, article, data) # fill manytomany fields diff --git a/article/models.py b/article/models.py index 8cdf6833..9844340e 100644 --- a/article/models.py +++ b/article/models.py @@ -106,7 +106,7 @@ class Article(TranslatableModel): "set a custom description."), default=False) # published = models. - created = models.DateTimeField() + created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True) #translated fields diff --git a/exposition/models.py b/exposition/models.py index 4c38ceed..09999242 100644 --- a/exposition/models.py +++ b/exposition/models.py @@ -365,9 +365,9 @@ def logo_name(instance, filename): class Paid(models.Model): expo = models.OneToOneField(Exposition) org_logo = models.ImageField(upload_to=logo_name, blank=True, max_length=255) - oficial_link = models.ForeignKey('banners.Redirect', null=True, blank=True) - participation_link = models.ForeignKey('banners.Redirect', null=True, blank=True) - tickets_link = models.ForeignKey('banners.Redirect', null=True, blank=True) + oficial_link = models.ForeignKey('banners.Redirect', null=True, blank=True, related_name='expo_oficial') + participation_link = models.ForeignKey('banners.Redirect', null=True, blank=True, related_name='expo_participation') + tickets_link = models.ForeignKey('banners.Redirect', null=True, blank=True, related_name='expo_tickets') pre_save.connect(pre_save_handler, sender=Exposition) diff --git a/service/order_forms.py b/service/order_forms.py index f1ecaf4c..e3facc7f 100644 --- a/service/order_forms.py +++ b/service/order_forms.py @@ -131,8 +131,8 @@ LANGS = [(_(u'Русский'), _(u'Русский'))] from theme.models import Theme class TranslationForm(AbstractOrderForm): - languages = forms.CharField(required=False) - themes = forms.CharField(required=False) + languages = forms.CharField(required=False, widget=forms.TextInput(attrs={'placeholder': _(u'Знание языков')})) + themes = forms.CharField(required=False, widget=forms.TextInput(attrs={'placeholder': _(u'Тематика')})) fr = forms.DateField(input_formats=settings.CLIENT_DATE_FORMAT, widget=forms.DateInput(attrs={'class': 'date dateFrom', 'placeholder': _(u'дд.мм.гггг')})) to = forms.DateField(input_formats=settings.CLIENT_DATE_FORMAT, diff --git a/service/views.py b/service/views.py index e7c6c945..67f2c0ac 100644 --- a/service/views.py +++ b/service/views.py @@ -8,6 +8,7 @@ from django.shortcuts import get_object_or_404 from django.http import Http404 import json from django.http import HttpResponseRedirect, HttpResponse +from meta.views import MetadataMixin #from functions.search_forms import CompanySearchForm from order_forms import TranslationForm, CatalogForm, VisitForm, RemoteForm, ParticipationForm, TicketsForm,\ @@ -17,7 +18,10 @@ from order_forms import TranslationForm, CatalogForm, VisitForm, RemoteForm, Par order_forms = {'translator': TranslationForm, 'catalog': CatalogForm, 'participation': ParticipationForm, 'remote': RemoteForm, 'tickets': TicketsForm, 'visit': VisitForm, 'buildstand': BuildStandForm} -class ServiceView(FormView): +meta = {'translator': 80, 'participation': 85, + 'remote': 84, 'tickets': 81, 'visit': 82} + +class ServiceView(MetadataMixin, FormView): success_url = '/service/thanks/' def dispatch(self, request, *args, **kwargs): @@ -45,6 +49,12 @@ class ServiceView(FormView): #messages.success(self.request, _(u'Ваш запрос был успешно отправлен')) return HttpResponseRedirect(self.success_url) + def get_context_data(self, **kwargs): + url = self.kwargs.get('url') + meta_id = meta.get(url) + kwargs.update({'meta_id': meta_id}) + return super(ServiceView, self).get_context_data(**kwargs) + def advertise(request): diff --git a/templates/admin/article/blog_form.html b/templates/admin/article/blog_form.html index 5b221c9f..dd94d948 100644 --- a/templates/admin/article/blog_form.html +++ b/templates/admin/article/blog_form.html @@ -13,6 +13,21 @@ + + + + + {% endblock %} {% block body %} @@ -29,6 +44,14 @@ {# main_title #} {% include 'admin/forms/multilang.html' with field='main_title' form=form languages=languages %} +
+ +
+ {{ form.publish_date }} + {{ form.publish_date.errors }} +
+
+ {# theme #}
diff --git a/templates/client/article/article.html b/templates/client/article/article.html index a83283ec..11b30bf7 100644 --- a/templates/client/article/article.html +++ b/templates/client/article/article.html @@ -19,7 +19,10 @@ {% include 'client/includes/article/article_logo.html' with obj=object %}

{{ object.main_title }}

- {{ object.created|date:"d E Y" }}{{ object.author.get_full_name }} + {{ object.publish_date|date:"d E Y" }}{{ object.author.get_full_name }} + {% if request.user.is_admin %} + {% trans 'изменить' %} + {% endif %}

 


{{ object.description|safe }} diff --git a/templates/client/article/news.html b/templates/client/article/news.html index b03ddf3f..8c6e31fb 100644 --- a/templates/client/article/news.html +++ b/templates/client/article/news.html @@ -20,7 +20,10 @@ {% include 'includes/article/article_logo.html' with obj=object %}

{{ object.main_title }}

- {{ object.created|date:"d E Y" }}{% if object.get_event %}{{ object.get_event.name }}{% endif %} + {{ object.published|date:"d E Y" }}{% if object.get_event %}{{ object.get_event.name }}{% endif %} + {% if request.user.is_admin %} + {% trans 'изменить' %} + {% endif %}
{{ object.description|safe }} diff --git a/templates/client/base_catalog.html b/templates/client/base_catalog.html index 668026b6..1f04cabc 100644 --- a/templates/client/base_catalog.html +++ b/templates/client/base_catalog.html @@ -69,7 +69,7 @@ {% endwith %} {% block under_search_baner %}
- +
{% endblock %} diff --git a/templates/client/includes/exposition/exposition_object.html b/templates/client/includes/exposition/exposition_object.html index 1fe3e432..4ec83e81 100644 --- a/templates/client/includes/exposition/exposition_object.html +++ b/templates/client/includes/exposition/exposition_object.html @@ -78,7 +78,7 @@ {% endwith %}
{% if request.user.is_admin %} - {% trans 'изменить' %} + {% trans 'изменить' %} {% endif %}
{% trans 'Найти отель' %}
diff --git a/templates/client/service/translator.html b/templates/client/service/translator.html index 45955a13..e1914410 100644 --- a/templates/client/service/translator.html +++ b/templates/client/service/translator.html @@ -62,11 +62,13 @@
+ {{ form.languages }}
+ {{ form.themes }}
diff --git a/theme/management/commands/tag_translate.py b/theme/management/commands/tag_translate.py index f99b42d3..d803c833 100644 --- a/theme/management/commands/tag_translate.py +++ b/theme/management/commands/tag_translate.py @@ -4,55 +4,23 @@ import xlrd, xlwt from django.conf import settings from import_xls.excel_settings import import_settings +INFLECT_FILE = settings.MEDIA_ROOT+'/import/themes_inflect.xls' + class Command(BaseCommand): def handle(self, *args, **options): - f = open(settings.MEDIA_ROOT+'/import/tags2.xls', 'r') + f = open(INFLECT_FILE, 'r') book = xlrd.open_workbook(file_contents=f.read()) sheet = book.sheet_by_index(0) row_list = [sheet.row_values(row_number) for row_number in range(sheet.nrows)] # all field names in excel file (must be in second row) field_names = [name for name in row_list[1]] - for row_number, row in enumerate(row_list): - # go through all rows in file - if row_number > 1: - # first two fields are verbose name and name - if row[0] != '': - # in first column ids - try: - object = Tag.objects.language('en').get(id=int(row[0])) - except: - continue - for col_number, cell in enumerate(row): - # go through row cells - # field name current cell - field_name = field_names[col_number] - setting = import_settings.get(field_name) - if setting is not None: - # if setting exist for this field - func = setting.get('func') - if func is not None: - extra_value = setting.get('extra_values') - if extra_value is not None: - # if setting has extra value then - # it is some field like city, theme, tag - # that has relation and can be created - # in function we add language(need for relation fields) - # and extra value from object (like for city need country) - value = func(cell, 'en', getattr(object, extra_value)) - else: - value = func(cell) - if field_name != 'theme': - setattr(object, field_name, value) - else: - setattr(object, field_name, value[0]) - print('pre save %s'%str(object)) - try: - object.save() - except: - pass - print('post save %s'%str(object)) + for row_number, row in enumerate(row_list[2:]): + id = int(row[0]) + a = row[3] + print a.encode('utf8') + Theme.objects.filter(id=id).update(inflect=a) \ No newline at end of file