def annulla(self, annullato_da, invia_notifica=True): self.stato = self.ANNULLATA self.annullato_da = annullato_da self.data_annullamento = oggi() self.save() if invia_notifica: self._invia_notifica_annullamento()
def accetta_pagamenti(self, data=None, iv=False, nv=False): if not data: data = oggi() if iv and self.fine_soci_iv: termine = self.fine_soci_iv elif nv and self.fine_soci_nv: termine = self.fine_soci_nv else: termine = self.fine_soci if not termine: if self.stato == self.APERTO: termine = oggi() + timedelta(days=1) else: termine = oggi() return self.stato == self.APERTO and data >= self.inizio and data <= termine
def aperto_anno(cls, data=None, iv=False, nv=False): try: if not data: data = oggi() t = Tesseramento.objects.get(anno=data.year) return t.accetta_pagamenti(data, iv, nv) except Tesseramento.DoesNotExist: return False
def titoli_del_corso(persona, cd): init_query = persona.titoli_personali_confermati().filter( is_course_title=True) lista = init_query.filter(titolo__in=cd['titoli']) if cd.get('show_only_active', False): lista = lista.filter(data_scadenza__gte=oggi()) return { 'lista': lista.order_by('-data_scadenza'), 'num_of_titles': init_query.count() }
def risultati(self): qs_sedi = self.args[0] modulo = self.modulo_riempito membri = modulo.cleaned_data['membri'] attivi = membri == modulo.MEMBRI_VOLONTARI ordinari = membri == modulo.MEMBRI_ORDINARI anno = modulo.cleaned_data['anno'] try: tesseramento = Tesseramento.objects.get(anno=anno) except Tesseramento.DoesNotExist: # Errore tesseramento anno non esistente raise ValueError( "Anno di tesseramento non valido o gestito da Gaia.") # Dobbiamo ridurre il set a tutti i volontari che sono, al giorno attuale, appartenenti a questa sede # Nel caso di un anno passato, generiamo l'elenco al 31 dicembre. Nel caso dell'anno in corso, # generiamo l'elenco al giorno attuale. Questo e' equivalente a: # giorno = min(31/dicembre/<anno selezionato>, oggi) giorno_appartenenza = min(date(day=31, month=12, year=anno), oggi()) if modulo.cleaned_data['tipo'] == modulo.VERSATE: origine = tesseramento.paganti( attivi=attivi, ordinari=ordinari) # Persone con quote pagate else: origine = tesseramento.non_paganti( attivi=attivi, ordinari=ordinari) # Persone con quote NON pagate # Ora filtra per Sede q = Appartenenza.query_attuale( al_giorno=giorno_appartenenza, membro=Appartenenza.VOLONTARIO).filter(sede__in=qs_sedi).defer( 'membro', 'inizio', 'sede') return origine.filter(appartenenze__in=q).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related('quote').distinct('cognome', 'nome', 'codice_fiscale')
def risultati(self): qs_sedi = self.args[0] modulo = self.modulo_riempito membri = modulo.cleaned_data['membri'] attivi = membri == modulo.MEMBRI_VOLONTARI ordinari = membri == modulo.MEMBRI_ORDINARI anno = modulo.cleaned_data['anno'] try: tesseramento = Tesseramento.objects.get(anno=anno) except Tesseramento.DoesNotExist: # Errore tesseramento anno non esistente raise ValueError("Anno di tesseramento non valido o gestito da Gaia.") # Dobbiamo ridurre il set a tutti i volontari che sono, al giorno attuale, appartenenti a questa sede # Nel caso di un anno passato, generiamo l'elenco al 31 dicembre. Nel caso dell'anno in corso, # generiamo l'elenco al giorno attuale. Questo e' equivalente a: # giorno = min(31/dicembre/<anno selezionato>, oggi) giorno_appartenenza = min(date(day=31, month=12, year=anno), oggi()) if modulo.cleaned_data['tipo'] == modulo.VERSATE: origine = tesseramento.paganti(attivi=attivi, ordinari=ordinari) # Persone con quote pagate else: origine = tesseramento.non_paganti(attivi=attivi, ordinari=ordinari) # Persone con quote NON pagate # Ora filtra per Sede q = Appartenenza.query_attuale(al_giorno=giorno_appartenenza, membro=Appartenenza.VOLONTARIO) app = Appartenenza.objects.filter(pk__in=q).filter(sede__in=qs_sedi) return origine.filter(appartenenze__in=app).annotate( appartenenza_tipo=F('appartenenze__membro'), appartenenza_inizio=F('appartenenze__inizio'), appartenenza_sede=F('appartenenze__sede'), ).prefetch_related('quote').distinct('cognome', 'nome', 'codice_fiscale')
def accetta_pagamenti(self): return self.stato == self.APERTO and oggi() >= self.inizio