diff --git a/specialist_catalog/management/__init__.py b/specialist_catalog/management/__init__.py new file mode 100644 index 00000000..b29e46c3 --- /dev/null +++ b/specialist_catalog/management/__init__.py @@ -0,0 +1 @@ +__author__ = 'dart_vaider' diff --git a/specialist_catalog/management/commands/__init__.py b/specialist_catalog/management/commands/__init__.py new file mode 100644 index 00000000..b29e46c3 --- /dev/null +++ b/specialist_catalog/management/commands/__init__.py @@ -0,0 +1 @@ +__author__ = 'dart_vaider' diff --git a/specialist_catalog/management/commands/create_city_page.py b/specialist_catalog/management/commands/create_city_page.py new file mode 100644 index 00000000..7a6a3138 --- /dev/null +++ b/specialist_catalog/management/commands/create_city_page.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- + +from django.core.management.base import BaseCommand +from city.models import City +from specialist_catalog.models import SpecialistCatalog + +default_text = u"Планируете посетить выставку в %s?" \ + u" Мы предлагаем Вам подобрать переводчика именно под Ваши цели и потребности. " \ + u"Специализируясь уже более 7 лет на предоставлении переводчиков на выставки и конференции " \ + u"%s, мы можем предоставить профессионалов со знанием разных " \ + u"языков на гибких для Вас условиях. Каждый заказ индивидуален для нас, " \ + u"и итоговая цена зависит от вида перевода, тематики, срочности подбора " \ + u"специалиста, города и объема работы." +default_title = u"Переводчики в %s" +default_logo = "specialist_catalog/logo_preview/default_logo.jpg" +default_cities = u"" + + +class Command(BaseCommand): + def handle(self, *args, **options): + cities = list(City.objects.language('ru').order_by('id')) + for cty in cities: + name = cty.inflect or cty.name + sc = SpecialistCatalog( + type=2, + country=cty.country, + city=cty, + title=default_title % name, + main_descr=default_text % (name, name), + logo_preview=default_logo, + big_cities=default_cities, + ) + sc.save() + print cty.url, " -> ", cty.country.url diff --git a/specialist_catalog/management/commands/create_country_page.py b/specialist_catalog/management/commands/create_country_page.py new file mode 100644 index 00000000..5f039274 --- /dev/null +++ b/specialist_catalog/management/commands/create_country_page.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +from django.core.management.base import BaseCommand +from country.models import Country +from specialist_catalog.models import SpecialistCatalog + +default_text = u"Планируете посетить выставку в %s?" \ + u" Мы предлагаем Вам подобрать переводчика именно под Ваши цели и потребности. " \ + u"Специализируясь уже более 7 лет на предоставлении переводчиков на выставки и конференции " \ + u"%s, мы можем предоставить профессионалов со знанием разных " \ + u"языков на гибких для Вас условиях. Каждый заказ индивидуален для нас, " \ + u"и итоговая цена зависит от вида перевода, тематики, срочности подбора " \ + u"специалиста, города и объема работы." +default_title = u"Переводчики в %s" +default_logo = "specialist_catalog/logo_preview/ukraine.gif" +default_cities = u"" +lang = 'ru' + + +class Command(BaseCommand): + def handle(self, *args, **options): + countries = Country.objects.language('ru').order_by('name') + for cntry in countries: + name = cntry.inflect or cntry.name + sc = SpecialistCatalog( + type='1', + country=cntry, + title=default_title % name, + main_descr=default_text % (name, name), + logo_preview=default_logo, + big_cities=default_cities, + ) + sc.save() + print "created for: %s" % cntry.url diff --git a/specialist_catalog/models.py b/specialist_catalog/models.py index 2d54cd4a..32fd0e35 100644 --- a/specialist_catalog/models.py +++ b/specialist_catalog/models.py @@ -2,22 +2,21 @@ from django.db import models from django.conf import settings from hvad.models import TranslatableModel, TranslatedFields, TranslationManager -from functions.form_check import translit_with_separator as tws from city.models import City from country.models import Country from django.core.urlresolvers import reverse_lazy +from django.utils.translation import get_language import copy - # types of catalog _country = 1 _city = 2 class Specialist(models.Model): - name = models.CharField(max_length=255, verbose_name=u"Полное имя") + name = models.CharField(max_length=255, verbose_name=u"Полное имя", blank=False) languages = models.CharField(max_length=255, verbose_name=u"Языки") - city = models.ForeignKey(City, on_delete=models.PROTECT, verbose_name=u"Город") + city = models.ForeignKey(City, on_delete=models.PROTECT, verbose_name=u"Город", blank=True) country = models.ForeignKey(Country, on_delete=models.PROTECT, verbose_name=u"Страна") photo = models.ImageField(verbose_name=u"Фото", upload_to="specialist_catalog/specialist_photo/", blank=True) @@ -31,8 +30,8 @@ class SpecialistCatalog(TranslatableModel): logo_preview = models.ImageField(verbose_name=u"Логотип", blank=True, upload_to='specialist_catalog/logo_preview/') place_photo = models.ImageField(verbose_name=u"Фото для города", blank=True, upload_to='specialist_catalog/place_photo/') specialists = models.ManyToManyField(Specialist, verbose_name=u"Специалисты", blank=True) - city = models.ForeignKey(City, on_delete=models.PROTECT, verbose_name=u"Город") - country = models.ForeignKey(Country, on_delete=models.PROTECT, verbose_name=u"Страна") + city = models.ForeignKey(City, on_delete=models.PROTECT, verbose_name=u"Город", unique=True, blank=True) + country = models.ForeignKey(Country, on_delete=models.PROTECT, verbose_name=u"Страна", blank=False) type = models.PositiveSmallIntegerField(verbose_name=u"Тип(Страна/Город)", default=2) translations = TranslatedFields( @@ -50,13 +49,12 @@ class SpecialistCatalog(TranslatableModel): def get_absolute_url(self): global _country, _city if self.type == _country: - return reverse_lazy('spec_catalog_country', kwargs={'slug':tws(self.country.name)}) - else: - return reverse_lazy('spec_catalog_city', kwargs={'slug':tws(self.city.name)}) + return reverse_lazy('spec_catalog_country', kwargs={'slug': self.country.url}) + return reverse_lazy('spec_catalog_city', kwargs={'slug': self.city.url}) def save(self, *args, **kwargs): super(SpecialistCatalog, self).save(*args, **kwargs) - self.initial_language = 'ru' + self.initial_language = get_language()[:2] or 'ru' new_values = {field: getattr(self, field) for field in self.cache_fields} langs = [code for code, _ in settings.LANGUAGES] @@ -68,7 +66,7 @@ class SpecialistCatalog(TranslatableModel): setattr(self, key, value) self.save_translations(self) else: - translations = {obj.language_code:obj for obj in list(self.translations.all())} + translations = {obj.language_code: obj for obj in list(self.translations.all())} for lang in langs: if lang is not self.initial_language: tr = translations[lang] @@ -91,7 +89,7 @@ class Feedback(models.Model): name = models.CharField(max_length=100, verbose_name=u"Имя") text = models.CharField(max_length=5000, verbose_name=u"Текст отзыва") logo = models.ImageField(verbose_name=u"Логотип компании", upload_to='specialist_catalog/feedback_logo/', blank=True) - catalog = models.ForeignKey(SpecialistCatalog, verbose_name=u"Страница") + catalog = models.ForeignKey(SpecialistCatalog, verbose_name=u"Страница", blank=False) def __unicode__(self): return "Feedback from %s" % self.company diff --git a/specialist_catalog/urls.py b/specialist_catalog/urls.py index 47f45dd5..a79bb14b 100644 --- a/specialist_catalog/urls.py +++ b/specialist_catalog/urls.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- from django.conf.urls import url, patterns -from .views import CatalogDetailedCityView, CatalogDetailedCountryView +from .views import CatalogDetailedView urlpatterns = patterns('', - url(r'^city/(?P.*)/$', CatalogDetailedCityView.as_view(), name="spec_catalog_city"), - url(r'^country/(?P.*)/$', CatalogDetailedCountryView.as_view(), name="spec_catalog_country"), + url(r'^city/(?P.*)/$', CatalogDetailedView.as_view(), {'type': 'city'}, name="spec_catalog_city"), + url(r'^country/(?P.*)/$', CatalogDetailedView.as_view(), {'type': 'country'}, name="spec_catalog_country"), ) \ No newline at end of file diff --git a/specialist_catalog/views.py b/specialist_catalog/views.py index 0dd43edb..36167693 100644 --- a/specialist_catalog/views.py +++ b/specialist_catalog/views.py @@ -7,7 +7,7 @@ from django.conf import settings from django.shortcuts import get_object_or_404 from service.order_forms import TranslationForm from django.http import HttpResponseRedirect - +from django.utils.translation import get_language # =========== ADMIN VIEWS =========== @@ -131,56 +131,28 @@ class FeedbackDeleteView(DeleteView): success_url = reverse_lazy("catalog_all") -# class FeedbackListView(ListView): -# model = Feedback -# template_name = 'admin/specialist/feedback_all.html' -# paginate_by = settings.ADMIN_PAGINATION - # ========= CLIENT VIEWS ============ - -class CatalogDetailedCityView(SingleObjectMixin, FormView): - model = SpecialistCatalog - form_class = TranslationForm - template_name = "client/specialist_catalog/catalog_detailed.html" - success_url = reverse_lazy("service_thanks") - - def get_object(self, queryset=None): - obj = self.model.objects.language().get(city__url=self.kwargs.get('slug')) - self.object = obj - return obj - - def get_context_data(self, **kwargs): - self.get_object() - context = super(CatalogDetailedCityView, self).get_context_data(**kwargs) - context['object'] = self.object - return context - - def form_valid(self, form): - order = form.save(commit=False) - order.save() - return HttpResponseRedirect(self.success_url) - - def get_initial(self): - obj = self.get_object() - return {'country':obj.country.name, 'city':obj.city.name} +lang = get_language()[:2] -class CatalogDetailedCountryView(SingleObjectMixin, FormView): +class CatalogDetailedView(SingleObjectMixin, FormView): model = SpecialistCatalog form_class = TranslationForm template_name = "client/specialist_catalog/catalog_detailed.html" success_url = reverse_lazy("service_thanks") - def get_object(self, queryset=None): - obj = self.model.objects.language().get(country__url=self.kwargs.get('slug')) + if self.kwargs.get('type') is "country": + obj = self.model.objects.language(lang).get(country__url=self.kwargs.get('slug')) + else: + obj = self.model.objects.language(lang).get(city__url=self.kwargs.get('slug')) self.object = obj return obj def get_context_data(self, **kwargs): self.get_object() - context = super(CatalogDetailedCountryView, self).get_context_data(**kwargs) + context = super(CatalogDetailedView, self).get_context_data(**kwargs) context['object'] = self.object return context @@ -191,4 +163,9 @@ class CatalogDetailedCountryView(SingleObjectMixin, FormView): def get_initial(self): obj = self.get_object() - return {'country':obj.country.name} \ No newline at end of file + init = {} + init['country'] = obj.country.name + if self.kwargs.get('type') is "city": + init['city'] = obj.city.name + return init +