client autocomplete, django-autocomplete-light requirements downgraded

remotes/origin/yandex
Bachurin Sergey 12 years ago
parent 5d82bb08b4
commit 39c46bb3d0
  1. 7
      project/customer/views/clients_ajax.py
  2. 22
      project/docs/autocomplete_light_registry.py
  3. 7
      project/docs/forms/base_forms.py
  4. 7
      project/docs/forms/faktura.py
  5. 12
      project/docs/views/base_views.py
  6. 2
      requirements-dev.txt
  7. 2
      requirements.txt

@ -53,7 +53,8 @@ def clients_add_ajax(request):
'success': form.is_valid(), 'success': form.is_valid(),
'field_errors': form.errors, # ошибки полей 'field_errors': form.errors, # ошибки полей
'form_errors': non_field_errors, # ошибки формы 'form_errors': non_field_errors, # ошибки формы
'reload': form.is_valid() and 'reload_on_success' in request.GET #'reload': form.is_valid() and 'reload_on_success' in request.GET
'reload': False
} }
return HttpResponse(json.dumps(data), mimetype='application/json') return HttpResponse(json.dumps(data), mimetype='application/json')
@ -82,7 +83,7 @@ def clients_edit_ajax(request, id):
'success': form.is_valid(), 'success': form.is_valid(),
'field_errors': form.errors, # ошибки полей 'field_errors': form.errors, # ошибки полей
'form_errors': non_field_errors, # ошибки формы 'form_errors': non_field_errors, # ошибки формы
'reload': form.is_valid() and 'reload_on_success' in request.GET 'reload': False
} }
return HttpResponse(json.dumps(data), mimetype='application/json') return HttpResponse(json.dumps(data), mimetype='application/json')
@ -102,6 +103,6 @@ def clients_delete_ajax(request, id):
data = { data = {
'success': True, 'success': True,
'message': {'title': 'Инфо', 'msg': 'Контрагент удалён.',}, 'message': {'title': 'Инфо', 'msg': 'Контрагент удалён.',},
'reload': 'reload_on_success' in request.GET 'reload': False
} }
return HttpResponse(json.dumps(data), mimetype='application/json') return HttpResponse(json.dumps(data), mimetype='application/json')

@ -3,10 +3,26 @@ import autocomplete_light
from django.db.models import Q from django.db.models import Q
from models import (Country, Currency, Measure) from models import (Country, Currency, Measure)
from project.customer.models import Client
autocomplete_light.register(Country, name='ACCountry') class AutocompleteClient(autocomplete_light.AutocompleteModelBase):
autocomplete_light.register(Currency, name='ACCurrency') '''Автокомплит клиента в зависимости от юзера
autocomplete_light.register(Measure, name='ACMeasure') '''
autocomplete_js_attributes = {'placeholder': u'Название предприятия или ИНН или ОКПО'}
def choices_for_request(self):
q = self.request.GET.get('q', '')
user_ = self.request.user
exclude = self.request.GET.getlist('exclude', [])
choices = self.choices.filter(user=user_).\
filter(Q(name__contains=q) | Q(inn=q) | Q(okpo=q)).\
exclude(pk__in=exclude)
return self.order_choices(choices)[0:self.limit_choices]
autocomplete_light.register(Country, name='ACCountry')
autocomplete_light.register(Currency, name='ACCurrency')
autocomplete_light.register(Measure, name='ACMeasure')
autocomplete_light.register(Client, AutocompleteClient, name='ACClient')

@ -1,4 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.forms import ModelChoiceField
import autocomplete_light
from project.commons.forms import MyBaseModelForm from project.commons.forms import MyBaseModelForm
from project.customer.models import BankAccount, Client from project.customer.models import BankAccount, Client
@ -13,6 +16,8 @@ class BaseModelForm(MyBaseModelForm):
# Список полей, у которых нужно настроить выборку контрагентов так, чтобы попадали __только__ контрагенты данного # Список полей, у которых нужно настроить выборку контрагентов так, чтобы попадали __только__ контрагенты данного
# пользователя. Если же пользователь никак не был задан - селекты будут пустыми! Если в форме есть поле client, # пользователя. Если же пользователь никак не был задан - селекты будут пустыми! Если в форме есть поле client,
# то оно настраивается автоматически. # то оно настраивается автоматически.
client = ModelChoiceField(Client.objects.all(), label=u'клиент', required=True,
widget=autocomplete_light.ChoiceWidget('ACClient'))
adjust_client_fields = [] adjust_client_fields = []
def __init__(self, user, *args, **kwargs): def __init__(self, user, *args, **kwargs):
@ -49,7 +54,7 @@ class BaseModelForm(MyBaseModelForm):
self._adjust_clients() self._adjust_clients()
def _adjust_clients(self): def _adjust_clients(self):
"""Настраивает перечисленные в self.adjust_client_fields поля на модель Client.""" #"""Настраивает перечисленные в self.adjust_client_fields поля на модель Client."""
if self.adjust_client_fields: if self.adjust_client_fields:
user_clients = Client.objects.filter(user=self._user) user_clients = Client.objects.filter(user=self._user)
for key in self.adjust_client_fields: for key in self.adjust_client_fields:

@ -6,10 +6,17 @@ import autocomplete_light
from project.commons.forms import MyBaseModelForm from project.commons.forms import MyBaseModelForm
from .base_forms import BaseModelForm from .base_forms import BaseModelForm
from ..models import Faktura, FakturaItem, PlatDoc from ..models import Faktura, FakturaItem, PlatDoc
from project.customer.models import Client
class FakturaForm(BaseModelForm): class FakturaForm(BaseModelForm):
"""Форма редактирования фактуры.""" """Форма редактирования фактуры."""
sender = forms.ModelChoiceField(Client.objects.all(), label=u'клиент', required=True,
widget=autocomplete_light.ChoiceWidget('ACClient'))
receiver = forms.ModelChoiceField(Client.objects.all(), label=u'клиент', required=True,
widget=autocomplete_light.ChoiceWidget('ACClient'))
adjust_client_fields = []
class Meta: class Meta:
model = Faktura model = Faktura
fields = ('doc_num', 'doc_date', fields = ('doc_num', 'doc_date',

@ -586,7 +586,7 @@ class BaseItemsViews(BaseViews):
initial_items = kwargs.get('initial_items') initial_items = kwargs.get('initial_items')
form = self.FORM_CLASS(self.request.user, initial=initial) form = self.FORM_CLASS(self.request.user, initial=initial)
formset = self.ITEM_FORMSET_CLASS(prefix=self.ITEM_FORM_PREFIX, initial=initial_items) formset = self.ITEM_FORMSET_CLASS(prefix=self.ITEM_FORM_PREFIX, initial=initial_items)
print form.errors
dictionary = { dictionary = {
'padeji': self.PADEJI, 'padeji': self.PADEJI,
'padeji_mnoj': self.PADEJI_MNOJ, 'padeji_mnoj': self.PADEJI_MNOJ,
@ -648,14 +648,8 @@ class BaseItemsViews(BaseViews):
else: else:
pformset = None pformset = None
if self.request.method == 'POST': formset = self.ITEM_FORMSET_CLASS(self.request.POST or None, prefix=self.ITEM_FORM_PREFIX, instance=obj)
formset = self.ITEM_FORMSET_CLASS(self.request.POST, prefix=self.ITEM_FORM_PREFIX, instance=obj) form = self.FORM_CLASS(self.request.user, data=self.request.POST or None, instance=obj)
#print formset.forms[0].data['faktura_items-0-DELETE']
form = self.FORM_CLASS(self.request.user, data=self.request.POST or None, instance=obj)
else:
formset = self.ITEM_FORMSET_CLASS(prefix=self.ITEM_FORM_PREFIX, instance=obj)
form = self.FORM_CLASS(self.request.user, instance=obj)
if form.is_valid() and formset.is_valid() and ((not pformset) or (pformset and pformset.is_valid())): if form.is_valid() and formset.is_valid() and ((not pformset) or (pformset and pformset.is_valid())):
new_obj = form.save() new_obj = form.save()

@ -13,7 +13,7 @@ django-filter==0.7
pytils==0.2.3 pytils==0.2.3
psycopg2 psycopg2
flup flup
django-autocomplete-light==2.0.0pre django-autocomplete-light==1.4.9
# dev # dev
django-devserver django-devserver

@ -13,7 +13,7 @@ django-filter==0.7
pytils==0.2.3 pytils==0.2.3
psycopg2 psycopg2
flup flup
django-autocomplete-light==2.0.0pre django-autocomplete-light==1.4.9
# dev # dev
#django-devserver #django-devserver

Loading…
Cancel
Save