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

@ -7,8 +7,37 @@
<h2><i class="icon-arrow-down"></i>Фильтры</h2> <h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div> </div>
<div class="box-content"> <div class="box-content">
<form> <form action="." method="GET">
{{ form }}
<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> <button type="submit" class="btn">Найти</button>
</form> </form>

@ -1,10 +1,11 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from bitfield import BitField from bitfield import BitField
from bitfield.forms import BitFieldCheckboxSelectMultiple, BitFormField from bitfield.forms import BitFormField as _BitFormField
from bitfield.types import BitHandler from bitfield.types import BitHandler
from ckeditor.widgets import CKEditorWidget from ckeditor.widgets import CKEditorWidget
from django import forms from django import forms
from django.conf import settings from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from functions.admin_forms import AdminFilterForm from functions.admin_forms import AdminFilterForm
from functions.form_check import translit_with_separator from functions.form_check import translit_with_separator
from functions.translate import fill_with_signal from functions.translate import fill_with_signal
@ -137,8 +138,43 @@ class TagDeleteForm(forms.ModelForm):
fields = ('id',) 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): class ThemeFilterForm(AdminFilterForm):
model = Theme 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): class TagFilterForm(AdminFilterForm):

Loading…
Cancel
Save