specialist catalog search fixed and improved

remotes/origin/1203
Ivan Kovalkovskyi 10 years ago
parent aa01b8273c
commit 515073c6ea
  1. 16
      specialist_catalog/admin_urls.py
  2. 2
      specialist_catalog/forms.py
  3. 3
      specialist_catalog/models.py
  4. 30
      specialist_catalog/views.py
  5. 35
      templates/admin/specialist/catalog_all.html
  6. 10
      templates/admin/specialist/catalog_new.html

@ -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<pk>\d{1,4})/$', SpecialistUpdateView.as_view(), name='specialist_edit'),
url(r'^specialist/delete/(?P<pk>\d{1,4})/$', SpecialistDeleteView.as_view(), name='specialist_delete'),
url(r'^specialist/edit/(?P<pk>\d{1,6})/$', SpecialistUpdateView.as_view(), name='specialist_edit'),
url(r'^specialist/delete/(?P<pk>\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<pk>\d{1,4})/$', CatalogUpdateView.as_view(), name='catalog_edit'),
url(r'^catalog/delete/(?P<pk>\d{1,4})/$', CatalogDeleteView.as_view(), name='catalog_delete'),
url(r'^catalog/(?P<catalog_pk>\d{1,4})/add_feedback/$', FeedbackCreateView.as_view(), name='feedback_new'),
url(r'^catalog/edit/(?P<pk>\d{1,6})/$', CatalogUpdateView.as_view(), name='catalog_edit'),
url(r'^catalog/delete/(?P<pk>\d{1,6})/$', CatalogDeleteView.as_view(), name='catalog_delete'),
url(r'^catalog/(?P<catalog_pk>\d{1,6})/add_feedback/$', FeedbackCreateView.as_view(), name='feedback_new'),
#url(r'^catalog/(?P<pk>\d{1,4})/feedbacks/$', FeedbackListView.as_view(), name='feedback_all'),
url(r'^catalog/(?P<catalog_pk>\d{1,4})/feedback/(?P<id>\d{1,4})/$', FeedbackUpdateView.as_view(), name='feedback_edit'),
url(r'^feedback/delete/(?P<pk>\d{1,4})/$', FeedbackDeleteView.as_view(), name='feedback_delete'),
url(r'^catalog/(?P<catalog_pk>\d{1,6})/feedback/(?P<id>\d{1,4})/$', FeedbackUpdateView.as_view(), name='feedback_edit'),
url(r'^feedback/delete/(?P<pk>\d{1,6})/$', FeedbackDeleteView.as_view(), name='feedback_delete'),
)

@ -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'))),

@ -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"Заголовок"),

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

@ -1,5 +1,6 @@
{% extends 'base.html' %}
{% load thumbnail %}
{% load i18n %}
{% block body %}
<div class="box span8">
<div class="box-header well">
@ -7,24 +8,38 @@
</div>
<div class="box-content">
<form method="get">
<input id="find" type ='text' name = 'query' placeholder="Введите запрос">
<button type="submit" class="btn">Найти</button>
<input id="find" type ='text' name = 'query' placeholder={% trans "Заголовок" %}>
<input id="find_country" type ='text' name = 'country' placeholder={% trans "Страна" %}>
<input id="find_city" type ='text' name = 'city' placeholder={% trans "Город" %}>
<label for="only_country">{% trans "Только страны" %} <input class="checkbox" id="only_country" type ='checkbox' name = 'only_countries'></label>
<button type="submit" class="btn">{% trans "Найти" %}</button>
</form>
</div>
</div>
<script>
var cbx = $("#only_country")[0];
var fnd = $("#find_city")[0];
cbx.onclick = function(){
if (cbx.checked == true){
fnd.disabled = true;
}
else{
fnd.disabled = false;
}
}
</script>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Все каталоги специалистов</h2>
<h2><i class="icon-arrow-down"></i>{% trans "Все каталоги специалистов" %}</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>Заголовок</th>
<th>{% if request.path == "/admin/specialist_catalog/catalog/city/" %}Город{% elif request.path == "/admin/specialist_catalog/catalog/country/" %}Страна{% else %}Страна/Город{% endif %}</th>
<th>{% trans "Заголовок" %}</th>
<th>{% trans 'Страна/Город' %}</th>
<th>Link</th>
<th>&nbsp;</th>
</tr>
@ -34,16 +49,16 @@
<tr>
<td>{{ item.title }}</td>
<td>{% if item.type == 1%}{{ item.country.name }}{% else %}{{ item.city.name }}{% endif %}</td>
<td><a href="{{ item.get_absolute_url }}" target="_blank">на сайте</a></td>
<td><a href="{{ item.get_absolute_url }}" target="_blank">{% trans "на сайте" %}</a></td>
<td class="center sorting_1">
<a class="btn-small btn-info" href='{% url "catalog_edit" item.id %}'>
Изменить
{% trans "Изменить" %}
</a>
</td>
<td>
<a class="btn-small btn-danger delete" href='{% url "catalog_delete" item.id %}'>
Удалить
{% trans "Удалить" %}
</a>
</td>
</tr>
@ -51,7 +66,7 @@
</tbody>
</table>
<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> {% trans "Добавить" %}</a>
</div>
{% include 'admin/includes/admin_pagination.html' %}

@ -103,12 +103,12 @@
<span class="help-inline">{{ form.specialists.errors }}</span>
</div>
</div>
{# logo_preview #}
<div class="control-group {% if form.logo_preview.errors %}error{% endif %}">
<label class="control-label">{{ form.logo_preview.label }}:</label>
{# logo #}
<div class="control-group {% if form.logo.errors %}error{% endif %}">
<label class="control-label">{{ form.logo.label }}:</label>
<div class="controls">
{{ form.logo_preview }} <output id="list_logo"></output>
<span class="help-inline">{{ form.logo_preview.errors }}</span>
{{ form.logo }} <output id="list_logo"></output>
<span class="help-inline">{{ form.logo.errors }}</span>
</div>
</div>
{# place_photo #}

Loading…
Cancel
Save