def test_valid_data(self): form_data = self._valid_form_data() form_data['name'] = 'test-project' form = ProjectForm(data=form_data, instance=self.project) self.assertEqual(form.is_valid(), True, form.errors.items()) form.save() self.assertEqual(self.project.name, 'test-project')
def add_edit_project(request, project_id=None): if project_id is None: project = None old_pid = None flag = 1 else: project = get_object_or_404(Project, id=project_id) old_pid = project.pid flag = 2 if util.is_admin(request): # JH add initial pid initial_pid = cutil.getDefaultProjectPid() form = ProjectForm(instance=project, data=request.POST or None, pid_initial=initial_pid) else: if not project.can_edit(request): return HttpResponseForbidden('<h1>Access Denied</h1>') form = UserProjectForm(instance=project, data=request.POST or None) if request.method == 'POST': if form.is_valid(): project = form.save(commit=False) if project_id is not None: # if project is being edited, project_id cannot change. project.pid = old_pid elif not project.pid: # if project was being created, did the user give a project_id # we should use? If not, then we have to generate one # ourselves. project.pid = get_new_pid(project.institute) project.save() approved_by = request.user project.activate(approved_by) form.save_m2m() if flag == 1: messages.success(request, "Project '%s' created succesfully" % project) else: messages.success(request, "Project '%s' edited succesfully" % project) return HttpResponseRedirect(project.get_absolute_url()) return render_to_response('karaage/projects/project_form.html', locals(), context_instance=RequestContext(request))
def add_edit_project(request, project_id=None): if project_id is None: project = None old_pid = None flag = 1 else: project = get_object_or_404(Project, id=project_id) old_pid = project.pid flag = 2 if util.is_admin(request): # JH add initial pid initial_pid = cutil.getDefaultProjectPid() form = ProjectForm(instance=project, data=request.POST or None, pid_initial = initial_pid) else: if not project.can_edit(request): return HttpResponseForbidden('<h1>Access Denied</h1>') form = UserProjectForm(instance=project, data=request.POST or None) if request.method == 'POST': if form.is_valid(): project = form.save(commit=False) if project_id is not None: # if project is being edited, project_id cannot change. project.pid = old_pid elif not project.pid: # if project was being created, did the user give a project_id # we should use? If not, then we have to generate one # ourselves. project.pid = get_new_pid(project.institute) project.save() approved_by = request.user project.activate(approved_by) form.save_m2m() if flag == 1: messages.success( request, "Project '%s' created succesfully" % project) else: messages.success( request, "Project '%s' edited succesfully" % project) return HttpResponseRedirect(project.get_absolute_url()) return render_to_response( 'karaage/projects/project_form.html', locals(), context_instance=RequestContext(request))
def add_edit_project(request, project_id=None): if project_id is None: project = None flag = 1 else: project = get_object_or_404(Project, pid=project_id) flag = 2 if request.method == 'POST': form = ProjectForm(request.POST, instance=project) if form.is_valid(): project = form.save(commit=False) if project_id is not None: # if project is being edited, project_id cannot change, so we # should always use the value supplied on the URL. project.pid = project_id elif not project.pid: # if project was being created, did the user give a project_id # we should use? If not, then we have to generate one # ourselves. project.pid = get_new_pid(project.institute) project.save() approved_by = request.user project.activate(approved_by) form.save_m2m() if flag == 1: messages.success(request, "Project '%s' created succesfully" % project) log(None, project, 1, 'Created') else: messages.success(request, "Project '%s' edited succesfully" % project) log(None, project, 2, 'Edited') return HttpResponseRedirect(project.get_absolute_url()) else: form = ProjectForm(instance=project) return render_to_response('projects/project_form.html', locals(), context_instance=RequestContext(request))
def add_edit_project(request, project_id=None): kwargs={} if project_id is None: project = None flag = 1 else: kwargs['instance'] = project = get_object_or_404(Project, pid=project_id) kwargs['initial'] = { 'leaders': list(project.leaders.values_list('pk', flat=True)), } flag = 2 if request.method == 'POST': kwargs['data'] = request.POST if util.is_admin(request): form = ProjectForm(**kwargs) else: if not project.can_edit(request): return HttpResponseForbidden('<h1>Access Denied</h1>') form = UserProjectForm(**kwargs) if request.method == 'POST': if form.is_valid(): project = form.save(commit=False) if project_id is not None: # if project is being edited, project_id cannot change, so we # should always use the value supplied on the URL. project.pid = project_id elif not project.pid: # if project was being created, did the user give a project_id # we should use? If not, then we have to generate one # ourselves. project.pid = get_new_pid(project.institute) project.save() approved_by = request.user project.activate(approved_by) project.projectmembership_set.filter( is_project_leader=True, ).exclude( person__in=form.cleaned_data['leaders'], ).update( is_project_leader=False, ) project.add_update_project_members( is_project_leader=True, *form.cleaned_data['leaders'] ) form.save_m2m() if flag == 1: messages.success( request, "Project '%s' created succesfully" % project) else: messages.success( request, "Project '%s' edited succesfully" % project) return HttpResponseRedirect(project.get_absolute_url()) return render_to_response( 'karaage/projects/project_form.html', locals(), context_instance=RequestContext(request))