You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
2.3 KiB
58 lines
2.3 KiB
# -*- coding: utf-8 -*-
|
|
import autocomplete_light
|
|
from django.db.models import Q
|
|
|
|
from models import (Country, Currency, Measure)
|
|
from customer.models import Client
|
|
|
|
|
|
class AutocompleteWithEmptyWidget(autocomplete_light.AutocompleteModelBase):
|
|
'''Автокомплит без текста подсказки
|
|
'''
|
|
autocomplete_js_attributes = {'placeholder': u''}
|
|
|
|
|
|
class AutocompleteClient(autocomplete_light.AutocompleteModelBase):
|
|
'''Автокомплит клиента в зависимости от юзера
|
|
'''
|
|
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(company=user_.profile).\
|
|
filter(Q(name__icontains=q) | Q(inn=q) | Q(okpo=q)).\
|
|
exclude(pk__in=exclude)
|
|
|
|
return self.order_choices(choices)[0:self.limit_choices]
|
|
|
|
|
|
class AutocompleteCurrency(autocomplete_light.AutocompleteModelBase):
|
|
'''Автокомплит валют
|
|
'''
|
|
autocomplete_js_attributes = {'placeholder': u'Название валюты'}
|
|
search_fields = ('name', '^abc_code', '^code')
|
|
|
|
|
|
class AutocompleteMeasure(autocomplete_light.AutocompleteModelTemplate):
|
|
'''Автокомплит ед. измерения
|
|
'''
|
|
autocomplete_js_attributes = {'placeholder': u'Название ед. измерения'}
|
|
search_fields = ('name', 'full_name', '^code')
|
|
choice_template = 'autocomplete_light/docs_measure_choice.html'
|
|
|
|
|
|
class AutocompleteCountry(autocomplete_light.AutocompleteModelTemplate):
|
|
'''Автокомплит стран
|
|
'''
|
|
autocomplete_js_attributes = {'placeholder': u'Название страны'}
|
|
search_fields = ('name', 'full_name', '^code')
|
|
choice_template = 'autocomplete_light/docs_country_choice.html'
|
|
|
|
|
|
autocomplete_light.register(Country, AutocompleteCountry, name='ACCountry')
|
|
autocomplete_light.register(Currency, AutocompleteCurrency, name='ACCurrency')
|
|
autocomplete_light.register(Measure, AutocompleteMeasure, name='ACMeasure')
|
|
autocomplete_light.register(Client, AutocompleteClient, name='ACClient')
|
|
|