# -*- coding: utf-8 -*- import autocomplete_light from django.db.models import Q from docs.models import Country, Currency, Measure from customer.models import Client class AutocompleteWithEmptyWidget(autocomplete_light.AutocompleteModelBase): """ Автокомплит без текста подсказки """ autocomplete_js_attributes = {'placeholder': ''} class AutocompleteClient(autocomplete_light.AutocompleteModelBase): """ Автокомплит клиента в зависимости от юзера """ attrs = { 'data-autcomplete-minimum-characters': 0, 'placeholder': 'Название из добавленных ранее', } search_fields = ('name', 'inn', 'okpo') 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): """ Автокомплит валют """ attrs = { 'data-autcomplete-minimum-characters': 0, 'placeholder': 'Название валюты', } search_fields = ('name', '^abc_code', '^code') class AutocompleteMeasure(autocomplete_light.AutocompleteModelTemplate): """ Автокомплит ед. измерения """ attrs = { 'data-autcomplete-minimum-characters': 0, 'placeholder': '', } widget_attrs = {'data-widget-maximum-values': 3} search_fields = ('name', 'full_name', '^code') choice_template = 'autocomplete_light/docs_measure_choice.html' class AutocompleteCountry(autocomplete_light.AutocompleteModelTemplate): """ Автокомплит стран """ attrs = { 'data-autcomplete-minimum-characters': 0, 'placeholder': 'Название страны', } 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')