예제 #1
0
 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')
예제 #2
0
 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')
예제 #3
0
 def test_invalid_pid(self):
     form_data = self._valid_form_data()
     form_data['pid'] = '!test-project'
     form = ProjectForm(data=form_data)
     self.assertEqual(form.is_valid(), False)
     self.assertEqual(
         form.errors.items(),
         [('pid',
           [u'Project names can only contain letters,'
            u' numbers and underscores'])])
예제 #4
0
 def test_invalid_pid(self):
     form_data = self._valid_form_data()
     form_data['pid'] = '!test-project'
     form = ProjectForm(data=form_data)
     self.assertEqual(form.is_valid(), False)
     self.assertEqual(
         form.errors.items(),
         dict.items({
             'pid': [
                 six.u('Project names can only contain letters,'
                       ' numbers and underscores')
             ]
         }))
예제 #5
0
 def test_invalid_pid(self):
     form_data = self._valid_form_data()
     form_data['pid'] = '!test-project'
     form = ProjectForm(data=form_data)
     self.assertEqual(form.is_valid(), False)
     self.assertEqual(
         form.errors.items(),
         dict.items({
             'leaders': [six.u('This field is required.')],
             'pid': [six.u(
                 'Project names can only contain letters,'
                 ' numbers and underscores')]
         })
     )
예제 #6
0
파일: views.py 프로젝트: kerriwait/karaage
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))
예제 #7
0
파일: views.py 프로젝트: CVL-GitHub/karaage
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))
예제 #8
0
파일: admin.py 프로젝트: NeCTAR-RC/karaage
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))
예제 #9
0
파일: views.py 프로젝트: vlsci/karaage
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))