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
+