def new_project(request): if request.method == 'POST': project = Project() form = ProjectForm(request.POST, instance=project) if form.is_valid(): form.save(commit=False) project.user = request.user project.admingroup = request.organization.admingroup project.save() form.save_m2m() return HttpResponseRedirect(project.get_absolute_url()) else: project = Project() form = ProjectForm(instance=project) return render_to_response('projects/new_project.html', {'form': form}, context_instance=RequestContext(request))
def new_project(request): if request.method == 'POST': project = Project() form = ProjectForm(request.POST, instance=project) if form.is_valid(): form.save(commit=False) project.user = request.user project.admingroup = request.organization.admingroup project.save() form.save_m2m() return HttpResponseRedirect(project.get_absolute_url()) else: project = Project() form = ProjectForm(instance=project) return render_to_response('projects/new_project.html', {'form': form}, context_instance=RequestContext(request))
def test_project_absolute_url(self): '''This tests the title_slug field of a :class:`~projects.models.Project`.''' test_project = Project(title='Test Project') test_project.save() self.assertEqual(test_project.get_absolute_url(), "/projects/test-project")
class ProjectModelTest(SimpleTestCase): def setUp(self): self.project = Project(name="name", slug="slug") def test_str(self): self.assertEqual(str(self.project), self.project.name) def test_fullname(self): self.project.group = Group(name="Group") self.assertEqual("Group / name", self.project.fullname) @patch.object(Group, 'is_private', new_callable=PropertyMock, return_value=True) def test_is_private_with_group_private(self, mis_private): self.project.group = Group() self.project.visibility_level = Project.Level.PRIVATE self.assertTrue(self.project.is_private) self.project.visibility_level = Project.Level.PUBLIC self.assertTrue(self.project.is_private) @patch.object(Group, 'is_private', new_callable=PropertyMock, return_value=False) def test_is_private_with_group_public(self, mis_private): self.project.group = Group() self.project.visibility_level = Project.Level.PRIVATE self.assertTrue(self.project.is_private) self.project.visibility_level = Project.Level.PUBLIC self.assertFalse(self.project.is_private) @patch.object(Group, 'is_public', new_callable=PropertyMock, return_value=True) def test_is_public_with_group_public(self, mis_public): self.project.group = Group() self.project.visibility_level = Project.Level.PRIVATE self.assertTrue(self.project.is_public) self.project.visibility_level = Project.Level.PUBLIC self.assertTrue(self.project.is_public) @patch.object(Group, 'is_public', new_callable=PropertyMock, return_value=False) def test_is_public_with_group_private(self, mis_public): self.project.group = Group() self.project.visibility_level = Project.Level.PRIVATE self.assertFalse(self.project.is_public) self.project.visibility_level = Project.Level.PUBLIC self.assertTrue(self.project.is_public) def test_get_absolute_url(self): expected = reverse('projects:project-detail', args=["slug"]) self.assertEqual(self.project.get_absolute_url(), expected) def test_get_docs_url(self): expected = reverse('serve-docs', args=["slug", "index.html"]) with self.settings(SENDFILE_URL="/docs/"): self.assertEqual(self.project.get_docs_url(), expected) def test_serve_root_path(self): with self.settings(SENDFILE_ROOT="/test/"): self.assertEqual(self.project.serve_root_path, "/test/slug") @patch.object(Project, 'imported_archives') def test_last_imported_archive_date(self, mimported_archives): mimported_archives.latest().created = 'created' result = self.project.last_imported_archive_date mimported_archives.latest.assert_called_with('created') self.assertEqual(result, 'created') @patch.object(Project, 'imported_archives') def test_last_imported_archive_date_empty(self, mimported_archives): mimported_archives.latest.side_effect = ImportedArchive.DoesNotExist result = self.project.last_imported_archive_date self.assertIsNone(result) @patch.object(Project, 'imported_archives') def test_imported_archive_exists(self, mimported_archives): self.project.imported_archive_exists mimported_archives.exists.assert_called_with() @patch.object(Project, 'imported_files') def test_imported_files_count(self, mimported_files): self.project.imported_files_count mimported_files.count.assert_called_with() @patch('projects.models.token_generator.make_token', return_value="token") def test_api_token(self, mmake_token): self.assertEqual(self.project.api_token, 'token') mmake_token.assert_called_with(self.project) @patch.object(Project, 'objects') def test_clean(self, mobjects): mobjects.filter().exclude().exists.return_value = False Project(pk=1, name="name", group_id=10).clean() mobjects.filter.assert_called_with(group_id=10, name__iexact='name') mobjects.filter().exclude.assert_called_with(id=1) @patch.object(Project, 'objects') def test_clean_invalid(self, mobjects): mobjects.filter().exclude().exists.return_value = True with self.assertRaises(ValidationError): Project(pk=1, name="name", group_id=10).clean() @patch.object(ProjectCollaborator, 'objects') def test_post_save_with_created_true(self, mobjects): Project.post_save(Project, Project(pk=1, author_id=1), True) mobjects.create.assert_called_with( project_id=1, user_id=1, access_level=AccessLevel.OWNER) @patch.object(ProjectCollaborator, 'objects') def test_post_save_with_created_false(self, mobjects): Project.post_save(Project, None, False) mobjects.create.assert_not_called()
def test_project_absolute_url(self): '''This tests the title_slug field of a :class:`~projects.models.Project`.''' test_project = Project(title='Test Project') test_project.save() self.assertEqual(test_project.get_absolute_url(), "/projects/test-project")