コード例 #1
0
ファイル: views.py プロジェクト: markgdawson/cogs3
    def post(self, request):
        project_form = ProjectCreationForm(request.user, data=request.POST)
        allocation_form = SystemAllocationRequestCreationForm(
            request.user,
            include_project=False,
            data=request.POST,
            files=request.FILES)

        if project_form.is_valid() and allocation_form.is_valid():
            project = project_form.save()

            allocation = allocation_form.save(commit=False)
            allocation.project = project

            allocation.save()
            institution = project.tech_lead.profile.institution
            if institution.needs_supervisor_approval:
                supervisor_project_created_notification.delay(project)

            messages.success(self.request, self.success_message)
            return HttpResponseRedirect(reverse('project-membership-list'))

        return self.render_to_response(
            self.get_context_data(project_form=project_form,
                                  allocation_form=allocation_form))
コード例 #2
0
def create(request, uid):
    ImageFormSet = modelformset_factory(Pic, form=PictureCreationForm,
                                        extra=4)  # new

    if request.method == 'POST':

        form = ProjectCreationForm(request.POST)
        formset = ImageFormSet(request.POST,
                               request.FILES,
                               queryset=Pic.objects.none())  # new

        if form.is_valid() and formset.is_valid:  # new

            project_form = form.save(commit=False)
            project_form.creator = CustomUser.objects.get(id=uid)
            project_form.save()
            # # new
            for form2 in formset.cleaned_data:
                if form2:
                    image = form2['pic']
                    photo = Pic(project=project_form, pic=image)
                    photo.save()
            # end new

            # new 2
            # edit3 = formset.save(commit=False)
            # edit3.project = edit2
            # edit3.save()
            # end new 2
            # list my projects after create new one
            projects = Project.objects.filter(creator_id=uid)
            my_projects = []
            for project in projects:
                total_donation = Donation.objects.filter(
                    project_id=project.id).aggregate(Sum('amount'))
                single_project = {
                    "title": project.title,
                    "donations": total_donation,
                    "id": project.id
                }
                my_projects.append(single_project)
            return render(request, 'project/list_all.html',
                          {"projects": my_projects})

    else:

        project_form = ProjectCreationForm()
        # pic_form = PictureCreationForm()

        pic_form = ImageFormSet(queryset=Pic.objects.none())  # new
        args = {'project_form': project_form, 'pic_form': pic_form}  # new

        return render(request, 'project/CreateProject.html', args)
コード例 #3
0
 def setUp(self):
     super().setUp()
     institution = self.institution_names[0]
     self.user = self.institution_users[institution]
     self.data = {
         'title': 'Test Project',
         'description': 'A test project',
         'institution_reference': 'X',
         'department': 'Testing Department',
         'supervisor_name': 'supervisor',
         'supervisor_position': 'Researcher',
         'supervisor_email': '*****@*****.**',
     }
     self.form = ProjectCreationForm(self.user, self.data)
コード例 #4
0
 def test_project_form_arcca_field(self):
     for i in self.institution_names:
         user = self.institution_users[i]
         form = ProjectCreationForm(user)
         if user.profile.institution.base_domain == 'cardiff.ac.uk':
             self.assertTrue('legacy_arcca_id' in form.fields)
         else:
             self.assertFalse('legacy_arcca_id' in form.fields)
コード例 #5
0
class ProjectFormTests(ProjectFormTestCase):

    def setUp(self):
        super().setUp()
        institution = self.institution_names[0]
        self.user = self.institution_users[institution]
        self.data = {
            'title': 'Test Project',
            'description': 'A test project',
            'institution_reference': 'X',
            'department': 'Testing Department',
            'supervisor_name': 'supervisor',
            'supervisor_position': 'Researcher',
            'supervisor_email': '*****@*****.**',
        }
        self.form = ProjectCreationForm(self.user, self.data)

    def test_project_form_arcca_field(self):
        for i in self.institution_names:
            user = self.institution_users[i]
            form = ProjectCreationForm(user)
            if user.profile.institution.base_domain == 'cardiff.ac.uk':
                self.assertTrue('legacy_arcca_id' in form.fields)
            else:
                self.assertFalse('legacy_arcca_id' in form.fields)

    def test_project_form_valid(self):
        self.assertTrue(self.form.is_valid())

    def test_project_form_bad_supervisor_email(self):
        self.form.data['supervisor_email'] = 'supervisor at gmail.com'
        self.assertFalse(self.form.is_valid())

    def test_project_form_bad_supervisor_domain(self):
        self.form.data['supervisor_email'] = '*****@*****.**'
        self.assertFalse(self.form.is_valid())

    def test_project_form_external_user(self):
        self.user.profile.institution = None
        self.user = CustomUser.objects.get(email='*****@*****.**')
        self.form = ProjectCreationForm(self.user, self.data)
        self.assertFalse(self.form.is_valid())
コード例 #6
0
def create_cat(request):
    if request.method == 'POST':
        form = CatCreationForm(request.POST)
        if form.is_valid():
            form.save()
            form2 = ProjectCreationForm()
            args = {'form': form2}
            return render(request, 'project/CreateProject.html', args)
    else:
        form = CatCreationForm()
        args = {'form': form}
        return render(request, 'project/CreateCat.html', args)
コード例 #7
0
ファイル: views.py プロジェクト: markgdawson/cogs3
    def get_context_data(self, **kwargs):
        context = super(ProjectAndAllocationCreateView,
                        self).get_context_data(**kwargs)

        if 'project_form' in kwargs:
            context['project_form'] = kwargs['project_form']
        else:
            context['project_form'] = ProjectCreationForm(self.request.user)
        if 'allocation_form' in kwargs:
            context['allocation_form'] = kwargs['allocation_form']
        else:
            context['allocation_form'] = SystemAllocationRequestCreationForm(
                self.request.user)
            # These two fields are unnecessary in the combined view
            del context['allocation_form'].fields['information']
            del context['allocation_form'].fields['project']

        return context
コード例 #8
0
 def test_project_form_external_user(self):
     self.user.profile.institution = None
     self.user = CustomUser.objects.get(email='*****@*****.**')
     self.form = ProjectCreationForm(self.user, self.data)
     self.assertFalse(self.form.is_valid())