def edit(request, plan_id, template_name='plan/edit.html'): """Edit test plan view""" try: test_plan = TestPlan.objects.select_related().get(plan_id=plan_id) except ObjectDoesNotExist: raise Http404 # If the form is submitted if request.method == "POST": form = EditPlanForm(request.POST) form.populate(product_id=request.POST.get('product')) # FIXME: Error handle if form.is_valid(): if request.user.has_perm('testplans.change_testplan'): test_plan.name = form.cleaned_data['name'] test_plan.parent = form.cleaned_data['parent'] test_plan.product = form.cleaned_data['product'] test_plan.product_version = form.cleaned_data['product_version'] test_plan.type = form.cleaned_data['type'] test_plan.is_active = form.cleaned_data['is_active'] test_plan.extra_link = form.cleaned_data['extra_link'] # IMPORTANT! tp.current_user is an instance attribute, # added so that in post_save, current logged-in user info # can be accessed. # Instance attribute is usually not a desirable solution. test_plan.current_user = request.user test_plan.text = form.cleaned_data['text'] test_plan.save() # Update plan email settings update_plan_email_settings(test_plan, form) return HttpResponseRedirect( reverse('test_plan_url', args=[plan_id, slugify(test_plan.name)])) else: form = EditPlanForm(initial={ 'name': test_plan.name, 'product': test_plan.product_id, 'product_version': test_plan.product_version_id, 'type': test_plan.type_id, 'text': test_plan.text, 'parent': test_plan.parent_id, 'is_active': test_plan.is_active, 'extra_link': test_plan.extra_link, 'auto_to_plan_author': test_plan.emailing.auto_to_plan_author, 'auto_to_case_owner': test_plan.emailing.auto_to_case_owner, 'auto_to_case_default_tester': test_plan.emailing.auto_to_case_default_tester, 'notify_on_plan_update': test_plan.emailing.notify_on_plan_update, 'notify_on_case_update': test_plan.emailing.notify_on_case_update, }) form.populate(product_id=test_plan.product_id) context_data = { 'test_plan': test_plan, 'form': form, } return render(request, template_name, context_data)
def edit(request, plan_id, template_name='plan/edit.html'): '''Edit test plan view''' try: tp = TestPlan.objects.select_related().get(plan_id=plan_id) except ObjectDoesNotExist: raise Http404 # If the form is submitted if request.method == "POST": form = EditPlanForm(request.POST, request.FILES) if request.POST.get('product'): form.populate(product_id=request.POST['product']) else: form.populate() # FIXME: Error handle if form.is_valid(): if form.cleaned_data.get('upload_plan_text'): # Set the summary form field to the uploaded text form.data['text'] = form.cleaned_data['text'] # Generate the form context_data = { 'form': form, 'test_plan': tp, } return render(template_name, context_data) if request.user.has_perm('testplans.change_testplan'): tp.name = form.cleaned_data['name'] tp.parent = form.cleaned_data['parent'] tp.product = form.cleaned_data['product'] tp.product_version = form.cleaned_data['product_version'] tp.type = form.cleaned_data['type'] tp.is_active = form.cleaned_data['is_active'] tp.extra_link = form.cleaned_data['extra_link'] tp.owner = form.cleaned_data['owner'] # IMPORTANT! tp.current_user is an instance attribute, # added so that in post_save, current logged-in user info # can be accessed. # Instance attribute is usually not a desirable solution. tp.current_user = request.user tp.save() if request.user.has_perm('testplans.add_testplantext'): new_text = request.POST.get('text') text_checksum = checksum(new_text) if not tp.text_exist() or text_checksum != tp.text_checksum(): tp.add_text(author=request.user, plan_text=request.POST.get('text'), text_checksum=text_checksum) if request.user.has_perm('testplans.change_envplanmap'): tp.clear_env_groups() if request.POST.get('env_group'): env_groups = EnvGroup.objects.filter( id__in=request.POST.getlist('env_group')) for env_group in env_groups: tp.add_env_group(env_group=env_group) # Update plan email settings update_plan_email_settings(tp, form) return HttpResponseRedirect( reverse('test_plan_url', args=[plan_id, slugify(tp.name)])) else: # Generate a blank form # Temporary use one environment group in this case if tp.env_group.all(): for env_group in tp.env_group.all(): env_group_id = env_group.id break else: env_group_id = None form = EditPlanForm(initial={ 'name': tp.name, 'product': tp.product_id, 'product_version': tp.product_version_id, 'type': tp.type_id, 'text': tp.latest_text() and tp.latest_text().plan_text or '', 'parent': tp.parent_id, 'env_group': env_group_id, 'is_active': tp.is_active, 'extra_link': tp.extra_link, 'owner': tp.owner, 'auto_to_plan_owner': tp.emailing.auto_to_plan_owner, 'auto_to_plan_author': tp.emailing.auto_to_plan_author, 'auto_to_case_owner': tp.emailing.auto_to_case_owner, 'auto_to_case_default_tester': tp.emailing.auto_to_case_default_tester, 'notify_on_plan_update': tp.emailing.notify_on_plan_update, 'notify_on_case_update': tp.emailing.notify_on_case_update, }) form.populate(product_id=tp.product_id) context_data = { 'test_plan': tp, 'form': form, } return render(request, template_name, context_data)
def edit(request, plan_id, template_name='plan/edit.html'): '''Edit test plan view''' # Define the default sub module SUB_MODULE_NAME = 'plans' try: tp = TestPlan.objects.select_related().get(plan_id=plan_id) except ObjectDoesNotExist: raise Http404 # If the form is submitted if request.method == "POST": form = EditPlanForm(request.POST, request.FILES) if request.POST.get('product'): form.populate(product_id=request.POST['product']) else: form.populate() # FIXME: Error handle if form.is_valid(): if form.cleaned_data.get('upload_plan_text'): # Set the summary form field to the uploaded text form.data['text'] = form.cleaned_data['text'] # Generate the form context_data = { 'module': MODULE_NAME, 'sub_module': SUB_MODULE_NAME, 'form': form, 'test_plan': tp, } return render_to_response(template_name, context_data, context_instance=RequestContext(request)) if request.user.has_perm('testplans.change_testplan'): tp.name = form.cleaned_data['name'] tp.parent = form.cleaned_data['parent'] tp.product = form.cleaned_data['product'] tp.product_version = form.cleaned_data['product_version'] tp.type = form.cleaned_data['type'] tp.is_active = form.cleaned_data['is_active'] tp.extra_link = form.cleaned_data['extra_link'] tp.owner = form.cleaned_data['owner'] # IMPORTANT! tp.current_user is an instance attribute, # added so that in post_save, current logged-in user info # can be accessed. # Instance attribute is usually not a desirable solution. tp.current_user = request.user tp.save() if request.user.has_perm('testplans.add_testplantext'): new_text = request.POST.get('text') text_checksum = checksum(new_text) if not tp.text_exist() or text_checksum != tp.text_checksum(): tp.add_text(author=request.user, plan_text=request.POST.get('text'), text_checksum=text_checksum) if request.user.has_perm('management.change_tcmsenvplanmap'): tp.clear_env_groups() if request.POST.get('env_group'): env_groups = TCMSEnvGroup.objects.filter( id__in=request.POST.getlist('env_group')) for env_group in env_groups: tp.add_env_group(env_group=env_group) # Update plan email settings update_plan_email_settings(tp, form) return HttpResponseRedirect( reverse('tcms.testplans.views.get', args=[plan_id, slugify(tp.name)])) else: # Generate a blank form # Temporary use one environment group in this case if tp.env_group.all(): for env_group in tp.env_group.all(): env_group_id = env_group.id break else: env_group_id = None form = EditPlanForm(initial={ 'name': tp.name, 'product': tp.product_id, 'product_version': tp.product_version_id, 'type': tp.type_id, 'text': tp.latest_text() and tp.latest_text().plan_text or '', 'parent': tp.parent_id, 'env_group': env_group_id, 'is_active': tp.is_active, 'extra_link': tp.extra_link, 'owner': tp.owner, 'auto_to_plan_owner': tp.emailing.auto_to_plan_owner, 'auto_to_plan_author': tp.emailing.auto_to_plan_author, 'auto_to_case_owner': tp.emailing.auto_to_case_owner, 'auto_to_case_default_tester': tp.emailing.auto_to_case_default_tester, 'notify_on_plan_update': tp.emailing.notify_on_plan_update, 'notify_on_case_update': tp.emailing.notify_on_case_update, 'notify_on_plan_delete': tp.emailing.notify_on_plan_delete, }) form.populate(product_id=tp.product_id) context_data = { 'module': MODULE_NAME, 'sub_module': SUB_MODULE_NAME, 'test_plan': tp, 'form': form, } return render_to_response(template_name, context_data, context_instance=RequestContext(request))