From 515073c6ea01497bd0c03b1922ca10379056e8a9 Mon Sep 17 00:00:00 2001 From: Ivan Kovalkovskyi Date: Wed, 23 Sep 2015 15:46:26 +0300 Subject: [PATCH] specialist catalog search fixed and improved --- specialist_catalog/admin_urls.py | 16 +++++----- specialist_catalog/forms.py | 2 +- specialist_catalog/models.py | 3 +- specialist_catalog/views.py | 30 ++++++------------ templates/admin/specialist/catalog_all.html | 35 +++++++++++++++------ templates/admin/specialist/catalog_new.html | 10 +++--- 6 files changed, 49 insertions(+), 47 deletions(-) diff --git a/specialist_catalog/admin_urls.py b/specialist_catalog/admin_urls.py index df5e4ea6..d6b0444a 100644 --- a/specialist_catalog/admin_urls.py +++ b/specialist_catalog/admin_urls.py @@ -5,16 +5,14 @@ from .views import * urlpatterns = patterns('', url(r'^specialist/new/$', SpecialistCreateView.as_view(), name='specialist_new'), url(r'^specialist/all/$', SpecialistListView.as_view(), name='specialist_all'), - url(r'^specialist/edit/(?P\d{1,4})/$', SpecialistUpdateView.as_view(), name='specialist_edit'), - url(r'^specialist/delete/(?P\d{1,4})/$', SpecialistDeleteView.as_view(), name='specialist_delete'), + url(r'^specialist/edit/(?P\d{1,6})/$', SpecialistUpdateView.as_view(), name='specialist_edit'), + url(r'^specialist/delete/(?P\d{1,6})/$', SpecialistDeleteView.as_view(), name='specialist_delete'), url(r'^catalog/new/$', CatalogCreateView.as_view(), name='catalog_new'), url(r'^catalog/all/$', CatalogListView.as_view(), name='catalog_all'), - url(r'^catalog/city/$', CatalogCityView.as_view(), name='catalog_city'), - url(r'^catalog/country/$', CatalogCountryView.as_view(), name='catalog_country'), - url(r'^catalog/edit/(?P\d{1,4})/$', CatalogUpdateView.as_view(), name='catalog_edit'), - url(r'^catalog/delete/(?P\d{1,4})/$', CatalogDeleteView.as_view(), name='catalog_delete'), - url(r'^catalog/(?P\d{1,4})/add_feedback/$', FeedbackCreateView.as_view(), name='feedback_new'), + url(r'^catalog/edit/(?P\d{1,6})/$', CatalogUpdateView.as_view(), name='catalog_edit'), + url(r'^catalog/delete/(?P\d{1,6})/$', CatalogDeleteView.as_view(), name='catalog_delete'), + url(r'^catalog/(?P\d{1,6})/add_feedback/$', FeedbackCreateView.as_view(), name='feedback_new'), #url(r'^catalog/(?P\d{1,4})/feedbacks/$', FeedbackListView.as_view(), name='feedback_all'), - url(r'^catalog/(?P\d{1,4})/feedback/(?P\d{1,4})/$', FeedbackUpdateView.as_view(), name='feedback_edit'), - url(r'^feedback/delete/(?P\d{1,4})/$', FeedbackDeleteView.as_view(), name='feedback_delete'), + url(r'^catalog/(?P\d{1,6})/feedback/(?P\d{1,4})/$', FeedbackUpdateView.as_view(), name='feedback_edit'), + url(r'^feedback/delete/(?P\d{1,6})/$', FeedbackDeleteView.as_view(), name='feedback_delete'), ) \ No newline at end of file diff --git a/specialist_catalog/forms.py b/specialist_catalog/forms.py index 5bdb1388..7571b53a 100644 --- a/specialist_catalog/forms.py +++ b/specialist_catalog/forms.py @@ -22,7 +22,7 @@ class SpecialistCatalogForm(TranslatableModelForm): class Meta: model = SpecialistCatalog - fields = ['price', 'currency', 'logo_preview', 'main_descr', 'place_photo', + fields = ['price', 'currency', 'logo', 'main_descr', 'place_photo', 'specialists', 'city', 'country', 'type', 'title', 'benefits', 'big_cities'] widgets = { 'type': forms.Select(choices=(('1', 'Country'), ('2', 'City'))), diff --git a/specialist_catalog/models.py b/specialist_catalog/models.py index 36a7b578..f92a0cd3 100644 --- a/specialist_catalog/models.py +++ b/specialist_catalog/models.py @@ -28,13 +28,14 @@ class Specialist(models.Model): class SpecialistCatalog(TranslatableModel): price = models.IntegerField(verbose_name=u"Цена", default=200) currency = models.CharField(max_length=255, verbose_name=u"Валюта", default=u"EUR") - logo_preview = models.ImageField(verbose_name=u"Логотип", blank=True, upload_to='specialist_catalog/logo_preview/') + logo = models.ImageField(db_column= "logo_preview", 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"Город", blank=True, null=True) country = models.ForeignKey(Country, on_delete=models.PROTECT, verbose_name=u"Страна", blank=False) type = models.PositiveSmallIntegerField(verbose_name=u"Тип(Страна/Город)", default=2) + objects = TranslationManager() translations = TranslatedFields( title=models.CharField(max_length=255, verbose_name=u"Заголовок"), diff --git a/specialist_catalog/views.py b/specialist_catalog/views.py index b7ed1b44..49ff483d 100644 --- a/specialist_catalog/views.py +++ b/specialist_catalog/views.py @@ -75,30 +75,18 @@ class CatalogListView(ListView): template_name = 'admin/specialist/catalog_all.html' paginate_by = settings.ADMIN_PAGINATION - -class CatalogCityView(ListView): - model = SpecialistCatalog - template_name = 'admin/specialist/catalog_all.html' - paginate_by = settings.ADMIN_PAGINATION - - def get_queryset(self): - query = self.request.GET.get('query', None) - qs = self.model.objects.language().filter(type=2) - if query: - qs = qs.filter(title__icontains=query) - return qs - - -class CatalogCountryView(ListView): - model = SpecialistCatalog - template_name = 'admin/specialist/catalog_all.html' - paginate_by = settings.ADMIN_PAGINATION - def get_queryset(self): - query = self.request.GET.get('query', None) - qs = self.model.objects.language().filter(type=1) + _GET = self.request.GET + query, city, country, only_cntry = _GET.get('query'), _GET.get('city'), _GET.get('country'), _GET.get('only_countries') + qs = self.model.objects.language() + if only_cntry: + qs = qs.filter(type=1) if query: qs = qs.filter(title__icontains=query) + if city: + qs = qs.filter(city__translations__name__icontains=city) + if country: + qs = qs.filter(country__translations__name__icontains=country) return qs diff --git a/templates/admin/specialist/catalog_all.html b/templates/admin/specialist/catalog_all.html index 6adcc0ee..ae0b720e 100644 --- a/templates/admin/specialist/catalog_all.html +++ b/templates/admin/specialist/catalog_all.html @@ -1,5 +1,6 @@ {% extends 'base.html' %} {% load thumbnail %} +{% load i18n %} {% block body %}
@@ -7,24 +8,38 @@
- - + + + + +
- +
-

Все каталоги специалистов

+

{% trans "Все каталоги специалистов" %}

- - + + @@ -34,16 +49,16 @@ - + @@ -51,7 +66,7 @@
Заголовок{% if request.path == "/admin/specialist_catalog/catalog/city/" %}Город{% elif request.path == "/admin/specialist_catalog/catalog/country/" %}Страна{% else %}Страна/Город{% endif %}{% trans "Заголовок" %}{% trans 'Страна/Город' %} Link  
{{ item.title }} {% if item.type == 1%}{{ item.country.name }}{% else %}{{ item.city.name }}{% endif %}на сайте{% trans "на сайте" %} - Изменить + {% trans "Изменить" %} - Удалить + {% trans "Удалить" %}
- Добавить + {% trans "Добавить" %}
{% include 'admin/includes/admin_pagination.html' %} diff --git a/templates/admin/specialist/catalog_new.html b/templates/admin/specialist/catalog_new.html index f938184c..f66f8d09 100644 --- a/templates/admin/specialist/catalog_new.html +++ b/templates/admin/specialist/catalog_new.html @@ -103,12 +103,12 @@ {{ form.specialists.errors }}
- {# logo_preview #} -
- + {# logo #} +
+
- {{ form.logo_preview }} - {{ form.logo_preview.errors }} + {{ form.logo }} + {{ form.logo.errors }}
{# place_photo #}