def create_ticket(request): if request.method == 'POST': form = TicketForm(request.POST, request.FILES) form.fields['queue'].choices = [('', '--------')] + [[q.id, q.title] for q in Queue.objects.all()] form.fields['assigned_to'].choices = [('', '--------')] + [[u.id, u.username] for u in User.objects.filter(is_active=True).order_by('username')] if form.is_valid(): ticket = form.save(user=request.user) return HttpResponseRedirect(ticket.get_absolute_url()) else: initial_data = {} if request.user.usersettings.settings.get('use_email_as_submitter', False) and request.user.email: initial_data['submitter_email'] = request.user.email if request.GET.has_key('queue'): initial_data['queue'] = request.GET['queue'] form = TicketForm(initial=initial_data) form.fields['queue'].choices = [('', '--------')] + [[q.id, q.title] for q in Queue.objects.all()] if helpdesk_settings.HELPDESK_STAFF_ONLY_TICKET_OWNERS: users = User.objects.filter(is_active=True, is_staff=True).order_by('username') else: users = User.objects.filter(is_active=True).order_by('username') form.fields['assigned_to'].choices = [('', '--------')] + [[u.id, u.username] for u in users] if helpdesk_settings.HELPDESK_CREATE_TICKET_HIDE_ASSIGNED_TO: form.fields['assigned_to'].widget = forms.HiddenInput() return render_to_response('helpdesk/create_ticket.html', RequestContext(request, { 'form': form, 'tags_enabled': HAS_TAG_SUPPORT, }))
def form_data(request): from helpdesk.forms import TicketForm, PublicTicketForm from helpdesk.models import Queue assignable_users = User.objects.filter(is_active=True).order_by( User.USERNAME_FIELD) initial_data = {} form = PublicTicketForm(initial=initial_data) try: if request.user.email: initial_data['submitter_email'] = request.user.email if 'queue' in request.GET: initial_data['queue'] = request.GET['queue'] if request.user.is_staff: form = TicketForm(initial=initial_data) form.fields['queue'].choices = [ ('', '--------') ] + [[q.id, q.title] for q in Queue.objects.all()] form.fields['assigned_to'].choices = [ ('', '--------') ] + [[u.id, u.get_username()] for u in assignable_users] else: form = PublicTicketForm(initial=initial_data) form.fields['queue'].choices = [ ('', '--------') ] + [[q.id, q.title] for q in Queue.objects.all()] except Exception, e: pass
def api_public_create_ticket(self): form = TicketForm(self.request.POST) form.fields['queue'].choices = [[q.id, q.title] for q in Queue.objects.all()] form.fields['assigned_to'].choices = [[u.id, u.get_username()] for u in User.objects.filter(is_active=True)] if form.is_valid(): ticket = form.save(user=self.request.user) return api_return(STATUS_OK, "%s" % ticket.id) else: return api_return(STATUS_ERROR, text=form.errors.as_text())
def create_ticket(request): if request.method == 'POST': id = request.POST.get('id') if id: ticket = get_object_or_404(Ticket, id=id) form = EditTicketForm(request.POST, request.FILES, instance=ticket) else: form = TicketForm(request.POST, request.FILES) if form.is_valid(): if id: ticket = form.save() else: ticket = form.save(user=request.user) return HttpResponseRedirect(ticket.get_absolute_url()) else: initial_data = {} id = request.GET.get('id') account_id = request.GET.get('account_id') if account_id: initial_data['account'] = Account.objects.get(id=account_id) if request.user.usersettings.settings.get( 'use_email_as_submitter', False) and request.user.account.email: initial_data['submitter_email'] = request.user.account.email if id: ticket = get_object_or_404(Ticket, id=id) form = EditTicketForm(instance=ticket) else: form = TicketForm(initial=initial_data) form.fields['assigned_to'].initial = request.user.account form.fields['owner'].initial = request.user return render_to_response( 'helpdesk/create_ticket.html', RequestContext(request, { 'form': form, 'tags_enabled': HAS_TAG_SUPPORT, }))
def dispatch(self, request, *args, **kwargs): self.object = self.get_object() self.reply_form = CommentForm(request.POST or None if 'reply' in request.POST else None) self.ticket_form = TicketForm( request.POST or None if 'ticket' in request.POST else None, instance=self.object) self.attachment_formset = AttachmentFormset( data=request.POST or None if 'reply' in request.POST else None, files=request.FILES or None) return super(TicketView, self).dispatch(request, *args, **kwargs)
def view_ticket(request, ticket_id): ticket = get_object_or_404(Ticket, id=ticket_id) if request.GET.has_key('take'): # Allow the user to assign the ticket to themselves whilst viewing it. # Trick the update_ticket() view into thinking it's being called with # a valid POST. request.POST = { 'owner': request.user.id, 'public': 1, 'title': ticket.title, 'comment': '' } return update_ticket(request, ticket_id) if request.GET.has_key('close') and ticket.status == Ticket.RESOLVED_STATUS: if not ticket.assigned_to: owner = 0 else: owner = ticket.assigned_to.id # 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': owner, 'title': ticket.title, 'comment': _('Accepted resolution and closed ticket'), } return update_ticket(request, ticket_id) if helpdesk_settings.HELPDESK_STAFF_ONLY_TICKET_OWNERS: users = User.objects.filter(is_active=True, is_staff=True).order_by('username') else: users = User.objects.filter(is_active=True).order_by('username') # TODO: shouldn't this template get a form to begin with? form = TicketForm(initial={'due_date':ticket.due_date}) return render_to_response('helpdesk/ticket.html', RequestContext(request, { 'ticket': ticket, 'form': form, 'active_users': users, 'priorities': Ticket.PRIORITY_CHOICES, 'preset_replies': PreSetReply.objects.filter(Q(queues=ticket.queue) | Q(queues__isnull=True)), 'tags_enabled': HAS_TAG_SUPPORT, }))