refactor some views and filling db scripts

remotes/origin/1203
Ivan Kovalkovskyi 10 years ago
parent b3d0eb8072
commit 72014cdf02
  1. 1
      specialist_catalog/management/__init__.py
  2. 1
      specialist_catalog/management/commands/__init__.py
  3. 34
      specialist_catalog/management/commands/create_city_page.py
  4. 33
      specialist_catalog/management/commands/create_country_page.py
  5. 22
      specialist_catalog/models.py
  6. 6
      specialist_catalog/urls.py
  7. 51
      specialist_catalog/views.py

@ -0,0 +1 @@
__author__ = 'dart_vaider'

@ -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"<ul><li>Лондон</li><li>Киев</li><li>Барселона</li></ul>"
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

@ -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"<ul><li>Лондон</li><li>Киев</li><li>Барселона</li></ul>"
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

@ -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

@ -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<slug>.*)/$', CatalogDetailedCityView.as_view(), name="spec_catalog_city"),
url(r'^country/(?P<slug>.*)/$', CatalogDetailedCountryView.as_view(), name="spec_catalog_country"),
url(r'^city/(?P<slug>.*)/$', CatalogDetailedView.as_view(), {'type': 'city'}, name="spec_catalog_city"),
url(r'^country/(?P<slug>.*)/$', CatalogDetailedView.as_view(), {'type': 'country'}, name="spec_catalog_country"),
)

@ -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}
init = {}
init['country'] = obj.country.name
if self.kwargs.get('type') is "city":
init['city'] = obj.city.name
return init

Loading…
Cancel
Save