Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions admin/nodes/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,5 @@
re_path(r'^(?P<guid>[a-z0-9]+)/remove_notifications/$', views.NodeRemoveNotificationView.as_view(), name='node-remove-notifications'),
re_path(r'^(?P<guid>[a-z0-9]+)/update_moderation_state/$', views.NodeUpdateModerationStateView.as_view(), name='node-update-mod-state'),
re_path(r'^(?P<guid>[a-z0-9]+)/resync_datacite/$', views.NodeResyncDataCiteView.as_view(), name='resync-datacite'),
re_path(r'^(?P<guid>[a-z0-9]+)/revert/$', views.NodeRevertToDraft.as_view(), name='revert-to-draft'),
]
9 changes: 9 additions & 0 deletions admin/nodes/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -801,3 +801,12 @@ def post(self, request, *args, **kwargs):
registration = self.get_object()
registration.request_identifier_update('doi', create=True)
return redirect(self.get_success_url())


class NodeRevertToDraft(NodeMixin, View):
permission_required = 'osf.change_node'

def post(self, request, *args, **kwargs):
registration = self.get_object()
registration.to_draft()
return redirect(self.get_success_url())
1 change: 1 addition & 0 deletions admin/templates/nodes/node.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
{% include "nodes/reindex_node_share.html" with node=node %}
{% include "nodes/reindex_node_elastic.html" with node=node %}
{% include "nodes/resync_datacite.html" with node=node %}
{% include "nodes/revert_registration.html" with node=node %}
</div>
</div>
</div>
Expand Down
26 changes: 26 additions & 0 deletions admin/templates/nodes/revert_registration.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{% if node.is_registration %}
{% if node.can_be_reverted %}
<a data-toggle="modal" data-target="#confirmRevert" class="btn btn-danger">Revert to Draft</a>
<div class="modal" id="confirmRevert">
<div class="modal-dialog">
<div class="modal-content">
<form class="well" method="post" action="{% url 'nodes:revert-to-draft' guid=node.guid %}">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">x</button>
<h3>Are you sure you want to revert this registration to draft state?</h3>
</div>
{% csrf_token %}
<div class="modal-footer">
<input class="btn btn-danger" type="submit" value="Confirm" />
<button type="button" class="btn btn-default" data-dismiss="modal">
Cancel
</button>
</div>
</form>
</div>
</div>
</div>
{% else %}
<a data-toggle="modal" data-target="#confirmRevert" class="btn btn-danger" title="This registration cannot be reverted back to a draft." disabled=true>Revert to Draft</a>
{% endif %}
{% endif %}
Loading
Loading