diff --git a/views/public.py b/views/public.py index 7cf7c450..abdeee92 100644 --- a/views/public.py +++ b/views/public.py @@ -71,6 +71,23 @@ def view_ticket(request): error_message = _('Invalid ticket ID or e-mail address. Please try again.') if t: + + if request.GET.has_key('close') and ticket.status == Ticket.RESOLVED_STATUS: + from helpdesk.views.staff import update_ticket + # Trick the update_ticket() view into thinking it's being called with + # a valid POST. + request.POST = { + 'new_status': Ticket.CLOSED_STATUS, + 'public': 1, + 'owner': ticket.assigned_to, + 'title': ticket.title, + 'comment': _('Submitter accepted resolution and closed ticket'), + } + request.FILES = {} + request.GET = {} + + return update_ticket(request, ticket_id) + return render_to_response('helpdesk/public_view_ticket.html', RequestContext(request, { 'ticket': t, diff --git a/views/staff.py b/views/staff.py index 2dc9ed7e..05dbb9bd 100644 --- a/views/staff.py +++ b/views/staff.py @@ -148,7 +148,11 @@ def update_ticket(request, ticket_id): if not owner and ticket.assigned_to: owner = ticket.assigned_to.id - f = FollowUp(ticket=ticket, date=datetime.now(), comment=comment, user=request.user) + f = FollowUp(ticket=ticket, date=datetime.now(), comment=comment) + + if request.user.is_staff(): + f.user = request.user + f.public = public reassigned = False @@ -292,7 +296,10 @@ def update_ticket(request, ticket_id): ticket.save() - return HttpResponseRedirect(ticket.get_absolute_url()) + if request.user.is_staff(): + return HttpResponseRedirect(ticket.get_absolute_url()) + else: + return HttpResponseRedirect(ticket.ticket_url) update_ticket = staff_member_required(update_ticket)