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))
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)
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)
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())
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)
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
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())