Skip to content

Commit

Permalink
add, send signals; unpublish documents on unapprove
Browse files Browse the repository at this point in the history
  • Loading branch information
goose-life committed Jan 10, 2024
1 parent 2d5b02f commit 3f63341
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
10 changes: 10 additions & 0 deletions indigo_api/signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,16 @@
"""


work_approved = Signal()
""" A user has approved a work.
"""


work_unapproved = Signal()
""" A user has unapproved a work (marked it as a work in progress).
"""


document_published = Signal(providing_args=["document", "request"])
""" A user has changed a document from draft to published.
"""
Expand Down
9 changes: 7 additions & 2 deletions indigo_app/views/works.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
from indigo_api.serializers import WorkSerializer
from indigo_api.timeline import get_timeline
from indigo_api.views.attachments import view_attachment
from indigo_api.signals import work_changed
from indigo_api.signals import work_changed, work_approved, work_unapproved
from indigo_app.revisions import decorate_versions
from indigo_app.forms import BatchCreateWorkForm, BatchUpdateWorkForm, ImportDocumentForm, WorkForm, CommencementForm, \
NewCommencementForm, FindPubDocForm
Expand Down Expand Up @@ -176,7 +176,6 @@ def get_success_url(self):


class ApproveWorkView(WorkViewBase, View):
# TODO: add signals
permission_required = ('indigo_api.bulk_add_work',)
http_method_names = ['post']

Expand All @@ -191,6 +190,7 @@ def change_work_in_progress(self):
work.approved_by_user = user
work.approved_at = datetime.datetime.now()
work.save_with_revision(user)
work_approved.send(sender=work)


class UnapproveWorkView(ApproveWorkView):
Expand All @@ -202,6 +202,11 @@ def change_work_in_progress(self):
work.approved_by_user = None
work.approved_at = None
work.save_with_revision(user)
work_unapproved.send(sender=work)
# unpublish all documents
for document in Document.objects.undeleted().published().filter(work=work):
document.draft = True
document.save_with_revision(user, comment='This document was unpublished because its work was unapproved.')


class EditWorkModalView(EditWorkView):
Expand Down

0 comments on commit 3f63341

Please sign in to comment.