-
Notifications
You must be signed in to change notification settings - Fork 18
Autoresolve for "expired" tickets #139
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've made some comments on how this is structured.
At a higher level, I think changing assigned tickets to show the time since they were assigned (rather than the time since they were created) is a more useful change than this.
oh_queue/views.py
Outdated
event_type=event_type, | ||
ticket=ticket, | ||
user=current_user, | ||
user_id=0 # assuming ids start @ 1, 0 signifies admin/autodelete |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems hacky. I'd prefer to change TicketEvent to allow the user to be nullable (though that would require a migration)
oh_queue/models.py
Outdated
@@ -42,7 +42,7 @@ def short_name(self): | |||
return first_name.rsplit('@')[0] | |||
return first_name | |||
|
|||
TicketStatus = enum.Enum('TicketStatus', 'pending assigned resolved deleted') | |||
TicketStatus = enum.Enum('TicketStatus', 'pending assigned resolved deleted autoresolved autodeleted') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think a separate "autoresolved" category is necessary. I don't see any situation where we'd need to be able to distinguish resolved vs autoresolved tickets (and if we really need to, we could always inspect the events)
I'd lean toward the same for autodeleted tickets, but I'm more open to a separate category there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That makes sense, I'll not add any categories here.
oh_queue/views.py
Outdated
@@ -204,6 +232,14 @@ def delete(ticket_ids): | |||
emit_event(ticket, TicketEventType.delete) | |||
db.session.commit() | |||
|
|||
@socketio.on('autodelete') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should only be triggered on the server-side, so I don't think the socket event listener is necessary.
oh_queue/views.py
Outdated
@@ -216,6 +252,15 @@ def resolve(ticket_ids): | |||
db.session.commit() | |||
return get_next_ticket() | |||
|
|||
@socketio.on('resolve') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See comment about autodelete above (also, this shouldn't have the same socket event as the existing resolve function.
manage.py
Outdated
question=random.randrange(1, 6), | ||
location=random.choice(['109 Morgan', '247 Cory']), | ||
) | ||
if i % 2 == 0: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this is really necessary. If we do want to keep this, you should create the ticket outside the if and then update the fields for certain values.
To maximize the accuracy of estimated wait time, this PR will autoresolve students being assisted for longer than 30 minutes, and delete tickets that have been on the queue for more than 3 hours.