diff --git a/article/admin.py b/article/admin.py index 62f22d21..94a892a3 100644 --- a/article/admin.py +++ b/article/admin.py @@ -156,8 +156,12 @@ class BlogView(FormView): article = self.obj data = {} data['theme'] = [item.id for item in article.theme.all()] - data['exposition'] = article.exposition - data['conference'] = article.conference + if article.exposition: + data['exposition'] = article.exposition.id + if article.conference: + data['conference'] = article.conference.id + + data['publish_date'] = article.publish_date a = ','.join(['%s:%s'%(item.id, item.name) for item in article.tag.all()]) data['tag'] = ','.join(['%s:%s'%(item.id, item.name) for item in article.tag.all()]) @@ -171,7 +175,12 @@ class BlogView(FormView): data['descriptions_%s' % code] = obj.descriptions form = form_class(data) #form.fields['tag'].widget.attrs['data-init-text'] = [item.name for item in article.tag.all()] - return form_class(data) + if article.exposition: + form.fields['exposition'].widget.attrs['data-init-text'] = article.exposition.name + if article.conference: + form.fields['conference'].widget.attrs['data-init-text'] = article.conference.name + + return form else: return form_class() diff --git a/article/forms.py b/article/forms.py index 0f7c8537..0093baa0 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 @@ -87,8 +90,11 @@ class BlogForm(forms.Form): class NewsForm(BlogForm): type = Article.news - exposition = forms.ModelChoiceField(label = u'Выставка', required=False, queryset=Exposition.objects.all()) - conference = forms.ModelChoiceField(label = u'Конференция', required=False, queryset=Conference.objects.all()) + exposition = forms.CharField(label=u'Выставка', widget=forms.HiddenInput(), required=False) + conference = forms.CharField(label=u'Конференция', widget=forms.HiddenInput(), required=False) + + #exposition = forms.ModelChoiceField(label = u'Выставка', required=False, queryset=Exposition.objects.all()) + #conference = forms.ModelChoiceField(label = u'Конференция', required=False, queryset=Conference.objects.all()) def save(self, author, article=None): article = super(NewsForm, self).save(author, article) @@ -99,6 +105,24 @@ class NewsForm(BlogForm): article.save() return article + def clean_exposition(self): + id = self.cleaned_data['exposition'] + if not id: + return None + try: + return Exposition.objects.get(id=id) + except Exposition.DoesNotExist: + return None + + def clean_conference(self): + id = self.cleaned_data['conference'] + if not id: + return None + try: + return Conference.objects.get(id=id) + except Conference.DoesNotExist: + return None + class ArticleForm(forms.Form): """ Create Article form for creating conference 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/banners/models.py b/banners/models.py index aa17c039..b9779288 100644 --- a/banners/models.py +++ b/banners/models.py @@ -10,4 +10,4 @@ class Redirect(models.Model): return self.redirect def get_object_url(self): - return '/redirect/reditect/%d/'%self.id + return '/redirect/redirect/%d/'%self.id diff --git a/conference/urls.py b/conference/urls.py index 29f29e3b..d7e88f96 100644 --- a/conference/urls.py +++ b/conference/urls.py @@ -2,7 +2,7 @@ from django.conf.urls import patterns, include, url from views import ConferenceDetail, ConferenceList, ConferenceByCity, ConferenceByCountry, ConferenceByTheme,\ ConferenceCountryCatalog, ConferenceCityCatalog, ConferenceTagCatalog, ConferenceThemeCatalog, ConferenceMembers,\ - ConferenceVisitors, ConferenceServiceView + ConferenceVisitors, ConferenceServiceView, ConferenceThankView from exposition.views import ExpositionSearchView urlpatterns = patterns('', @@ -53,6 +53,7 @@ urlpatterns = patterns('', url(r'conference/(?P.*)/visitors/$', ConferenceVisitors.as_view()), url(r'conference/(?P.*)/members/page/(?P\d+)/$', ConferenceMembers.as_view()), url(r'conference/(?P.*)/members/$', ConferenceMembers.as_view()), + url(r'^conference/(?P.*)/service/thanks/', ConferenceThankView.as_view()), url(r'conference/(?P.*)/service/(?P.*)/', ConferenceServiceView.as_view()), # conf list diff --git a/conference/views.py b/conference/views.py index 71ec8f9d..de034f2a 100644 --- a/conference/views.py +++ b/conference/views.py @@ -271,6 +271,12 @@ class ConferenceMembers(MetadataMixin, ListView): from service.models import Service from service.views import order_forms + +class ConferenceThankView(MetadataMixin, DetailView): + model = Conference + slug_field = 'url' + template_name = 'client/service/thank_u_page.html' + class ConferenceServiceView(FormMixin, DetailView): model = Conference slug_field = 'url' @@ -310,7 +316,7 @@ class ConferenceServiceView(FormMixin, DetailView): order.conference = self.object order.save() messages.success(self.request, _(u'Ваш запрос был успешно отправлен')) - return HttpResponseRedirect(self.success_url) + return HttpResponseRedirect(self.object.get_permanent_url()+'service/thanks/') def get_initial(self): """ 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/exposition/urls.py b/exposition/urls.py index 71816f65..4cb8b972 100644 --- a/exposition/urls.py +++ b/exposition/urls.py @@ -7,7 +7,7 @@ from views import ExpositionStatistic, ExpositionPrice,\ from django.views.decorators.cache import cache_page from views import ExpositionServiceView from views import ExpoCountryCatalog, ExpoCityCatalog, ExpoThemeCatalog, ExpoTagCatalog, ExpoList, ExpoDetail,\ - ExpoVisitors, ExpoMembers + ExpoVisitors, ExpoMembers, ExpositionThankView urlpatterns = patterns('', @@ -70,6 +70,7 @@ urlpatterns = patterns('', url(r'^expo/(?P.*)/visitors/$', ExpoVisitors.as_view(), {'meta_id':64}), url(r'^expo/(?P.*)/members/page/(?P\d+)/$', ExpoMembers.as_view(), {'meta_id':63}), url(r'^expo/(?P.*)/members/$', ExpoMembers.as_view(), {'meta_id':63}), + url(r'^expo/(?P.*)/service/thanks/', ExpositionThankView.as_view()), url(r'^expo/(?P.*)/service/(?P.*)/', ExpositionServiceView.as_view()), # expo list url(r'^expo/(?P\d+)/(?P.*)/page/(?P\d+)/$', ExpoList.as_view(), {'meta_id':4}), diff --git a/exposition/views.py b/exposition/views.py index ffa4f6a7..bd8f33c2 100644 --- a/exposition/views.py +++ b/exposition/views.py @@ -165,6 +165,12 @@ class ExpositionStatistic(MetadataMixin, DetailView): template_name = 'client/exposition/statistic.html' from django.views.generic.edit import FormMixin, ModelFormMixin + +class ExpositionThankView(MetadataMixin, DetailView): + model = Exposition + slug_field = 'url' + template_name = 'client/service/thank_u_page.html' + class ExpositionServiceView(MetadataMixin, FormMixin, DetailView): model = Exposition slug_field = 'url' @@ -209,8 +215,7 @@ class ExpositionServiceView(MetadataMixin, FormMixin, DetailView): order = form.save(commit=False) order.exposition = self.object order.save() - messages.success(self.request, _(u'Ваш запрос был успешно отправлен')) - return HttpResponseRedirect(self.success_url) + return HttpResponseRedirect(self.object.get_permanent_url()+'service/thanks/') def get_initial(self): """ diff --git a/service/admin_urls.py b/service/admin_urls.py index 46e0b347..682785fc 100644 --- a/service/admin_urls.py +++ b/service/admin_urls.py @@ -1,11 +1,20 @@ # -*- coding: utf-8 -*- from django.conf.urls import patterns, include, url +from views import CallBackListView, VisitListView, TranslationListView, AdvertisingListView, \ + ParticipationListView, RemoteListView,TicketsListView urlpatterns = patterns('service.admin', url(r'^add.*/$', 'service_add'), url(r'^delete/(?P.*)/$', 'service_delete'), url(r'^change/(?P.*)/$', 'service_change'), url(r'^all/$', 'service_all'), + url(r'order/callback/$', CallBackListView.as_view()), + url(r'order/visit/$', VisitListView.as_view()), + url(r'order/translation/$', TranslationListView.as_view()), + url(r'order/advertising/$', AdvertisingListView.as_view()), + url(r'order/participation/$', ParticipationListView.as_view()), + url(r'order/remote/$', RemoteListView.as_view()), + url(r'order/tickets/$', TicketsListView.as_view()), #ajax url(r'^get_city/$', 'get_city'), #url(r'^get_country/$', 'get_country'), 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/urls.py b/service/urls.py index 2508a156..ef77cb97 100644 --- a/service/urls.py +++ b/service/urls.py @@ -5,13 +5,6 @@ from views import ServiceView, CallBackListView, VisitListView, TranslationListV urlpatterns = patterns('', url(r'service/thanks/$', Thanks.as_view()), - url(r'service/order/callback/$', CallBackListView.as_view()), - url(r'service/order/visit/$', VisitListView.as_view()), - url(r'service/order/translation/$', TranslationListView.as_view()), - url(r'service/order/advertising/$', AdvertisingListView.as_view()), - url(r'service/order/participation/$', ParticipationListView.as_view()), - url(r'service/order/remote/$', RemoteListView.as_view()), - url(r'service/order/tickets/$', TicketsListView.as_view()), url(r'service/com_rek/$', 'service.views.advertise'), url(r'service/(?P.*)/$', ServiceView.as_view()), diff --git a/service/views.py b/service/views.py index 4eafa22d..67f2c0ac 100644 --- a/service/views.py +++ b/service/views.py @@ -7,6 +7,8 @@ from haystack.query import EmptySearchQuerySet 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,\ @@ -16,22 +18,43 @@ 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): + service_url = self.kwargs.get('url') + service = get_object_or_404(Service, url=service_url) + self.service = service + self.template_name = service.template + service_form = order_forms.get(service_url) + self.form_class = service_form + return super(ServiceView, self).dispatch(request, *args, **kwargs) - def get_form_class(self): + def post(self, request, *args, **kwargs): url = self.kwargs.get('url') - form = order_forms.get(url) - if form: - return form + #service_form = order_forms.get(url) + #self.form_class = service_form + form = self.form_class(request.POST) + if form.is_valid(): + return self.form_valid(form) else: - raise Http404 + return self.form_invalid(form) - def get_template_names(self): + def form_valid(self, form): + order = form.save(commit=False) + order.save() + #messages.success(self.request, _(u'Ваш запрос был успешно отправлен')) + return HttpResponseRedirect(self.success_url) + + def get_context_data(self, **kwargs): url = self.kwargs.get('url') - service = get_object_or_404(Service, url=url) - return service.template + 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/settings/conference_old_urls.py b/settings/conference_old_urls.py index fa50b3d2..f4d015cd 100644 --- a/settings/conference_old_urls.py +++ b/settings/conference_old_urls.py @@ -20,7 +20,7 @@ urlpatterns = patterns('', # theme url(r'^conference/theme-(?P.*)/year-(?P\d+)/month-(?P.*)/$', old_redirect, {'redirect_url': '/conference/theme/{theme}/{year}/{month}/'}), url(r'^conference/theme-(?P.*)/year-(?P\d+)/$', old_redirect, {'redirect_url': '/conference/theme/{theme}/{year}/'}), - url(r'^conference/theme-(?P.*)/city-(?P.*)/year-(?P\d+)/month-/$', old_redirect, {'redirect_url': '/conference/theme/{theme}/city/{city}/{year}/'}), + url(r'^conference/theme-(?P.*)/city-(?P.*)/year-(?P\d+)/month-(?P.*)/$', old_redirect, {'redirect_url': '/conference/theme/{theme}/city/{city}/{year}/'}), url(r'^conference/theme-(?P.*)/city-(?P.*)/year-(?P\d+)/$', old_redirect, {'redirect_url': '/conference/theme/{theme}/city/{city}/{year}/'}), url(r'^conference/theme-(?P.*)/city-(?P.*)/$', old_redirect, {'redirect_url': '/conference/theme/{theme}/city/{city}/'}), #url(r'^conference/theme/(?P.*)/$', old_redirect, {'redirect_url': '/conference/theme/{theme}/'}), # перенести diff --git a/settings/old_urls.py b/settings/old_urls.py index e56d8806..4f0b8213 100644 --- a/settings/old_urls.py +++ b/settings/old_urls.py @@ -25,6 +25,8 @@ urlpatterns = patterns('', url(r'^(?P.*)/(?P.*)/uchastie.html$', old_redirect, {'redirect_url': '{event_catalog}{event_url}/service/participation/'}), url(r'^(?P.*)/(?P.*)/ad.html$', old_redirect, {'redirect_url': '{event_catalog}{event_url}/service/participation/'}), url(r'^(?P.*)/(?P.*)/mobilestand.html$', old_redirect, {'redirect_url': '{event_catalog}{event_url}/service/participation/'}), + url(r'^(?P.*)/(?P.*)/catalogue.html$', old_redirect, {'redirect_url': '{event_catalog}{event_url}/'}), + # company url(r'^company/(?P.*)$', old_redirect, {'redirect_url': '/members/{company}/'}), @@ -43,32 +45,34 @@ urlpatterns = patterns('', #url(r'^serv-personal-info.php$', old_redirect, {'redirect_url': '/service/staff/'}), # EXPO # city - url(r'^catalog/city-(?P)/theme-(?P.*)/year-(?P\d+)/month-/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/city/{city}/{year}/'}), + url(r'^catalog/city-(?P)/theme-(?P.*)/year-(?P\d+)/month-(?P.*)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/city/{city}/{year}/'}), url(r'^catalog/city-(?P.*)/theme-(?P.*)/year-(?P\d+)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/city/{city}/{year}/'}), url(r'^catalog/city-(?P.*)/theme-(?P.*)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/city/{city}/'}), url(r'^catalog/city-(?P.*)/year-(?P\d+)/month-(?P.*)/$', old_redirect, {'redirect_url': '/expo/city/{city}/{year}/{month}'}), url(r'^catalog/city/(?P.*)/year-(?P\d+)/month-(?P.*)/$', old_redirect, {'redirect_url': '/expo/city/{city}/{year}/{month}'}), url(r'^catalog/city-(?P.*)/year-(?P\d+)/$', old_redirect, {'redirect_url': '/expo/city/{city}/{year}'}), url(r'^catalog/city/(?P.*)/year-(?P\d+)/$', old_redirect, {'redirect_url': '/expo/city/{city}/{year}'}), + url(r'^catalog/city-(?P.*)/page/(?P\d+)/$', old_redirect, {'redirect_url': '/expo/city/{city}/page/{page}/'}), url(r'^catalog/city-(?P.*)/$', old_redirect, {'redirect_url': '/expo/city/{city}/'}), # country - url(r'^catalog/country-(?P)/theme-(?P.*)/year-(?P\d+)/month-/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/country/{country}/{year}/'}), + url(r'^catalog/country-(?P)/theme-(?P.*)/year-(?P\d+)/month-(?P.*)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/country/{country}/{year}/'}), url(r'^catalog/country-(?P.*)/theme-(?P.*)/year-(?P\d+)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/country/{country}/{year}/'}), url(r'^catalog/country-(?P.*)/theme-(?P.*)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/country/{country}/'}), url(r'^catalog/country-(?P.*)/year-(?P\d+)/month-(?P.*)/$', old_redirect, {'redirect_url': '/expo/country/{country}/{year}/{month}/'}), url(r'^catalog/country/(?P.*)/year-(?P\d+)/month-(?P.*)/$', old_redirect, {'redirect_url': '/expo/country/{country}/{year}/{month}/'}), url(r'^catalog/country-(?P.*)/year-(?P\d+)/$', old_redirect, {'redirect_url': '/expo/country/{country}/{year}/'}), url(r'^catalog/country/(?P.*)/year-(?P\d+)/$', old_redirect, {'redirect_url': '/expo/country/{country}/{year}/'}), - url(r'^catalog/country/(?P.*)/$', old_redirect, {'redirect_url': '/expo/country/{country}/'}), + url(r'^catalog/country/(?P.*)/page/(?P\d+)/$', old_redirect, {'redirect_url': '/expo/country/{country}/page/{page}/'}), url(r'^catalog/country-(?P.*)/$', old_redirect, {'redirect_url': '/expo/country/{country}/'}), + url(r'^catalog/country/page/(?P\d+)/$', old_redirect, {'redirect_url': '/expo/country/page/{page}/'}), url(r'^catalog/country/$', old_redirect, {'redirect_url': '/expo/country/'}), # theme url(r'^catalog/theme-(?P.*)/year-(?P\d+)/month-(?P.*)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/{year}/{month}/'}), url(r'^catalog/theme-(?P.*)/year-(?P\d+)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/{year}/'}), - url(r'^catalog/theme-(?P.*)/city-(?P)/year-(?P\d+)/month-/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/city/{city}/{year}/'}), + url(r'^catalog/theme-(?P.*)/city-(?P)/year-(?P\d+)/month-(?P.*)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/city/{city}/{year}/'}), url(r'^catalog/theme-(?P.*)/city-(?P.*)/year-(?P\d+)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/city/{city}/{year}/'}), url(r'^catalog/theme-(?P.*)/city-(?P.*)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/city/{city}/'}), - url(r'^catalog/theme-(?P.*)/country-(?P)/year-(?P\d+)/month-/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/country/{country}/{year}/'}), + url(r'^catalog/theme-(?P.*)/country-(?P)/year-(?P\d+)/month-(?P.*)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/country/{country}/{year}/'}), url(r'^catalog/theme-(?P.*)/country-(?P.*)/year-(?P\d+)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/country/{country}/{year}/'}), url(r'^catalog/theme-(?P.*)/country-(?P.*)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/country/{country}/'}), url(r'^catalog/theme/(?P.*)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/'}), diff --git a/settings/redirect_views.py b/settings/redirect_views.py index 99c9f2cd..1e9d4f68 100644 --- a/settings/redirect_views.py +++ b/settings/redirect_views.py @@ -50,12 +50,16 @@ class EventRedirect(object): obj = Exposition.objects.get(old_url=value) except Exposition.DoesNotExist: obj = Exposition.objects.safe_get(url=value) + except Exposition.MultipleObjectsReturned: + obj = Exposition.objects.filter(old_url=value)[0] if not obj: try: obj = Conference.objects.get(old_url=value) except Conference.DoesNotExist: obj = Conference.objects.safe_get(url=value) + except Conference.MultipleObjectsReturned: + obj = Conference.objects.filter(old=value)[0] if obj: return {'event_url': obj.url, 'event_catalog': obj.catalog} else: @@ -71,9 +75,15 @@ class UserRedirect(object): obj = get_object_or_404(User, url=value) return {key: obj.url} +class PageRedirect(object): + def get_object_url(self,key, value): + return {key: value} + + old_params = {'city': CityRedirect, 'country': CountryRedirect, 'theme': ThemeRedirect, 'tag': TagRedirect, - 'event': EventRedirect, 'company': Company, 'article': ArticleRedirect, 'user': UserRedirect} + 'event': EventRedirect, 'company': Company, 'article': ArticleRedirect, 'user': UserRedirect, + 'page': PageRedirect} def old_redirect(request, *args, **kwargs): redirect = kwargs.get('redirect_url') diff --git a/templates/admin/article/blog_form.html b/templates/admin/article/blog_form.html index 5b221c9f..16a15c83 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 #}
@@ -131,4 +154,46 @@ {% include 'admin/includes/file_form.html' with file_form=file_form object=article %} +{% endblock %} + + +{% block bot_scripts %} + {% endblock %} \ No newline at end of file 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 7ae7dab6..1f04cabc 100644 --- a/templates/client/base_catalog.html +++ b/templates/client/base_catalog.html @@ -22,7 +22,7 @@ {% if theme_for_filter.id == 27 or theme_for_filter.id == 9 or theme_for_filter.id == 48 %}
@@ -69,7 +69,7 @@ {% endwith %} {% block under_search_baner %}
- +
{% endblock %} diff --git a/templates/client/exposition/exposition_detail.html b/templates/client/exposition/exposition_detail.html index 69faaf1f..aa55fdaf 100644 --- a/templates/client/exposition/exposition_detail.html +++ b/templates/client/exposition/exposition_detail.html @@ -16,11 +16,11 @@ {% endblock %} {% block content_list %} - {% ifnotequal object.url 'ipsa-osen-2015' %} + {% if not object.paid %} {% include 'client/includes/exposition/exposition_object.html' with exposition=object %} {% else %} {% include 'client/includes/exposition/expo_paid.html' with exposition=object %} - {% endifnotequal %} + {% endif %} {% endblock %} {% block paginator %} diff --git a/templates/client/includes/exposition/expo_paid.html b/templates/client/includes/exposition/expo_paid.html index e7ced932..7f96eb6d 100644 --- a/templates/client/includes/exposition/expo_paid.html +++ b/templates/client/includes/exposition/expo_paid.html @@ -33,9 +33,7 @@ {% endif %} @@ -117,7 +115,7 @@
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 %}
diff --git a/templates/client/includes/exposition/price.html b/templates/client/includes/exposition/price.html index c3dcd52a..5ece2a54 100644 --- a/templates/client/includes/exposition/price.html +++ b/templates/client/includes/exposition/price.html @@ -151,7 +151,11 @@
+ {% if not exposition.paid %} {% trans 'Заказать билет' %} + {% else %} + {% trans 'Заказать билет' %} + {% endif %}
{% if exposition.get_audience %}
@@ -215,8 +219,11 @@ {% else %}

{% trans 'Цены на площадь доступны по запросу' %}

{% endif %} - - {% trans 'Заявка на участие' %} + {% if not exposition.paid %} + {% trans 'Заявка на участие' %} + {% else %} + {% trans 'Заявка на участие' %} + {% endif %} {% if exposition.min_stand_size or exposition.registration_payment or exposition.application_deadline %}
diff --git a/templates/client/includes/exposition/services.html b/templates/client/includes/exposition/services.html index 6b13022c..b14c2cc5 100644 --- a/templates/client/includes/exposition/services.html +++ b/templates/client/includes/exposition/services.html @@ -14,9 +14,9 @@
  • {% trans 'Заказать отель' %}
  • {% endif %} {% else %} -
  • {% trans 'Официальный сайт' %}
  • -
  • {% trans 'Билеты на выставку' %}
  • -
  • {% trans 'Заявка на участие' %}
  • +
  • {% trans 'Официальный сайт' %}
  • +
  • {% trans 'Билеты на выставку' %}
  • +
  • {% trans 'Заявка на участие' %}
  • {% endif %}
    diff --git a/templates/client/service/remotely.html b/templates/client/service/remotely.html index 9c70ac35..afc56567 100644 --- a/templates/client/service/remotely.html +++ b/templates/client/service/remotely.html @@ -167,7 +167,11 @@
    -
    {% trans 'Стоимость базового пакета услуги 400 €' %}
    + {% if object and object.country_id in sng_countries %} +
    {% trans 'Стоимость базового пакета услуги 10 000 р.' %}
    + {% else %} +
    {% trans 'Стоимость базового пакета услуги 400 €' %}
    + {% endif %} diff --git a/templates/client/service/thank_u_page.html b/templates/client/service/thank_u_page.html index 02216948..2a50c2ca 100644 --- a/templates/client/service/thank_u_page.html +++ b/templates/client/service/thank_u_page.html @@ -20,7 +20,8 @@

    Также Вы можете позвонить нам для ускорения процесса, если Ваш запрос является срочным.

    - {% comment %} + {% if object %} +

    Что дальше Вы хотите делать?

    @@ -28,11 +29,14 @@
     
    + {% with theme=object.theme.all.0 %}

    - Перейти к списку выставок по тематике «Ювелирное дело, антиквариат» + Перейти к списку выставок по тематике «{{ theme.name }}»

    + {% endwith %}
    + {% comment %}
     
    @@ -43,17 +47,31 @@

    + {% endcomment %}
     
    - Вернуться к просмотру выставки «Сувенирная ярмарка 2013/2014» + Вернуться к просмотру выставки «{{ object.name }}» +
    +
    + +
    +
    +
     
    +
    +
    + {% with city=object.city %} +

    + Перейти к списку ближайших выставок в городе «{{ city.name }}» +

    + {% endwith %}
    - {% endcomment %}
    + {% endif %}
    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