# -*- 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')