{# Hidden inputs uses for comparing with TmpFile objects #}
{{ form.key }}
+ {# Hidden input uses in clean method for checking url #}
+ {{ form.company_id }}
+
{# name #}
{% with field='name' form=form languages=languages %}
diff --git a/templates/admin/company/company_all.html b/templates/admin/company/company_all.html
index fce83cfc..18f814e6 100644
--- a/templates/admin/company/company_all.html
+++ b/templates/admin/company/company_all.html
@@ -26,7 +26,7 @@ Displays lists of all companies in the table
{{ item.name }} |
-
+
Изменить
diff --git a/templates/admin/organiser/organiser_add.html b/templates/admin/organiser/organiser_add.html
index 6452f30d..851f3eeb 100644
--- a/templates/admin/organiser/organiser_add.html
+++ b/templates/admin/organiser/organiser_add.html
@@ -166,6 +166,13 @@
{% with field='representation' form=form languages=languages %}
{% include 'admin/forms/multilang.html' %}
{% endwith %}
+ {# url #}
+
diff --git a/translator/__init__.py b/translator/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/translator/forms.py b/translator/forms.py
new file mode 100644
index 00000000..435ae4ac
--- /dev/null
+++ b/translator/forms.py
@@ -0,0 +1,79 @@
+# -*- coding: utf-8 -*-
+from django import forms
+from django.conf import settings
+from ckeditor.widgets import CKEditorWidget
+from models import Translator
+from country.models import Country
+from city.models import City
+#functions
+from functions.translate import populate_all, fill_trans_fields_all
+from functions.files import check_tmp_files
+from functions.form_check import translit_with_separator
+
+
+
+class TranslatorForm(forms.Form):
+ """
+ Create Translator form for creating translator
+
+ __init__ uses for dynamic creates fields
+
+ save function saves data in Translator object. If it doesnt exist create new object
+ """
+ car = forms.BooleanField(label='Личный автомобиль', required=False)
+ birth = forms.DateField(label='Дата рождения')
+ gender = forms.ChoiceField(label='Пол', choices=[('male', 'Мужской'),('female', 'Женский')])
+
+
+ def __init__(self, *args, **kwargs):
+ """
+ create dynamical translated fields fields
+ """
+ super(TranslatorForm, 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['education_%s' % code] = forms.CharField(label='Образование', required=required)
+ self.fields['specialization_%s' % code] = forms.CharField(label='Специализация', required=required)
+ self.fields['languages_%s' % code] = forms.CharField(label='Языки', required=required)
+ self.fields['native_language_%s' % code] = forms.CharField(label='Родной язык', required=required)
+ self.fields['prices_%s' % code] = forms.CharField(label='Цены',
+ required=required, widget=CKEditorWidget)
+ self.fields['discounts_%s' % code] = forms.CharField(label='Скидки',
+ required=False, widget=CKEditorWidget)
+ #meta data
+ self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255,
+ widget=forms.TextInput(attrs={'style':'width: 550px'}))
+ self.fields['keywords_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255,
+ widget=forms.TextInput(attrs={'style':'width: 550px'}))
+ self.fields['descriptions_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255,
+ widget=forms.TextInput(attrs={'style':'width: 550px'}))
+
+ def save(self, id=None):
+ #create new conference object or get exists
+ if not id:
+ translator = Translator()
+ else:
+ translator = Translator.objects.get(id=id)
+
+ data = self.cleaned_data
+
+ translator.car = data['car']
+ translator.birth = data['birth']
+ translator.gender = data['gender']
+
+ #will be saved populated fields
+ zero_fields = {}
+ #fills all translated fields with data
+ #if saves new object, will fill city object. otherwise existing object of City model
+ fill_trans_fields_all(Translator, translator, data, id, zero_fields)
+ #autopopulate
+ #populate empty fields and fields which was already populated
+ conference_id = getattr(conference, 'id')
+ populate_all(Conference, data, conference_id, zero_fields)
+ #save files
+ check_tmp_files(conference, data['key'])
\ No newline at end of file
diff --git a/translator/models.py b/translator/models.py
new file mode 100644
index 00000000..8bacfa8f
--- /dev/null
+++ b/translator/models.py
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+from django.db import models
+from hvad.models import TranslatableModel, TranslatedFields, TranslationManager
+#
+from functions.custom_fields import EnumField
+
+
+class TranslatorManager(TranslationManager):
+ def safe_get(self, **kwargs):
+ model = self.model
+ try:
+ return model.objects.get(**kwargs)
+ except:
+ return None
+
+
+class Translator(TranslatableModel):
+ """
+ Extra information about translators
+ """
+ #set manager of this model
+ objects = TranslationManager()
+
+ gender = EnumField(values=('male', 'female'))
+
+ birth = models.DateField(verbose_name='Дата рождения')
+ car = models.BooleanField(verbose_name='Личный автомобиль', default=0)
+
+ translations = TranslatedFields(
+ education = models.CharField(verbose_name='Образование', max_length=255),
+ specialization = models.CharField(verbose_name='Специализация', max_length=255),
+ languages = models.CharField(verbose_name='Языки', max_length=255),
+ native_language= models.CharField(verbose_name='Родной язык', max_length=255),
+
+ prices = models.TextField(verbose_name='Тарифы'),
+ discounts = models.TextField(verbose_name='Скидки', blank=True),
+ #-----meta
+ title = models.CharField(max_length=255, blank=True),
+ descriptions = models.CharField(max_length=255, blank=True),
+ keywords = models.CharField(max_length=255, blank=True),
+ )
\ No newline at end of file
diff --git a/translator/tests.py b/translator/tests.py
new file mode 100644
index 00000000..501deb77
--- /dev/null
+++ b/translator/tests.py
@@ -0,0 +1,16 @@
+"""
+This file demonstrates writing tests using the unittest module. These will pass
+when you run "manage.py test".
+
+Replace this with more appropriate tests for your application.
+"""
+
+from django.test import TestCase
+
+
+class SimpleTest(TestCase):
+ def test_basic_addition(self):
+ """
+ Tests that 1 + 1 always equals 2.
+ """
+ self.assertEqual(1 + 1, 2)
diff --git a/translator/urls.py b/translator/urls.py
new file mode 100644
index 00000000..38200c85
--- /dev/null
+++ b/translator/urls.py
@@ -0,0 +1,9 @@
+# -*- coding: utf-8 -*-
+from django.conf.urls import patterns, url
+
+urlpatterns = patterns('translator.views',
+ url(r'^add.*/$', 'translator_add'),
+ url(r'^delete/(?P.*)/$', 'translator_delete'),
+ url(r'^change/(?P.*)/$', 'translator_change'),
+ url(r'^all/$', 'translator_all'),
+)
diff --git a/translator/views.py b/translator/views.py
new file mode 100644
index 00000000..3cc328ad
--- /dev/null
+++ b/translator/views.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+from django.shortcuts import render_to_response
+from django.http import HttpResponseRedirect
+from django.core.context_processors import csrf
+from django.conf import settings
+from django.contrib.auth.decorators import login_required
+#models and forms
+from models import Translator
+#custom views
+from functions.custom_views import objects_list, delete_object
\ No newline at end of file
|