remotes/origin/1203
Nazar Kotjuk 10 years ago
parent 4bf1894e80
commit b69c5d9ca9
  1. 3
      .gitignore
  2. 4
      accounts/admin_urls.py
  3. 28
      accounts/forms.py
  4. 2
      import_xls/excel_settings.py
  5. BIN
      locale/en/LC_MESSAGES/django.po
  6. 0
      logs/django_request.log
  7. 16
      logs/mylog.log
  8. 7056
      logs/mylog.log.1
  9. 2
      proj/admin_urls.py
  10. 1
      proj/settings.py
  11. 5
      proj/urls.py
  12. 2
      proj/views.py
  13. 23
      specialist_catalog/management/commands/create_city_page.py
  14. 24
      specialist_catalog/management/commands/create_country_page.py
  15. 15
      specialist_catalog/models.py
  16. 5
      specialist_catalog/urls.py
  17. 49
      specialist_catalog/views.py
  18. 10
      templates/admin/includes/admin_nav.html
  19. 24
      templates/admin/specialist/catalog_all.html
  20. 106
      templates/admin/specialist/catalog_new.html
  21. 2
      templates/client/accounts/calendar.html
  22. 6
      templates/client/includes/header.html
  23. 6
      templates/client/robots.txt
  24. 32
      templates/client/specialist_catalog/catalog.html
  25. 25
      templates/client/specialist_catalog/catalog_detailed.html
  26. 2
      wizard/description.txt

3
.gitignore vendored

@ -7,6 +7,7 @@
.idea/ .idea/
media/ media/
media media
logs/
Thumbs.db Thumbs.db
npm-debug.log npm-debug.log
/proj/local.py /proj/local.py
@ -14,4 +15,4 @@ npm-debug.log
node_modules node_modules

@ -3,10 +3,6 @@ from django.conf.urls import patterns, url
from admin import UserListView, EditUser from admin import UserListView, EditUser
urlpatterns = patterns('', urlpatterns = patterns('',
#url(r'^registration/$', 'accounts.admin.registration'),
#url(r'^create_admin/$', 'accounts.admin.create_admin'),
#url(r'^create_md5user/$', 'accounts.admin.create_md5'),
# url(r'^change/(?P<pk>.*)/$', EditUser.as_view()),
url(r'^change/(?P<url>.*)/$', 'accounts.admin.user_change'), url(r'^change/(?P<url>.*)/$', 'accounts.admin.user_change'),
url(r'^all/$', UserListView.as_view()), url(r'^all/$', UserListView.as_view()),
url(r'^reset_password_email/$', 'accounts.admin.reset_password_email'), url(r'^reset_password_email/$', 'accounts.admin.reset_password_email'),

@ -83,9 +83,7 @@ class UserForm(forms.ModelForm):
company = forms.ChoiceField(label='Компания', company = forms.ChoiceField(label='Компания',
choices=[(item.id, item.name) for item in Company.objects.language().all()], choices=[(item.id, item.name) for item in Company.objects.language().all()],
required=False) required=False)
organiser = forms.ChoiceField(label='Организатор',
choices=[(item.id, item.name) for item in Organiser.objects.language().all()],
required=False, initial=None)
title = forms.CharField(widget=forms.TextInput(attrs={'style': 'width: 550px'}), required=False) title = forms.CharField(widget=forms.TextInput(attrs={'style': 'width: 550px'}), required=False)
descriptions = forms.CharField(widget=forms.TextInput(attrs={'style': 'width: 550px'}), required=False) descriptions = forms.CharField(widget=forms.TextInput(attrs={'style': 'width: 550px'}), required=False)
keywords = forms.CharField(widget=forms.TextInput(attrs={'style': 'width: 550px'}), required=False) keywords = forms.CharField(widget=forms.TextInput(attrs={'style': 'width: 550px'}), required=False)
@ -105,9 +103,9 @@ class UserForm(forms.ModelForm):
class Meta: class Meta:
model = User model = User
exclude = ('username', 'email', 'last_login', 'password', 'is_admin', 'rating', 'is_superuser', 'is_staff' exclude = ('organiser', 'username', 'email', 'last_login', 'password', 'is_admin', 'rating', 'is_superuser', 'is_staff'
'date_joined', 'date_joined',
'date_registered', 'date_modified') 'date_registered', 'date_modified', 'is_active')
def save(self, force_insert=False, force_update=False, commit=True): def save(self, force_insert=False, force_update=False, commit=True):
@ -139,16 +137,16 @@ class UserForm(forms.ModelForm):
profile.save() profile.save()
return user return user
def clean_url(self): #def clean_url(self):
url = self.cleaned_data.get('url') # url = self.cleaned_data.get('url')
if url: # if url:
if User.objects.get(url=translit_with_separator(url)): # if User.objects.get(url=translit_with_separator(url)):
raise forms.ValidationError('Такой урл уже занят') # raise forms.ValidationError('Такой урл уже занят')
else: # else:
return url # return url
def clean_organiser(self): #def clean_organiser(self):
return clean_relation_field(self, 'organiser', Organiser) # return clean_relation_field(self, 'organiser', Organiser)
def clean_company(self): def clean_company(self):
return clean_relation_field(self, 'company', Company) return clean_relation_field(self, 'company', Company)

@ -27,7 +27,7 @@ def get_theme(value):
def get_tag(value): def get_tag(value):
tag_names = [item['name'] for item in value.all().values('name')] tag_names = [item['name'] for item in value.language('ru').all().values('name')]
return ','.join(tag_names) return ','.join(tag_names)
def get_place_type(value): def get_place_type(value):

Binary file not shown.

@ -1,16 +0,0 @@
2015-07-28 12:23:39,172 [DEBUG] django.db.backends: (0.001) SHOW TABLES; args=()
2015-07-28 12:23:39,175 [DEBUG] django.db.backends: (0.000) SELECT `service_service`.`id`, `service_service`.`url`, `service_service`.`currency`, `service_service`.`price`, `service_service`.`params`, `service_service`.`template`, `service_service`.`type`, `service_service`.`sort`, `service_service`.`main_page`, `service_service`.`meta_id` FROM `service_service`; args=()
2015-07-28 12:23:39,200 [DEBUG] django.db.backends: (0.002) SHOW TABLES; args=()
2015-07-28 12:23:39,201 [DEBUG] django.db.backends: (0.000) SELECT `service_service`.`id`, `service_service`.`url`, `service_service`.`currency`, `service_service`.`price`, `service_service`.`params`, `service_service`.`template`, `service_service`.`type`, `service_service`.`sort`, `service_service`.`main_page`, `service_service`.`meta_id` FROM `service_service`; args=()
2015-07-28 12:23:39,232 [DEBUG] django.db.backends: (0.001) SHOW TABLES; args=()
2015-07-28 12:23:39,233 [DEBUG] django.db.backends: (0.000) SELECT `service_service`.`id`, `service_service`.`url`, `service_service`.`currency`, `service_service`.`price`, `service_service`.`params`, `service_service`.`template`, `service_service`.`type`, `service_service`.`sort`, `service_service`.`main_page`, `service_service`.`meta_id` FROM `service_service`; args=()
2015-07-28 12:23:39,247 [DEBUG] django.db.backends: (0.001) SHOW TABLES; args=()
2015-07-28 12:23:39,248 [DEBUG] django.db.backends: (0.000) SELECT `service_service`.`id`, `service_service`.`url`, `service_service`.`currency`, `service_service`.`price`, `service_service`.`params`, `service_service`.`template`, `service_service`.`type`, `service_service`.`sort`, `service_service`.`main_page`, `service_service`.`meta_id` FROM `service_service`; args=()
2015-07-28 12:23:39,284 [DEBUG] django.db.backends: (0.001) SHOW TABLES; args=()
2015-07-28 12:23:39,285 [DEBUG] django.db.backends: (0.000) SELECT `service_service`.`id`, `service_service`.`url`, `service_service`.`currency`, `service_service`.`price`, `service_service`.`params`, `service_service`.`template`, `service_service`.`type`, `service_service`.`sort`, `service_service`.`main_page`, `service_service`.`meta_id` FROM `service_service`; args=()
2015-07-28 12:23:39,304 [DEBUG] django.db.backends: (0.001) SHOW TABLES; args=()
2015-07-28 12:23:39,305 [DEBUG] django.db.backends: (0.000) SELECT `service_service`.`id`, `service_service`.`url`, `service_service`.`currency`, `service_service`.`price`, `service_service`.`params`, `service_service`.`template`, `service_service`.`type`, `service_service`.`sort`, `service_service`.`main_page`, `service_service`.`meta_id` FROM `service_service`; args=()
2015-07-28 12:23:39,460 [DEBUG] root: Using default logger
2015-07-28 12:23:39,460 [DEBUG] root: Using default logger
2015-07-28 12:24:17,361 [DEBUG] django.db.backends: (0.001) SELECT `accounts_user`.`id`, `accounts_user`.`password`, `accounts_user`.`last_login`, `accounts_user`.`is_superuser`, `accounts_user`.`email`, `accounts_user`.`username`, `accounts_user`.`first_name`, `accounts_user`.`last_name`, `accounts_user`.`rating`, `accounts_user`.`url`, `accounts_user`.`is_active`, `accounts_user`.`is_staff`, `accounts_user`.`is_admin`, `accounts_user`.`date_joined`, `accounts_user`.`date_registered`, `accounts_user`.`date_modified`, `accounts_user`.`organiser_id`, `accounts_user`.`translator_id`, `accounts_user`.`company_id`, `accounts_user`.`position` FROM `accounts_user` WHERE `accounts_user`.`email` = 'vaniakov95@gmail.com' ; args=('vaniakov95@gmail.com',)
2015-07-28 12:24:25,526 [DEBUG] django.db.backends: (0.000) SELECT `accounts_user`.`id`, `accounts_user`.`password`, `accounts_user`.`last_login`, `accounts_user`.`is_superuser`, `accounts_user`.`email`, `accounts_user`.`username`, `accounts_user`.`first_name`, `accounts_user`.`last_name`, `accounts_user`.`rating`, `accounts_user`.`url`, `accounts_user`.`is_active`, `accounts_user`.`is_staff`, `accounts_user`.`is_admin`, `accounts_user`.`date_joined`, `accounts_user`.`date_registered`, `accounts_user`.`date_modified`, `accounts_user`.`organiser_id`, `accounts_user`.`translator_id`, `accounts_user`.`company_id`, `accounts_user`.`position` FROM `accounts_user` WHERE `accounts_user`.`email` = 'vaniakov95@gmail.com' ; args=('vaniakov95@gmail.com',)

File diff suppressed because one or more lines are too long

@ -34,7 +34,7 @@ urlpatterns = required(
url(r'^settings/', include('settings.admin_urls')), url(r'^settings/', include('settings.admin_urls')),
url(r'^meta/', include('meta.admin_urls')), url(r'^meta/', include('meta.admin_urls')),
url(r'^import_xls/', include('import_xls.admin_urls')), url(r'^import_xls/', include('import_xls.admin_urls')),
url(r'^specialist_catalog/', include('specialist_catalog.admin_urls')), url(r'^translator_catalog/', include('specialist_catalog.admin_urls')),
url(r'^language/add/', 'directories.admin.language_add'), url(r'^language/add/', 'directories.admin.language_add'),
url(r'^currency/add/', 'directories.admin.currency_add'), url(r'^currency/add/', 'directories.admin.currency_add'),

@ -353,7 +353,6 @@ INSTALLED_APPS = (
'password_reset', # reset password 'password_reset', # reset password
'social.apps.django_app.default', # social auth 'social.apps.django_app.default', # social auth
'core', 'core',
'wizard',
'specialist_catalog', 'specialist_catalog',
) )

@ -29,7 +29,6 @@ sitemaps = {
handler404 = 'proj.views.error404' handler404 = 'proj.views.error404'
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^wizard/', include('wizard.urls')),
url(r'^acquire_email/$', 'registration.backends.default.views.acquire_email', name = 'acquire_email'), url(r'^acquire_email/$', 'registration.backends.default.views.acquire_email', name = 'acquire_email'),
url(r'^rss/', include('core.urls')), url(r'^rss/', include('core.urls')),
#url(r'^__debug__/', include(debug_toolbar.urls)), #url(r'^__debug__/', include(debug_toolbar.urls)),
@ -44,7 +43,8 @@ urlpatterns = patterns('',
url(r'^page/', include('core.simple_urls')), url(r'^page/', include('core.simple_urls')),
url(r'^theme/', include('theme.urls')), url(r'^theme/', include('theme.urls')),
url(r'^places/', include('place_exposition.urls')), url(r'^places/', include('place_exposition.urls')),
url(r'^translators/', include('translator.urls')), #url(r'^translators/', include('translator.urls')),
url(r'^translators/', include('specialist_catalog.urls')),
url(r'^expo-b/', include('expobanner.urls')), url(r'^expo-b/', include('expobanner.urls')),
url(r'^', include('accounts.urls')), url(r'^', include('accounts.urls')),
url(r'^', include('exposition.urls')), url(r'^', include('exposition.urls')),
@ -55,7 +55,6 @@ urlpatterns = patterns('',
url(r'^', include('company.urls')), url(r'^', include('company.urls')),
url(r'^', include('photoreport.urls')), url(r'^', include('photoreport.urls')),
url(r'^', include('article.urls')), url(r'^', include('article.urls')),
url(r'^specialist/', include("specialist_catalog.urls")),
url(r'^country/', include('country.urls')), url(r'^country/', include('country.urls')),
url(r'^city/', include('city.urls')), url(r'^city/', include('city.urls')),
url(r'^organiser/', include('organiser.urls')), url(r'^organiser/', include('organiser.urls')),

@ -26,7 +26,6 @@ def clear_slashes(str_):
str_ = str_[:-1] str_ = str_[:-1]
return str_ return str_
def add_seo(request): def add_seo(request):
url = request.path url = request.path
lang = get_language() lang = get_language()
@ -39,7 +38,6 @@ def add_seo(request):
seo_text = None seo_text = None
return seo_text return seo_text
def expo_context(request): def expo_context(request):
banners_themes = [24, 34, 4] banners_themes = [24, 34, 4]
banner_tags = [141, 142, 143, 156, 206, 231, 232, 390, 391, 400, 457, 500, 536, 537, 539, 457, 500, 686, 715, 765, banner_tags = [141, 142, 143, 156, 206, 231, 232, 390, 391, 400, 457, 500, 536, 537, 539, 457, 500, 686, 715, 765,

@ -1,24 +1,32 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
from django.utils.translation import activate
from city.models import City from city.models import City
from specialist_catalog.models import SpecialistCatalog from specialist_catalog.models import SpecialistCatalog
default_text = u"Планируете посетить выставку в %s?" \ default_text = u"Планируете посетить выставку %s?" \
u" Мы предлагаем Вам подобрать переводчика именно под Ваши цели и потребности. " \ u" Мы предлагаем Вам подобрать переводчика именно под Ваши цели и потребности. " \
u"Специализируясь уже более 7 лет на предоставлении переводчиков на выставки и конференции " \ u"Специализируясь уже более 7 лет на предоставлении переводчиков на выставки и конференции " \
u"%s, мы можем предоставить профессионалов со знанием разных " \ u"%s, мы можем предоставить профессионалов со знанием разных " \
u"языков на гибких для Вас условиях. Каждый заказ индивидуален для нас, " \ u"языков на гибких для Вас условиях. Каждый заказ индивидуален для нас, " \
u"и итоговая цена зависит от вида перевода, тематики, срочности подбора " \ u"и итоговая цена зависит от вида перевода, тематики, срочности подбора " \
u"специалиста, города и объема работы." u"специалиста, города и объема работы."
default_title = u"Переводчики в %s" default_title = u"Переводчики %s"
default_logo = "specialist_catalog/logo_preview/default_logo.jpg"
default_cities = u"<ul><li>Лондон</li><li>Киев</li><li>Барселона</li></ul>" default_benefits = """<ul class="content_list">
<li>Эффективная цена</li>
<li>Опыт и профессионализм специалистов</li>
<li>Знание разных менталитетов и психологических аспектов проведения переговоров с зарубежными бизнесменами</li>
<li>Ориентированность в мировых выставочных комплексах</li>
<li>Гарантии, отчетность по договору, прозрачные безналичные расчеты в России</li>
</ul>"""
class Command(BaseCommand): class Command(BaseCommand):
def handle(self, *args, **options): def handle(self, *args, **options):
cities = list(City.objects.language('ru').order_by('id')) activate('ru')
cities = set(City.used.expo_cities())
for cty in cities: for cty in cities:
name = cty.inflect or cty.name name = cty.inflect or cty.name
sc = SpecialistCatalog( sc = SpecialistCatalog(
@ -27,8 +35,7 @@ class Command(BaseCommand):
city=cty, city=cty,
title=default_title % name, title=default_title % name,
main_descr=default_text % (name, name), main_descr=default_text % (name, name),
logo_preview=default_logo, benefits = default_benefits
big_cities=default_cities,
) )
sc.save() sc.save()
print cty.url, " -> ", cty.country.url print cty.url, " -> ", cty.country.url

@ -1,24 +1,31 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
from django.utils.translation import activate
from country.models import Country from country.models import Country
from specialist_catalog.models import SpecialistCatalog from specialist_catalog.models import SpecialistCatalog
default_text = u"Планируете посетить выставку в %s?" \ default_text = u"Планируете посетить выставку %s?" \
u" Мы предлагаем Вам подобрать переводчика именно под Ваши цели и потребности. " \ u" Мы предлагаем Вам подобрать переводчика именно под Ваши цели и потребности. " \
u"Специализируясь уже более 7 лет на предоставлении переводчиков на выставки и конференции " \ u"Специализируясь уже более 7 лет на предоставлении переводчиков на выставки и конференции " \
u"%s, мы можем предоставить профессионалов со знанием разных " \ u"%s, мы можем предоставить профессионалов со знанием разных " \
u"языков на гибких для Вас условиях. Каждый заказ индивидуален для нас, " \ u"языков на гибких для Вас условиях. Каждый заказ индивидуален для нас, " \
u"и итоговая цена зависит от вида перевода, тематики, срочности подбора " \ u"и итоговая цена зависит от вида перевода, тематики, срочности подбора " \
u"специалиста, города и объема работы." u"специалиста, города и объема работы."
default_title = u"Переводчики в %s" default_title = u"Переводчики %s"
default_logo = "specialist_catalog/logo_preview/ukraine.gif" default_benefits = """<ul class="content_list">
default_cities = u"<ul><li>Лондон</li><li>Киев</li><li>Барселона</li></ul>" <li>Эффективная цена</li>
lang = 'ru' <li>Опыт и профессионализм специалистов</li>
<li>Знание разных менталитетов и психологических аспектов проведения переговоров с зарубежными бизнесменами</li>
<li>Ориентированность в мировых выставочных комплексах</li>
<li>Гарантии, отчетность по договору, прозрачные безналичные расчеты в России</li>
</ul>"""
class Command(BaseCommand): class Command(BaseCommand):
def handle(self, *args, **options): def handle(self, *args, **options):
countries = Country.objects.language('ru').order_by('name') activate('ru')
countries = set(Country.objects.expo_countries())
for cntry in countries: for cntry in countries:
name = cntry.inflect or cntry.name name = cntry.inflect or cntry.name
sc = SpecialistCatalog( sc = SpecialistCatalog(
@ -26,8 +33,7 @@ class Command(BaseCommand):
country=cntry, country=cntry,
title=default_title % name, title=default_title % name,
main_descr=default_text % (name, name), main_descr=default_text % (name, name),
logo_preview=default_logo, benefits = default_benefits
big_cities=default_cities,
) )
sc.save() sc.save()
print "created for: %s" % cntry.url print "created for: %s" % cntry.url

@ -30,15 +30,16 @@ class SpecialistCatalog(TranslatableModel):
logo_preview = models.ImageField(verbose_name=u"Логотип", blank=True, upload_to='specialist_catalog/logo_preview/') 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/') place_photo = models.ImageField(verbose_name=u"Фото для города", blank=True, upload_to='specialist_catalog/place_photo/')
specialists = models.ManyToManyField(Specialist, verbose_name=u"Специалисты", blank=True) specialists = models.ManyToManyField(Specialist, verbose_name=u"Специалисты", blank=True)
city = models.ForeignKey(City, on_delete=models.PROTECT, verbose_name=u"Город", unique=True, blank=True) city = models.ForeignKey(City, on_delete=models.PROTECT, verbose_name=u"Город", blank=True, null=True)
country = models.ForeignKey(Country, on_delete=models.PROTECT, verbose_name=u"Страна", blank=False) country = models.ForeignKey(Country, on_delete=models.PROTECT, verbose_name=u"Страна", blank=False)
type = models.PositiveSmallIntegerField(verbose_name=u"Тип(Страна/Город)", default=2) type = models.PositiveSmallIntegerField(verbose_name=u"Тип(Страна/Город)", default=2)
translations = TranslatedFields( translations = TranslatedFields(
title=models.CharField(max_length=255, verbose_name=u"Заголовок"), title=models.CharField(max_length=255, verbose_name=u"Заголовок"),
main_descr=models.CharField(max_length=1000, verbose_name=u"Краткое описание"), main_descr=models.CharField(max_length=1000, verbose_name=u"Краткое описание"),
benefits=models.CharField(max_length=2000, verbose_name=u"Преимущества"), benefits=models.CharField(max_length=2000, verbose_name=u"Преимущества"),
big_cities=models.TextField(verbose_name=u"Крупные города") big_cities=models.TextField(verbose_name=u"Крупные города", blank=True)
) )
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -81,7 +82,15 @@ class SpecialistCatalog(TranslatableModel):
return self return self
def __unicode__(self): def __unicode__(self):
return self.title return self.lazy_translation_getter('title', unicode(self.pk))
def place(self):
if self.type == _country:
return self.country
elif self.type == _city:
return self.city
else:
return None
class Feedback(models.Model): class Feedback(models.Model):

@ -1,8 +1,11 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.conf.urls import url, patterns from django.conf.urls import url, patterns
from .views import CatalogDetailedView from .views import CatalogDetailedView, SpecCatalog
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^city/$', SpecCatalog.as_view(), {'type': 'city'}, name="spec_city"),
url(r'^country/$', SpecCatalog.as_view(), {'type': 'country'}, name="spec_country"),
url(r'^city/(?P<slug>.*)/$', CatalogDetailedView.as_view(), {'type': 'city'}, name="spec_catalog_city"), 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"), url(r'^country/(?P<slug>.*)/$', CatalogDetailedView.as_view(), {'type': 'country'}, name="spec_catalog_country"),
) )

@ -1,13 +1,15 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.views.generic import CreateView, UpdateView, DeleteView, ListView, FormView, DetailView from django.views.generic import CreateView, UpdateView, DeleteView, ListView, FormView, DetailView
from django.views.generic.detail import SingleObjectMixin from django.views.generic.detail import SingleObjectMixin
from django.utils.translation import ugettext as _
from .forms import * from .forms import *
from django.core.urlresolvers import reverse_lazy from django.core.urlresolvers import reverse_lazy
from django.conf import settings from django.conf import settings
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from service.order_forms import TranslationForm from service.order_forms import TranslationForm
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect, Http404
from django.utils.translation import get_language from .models import _city, _country
# =========== ADMIN VIEWS =========== # =========== ADMIN VIEWS ===========
@ -133,8 +135,6 @@ class FeedbackDeleteView(DeleteView):
# ========= CLIENT VIEWS ============ # ========= CLIENT VIEWS ============
lang = get_language()[:2]
class CatalogDetailedView(SingleObjectMixin, FormView): class CatalogDetailedView(SingleObjectMixin, FormView):
model = SpecialistCatalog model = SpecialistCatalog
@ -142,11 +142,20 @@ class CatalogDetailedView(SingleObjectMixin, FormView):
template_name = "client/specialist_catalog/catalog_detailed.html" template_name = "client/specialist_catalog/catalog_detailed.html"
success_url = reverse_lazy("service_thanks") success_url = reverse_lazy("service_thanks")
def get_object(self, queryset=None): def get_catalog_obj(self):
if self.kwargs.get('type') is "country": if self.kwargs.get('type') is "country":
obj = self.model.objects.language(lang).get(country__url=self.kwargs.get('slug')) try:
return self.model.objects.language().get(type=1, country__url=self.kwargs.get('slug'))
except self.model.DoesNotExist:
raise Http404
else: else:
obj = self.model.objects.language(lang).get(city__url=self.kwargs.get('slug')) try:
return self.model.objects.language().get(type=2, city__url=self.kwargs.get('slug'))
except self.model.DoesNotExist:
raise Http404
def get_object(self, queryset=None):
obj = self.get_catalog_obj()
self.object = obj self.object = obj
return obj return obj
@ -169,3 +178,29 @@ class CatalogDetailedView(SingleObjectMixin, FormView):
init['city'] = obj.city.name init['city'] = obj.city.name
return init return init
class SpecCatalog(ListView):
model = SpecialistCatalog
template_name = 'client/specialist_catalog/catalog.html'
def get_queryset(self):
if self.kwargs.get('type') == "country":
ctype = _country
else:
ctype = _city
qs = list(self.model.objects.language().select_related('country', 'city').filter(type=ctype))
if ctype == _country:
result = sorted(qs, key=lambda x: x.country.name)
else:
result = sorted(qs, key=lambda x: x.city.name)
return result
def get_context_data(self, **kwargs):
context = super(SpecCatalog, self).get_context_data(**kwargs)
if self.kwargs.get('type') == "country":
context['title'] = _(u'Переводчики по странам')
else:
context['title'] = _(u'Переводчики по городам')
return context

@ -29,11 +29,7 @@
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="icon-eye-open"></i> Пользователи<b class="caret"></b></a> <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="icon-eye-open"></i> Пользователи<b class="caret"></b></a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="/admin/accounts/all">Пользователи</a></li> <li><a href="/admin/accounts/all">Пользователи</a></li>
<li><a href="/admin/translator/all">Переводчики</a></li>
<li><a href="/admin/organiser/all">Организаторы</a></li>
<li><a href="/admin/company/all">Компании</a></li> <li><a href="/admin/company/all">Компании</a></li>
<li class="divider"></li>
<li><a href="/admin/import-organiser">Импорт организаторов</a></li>
</ul> </ul>
</li> </li>
@ -46,7 +42,6 @@
<li><a href="/admin/theme/theme/all">Тематики</a></li> <li><a href="/admin/theme/theme/all">Тематики</a></li>
<li><a href="/admin/theme/tag/all">Теги</a></li> <li><a href="/admin/theme/tag/all">Теги</a></li>
<li><a href="/admin/service/all">Услуги</a></li> <li><a href="/admin/service/all">Услуги</a></li>
<li><a href="/admin/settings">Настройки</a></li>
<li><a href="/admin/settings/main-page/">Главная страница</a></li> <li><a href="/admin/settings/main-page/">Главная страница</a></li>
<li><a href="/admin/meta/all/">Мета</a></li> <li><a href="/admin/meta/all/">Мета</a></li>
@ -61,9 +56,8 @@
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="/admin/article/blog/all/">Статьи</a></li> <li><a href="/admin/article/blog/all/">Статьи</a></li>
<li><a href="/admin/article/news/all/">Новости</a></li> <li><a href="/admin/article/news/all/">Новости</a></li>
<li><a href="#">Отзывы</a></li> <li><a href="/admin/translator_catalog/catalog/all/">Каталог переводчиков</a></li>
<li><a href="/admin/language/add">Языки</a></li> <li><a href="/admin/translator_catalog/specialist/all/">Список переводчиков</a></li>
<li><a href="/admin/currency/add">Валюты</a></li>
</ul> </ul>
</li> </li>
<li class="dropdown"> <li class="dropdown">

@ -10,10 +10,8 @@
<thead> <thead>
<tr> <tr>
<th>&nbsp; </th>
<th>Заголовок</th> <th>Заголовок</th>
<th>{% if request.path == "/admin/specialist_catalog/catalog/city/" %}Город{% elif request.path == "/admin/specialist_catalog/catalog/country/" %}Страна{% else %}Страна/Город{% endif %}</th> <th>{% if request.path == "/admin/specialist_catalog/catalog/city/" %}Город{% elif request.path == "/admin/specialist_catalog/catalog/country/" %}Страна{% else %}Страна/Город{% endif %}</th>
<th>Количество специалистов</th>
<th>Link</th> <th>Link</th>
<th>&nbsp;</th> <th>&nbsp;</th>
</tr> </tr>
@ -21,15 +19,9 @@
<tbody> <tbody>
{% for item in object_list %} {% for item in object_list %}
<tr> <tr>
<td>
{% thumbnail item.logo_preview "100x100" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}</td>
<td>{{ item.title }}</td> <td>{{ item.title }}</td>
<td>{% if item.type == 1%}{{ item.country.name }}{% else %}{{ item.city.name }}{% endif %}</td> <td>{% if item.type == 1%}{{ item.country.name }}{% else %}{{ item.city.name }}{% endif %}</td>
<td>{{ item.specialists.count }}</td> <td><a href="{{ item.get_absolute_url }}" target="_blank">на сайте</a></td>
<td><a href="{{ item.get_absolute_url }}">Заценить</a></td>
<td class="center sorting_1"> <td class="center sorting_1">
<a class="btn-small btn-info" href='{% url "catalog_edit" item.id %}'> <a class="btn-small btn-info" href='{% url "catalog_edit" item.id %}'>
Изменить Изменить
@ -46,19 +38,9 @@
</tbody> </tbody>
</table> </table>
<a class="btn btn-success" href='{% url "catalog_new" %}'> <a class="btn btn-success" href='{% url "catalog_new" %}'>
<i class="icon-plus-sign icon-white"></i> Хочу еще один </a> <i class="icon-plus-sign icon-white"></i> Добавить </a>
</div> </div>
{% include 'admin/includes/admin_pagination.html' %}
<div class="pagination pagination-centered">
<ul>
{% if page_obj.has_previous %}
<li> <a href="?page={{ page_obj.previous_page_number }}"></a></li>
{% endif %}
{% if page_obj.has_next %}
<li><a href="?page={{ page_obj.next_page_number }}"></a></li>
{% endif %}
</ul>
</div>
</div> </div>
{% endblock %} {% endblock %}

@ -127,77 +127,69 @@
<input class="btn btn-large btn-primary" type="submit" {% if request.path == '/admin/specialist_catalog/catalog/new/' %} value="Добавить" {% else %} value='Изменить' {% endif %}/> <input class="btn btn-large btn-primary" type="submit" {% if request.path == '/admin/specialist_catalog/catalog/new/' %} value="Добавить" {% else %} value='Изменить' {% endif %}/>
<input class="btn btn-large" type="reset" value="Отмена"> <input class="btn btn-large" type="reset" value="Отмена">
<a class="btn btn-large" href="{% url 'catalog_all' %}">Чет передумал(а)</a> <a class="btn btn-large" href="{% url 'catalog_all' %}">Вернуться</a>
</div> </div>
</fieldset> </fieldset>
</form> </form>
<!--Feedbacks block --> <!--Feedbacks block -->
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Отзывы для текущего каталога </h2>
</div>
<div class="box-content">
{% if object.feedback_set.all %} {% if object.feedback_set.all %}
{% with object.feedback_set.all as feedbacks %} {% with object.feedback_set.all as feedbacks %}
<table class="table table-hover">
<thead>
<tr>
<div class="box span8"> <th>Логотип</th>
<div class="box-header well"> <th>Имя</th>
<h2><i class="icon-arrow-down"></i>Отзывы для текущего каталога </h2> <th>Компания</th>
</div> <th>Текст</th>
<div class="box-content"> <th>&nbsp;</th>
<table class="table table-hover"> </tr>
<thead> </thead>
<tr> <tbody>
{% for item in feedbacks %}
<th>Логотип</th> <tr>
<th>Имя</th>
<th>Компания</th>
<th>Текст</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in feedbacks %}
<tr>
<td> <td>
{% thumbnail item.logo "100x100" crop="center" as im %} {% thumbnail item.logo "100x100" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}"> <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}</td> {% endthumbnail %}</td>
<td>{{ item.name }}</td> <td>{{ item.name }}</td>
<td>{{ item.company }}</td> <td>{{ item.company }}</td>
<td>{{ item.text }}</td> <td>{{ item.text }}</td>
<td class="center sorting_1"> <td class="center sorting_1">
<a class="btn-small btn-info" href='{% url "feedback_edit" catalog_pk=object.id id=item.id %}'> <a class="btn-small btn-info" href='{% url "feedback_edit" catalog_pk=object.id id=item.id %}'>
Изменить Изменить
</a> </a>
</td> </td>
<td> <td>
<a class="btn-small btn-danger delete" href='{% url "feedback_delete" item.id %}'> <a class="btn-small btn-danger delete" href='{% url "feedback_delete" item.id %}'>
Удалить Удалить
</a> </a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
<a class="btn btn-success" href='{% url "feedback_new" object.id %}'> <a class="btn btn-success" href='{% url "feedback_new" object.id %}'>
<i class="icon-plus-sign icon-white"></i> Хочу еще один </a> <i class="icon-plus-sign icon-white"></i> Хочу еще один </a>
</div>
<div class="pagination pagination-centered">
<ul>
{% if page_obj.has_previous %}
<li><a href="?page={{ page_obj.previous_page_number }}"></a></li>
{% endif %}
{% if page_obj.has_next %}
<li><a href="?page={{ page_obj.next_page_number }}"></a></li>
{% endif %}
</ul>
</div>
</div>
{% endwith %} {% endwith %}
{% elif object.id %} {% elif object.id %}
Отзывов еще нет, Отзывов еще нет,
<a class="btn btn-success" href='{% url "feedback_new" catalog_pk=object.id%}'> <a class="btn btn-success" href='{% url "feedback_new" catalog_pk=object.id%}'>
<i class="icon-plus-sign icon-white"></i> Добавить </a> <i class="icon-plus-sign icon-white"></i> Добавить </a>
{% endif %} {% endif %}
</div>
</div>
{% endblock %} {% endblock %}

@ -53,6 +53,6 @@
{% endblock %} {% endblock %}
{% block scripts %} {% block scripts %}
<script src="{% static 'client/js/profile.js' %}"></script> <script src="{% static 'client/js/profile.js' %}"></script>+++++++++++++++++++++++++++++++++++++++++++++++++++++++
{% endblock %} {% endblock %}

@ -12,12 +12,6 @@
<div class="header-top clearfix"> <div class="header-top clearfix">
<div class="ht-main"> <div class="ht-main">
{% if user.is_authenticated %}
{% if user.is_organiser %}
<div class="add-link"><a class="l-button ico" href="{% url "add_exposition" %}">добавить событие </a></div>
{% endif %}
{% endif %}
<ul class="lang-switch"> <ul class="lang-switch">
{% for lang in LANGUAGES %} {% for lang in LANGUAGES %}

@ -43,6 +43,8 @@ Disallow: /callback/
Disallow: /register/ Disallow: /register/
Disallow: /register-complete/ Disallow: /register-complete/
Disallow: /registration/reply/ Disallow: /registration/reply/
Disallow: /wizard/
Disallow: /acquire_email/
Disallow: /address_book_process.php Disallow: /address_book_process.php
Disallow: /account.php Disallow: /account.php
Disallow: /account_edit.php Disallow: /account_edit.php
@ -145,6 +147,8 @@ Disallow: /callback/
Disallow: /register/ Disallow: /register/
Disallow: /register-complete/ Disallow: /register-complete/
Disallow: /registration/reply/ Disallow: /registration/reply/
Disallow: /wizard/
Disallow: /acquire_email/
Disallow: /address_book_process.php Disallow: /address_book_process.php
Disallow: /account.php Disallow: /account.php
Disallow: /account_edit.php Disallow: /account_edit.php
@ -247,6 +251,8 @@ Disallow: /callback/
Disallow: /register/ Disallow: /register/
Disallow: /register-complete/ Disallow: /register-complete/
Disallow: /registration/reply/ Disallow: /registration/reply/
Disallow: /wizard/
Disallow: /acquire_email/
Disallow: /address_book_process.php Disallow: /address_book_process.php
Disallow: /account.php Disallow: /account.php
Disallow: /account_edit.php Disallow: /account_edit.php

@ -0,0 +1,32 @@
{% extends "client/base_catalog.html" %}
{% load static %}
{% load i18n %}
{% load template_filters %}
{% block bread_scrumbs %}
<div class="bread-crumbs">
<a href="/">{% trans 'Главная страница' %}</a>
<strong>{{ title }}</strong>
</div>
{% endblock %}
{% block content_list %}
{% with objects=object_list %}
{% for obj in objects %}
{% set cur_word = obj.place.name %}
{% if cur_word|slice:":1"|lower != prev_word|slice:":1"|lower and forloop.counter != 1 %}
</ul>
{% endif %}
{% if cur_word|slice:":1"|lower != prev_word|slice:":1"|lower %}
<ul class="leter-list">
<div class="leter"><font size="5">{{ cur_word|slice:":1"|upper }}</font></div>
{% endif %}
<li>
<a href="{{ obj.get_absolute_url }}">{{ obj.place }}</a>
</li>
{% set prev_word = obj.place.name %}
{% endfor %}
{% endwith %}
{% endblock %}

@ -3,8 +3,20 @@
{% load thumbnail %} {% load thumbnail %}
{% load i18n %} {% load i18n %}
{% block head_scripts %}
{% block bread_scrumbs %}
<div class="bread-crumbs">
<a href="/">{% trans 'Главная страница' %}</a>
{% if object.type == 1 %}
<a href="{% url 'spec_country' %}">{% trans 'Переводчики по странам' %}</a>
{% else %}
<a href="{% url 'spec_city' %}">{% trans 'Переводчики по городам' %}</a>
{% endif %}
<strong>{{ object.place }}</strong>
</div>
{% endblock %} {% endblock %}
{% block page_body%} {% block page_body%}
@ -15,9 +27,7 @@
<div class="item-wrap place clearfix"> <div class="item-wrap place clearfix">
<aside> <aside>
<div class="i-pict"> <div class="i-pict">
{% thumbnail object.logo_preview "100x100" crop="center" as im %} {% include 'client/includes/show_logo.html' with obj=object %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
</div> </div>
</aside> </aside>
@ -27,7 +37,7 @@
</header> </header>
<div class="i-descr"> <div class="i-descr">
{{ object.main_descr }} {{ object.main_descr|safe }}
</div> </div>
<hr/> <hr/>
@ -51,11 +61,12 @@
</div> </div>
</div> </div>
{{ object.big_cities }} {% if object.big_cities %}
<div class="country_towns"> <div class="country_towns">
<h4>Крупные города:</h4> <h4>Крупные города:</h4>
{{ object.big_cities }} {{ object.big_cities|safe }}
</div> </div>
{% endif %}
<hr /> <hr />

@ -0,0 +1,2 @@
Должен был быть модуль для добавления событий и других даных через кабинет пользователя.
Остановленна разработка по ненадобности, так как делается функционал добавление событий через црм
Loading…
Cancel
Save