def risultati(self): qs_sedi = self.args[0] self.deleghe = self.kwargs['deleghe'] me = self.kwargs['me_id'] delegati = Persona.objects.none() for delega in self.deleghe: tipo = None oggetti = None if delega in DELEGHE_OGGETTI_DICT and DELEGHE_OGGETTI_DICT[delega][1] != 'Sede': try: model = apps.get_model(DELEGHE_OGGETTI_DICT[delega][0], DELEGHE_OGGETTI_DICT[delega][1]) tipo = ContentType.objects.get_for_model(model) oggetti = model.objects.filter(**{DELEGHE_OGGETTI_DICT[delega][2]: qs_sedi}) except Exception as e: pass if not tipo: tipo = ContentType.objects.get_for_model(Sede) oggetti = qs_sedi if oggetti: delegati |= Persona.objects.filter( Delega.query_attuale( oggetto_tipo=tipo, oggetto_id__in=oggetti, tipo=delega ).via('delega') ).exclude(pk=me) return delegati.order_by('nome', 'cognome', 'codice_fiscale')\ .distinct('nome', 'cognome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] self.deleghe = self.kwargs['deleghe'] me = self.kwargs['me_id'] delegati = Persona.objects.none() for delega in self.deleghe: tipo = None oggetti = None if delega in DELEGHE_OGGETTI_DICT and DELEGHE_OGGETTI_DICT[delega][ 1] != 'Sede': try: model = apps.get_model(DELEGHE_OGGETTI_DICT[delega][0], DELEGHE_OGGETTI_DICT[delega][1]) tipo = ContentType.objects.get_for_model(model) oggetti = model.objects.filter( **{DELEGHE_OGGETTI_DICT[delega][2]: qs_sedi}) except Exception as e: pass if not tipo: tipo = ContentType.objects.get_for_model(Sede) oggetti = qs_sedi if oggetti: delegati |= Persona.objects.filter( Delega.query_attuale( oggetto_tipo=tipo, oggetto_id__in=oggetti, tipo=delega).via('delega')).exclude(pk=me) return delegati.order_by('nome', 'cognome', 'codice_fiscale')\ .distinct('nome', 'cognome', 'codice_fiscale')
def _referenti_attivita(queryset, obiettivo=0): # TODO: Assicurarsi che questo filtro funzioni davvero! if obiettivo > 0: qs = queryset.filter( # Subquery per mischiarsi bene con le altre deleghe. pk__in=Persona.objects.filter( Delega.query_attuale(tipo=REFERENTE, oggetto_tipo=ContentType.objects.get_for_model(Attivita), oggetto_id__in=Attivita.objects.filter( area__obiettivo=obiettivo ).values_list('pk', flat=True)).via("delega") ).values_list('pk', flat=True) ) return qs return queryset.none()
def risultati(self): qs_sedi = self.args[0] qs_deleghe = self.args[1] me = self.args[2] delegati = Persona.objects.filter( Delega.query_attuale( oggetto_tipo=ContentType.objects.get_for_model(Sede), oggetto_id__in=qs_sedi, tipo__in=qs_deleghe ).via("delega") ).exclude(pk=me.pk).order_by('nome', 'cognome', 'codice_fiscale')\ .distinct('nome', 'cognome', 'codice_fiscale') return delegati
def _deleghe_attive(queryset): return queryset.filter( delega__in=Delega.query_attuale().values_list('pk', flat='True') )