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 request.user.is_superuser:
            assigned_to_choices_filter = {'is_active':True}
        else:
            assigned_to_choices_filter = {'is_active':True, 'is_superuser':True}

        form.fields['assigned_to'].choices = [('', '--------')] + \
         [[u.id, u.username] for u in User.objects.filter(**assigned_to_choices_filter).order_by('username')]

    return render_to_response('helpdesk/create_ticket.html',
        RequestContext(request, {
            'form': form,
            'tags_enabled': HAS_TAG_SUPPORT,
        }))
Exemplo n.º 2
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.º 3
0
def create_ticket(request):
    if request.method == "POST":
        # add request to process user related events
        form = TicketForm(request.POST, request.FILES, request=request)
        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, "tagging_enabled": HAS_TAGGING_SUPPORT, "taggit_enabled": HAS_TAGGIT_SUPPORT}
        ),
    )
Exemplo n.º 4
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.º 5
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.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.º 6
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.º 7
0
class TicketView(DetailView):
    template_name = 'helpdesk/ticket.html'
    model = Ticket
    reply_form = None
    ticket_form = None
    attachment_formset = None

    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 post(self, request, *args, **kwargs):
        ticket = self.get_object()
        self.object = ticket
        if 'reply' in request.POST and self.reply_form.is_valid() and self.attachment_formset.is_valid():
            reply = self.reply_form.save(commit=False)
            reply.author = request.user
            reply.ticket = ticket
            reply.save()

            self.attachment_formset.instance = reply
            self.attachment_formset.save()

            ticket.state = self.reply_form.cleaned_data['state']
            ticket.save()

            new_answer.send(sender=Comment, ticket=ticket, answer=reply)
            HistoryAction.objects.create(
                user=reply.author,
                change='added %scomment and set state to <i>%s</i>' % (
                    'internal ' if reply.internal else '',
                    reply.ticket.state),
                ticket=reply.ticket
            )

            return HttpResponseRedirect(reverse('helpdesk_home'))
        elif 'ticket' in request.POST and self.ticket_form.is_valid():
            changes = []
            for fieldname in self.ticket_form.changed_data:
                old_value = self._get_display_value(fieldname)
                setattr(self.object, fieldname, self.ticket_form.cleaned_data[fieldname])
                new_value = self._get_display_value(fieldname)
                changes.append('%s: %s → %s' % (fieldname, old_value, new_value))
            self.object.save(update_fields=self.ticket_form.changed_data)
            if changes:
                HistoryAction.objects.create(
                    user=request.user,
                    change='\n'.join(changes),
                    ticket=self.object
                )
                ticket_updated.send(sender=Ticket,
                                    changed_data=self.ticket_form.changed_data,
                                    changes=changes,
                                    ticket=self.object,
                                    updater=request.user)
            return HttpResponseRedirect(reverse('helpdesk_home'))
        return self.render_to_response(self.get_context_data())

    def _get_display_value(self, fieldname):
        try:
            return getattr(self.object, 'get_%s_display' % fieldname)()
        except:
            return getattr(self.object, fieldname)

    def get_comments(self):
        return self.object.comment_set.all().order_by('created')

    def get_context_data(self, **kwargs):
        context = super(TicketView, self).get_context_data(**kwargs)
        context['comments'] = self.get_comments()
        context['reply_form'] = self.reply_form
        context['ticket_form'] = self.ticket_form
        context['history'] = self.object.historyaction_set.all().order_by('-created')
        context['attachments'] = self.object.attachments.all()
        context['attachment_formset'] = self.attachment_formset
        return context
Exemplo n.º 8
0
class TicketView(DetailView):
    template_name = 'helpdesk/ticket.html'
    model = Ticket
    reply_form = None
    ticket_form = None
    attachment_formset = None

    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 post(self, request, *args, **kwargs):
        ticket = self.get_object()
        self.object = ticket
        if 'reply' in request.POST and self.reply_form.is_valid(
        ) and self.attachment_formset.is_valid():
            reply = self.reply_form.save(commit=False)
            reply.author = request.user
            reply.ticket = ticket
            reply.save()

            self.attachment_formset.instance = reply
            self.attachment_formset.save()

            ticket.state = self.reply_form.cleaned_data['state']
            ticket.save()

            new_answer.send(sender=Comment, ticket=ticket, answer=reply)
            HistoryAction.objects.create(
                user=reply.author,
                change='added %scomment and set state to <i>%s</i>' %
                ('internal ' if reply.internal else '', reply.ticket.state),
                ticket=reply.ticket)

            return HttpResponseRedirect(reverse('helpdesk_home'))
        elif 'ticket' in request.POST and self.ticket_form.is_valid():
            changes = []
            for fieldname in self.ticket_form.changed_data:
                old_value = self._get_display_value(fieldname)
                setattr(self.object, fieldname,
                        self.ticket_form.cleaned_data[fieldname])
                new_value = self._get_display_value(fieldname)
                changes.append('%s: %s → %s' %
                               (fieldname, old_value, new_value))
            self.object.save(update_fields=self.ticket_form.changed_data)
            if changes:
                HistoryAction.objects.create(user=request.user,
                                             change='\n'.join(changes),
                                             ticket=self.object)
                ticket_updated.send(sender=Ticket,
                                    changed_data=self.ticket_form.changed_data,
                                    changes=changes,
                                    ticket=self.object,
                                    updater=request.user)
            return HttpResponseRedirect(reverse('helpdesk_home'))
        return self.render_to_response(self.get_context_data())

    def _get_display_value(self, fieldname):
        try:
            return getattr(self.object, 'get_%s_display' % fieldname)()
        except:
            return getattr(self.object, fieldname)

    def get_comments(self):
        return self.object.comment_set.all().order_by('created')

    def get_context_data(self, **kwargs):
        context = super(TicketView, self).get_context_data(**kwargs)
        context['comments'] = self.get_comments()
        context['reply_form'] = self.reply_form
        context['ticket_form'] = self.ticket_form
        context['history'] = self.object.historyaction_set.all().order_by(
            '-created')
        context['attachments'] = self.object.attachments.all()
        context['attachment_formset'] = self.attachment_formset
        return context