You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
3.5 KiB
79 lines
3.5 KiB
# -*- coding: utf-8 -*-
|
|
from django import forms
|
|
from django.conf import settings
|
|
from ckeditor.widgets import CKEditorWidget
|
|
from exposition.models import Exposition
|
|
from conference.models import Conference
|
|
from seminar.models import Seminar
|
|
from models import Photoreport
|
|
from functions.form_check import translit_with_separator
|
|
from functions.translate import fill_with_signal
|
|
from functions.files import check_tmp_files
|
|
from django.utils.translation import ugettext as _
|
|
|
|
|
|
class PhotoreportForm(forms.Form):
|
|
exposition = forms.ModelChoiceField(queryset=Exposition.objects.all(), empty_label='', required=False)
|
|
conference = forms.ModelChoiceField(queryset=Conference.objects.all(), empty_label='', required=False)
|
|
seminar = forms.ModelChoiceField(queryset=Seminar.objects.all(), empty_label='', required=False)
|
|
|
|
key = forms.CharField(required=False, widget=forms.HiddenInput())
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
"""
|
|
create dynamical translated fields fields
|
|
and fills select fields
|
|
"""
|
|
super(PhotoreportForm, self).__init__(*args, **kwargs)
|
|
#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
|
|
if len(settings.LANGUAGES) in range(10):
|
|
for lid, (code, name) in enumerate(settings.LANGUAGES):
|
|
# uses enumerate for detect iteration number
|
|
# first iteration is a default lang so it required fields
|
|
required = True if lid == 0 else False
|
|
self.fields['name_%s' % code] = forms.CharField(label=_(u'Название'), required=required)
|
|
self.fields['description_%s' % code] = forms.CharField(label=_(u'Описание'),
|
|
required=False, widget=CKEditorWidget)
|
|
#meta data
|
|
self.fields['title_%s' % code] = forms.CharField(label=_(u'Тайтл'), required=False, max_length=255,
|
|
widget=forms.TextInput(attrs={'style':'width: 550px'}))
|
|
self.fields['keywords_%s' % code] = forms.CharField(label=_(u'Кейвордс'), required=False, max_length=255,
|
|
widget=forms.TextInput(attrs={'style':'width: 550px'}))
|
|
|
|
self.fields['descriptions_%s' % code] = forms.CharField(label=_(u'Дескрипшен'), required=False, max_length=255,
|
|
widget=forms.TextInput(attrs={'style':'width: 550px'}))
|
|
|
|
def save(self, id=None):
|
|
data = self.cleaned_data
|
|
|
|
if not id:
|
|
photoreport = Photoreport()
|
|
else:
|
|
photoreport = Photoreport.objects.get(id=id)
|
|
|
|
if data.get('url'):
|
|
photoreport.url = data.get('url')
|
|
else:
|
|
photoreport.url = translit_with_separator(data['name_ru'])
|
|
|
|
photoreport.exposition = data['exposition']
|
|
photoreport.conference = data['conference']
|
|
photoreport.seminar = data['seminar']
|
|
|
|
# fill translated fields and save object
|
|
fill_with_signal(Photoreport, photoreport, data)
|
|
|
|
#save photos
|
|
check_tmp_files(photoreport, data['key'])
|
|
return photoreport
|
|
|
|
|
|
|
|
class PhotoreportFormDelete(forms.ModelForm):
|
|
url = forms.CharField(widget=forms.HiddenInput())
|
|
|
|
class Meta:
|
|
model = Photoreport
|
|
fields = ('url',)
|
|
|
|
|