Esempio n. 1
0
    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)
Esempio n. 2
0
 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])
Esempio n. 3
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) 
Esempio n. 4
0
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)