remotes/origin/search
Alexander Burdeiny 10 years ago
parent 2ba6556e01
commit 985a1fd674
  1. 35
      templates/admin/theme/theme_list.html
  2. 38
      theme/forms.py

@ -7,8 +7,37 @@
<h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div>
<div class="box-content">
<form>
{{ form }}
<form action="." method="GET">
<div class="span4" style="margin-left:0px;">
{# exact_name #}
<div class="control-group {% if form.exact_name.errors %}error{% endif %}">
<label class="control-label">{{ form.exact_name.label }}:</label>
<div class="controls">
{{ form.exact_name }}
<span class="help-inline">{{ form.exact_name.errors }}</span>
</div>
</div>
{# name #}
<div class="control-group {% if form.name.errors %}error{% endif %}">
<label class="control-label">{{ form.name.label }}:</label>
<div class="controls">
{{ form.name }}
<span class="help-inline">{{ form.name.errors }}</span>
</div>
</div>
</div>
<div class="span4" style="margin-left:0px;">
{# types #}
<div class="control-group {% if form.types.errors %}error{% endif %}">
<label class="control-label">{{ form.types.label }}:</label>
<div class="controls">
{{ form.types }}
<span class="help-inline">{{ form.types.errors }}</span>
</div>
</div>
</div>
<button type="submit" class="btn">Найти</button>
</form>
@ -63,4 +92,4 @@
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}
{% endblock %}

@ -1,10 +1,11 @@
# -*- coding: utf-8 -*-
from bitfield import BitField
from bitfield.forms import BitFieldCheckboxSelectMultiple, BitFormField
from bitfield.forms import BitFormField as _BitFormField
from bitfield.types import BitHandler
from ckeditor.widgets import CKEditorWidget
from django import forms
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from functions.admin_forms import AdminFilterForm
from functions.form_check import translit_with_separator
from functions.translate import fill_with_signal
@ -137,8 +138,43 @@ class TagDeleteForm(forms.ModelForm):
fields = ('id',)
class BitFormField(_BitFormField):
"""
instead int bit returns list witch we can query FOO__in
"""
def clean(self, value):
if not value:
return 0
# Assume an iterable which contains an item per flag that's enabled
result = []
l = [k for k, v in self.choices]
for k in value:
b = BitHandler(0, l)
try:
setattr(b, str(k), True)
except AttributeError:
raise ValidationError('Unknown choice: %r' % (k,))
result.append(int(b))
return result
class ThemeFilterForm(AdminFilterForm):
model = Theme
types = BitFormField(label=_(u'Тип'), required=False, choices=Theme.FLAGS)
def filter(self):
model = self.model
data = self.cleaned_data
qs = model.objects.all()
if data['types']:
qs = qs.filter(types__in=data['types'])
if data['exact_name']:
qs = qs.filter(translations__name=data['exact_name']).distinct()
return qs
if data['name']:
qs = qs.filter(translations__name__icontains=data['name']).distinct()
return qs
class TagFilterForm(AdminFilterForm):

Loading…
Cancel
Save