def form_valid(self, form): form.instance.CreateUser = self.request.user wf = Workflow.objects.get(name='Distributor_Audit_Flow') wa = WorkflowActivity(workflow=wf, created_by=self.request.user) wa.save() wenyuan = Role.objects.get(name='文员') zhuguan = Role.objects.get(name = '主管') p1 = Participant(user=self.request.user, workflowactivity=wa) p1.save() wa.assign_role(self.request.user, self.request.user, wenyuan) wa.assign_role(self.request.user, self.request.user, zhuguan) wa.start(self.request.user) form.instance.Activity = wa return super(CustomerCreateView, self).form_valid(form)
def test_state_form_init(self): """ As the __init__ method is overridden - we need to check the form is set up properly """ tt = TicketType() tt.name = 'Test1' tt.description = "A description" w = Workflow.objects.get(id=1) tt.workflow = w tt.save() p = Project.objects.get(id=1) c = Component.objects.get(id=1) u = User.objects.get(id=1) wm = WorkflowManager() wm.workflow = w wm.created_by = u wm.save() t = Ticket() t.ticket_type = tt t.project = p t.component = c t.summary = "Summary" t.description = "Description" t.created_by = u t.updated_by = u t.workflow_manager = wm t.save() r = Role.objects.get(id=1) p = Participant( role=r, user=u, workflowmanager=wm ) p.save() wm.start(p) sf = StateForm(workflow_manager=wm) self.assertEqual(sf.fields['transition'].queryset[0], wm.current_state().state.transitions_from.all()[0])
def new_ticket(request, *arg): """ For generating new tickets """ if request.method == 'POST': form = TicketForm(request.POST) if form.is_valid(): t = Ticket() t.ticket_type = form.cleaned_data['ticket_type'] t.project = form.cleaned_data['project'] t.component = form.cleaned_data['component'] t.summary = form.cleaned_data['summary'] t.description = form.cleaned_data['description'] t.created_by = request.user t.updated_by = request.user # workflow related stuff ticket_type = t.ticket_type wm = WorkflowManager() wm.workflow = ticket_type.workflow wm.created_by = request.user wm.save() r = Role.objects.get(id=settings.ROLE_SUBMITTER) p = Participant() p.user = request.user p.role = r p.workflowmanager=wm p.save() t.workflow_manager=wm t.save() wm.start(p) # Generates a confirmation email to send to the new user current_site = Site.objects.get_current() site_name = current_site.name domain = current_site.domain tplt = loader.get_template(settings.NEW_TICKET_EMAIL_TEMPLATE) c = { 'email': request.user.email, 'domain': domain, 'site_name': site_name, 'user': request.user, 'protocol': settings.REGISTRATION_USE_HTTPS and 'https' or 'http', 'ticket': t, } send_mail(_("Confirmation of new ticket on IssueTracker"), tplt.render(Context(c)), None, [request.user.email]) request.user.message_set.create(message=_("The ticket has been"\ " successfully created.")) return HttpResponseRedirect('/ticket/%d'%t.id) else: form = TicketForm() c = RequestContext(request, {'form': form}) return render_to_response('new.html', c)
def ticket(request, pk): """ View a ticket """ ticket = get_object_or_404(Ticket, id=pk) if request.method == 'POST': assignform = AssignForm(request.POST, prefix="assign") stateform = StateForm( request.POST, prefix="state", workflow_manager=ticket.workflow_manager ) if "change" in request.POST: if stateform.is_valid(): transition = stateform.cleaned_data['transition'] p = Participant.objects.get( user=request.user, workflowmanager=ticket.workflow_manager ) ticket.workflow_manager.progress( transition, p ) request.user.message_set.create(message=_("The ticket has been"\ " successfully transitioned to a new state..")) assign_dict={} if ticket.assigned_to: assign_dict = {'assign-assignee': ticket.assigned_to.id} assignform = AssignForm(assign_dict, prefix="assign") stateform = StateForm( prefix="state", workflow_manager=ticket.workflow_manager ) elif "assign" in request.POST: if assignform.is_valid(): u = assignform.cleaned_data['assignee'] ticket.assigned_to = u ticket.save() r = Role.objects.get(id=settings.ROLE_ASSIGNEE) p = Participant.objects.filter(user=u, workflowmanager=ticket.workflow_manager) if len(p)==1: p[0].role=r p[0].save() else: p = Participant( role=r, user=u, workflowmanager=ticket.workflow_manager ) p.save() request.user.message_set.create(message=_("The ticket has been"\ " successfully re-assigned.")) else: assign_dict={} if ticket.assigned_to: assign_dict = {'assign-assignee': ticket.assigned_to.id} assignform = AssignForm(assign_dict, prefix="assign") stateform = StateForm( prefix="state", workflow_manager=ticket.workflow_manager ) c = RequestContext(request, { 'ticket': ticket, 'assignform': assignform, 'stateform': stateform, }) return render_to_response('ticket.html', c)