示例#1
0
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))
示例#2
0
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))
示例#3
0
 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")
示例#4
0
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()
示例#5
0
 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")