Exemplo n.º 1
0
def project_repository(request, object_id):
    project = get_object_or_404(Project, pk=object_id)
    has_permissions_or_403(request.user, "view", project)

    if not project.repository_path:
        raise Http404

    stdout, stderr = "", ""
    try:
        pipe = subprocess.Popen(
                [settings.MERCURIAL_BIN, "log"], # command "hg log"
                cwd = project.repository_path,   # in project's repo dir
                stdout = subprocess.PIPE,        # capture stdout
                stderr=subprocess.PIPE)          # and stderr
        (stdout, stderr) = pipe.communicate()
    except OSError:
        messages.error(request, _('OS Error (bad repository path or filesystem permissions)'))

    if stderr:
        messages.error(request, _('Mercurial error: %s' % stderr))

    log = stdout.split("\n")
    log = [line for line in log if line != "\n"]
    log = [log[i:i+3] for i in xrange(0, len(log)-1, 4)]

    return render(request, 'core/project_repository.html', {'project' : project, 'log' : log})
Exemplo n.º 2
0
def add_or_update_ticket(request, project_id, ticket_id=None):
    project = get_object_or_404(Project, pk=project_id)
    has_permissions_or_403(request.user, "change", project)
    adding = ticket_id is None
    if adding:
        ticket = Ticket(author=request.user, project=project)
    else:
        ticket = get_object_or_404(Ticket, pk=ticket_id)
    if request.method == 'POST':
        form = TicketForm(request.POST, instance=ticket, parent_project=project)
        if form.is_valid():
            ticket = form.save()
            if adding:
                ok_msg = _('Ticket creation successful')
                ticket.send_mails('create')
            else:
                ok_msg = _('Ticket update successfull')
                ticket.send_mails('update')

            messages.success(request, ok_msg)
            return HttpResponseRedirect(reverse('ticket_detail_url',
                                                kwargs={'project_id' : project.pk,
                                                        'object_id'  : ticket.pk}))
        else: # adding/updating failed
            if adding:
                fail_msg = _('Ticket creation failed. Correct errors and try again')
            else:
                fail_msg = _('Ticket update failed. Correct errors and try again')

            messages.error(request, fail_msg)
    else: # GET
        form = TicketForm(instance = ticket, parent_project=project)
    return render(request, 'core/add_ticket.html', {'tform' : form, 'project' : project})
Exemplo n.º 3
0
def project_detail(request,object_id):
    project = get_object_or_404(Project, pk=object_id)
    has_permissions_or_403(request.user, "view", project)
    tickets = project.ticket_set.all()
    return render(request,
                  'core/project_detail.html',
                  {'project' : project,'tickets' : tickets})
Exemplo n.º 4
0
def ticket_detail(request,object_id,project_id):
    ticket = get_object_or_404(Ticket, pk=object_id)
    has_permissions_or_403(request.user, "view", ticket.project)
    workers = ticket.workers.all()
    observers = ticket.observers.all()
    first_related = RelatedTickets.objects.filter(first=ticket.pk)
    second_related = RelatedTickets.objects.filter(second=ticket.pk)
    version_list = reversion.get_for_object(ticket)
    diff = []
    for i in range(0,len(version_list)-1):
        diff.append([version_list[i], generate_patch_html(version_list[i+1], version_list[i], "description")])
    return render(request,
                  'core/ticket_detail.html',
                  {'ticket' : ticket,
                   'workers' : workers,
                   'observers' : observers,
                   'diff' : diff,
                   'first_related':first_related,
                   'second_related':second_related})
Exemplo n.º 5
0
def update_ticket(request,object_id,project_id):
    ticket = get_object_or_404(Ticket, pk=object_id)
    project = ticket.project
    has_permissions_or_403(request.user, "change", project)
    if request.method == "POST":
        tform = TicketForm(request.POST, instance=ticket)
        if tform.is_valid():
            ticket = tform.save(commit=False)
            ticket.save()
            tform.save_m2m()
            messages.success(request,_('Ticket update successful.'))
            return HttpResponseRedirect(reverse('ticket_detail_url', kwargs={'project_id' : ticket.project.pk, 'object_id' : ticket.pk}))
        else:
            tform.fields['version'].queryset = project.version_set
            print tform.errors
            messages.error(request,_('Ticket update failed. Corrert errors below and try again.'))
    else:
        tform = TicketForm(instance=ticket)
        tform.fields['version'].queryset = project.version_set
    return render(request, 'core/add_ticket.html',{'tform' : tform, 'project' : ticket.project, 'ticket_id' : ticket.pk})
Exemplo n.º 6
0
def add_related_ticket(request,project_id,object_id):
    ticket = get_object_or_404(Ticket, pk=object_id)
    has_permissions_or_403(request.user, "change", ticket.project)
    if request.method == "POST":
        form = RelatedTicketsForm(data = request.POST)
        if form.is_valid():
            related = form.save(commit=False)
            related.first = ticket
            related.save()
            form.save_m2m()
            messages.success(request,_('Relation creation successful.'))
            return HttpResponseRedirect(reverse('ticket_detail_url',
                                                kwargs={'project_id' : ticket.project.pk,
                                                        'object_id' : ticket.pk}))
        else:
            messages.error(request,_('Relation creation failed.'))
    else:
        form = RelatedTicketsForm()
        form.fields['second'].queryset = Ticket.objects.filter(project=ticket.project).exclude(pk=ticket.pk)
    return render(request,
                  'core/add_related_ticket.html',
                  {'ticket':ticket,'form':form})
Exemplo n.º 7
0
def add_news(request,object_id):
    project = get_object_or_404(Project, pk=object_id)
    has_permissions_or_403(request.user, "change", project)
    if request.method == "POST":
        nform = NewsForm(data = request.POST)
        if nform.is_valid():
            news = nform.save(commit=False)
            news.project = project
            news.author = request.user
            news.save()
            messages.success(request,_('News creation successful.'))
            return render(request,
                          'core/news_detail.html',
                          {'news': news})
        else:
            messages.error(request,_('News creation failed.'))
            return render(request,
                          'core/add_news.html',
                          {'nform' : nform, 'project' : project })

    else:
        nform = NewsForm()
        return render(request, 'core/add_news.html',{'nform' : nform, 'project' : project })
Exemplo n.º 8
0
def news_detail(request,object_id,project_id):
    news = get_object_or_404(News, pk=object_id)
    has_permissions_or_403(request.user, "view", news.project)
    return render(request, 'core/news_detail.html',{'news' : news})
Exemplo n.º 9
0
def news(request,object_id):
    project = get_object_or_404(Project, pk=object_id)
    has_permissions_or_403(request.user, "view", project)
    news = project.news_set.all().order_by('-created')
    return render(request, 'core/news_list.html',{'news' : news,
        'project':project})