def milestone_choices(cls, ticket): # if not ticket: # return [] # if ticket.site: # return ticket.site.milestones_by_site.all() return rt.models.deploy.Milestone.objects.order_by('label') from lino.modlib.system.choicelists import (ObservedEvent) from lino_noi.lib.tickets.choicelists import TicketEvents, T24, combine class TicketEventToDo(ObservedEvent): text = _("To do") def add_filter(self, qs, pv): if pv.start_date: pass if pv.end_date: qs = qs.exclude( deployment__milestone__reached__lte=combine( pv.end_date, T24)) return qs TicketEvents.add_item_instance(TicketEventToDo('todo'))
"""Select only tickets for which there has been at least one session during the given period. """ text = _("Has been worked on") def add_filter(self, qs, pv): if pv.start_date: qs = qs.filter(sessions_by_ticket__start_date__gte=pv.start_date) if pv.end_date: qs = qs.filter(sessions_by_ticket__end_date__lte=pv.end_date) qs = qs.annotate(num_sessions=Count('sessions_by_ticket')) qs = qs.filter(num_sessions__gt=0) return qs TicketEvents.add_item_instance(TicketHasSessions("clocking")) class ProjectHasSessions(ObservedEvent): """Select only projects for which there has been at least one session during the given period. """ text = _("Has been worked on") def add_filter(self, qs, pv): if pv.start_date: qs = qs.filter( tickets_by_project__sessions_by_ticket__start_date__gte= pv.start_date) if pv.end_date: