Exemplo n.º 1
0
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,
        }))
Exemplo n.º 2
0
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
Exemplo n.º 3
0
    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())
Exemplo n.º 4
0
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,
        }))
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
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,
        }))