Ejemplo n.º 1
0
    def post(self, request, author_id):
        """edit a author cool"""
        author = get_object_or_404(models.Author, id=author_id)

        form = forms.AuthorForm(request.POST, request.FILES, instance=author)
        if not form.is_valid():
            data = {"author": author, "form": form}
            return TemplateResponse(request, "author/edit_author.html", data)
        author = form.save()

        return redirect(f"/author/{author.id}")
Ejemplo n.º 2
0
    def test_edit_author_non_editor(self):
        ''' edit an author with invalid post data'''
        view = views.EditAuthor.as_view()
        author = models.Author.objects.create(name='Test Author')
        form = forms.AuthorForm(instance=author)
        form.data['name'] = 'New Name'
        form.data['last_edited_by'] = self.local_user.id
        request = self.factory.post('', form.data)
        request.user = self.local_user

        with self.assertRaises(PermissionDenied):
            view(request, author.id)
        author.refresh_from_db()
        self.assertEqual(author.name, 'Test Author')
Ejemplo n.º 3
0
    def test_edit_author_non_editor(self):
        """edit an author with invalid post data"""
        view = views.EditAuthor.as_view()
        author = models.Author.objects.create(name="Test Author")
        form = forms.AuthorForm(instance=author)
        form.data["name"] = "New Name"
        form.data["last_edited_by"] = self.local_user.id
        request = self.factory.post("", form.data)
        request.user = self.local_user

        with self.assertRaises(PermissionDenied):
            view(request, author.id)
        author.refresh_from_db()
        self.assertEqual(author.name, "Test Author")
Ejemplo n.º 4
0
    def test_edit_author(self):
        ''' edit an author '''
        view = views.EditAuthor.as_view()
        author = models.Author.objects.create(name='Test Author')
        self.local_user.groups.add(self.group)
        form = forms.AuthorForm(instance=author)
        form.data['name'] = 'New Name'
        form.data['last_edited_by'] = self.local_user.id
        request = self.factory.post('', form.data)
        request.user = self.local_user

        with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'):
            view(request, author.id)
        author.refresh_from_db()
        self.assertEqual(author.name, 'New Name')
        self.assertEqual(author.last_edited_by, self.local_user)
Ejemplo n.º 5
0
    def test_edit_author_invalid_form(self):
        ''' edit an author with invalid post data'''
        view = views.EditAuthor.as_view()
        author = models.Author.objects.create(name='Test Author')
        self.local_user.groups.add(self.group)
        form = forms.AuthorForm(instance=author)
        form.data['name'] = ''
        form.data['last_edited_by'] = self.local_user.id
        request = self.factory.post('', form.data)
        request.user = self.local_user

        resp = view(request, author.id)
        author.refresh_from_db()
        self.assertEqual(author.name, 'Test Author')
        resp.render()
        self.assertEqual(resp.status_code, 200)
Ejemplo n.º 6
0
    def test_edit_author(self):
        """edit an author"""
        view = views.EditAuthor.as_view()
        author = models.Author.objects.create(name="Test Author")
        self.local_user.groups.add(self.group)
        form = forms.AuthorForm(instance=author)
        form.data["name"] = "New Name"
        form.data["last_edited_by"] = self.local_user.id
        request = self.factory.post("", form.data)
        request.user = self.local_user

        with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
            view(request, author.id)
        author.refresh_from_db()
        self.assertEqual(author.name, "New Name")
        self.assertEqual(author.last_edited_by, self.local_user)
Ejemplo n.º 7
0
    def test_edit_author_invalid_form(self):
        """edit an author with invalid post data"""
        view = views.EditAuthor.as_view()
        author = models.Author.objects.create(name="Test Author")
        self.local_user.groups.add(self.group)
        form = forms.AuthorForm(instance=author)
        form.data["name"] = ""
        form.data["last_edited_by"] = self.local_user.id
        request = self.factory.post("", form.data)
        request.user = self.local_user

        resp = view(request, author.id)
        author.refresh_from_db()
        self.assertEqual(author.name, "Test Author")
        resp.render()
        self.assertEqual(resp.status_code, 200)
Ejemplo n.º 8
0
 def get(self, request, author_id):
     """info about a book"""
     author = get_object_or_404(models.Author, id=author_id)
     data = {"author": author, "form": forms.AuthorForm(instance=author)}
     return TemplateResponse(request, "author/edit_author.html", data)