minor bug fix

remotes/origin/1203
Ivan Kovalkovskyi 11 years ago
parent d51968c268
commit 3b2fd70e5b
  1. 2
      exposition/models.py
  2. 12
      meta/admin.py
  3. 11
      meta/admin_urls.py
  4. 10
      meta/forms.py
  5. 7
      meta/models.py
  6. 10
      meta/views.py
  7. 2
      proj/views.py
  8. 2
      templates/client/includes/seo_text.html
  9. 8
      wizard/models.py
  10. 2
      wizard/urls.py
  11. 67
      wizard/views.py

@ -59,6 +59,8 @@ class Exposition(TranslatableModel, EventMixin, ExpoMixin):
data_end = models.DateField(verbose_name='Дата окончания') data_end = models.DateField(verbose_name='Дата окончания')
services = BitField(flags=flags) services = BitField(flags=flags)
# relations # relations
creator = models.ForeignKey('accounts.User', verbose_name=u'Создатель', on_delete=models.SET_NULL,
related_name='exposition_creator', blank=True, null=True)
country = models.ForeignKey('country.Country', verbose_name='Страна', on_delete=models.PROTECT, country = models.ForeignKey('country.Country', verbose_name='Страна', on_delete=models.PROTECT,
related_name='exposition_country') related_name='exposition_country')
city = models.ForeignKey('city.City', verbose_name='Город', on_delete=models.PROTECT, city = models.ForeignKey('city.City', verbose_name='Город', on_delete=models.PROTECT,

@ -1,13 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.shortcuts import render_to_response from django.http import HttpResponseRedirect
from django.http import HttpResponseRedirect, HttpResponse
from django.core.context_processors import csrf
from django.conf import settings from django.conf import settings
from django.forms.formsets import BaseFormSet, formset_factory # models and forms
from django.forms.models import modelformset_factory
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.decorators import login_required
#models and forms
from models import MetaSetting from models import MetaSetting
from forms import MetaForm, MetaFilterForm from forms import MetaForm, MetaFilterForm
from functions.admin_views import AdminListView, AdminView from functions.admin_views import AdminListView, AdminView
@ -45,7 +39,7 @@ class MetaView(AdminView):
data['keywords_%s' % code] = trans_obj.keywords data['keywords_%s' % code] = trans_obj.keywords
data['h1_%s' % code] = trans_obj.h1 data['h1_%s' % code] = trans_obj.h1
form =form_class(initial=data) form = form_class(initial=data)
return form return form
else: else:
return form_class() return form_class()

@ -1,16 +1,15 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.conf.urls import patterns, include, url from django.conf.urls import patterns, url
from admin import MetaListView, MetaView from views import CreateSeoText, SeoTextList, EditSeoText, DeleteSeoText
from .views import CreateSeoText, SeoTextList, EditSeoText, DeleteSeoText from .admin import MetaListView, MetaView
urlpatterns = patterns('conference.admin',
urlpatterns = patterns('',
url(r'^seo/new/$', CreateSeoText.as_view(), name='seo_new'), url(r'^seo/new/$', CreateSeoText.as_view(), name='seo_new'),
url(r'^seo/all/$', SeoTextList.as_view(), name='seo_all'), url(r'^seo/all/$', SeoTextList.as_view(), name='seo_all'),
url(r'^seo/edit/(?P<pk>\d{1,5})/$', EditSeoText.as_view(), name='seo_edit'), url(r'^seo/edit/(?P<pk>\d{1,5})/$', EditSeoText.as_view(), name='seo_edit'),
url(r'^seo/delete/(?P<pk>\d{1,5})/$', DeleteSeoText.as_view(), name='seo_delete'), url(r'^seo/delete/(?P<pk>\d{1,5})/$', DeleteSeoText.as_view(), name='seo_delete'),
url(r'^all/$', MetaListView.as_view()), url(r'^all/$', MetaListView.as_view()),
#url(r'^change/(?P<url>.*)/$', 'conference_change'), url(r'^(?P<id>\d{1,6})/$', MetaView.as_view()),
url(r'^(?P<id>.*)/$', MetaView.as_view()),
url(r'^$', MetaView.as_view()), url(r'^$', MetaView.as_view()),
) )

@ -1,9 +1,11 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django import forms from django import forms
from django.conf import settings from django.conf import settings
from models import MetaSetting from models import MetaSetting, SeoText
from functions.translate import fill_with_signal from functions.translate import fill_with_signal
from functions.admin_forms import AdminFilterForm from functions.admin_forms import AdminFilterForm
from ckeditor.widgets import CKEditorWidget
from hvad.forms import TranslatableModelForm
class MetaForm(forms.Form): class MetaForm(forms.Form):
@ -14,7 +16,7 @@ class MetaForm(forms.Form):
create dynamical translated fields fields create dynamical translated fields fields
""" """
super(MetaForm, self).__init__(*args, **kwargs) super(MetaForm, self).__init__(*args, **kwargs)
#creates translated forms example: name_ru, name_en # creates translated forms example: name_ru, name_en
# len(10) is a hack for detect if settings.LANGUAGES is not configured it return all langs # len(10) is a hack for detect if settings.LANGUAGES is not configured it return all langs
if len(settings.LANGUAGES) in range(10): if len(settings.LANGUAGES) in range(10):
for lid, (code, name) in enumerate(settings.LANGUAGES): for lid, (code, name) in enumerate(settings.LANGUAGES):
@ -48,10 +50,6 @@ class MetaFilterForm(AdminFilterForm):
model = MetaSetting model = MetaSetting
from .models import SeoText
from ckeditor.widgets import CKEditorWidget
from hvad.forms import TranslatableModelForm
class SeoTextForm(TranslatableModelForm): class SeoTextForm(TranslatableModelForm):
class Meta: class Meta:

@ -135,13 +135,12 @@ class SeoTextManager(TranslationManager):
key = 'seo_text_cache' key = 'seo_text_cache'
result = cache.get(key) result = cache.get(key)
if result: if result:
return result.get(lang+'_' + url) return result.get("%s_%s" % (lang, url))
qs = SeoText.objects.language('all') qs = SeoText.objects.language('all')
value_dict = {obj.language_code+'_'+obj.url:obj for obj in qs} value_dict = {obj.language_code+'_'+obj.url: obj for obj in qs}
cache.set(key, value_dict, self.cache_time) cache.set(key, value_dict, self.cache_time)
return value_dict.get(lang+'_'+url) return value_dict.get("%s_%s" % (lang, url))
class SeoText(TranslatableModel): class SeoText(TranslatableModel):

@ -1,9 +1,9 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from . import settings
from django.views.generic import CreateView, UpdateView, DeleteView, ListView
from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import ImproperlyConfigured
from models import MetaSetting from models import MetaSetting
from .forms import SeoTextForm, SeoText
from . import settings
class Meta(object): class Meta(object):
@ -189,10 +189,6 @@ class MetadataMixin(object):
return context return context
from django.views.generic import CreateView, UpdateView, DeleteView, ListView
from .models import SeoText
from .forms import SeoTextForm
class CreateSeoText(CreateView): class CreateSeoText(CreateView):
form_class = SeoTextForm form_class = SeoTextForm

@ -26,6 +26,7 @@ def clear_slashes(str_):
str_ = str_[:-1] str_ = str_[:-1]
return str_ return str_
def add_seo(request): def add_seo(request):
url = request.path url = request.path
lang = get_language() lang = get_language()
@ -38,6 +39,7 @@ def add_seo(request):
seo_text = None seo_text = None
return seo_text return seo_text
def expo_context(request): def expo_context(request):
banners_themes = [24, 34, 4] banners_themes = [24, 34, 4]
banner_tags = [141, 142, 143, 156, 206, 231, 232, 390, 391, 400, 457, 500, 536, 537, 539, 457, 500, 686, 715, 765, banner_tags = [141, 142, 143, 156, 206, 231, 232, 390, 391, 400, 457, 500, 536, 537, 539, 457, 500, 686, 715, 765,

@ -1,3 +1,3 @@
<div class="so-text"> <div class="seo-text">
<h2>{{ object.title }}</h2>{{ object.body|safe }} <h2>{{ object.title }}</h2>{{ object.body|safe }}
</div> </div>

@ -1,8 +0,0 @@
from django.db import models
from django.conf import settings
import os
# Create your models here.
class Attachment(models.Model):
file = models.FileField(upload_to=os.path.join(settings.MEDIA_ROOT,'attachments_files'))

@ -3,6 +3,6 @@ from django.conf.urls import patterns, url, include
from wizard.views import wizard_view from wizard.views import wizard_view
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^ajax/$', 'wizard.views.ajax_view'), # url(r'^ajax/$', 'wizard.views.ajax_view'),
url(r'^$', wizard_view) url(r'^$', wizard_view)
) )

@ -4,10 +4,10 @@ from django.http import HttpResponseRedirect
from django.conf import settings from django.conf import settings
import os import os
from photologue.models import Photo, Gallery from photologue.models import Photo
from exposition.models import Exposition, Statistic from exposition.models import Exposition, Statistic
from wizard.models import Attachment
from functions.form_check import translit_with_separator from functions.form_check import translit_with_separator
from accounts.models import User
# defining different template for every form # defining different template for every form
@ -16,20 +16,26 @@ TEMPLATES = {
'1': 'client/wizard/second_step.html', '1': 'client/wizard/second_step.html',
'2': 'client/wizard/third_step.html' '2': 'client/wizard/third_step.html'
} }
post = None
files = None
# main view that handle all data from 3 forms(steps) and finally create an Exposition
class ExpoWizard(SessionWizardView): class ExpoWizard(SessionWizardView):
"main view that handle all data from 3 forms(steps) and finally create an Exposition"
# storing temporary files during upload
location = os.path.join(settings.MEDIA_ROOT, 'temp') location = os.path.join(settings.MEDIA_ROOT, 'temp')
file_storage = FileSystemStorage(location, settings.MEDIA_URL) file_storage = FileSystemStorage(location, settings.MEDIA_URL)
SUCCES_URL = "/"
def get_template_names(self):
return [TEMPLATES[self.steps.current]]
def done(self, form_list, **kwargs): def done(self, form_list, **kwargs):
# getting data and files
upload_logo = form_list[0].cleaned_data.get('logo') upload_logo = form_list[0].cleaned_data.get('logo')
upload_images = self.request.FILES.getlist(u'2-attachments') upload_images = self.request.FILES.getlist(u'2-attachments')
data = self.get_all_cleaned_data() data = self.get_all_cleaned_data()
# creating new exposition
expo = Exposition.objects.language(self.request.LANGUAGE_CODE).create( expo = Exposition.objects.language(self.request.LANGUAGE_CODE).create(
name=data.get('name'), name=data.get('name'),
data_begin=data.get('date_start'), data_begin=data.get('date_start'),
@ -59,9 +65,10 @@ class ExpoWizard(SessionWizardView):
min_closed_equipped_area=data.get('equiped'), min_closed_equipped_area=data.get('equiped'),
url=translit_with_separator(data.get('name')), url=translit_with_separator(data.get('name')),
quality_label=0, quality_label=0,
audience=0 audience=0,
creator = User.objects.get(id=self.request.user.id)
) )
# adding photo to gallery
photos = [] photos = []
for i, photo in enumerate(upload_images): for i, photo in enumerate(upload_images):
photos.append(Photo.objects.language(self.request.LANGUAGE_CODE).create( photos.append(Photo.objects.language(self.request.LANGUAGE_CODE).create(
@ -71,25 +78,16 @@ class ExpoWizard(SessionWizardView):
for photo in photos: for photo in photos:
expo.upload_photo(photo) expo.upload_photo(photo)
# many to many relations saving
expo.tag = [data.get('tag')] expo.tag = [data.get('tag')]
expo.theme = [data.get('theme')] expo.theme = [data.get('theme')]
if data['membership1']:
expo.quality_label = (expo.quality_label | Exposition.quality_label.exporating)
if data['membership2']:
expo.quality_label = (expo.quality_label | Exposition.quality_label.rsva)
if data['membership3']:
expo.quality_label = (expo.quality_label | Exposition.quality_label.ufi)
if data['audience1']:
expo.audience = (expo.audience | Exposition.audience.experts)
if data['audience2']:
expo.audience = expo.audience | getattr(Exposition.audience, 'experts and consumers')
if data['audience3']:
expo.audience = expo.audience | (getattr(Exposition.audience, 'general public'))
# setting bit fields audience and quality_label
self.set_flags(expo, data)
expo.save() expo.save()
Statistic.objects.language().create( # ?
Statistic.objects.language(self.request.LANGUAGE_CODE).create(
exposition=expo, exposition=expo,
year=data.get('statistic_year'), year=data.get('statistic_year'),
visitors=data.get('visitors'), visitors=data.get('visitors'),
@ -98,26 +96,31 @@ class ExpoWizard(SessionWizardView):
area=data.get('square') area=data.get('square')
) )
# remove temporary files if it has any
if upload_logo: if upload_logo:
self.file_storage.delete(upload_logo.name) self.file_storage.delete(upload_logo.name)
if upload_images: if upload_images:
for f in upload_images: for f in upload_images:
self.file_storage.delete(f.name) self.file_storage.delete(f.name)
return HttpResponseRedirect('/')
def get_template_names(self): return HttpResponseRedirect(self.SUCCES_URL)
return [TEMPLATES[self.steps.current]]
def set_flags(self, expo, data):
if data['membership1']:
expo.quality_label = (expo.quality_label | Exposition.quality_label.exporating)
if data['membership2']:
expo.quality_label = (expo.quality_label | Exposition.quality_label.rsva)
if data['membership3']:
expo.quality_label = (expo.quality_label | Exposition.quality_label.ufi)
if data['audience1']:
expo.audience = (expo.audience | Exposition.audience.experts)
if data['audience2']:
expo.audience = expo.audience | getattr(Exposition.audience, 'experts and consumers')
if data['audience3']:
expo.audience = expo.audience | (getattr(Exposition.audience, 'general public'))
from wizard.forms import formlist from wizard.forms import formlist
wizard_view = ExpoWizard.as_view(formlist) wizard_view = ExpoWizard.as_view(formlist)
from django.contrib.formtools.wizard.storage.session import SessionStorage
from django.http import HttpResponse
import json
def ajax_view(request):
form = formlist[2](post, files, prefix='2')
return HttpResponse(json.dumps({'posts':post,'files':files}), content_type='application/json')

Loading…
Cancel
Save