Пример #1
0
    def timeentries_days(self):
        from por.models.tp import TimeEntry, timedelta_as_work_days

        request = get_current_request()
        tickets = ticket_store.get_tickets_for_request(customer_request=self, request=request)
        ticket_ids = [a["id"] for a in tickets]
        timeentries = (
            DBSession().query(TimeEntry).filter_by(project_id=self.project_id).filter(TimeEntry.ticket.in_(ticket_ids))
        )
        hours = sum([a.hours for a in timeentries], datetime.timedelta())
        return timedelta_as_work_days(hours)
Пример #2
0
def te_filter_by_customer_requests(customer_requests, request):
    """
    Returns a SQL Expression to filter time entries, that belong to the provided customer_requests.
    The returned expression can be applied to a query on the TimeEntry table.

    If customer_requests is empty, no filter is applied.
    """

    if not customer_requests:
        return sa.text('1=1')

    cr_get = DBSession.query(CustomerRequest).get

    selected_tickets = []
    for cr_id in customer_requests or []:
        cr = cr_get(cr_id)
        selected_tickets.extend((cr.project_id, tkt['id']) for tkt in
                ticket_store.get_tickets_for_request(customer_request=cr, request=request))

    return sa.and_(sa.sql.tuple_(TimeEntry.project_id, TimeEntry.ticket).in_(selected_tickets))
Пример #3
0
 def get_tickets(self, request=None):
     return ticket_store.get_tickets_for_request(customer_request=self, request=request or self.request)