def save(self, force_insert=False, force_update=False, using=None, update_fields=None, auto_update_search=True): if auto_update_search and hasattr(self, 'fields_search'): search = '' for str_field in self.fields_search: fields = str_field.split('__') if len(fields) == 1: try: search += str(getattr(self, str_field)) + ' ' except: pass else: _self = self for field in fields: _self = getattr(_self, field) search += str(_self) + ' ' self.search = search self.search = normalize(self.search) return super(CmjSearchMixin, self).save(force_insert=force_insert, force_update=force_update, using=using, update_fields=update_fields)
def get_global(self): qs = self.get_queryset() g = {'Páginas Digitalizadas': {'count': 0, 'color': ''}} for i in qs: results = i.results for user, ru in results.items(): # ru -> result user for model, rm in ru.items(): # rm -> result model if model not in g: g[model] = { 'count': 0, 'color': re.sub('\s', '', normalize(model.lower())) } for ano, ra in rm.items(): # rm -> result anos try: g[model]['count'] += ra.get( 'total', ra.get('count', 0)) g['Páginas Digitalizadas']['count'] += ra.get( 'paginas', 0) except Exception as e: print(ra) g = filter(lambda x: x[1]['count'] > 500, g.items()) return g
def filter_search(self, queryset, field_name, value): query = normalize(value) query = query.split(' ') if query: q = Q() for item in query: if not item: continue q = q & Q(search__icontains=item) if q: queryset = queryset.filter(q) return queryset
def __init__(self, *args, **kwargs): super(ContatoFragmentSearchForm, self).__init__(*args, **kwargs) """q_field = FieldWithButtons( Field('q', placeholder=_('Filtrar Lista'), autocomplete='off'), StrictButton( _('Filtrar'), css_class='btn-outline-primary', type='button', onclick='atualizaContatos(event)'))""" self.fields['contatos_search'].widget = forms.CheckboxSelectMultiple( ) queryset = Contato.objects.filter( workspace=self.initial['workspace']).exclude( pk__in=self.initial['pks_exclude']) query = normalize(self.initial['q']) query = query.split(' ') if query: q = Q() for item in query: if not item: continue q = q & Q(search__icontains=item) if q: queryset = queryset.filter(q) queryset = queryset[:10] self.fields['contatos_search'].queryset = queryset self.fields['contatos_search'].choices = [(c.pk, c) for c in queryset] self.helper = FormHelper() self.helper.field_class = 'controls' self.helper.layout = Layout( Div( Field('contatos_search'), css_class='form-group-contatos-search ' 'controls-radio-checkbox')) self.helper.form_tag = False self.helper.disable_csrf = True
def get_queryset(self, *args, **kwargs): request = self.request queryset = Trecho.objects.all() if request.GET.get('q') is not None: query = normalize(str(request.GET.get('q'))) query = query.split(' ') if query: q = Q() for item in query: if not item: continue q = q & Q(search__icontains=item) if q: queryset = queryset.filter(q) return queryset
def __init__(self, *args, **kwargs): super(ContatoFragmentSearchForm, self).__init__(*args, **kwargs) """q_field = FieldWithButtons( Field('q', placeholder=_('Filtrar Lista'), autocomplete='off'), StrictButton( _('Filtrar'), css_class='btn-outline-primary', type='button', onclick='atualizaContatos(event)'))""" self.fields['contatos_search'].widget = forms.CheckboxSelectMultiple() queryset = Contato.objects.filter( workspace=self.initial['workspace']).exclude( pk__in=self.initial['pks_exclude']) query = normalize(self.initial['q']) query = query.split(' ') if query: q = Q() for item in query: if not item: continue q = q & Q(search__icontains=item) if q: queryset = queryset.filter(q) queryset = queryset[:10] self.fields['contatos_search'].queryset = queryset self.fields['contatos_search'].choices = [(c.pk, c) for c in queryset] self.helper = FormHelper() self.helper.field_class = 'controls' self.helper.layout = Layout( Div(Field('contatos_search'), css_class='form-group-contatos-search ' 'controls-radio-checkbox')) self.helper.form_tag = False self.helper.disable_csrf = True