Ejemplo n.º 1
0
def add_ticket(request, user_id=None, mode=None):
    if request.method == 'GET':
        try:
            user_id = int(user_id)
        except ValueError:
            raise Http404()
        admin = session_user(request)
        ticket_user = User.objects.get(id=user_id)
        ticket = Ticket()
        ticket.priority = '20'
        if not mode: mode = 'none'
        if mode == 'new': ticket.status = '00'
        if mode == 'accepted':
            ticket.admin = admin
            ticket.status = '10'
        if mode == 'closed':
            ticket.admin = admin
            ticket.status = '30'
        form = TicketForm(instance=ticket)
        tickets = Ticket.objects.filter(user=ticket_user).order_by('-id')
        return render_to_response('add_ticket.html',
                                  {'form': form, 'foruser': ticket_user,
                                   'mode': mode, 'tickets': tickets})
    else:
        admin = session_user(request)
        #TODO: make hidden fields and modify form.save method
        user = User.objects.get(id=request.POST.get('user_id'))
        t = Ticket(user=user)
        form = TicketForm(request.POST, instance=t)
        #---
        send_closed = False
        mail_error = None
        try:
            form.save(commit=False)
            if not t.is_new():
                if admin:
                    t.accept_by(admin)
            if t.is_closed():
                t.accept_by(admin)
                t.closing_time = datetime.datetime.now()
                send_closed = True
            t.save()
            mail_error = mail_fetcher.send_new_ticket_message(t, '')
            if send_closed:
                mail_error = mail_fetcher.send_ticket_closed_message(t)
        except ValueError:
            return render_to_response('add_ticket.html',
                                      {'form': form, 'foruser': user})
        if mail_error is not None:
            return render_to_response('add_ticket.html',
                                      {'form': form, 'foruser': user,
                                       'mail_error': mail_error})
        return redirect('/')
Ejemplo n.º 2
0
def edit_ticket(request, ticket_id):
    """
    если метод GET - показываем форму, с содержимым объекта
    если POST и ticket_id != None - update
    """
    t = Ticket.objects.get(id=int(ticket_id))
    model_name = "Ticket"
    form_class = TicketForm
    admin = session_user(request)

    if request.method == 'GET':
        if ticket_id is not None:
            return render_to_response("%s_form.html" % model_name.lower(),
                                      {'form': form_class(instance=t)})
    elif request.method == 'POST':
        form = form_class(request.POST, instance=t)

        old_status = t.status
        new_status = form.data['status']
        mail_error = None
        try:
            form.save(commit=False)
            if t.is_new(old_status) and not t.is_new(new_status):
                if admin:
                    t.accept_by(admin)
            if not t.is_new(old_status) and t.is_new(new_status) and t.admin:
                t.admin = None
                t.closing_time = None
            if not t.is_closed(old_status) and t.is_closed(new_status):
                t.closing_time = datetime.datetime.now()
                #mail_error = mail_fetcher.send_ticket_closed_message(t)

            t.save()
        except ValueError:
            return render_to_response("%s_form.html" % model_name.lower(),
                                      {'msgs': Message.objects.filter(ticket=t)
                                       ,
                                       'ticket': t, 'form': form})
        if mail_error is not None:
            return render_to_response("%s_form.html" % model_name.lower(),
                                      {'msgs': Message.objects.filter(ticket=t)
                                       ,
                                       'ticket': t, 'form': form,
                                       'mail_error': mail_error})
    return redirect('ticket', t.id)
Ejemplo n.º 3
0
def doc_upload(request):
    if request.method == 'POST':
        form = PlaceDocumentForm(request.POST, request.FILES)
        if form.is_valid():
            cd = form.cleaned_data
            #return HttpResponse(str(cd))
            place = Place.objects.get(id=cd['place_id'])
            #doc = None
            #title = None
            #Существущий документ (обновляем название)
            if cd['doc_id'] is not None:
                doc = Document.objects.get(id=int(cd['doc_id']))
                if cd['name'] != '':
                    doc.name = cd['name']
                    doc.save()
            #Новый документ
            else:
                title = cd['name'] if cd['name'] != '' else request.FILES['file'].name
                doc = Document(name=title, place=place)
                doc.save()
                #Создаём DocFile
            doc_file = DocFile(document=doc, version=0, file_name='temp',
                               comment=cd['comment'],
                               ctime=datetime.datetime.now(),
                               user=session_user(request))
            doc_file.save()
            #id.ext

            fname = str(doc_file.id) + '.' + request.FILES['file'].name.rsplit('.', 1)[1]
            doc_file.file_name = fname
            doc_file.save()
            #Сохраняем файл
            destination = open(INPUT_PATH + '/' + fname, 'wb+')
            for chunk in request.FILES['file'].chunks():
                destination.write(chunk)
            destination.close()
            return redirect('/place/' + str(cd['place_id']))
        else:
            return HttpResponse(str(form.errors))