Exemplo n.º 1
0
        if notify_formset.is_valid():
            test_plan = form.save()
            notify_formset.instance = test_plan
            notify_formset.save()

            return HttpResponseRedirect(test_plan.get_absolute_url())

        # taken from FormMixin.form_invalid()
        return self.render_to_response(
            self.get_context_data(notify_formset=notify_formset)
        )


@method_decorator(
    object_permission_required(
        "testplans.change_testplan", (TestPlan, "pk", "pk"), accept_global_perms=True
    ),
    name="dispatch",
)
class Edit(UpdateView):
    model = TestPlan
    form_class = NewPlanForm
    template_name = "testplans/mutable.html"

    def get_form(self, form_class=None):
        form = super().get_form(form_class)
        if self.request.POST.get("product"):
            form.populate(product_id=self.request.POST["product"])
        else:
            form.populate(product_id=self.object.product_id)
        return form
Exemplo n.º 2
0
from django.urls import reverse
from django.utils.decorators import method_decorator
from django.utils.translation import gettext_lazy as _
from django.views.generic import DetailView
from django.views.generic.base import TemplateView, View
from django.views.generic.edit import CreateView, UpdateView
from guardian.decorators import permission_required as object_permission_required

from tcms.bugs.forms import BugCommentForm, NewBugForm
from tcms.bugs.models import Bug
from tcms.core.helpers.comments import add_comment
from tcms.management.models import Component


@method_decorator(
    object_permission_required("bugs.view_bug", (Bug, "pk", "pk"),
                               accept_global_perms=True),
    name="dispatch",
)
class Get(DetailView):
    model = Bug
    template_name = "bugs/get.html"
    http_method_names = ["get"]

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["comment_form"] = BugCommentForm()
        context["comment_form"].populate(self.object.pk)
        context["executions"] = self.object.executions.all()
        context["OBJECT_MENU_ITEMS"] = [(
            "...",
            [
Exemplo n.º 3
0
    tester_ids = set()
    assignee_ids = set()
    for case_run in case_runs:
        if case_run.tested_by_id:
            tester_ids.add(case_run.tested_by_id)
        if case_run.assignee_id:
            assignee_ids.add(case_run.assignee_id)
    testers = User.objects.filter(pk__in=tester_ids).values_list(
        'pk', 'username')
    assignees = User.objects.filter(pk__in=assignee_ids).values_list(
        'pk', 'username')
    return (dict(testers.iterator()), dict(assignees.iterator()))


@method_decorator(object_permission_required('testruns.view_testrun',
                                             (TestRun, 'pk', 'pk'),
                                             accept_global_perms=True),
                  name='dispatch')
class GetTestRunView(TemplateView):
    """Display testrun's details"""

    template_name = 'run/get.html'

    def get_context_data(self, **kwargs):
        # Get the test run
        try:
            # todo: this is redundant b/c we've got self.object pointing to the
            # same object and we don't have to read it twice from the DB
            # todo: self.object however isn't present b/c this is not a DetailsView
            # and we're not calling super() anywhere
            test_run = TestRun.objects.select_related().get(pk=kwargs['pk'])
Exemplo n.º 4
0
from django.utils.translation import gettext_lazy as _
from django.views.generic import DetailView
from django.views.generic.base import TemplateView, View
from django.views.generic.edit import CreateView, UpdateView

from guardian.decorators import permission_required as object_permission_required

from tcms.bugs.forms import BugCommentForm, NewBugForm
from tcms.bugs.models import Bug
from tcms.core.helpers.comments import add_comment
from tcms.core.response import ModifySettingsTemplateResponse
from tcms.management.models import Component


@method_decorator(
    object_permission_required('bugs.view_bug', (Bug, 'pk', 'pk'),
                               accept_global_perms=True),
    name='dispatch')
class Get(DetailView):
    model = Bug
    template_name = 'bugs/get.html'
    http_method_names = ['get']
    response_class = ModifySettingsTemplateResponse

    def render_to_response(self, context, **response_kwargs):
        self.response_class.modify_settings = modify_settings(
            MENU_ITEMS={'append': [
                ('...', [
                    (
                        _('Edit'),
                        reverse('bugs-edit', args=[self.object.pk])
                    ),
Exemplo n.º 5
0
    def get_context_data(self, **kwargs):
        form = SearchCaseForm(self.request.GET)
        if self.request.GET.get("product"):
            form.populate(product_id=self.request.GET["product"])
        else:
            form.populate()

        return {
            "form": form,
        }


@method_decorator(
    object_permission_required("testcases.view_testcase",
                               (TestCase, "pk", "pk"),
                               accept_global_perms=True),
    name="dispatch",
)
class TestCaseGetView(DetailView):

    model = TestCase
    template_name = "testcases/get.html"
    http_method_names = ["get"]

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["executions"] = self.object.executions.select_related(
            "run", "tested_by", "assignee", "case",
            "status").order_by("run__plan", "run")
        context["OBJECT_MENU_ITEMS"] = [(
Exemplo n.º 6
0
        data.update({
            'test_case': case,
            'test_case_text': test_case_text,
            'execution': execution,
            'comments_count': len(execution_comments),
            'execution_comments': execution_comments,
            'execution_logs': execution.history.all(),
            'execution_status': execution_status,
        })

        return data


@method_decorator(object_permission_required('testcases.view_testcase',
                                             (TestCase, 'pk', 'pk'),
                                             accept_global_perms=True),
                  name='dispatch')
class TestCaseGetView(DetailView):

    model = TestCase
    template_name = 'testcases/get.html'
    http_method_names = ['get']
    response_class = ModifySettingsTemplateResponse

    def render_to_response(self, context, **response_kwargs):
        self.response_class.modify_settings = modify_settings(
            MENU_ITEMS={
                'append': [(
                    '...', [(_('Edit'),
                             reverse('testcases-edit', args=[self.object.pk])),
Exemplo n.º 7
0
                  name="dispatch")
class SearchTestRunView(TemplateView):

    template_name = "testruns/search.html"

    def get_context_data(self, **kwargs):
        form = SearchRunForm(self.request.GET)
        form.populate(product_id=self.request.GET.get("product"))

        return {
            "form": form,
        }


@method_decorator(
    object_permission_required("testruns.view_testrun", (TestRun, "pk", "pk"),
                               accept_global_perms=True),
    name="dispatch",
)
class GetTestRunView(DetailView):

    template_name = "testruns/get.html"
    http_method_names = ["get"]
    model = TestRun

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["execution_statuses"] = TestExecutionStatus.objects.order_by(
            "-weight", "name")
        context["confirmed_statuses"] = TestCaseStatus.objects.filter(
            is_confirmed=True)
        context["link_form"] = LinkReferenceForm()