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

# -*- coding: utf-8 -*-
import autocomplete_light
from django.db.models import Q
from models import (Country, Currency, Measure)
from project.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')