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('/')
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)
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))