Example #1
0
 def ttr(self):
     """Compute average time until resolution."""
     resolutions = Resolution.query.join(Inquiry).filter(
         Resolution.created_at >= arrow.utcnow().replace(hours=-3),
         Inquiry.queue_id == self.id).all()
     ns = [res.created_at - res.inquiry.created_at for res in resolutions]
     if ns:
         total = ns[0]
         for n in ns[1:]:
             total = n + total
         return strfdelta(total/len(ns))
     return '00:00:00'
Example #2
0
def help_inquiry(id, location=None):
    """automatically selects next inquiry or reloads inquiry """
    inquiry = Inquiry.query.get(id)
    if not inquiry.resolution:
        inquiry.lock()
        inquiry.link(current_user())
    if request.method == 'POST':
        delayed_id=None
        inquiry.resolution.close()

        # emit new queue positions
        emitQueuePositions(inquiry)
        emitQueueInfo(inquiry.queue)

        if request.form['status'] == 'unresolved':
            delayed_id = inquiry.id
        else:
            inquiry.close()
        if request.form['load_next'] != 'y':
            if delayed_id:
                delayed = Inquiry.query.get(delayed_id)
                delayed.unlock()
            return redirect(url_for('admin.home'))
        if not location:
            return redirect(url_for('admin.help_latest', delayed_id=delayed_id))
        return redirect(url_for('admin.help_latest',
            location=location, delayed_id=delayed_id))
    return render_admin('help_inquiry.html',
        inquiry=inquiry,
        inquiries=Inquiry.query.filter_by(name=inquiry.name).limit(10).all(),
        hide_event_nav=True,
        group=Inquiry.query.filter(
            Inquiry.status == 'unresolved',
            Inquiry.queue_id == g.queue.id,
            Inquiry.assignment == inquiry.assignment,
            Inquiry.problem == inquiry.problem,
            Inquiry.owner_id != inquiry.owner_id
        ).all(),
        wait_time=strfdelta(
            inquiry.resolution.created_at-inquiry.created_at, '%h:%m:%s'))
Example #3
0
 def get_wait_time(self, fmt: str='%h:%m:%s') -> str:
     """Return the wait time delta object as a string."""
     return strfdelta(self.resolution.created_at-self.created_at, fmt)