|
22 | 22 | from admin.base.views import GuidView |
23 | 23 | from admin.base.forms import GuidForm |
24 | 24 | from admin.notifications.views import detect_duplicate_notifications, delete_selected_notifications |
25 | | -from admin.nodes.forms import RegistrationDateForm |
| 25 | +from admin.nodes.forms import AddSystemTagForm, RegistrationDateForm |
26 | 26 |
|
27 | 27 | from api.share.utils import update_share |
28 | 28 | from api.caching.tasks import update_storage_usage_cache |
@@ -921,3 +921,32 @@ def post(self, request, *args, **kwargs): |
921 | 921 | registration = self.get_object() |
922 | 922 | registration.to_draft() |
923 | 923 | return redirect(self.get_success_url()) |
| 924 | + |
| 925 | + |
| 926 | +class NodeAddSystemTag(NodeMixin, FormView): |
| 927 | + """ Allows authorized users to add system tags to a node. |
| 928 | + """ |
| 929 | + permission_required = 'osf.change_node' |
| 930 | + raise_exception = True |
| 931 | + form_class = AddSystemTagForm |
| 932 | + |
| 933 | + def form_valid(self, form): |
| 934 | + resource = self.get_object() |
| 935 | + system_tag_to_add = form.cleaned_data['system_tag_to_add'] |
| 936 | + resource.add_system_tag(system_tag_to_add) |
| 937 | + resource.save() |
| 938 | + |
| 939 | + return super().form_valid(form) |
| 940 | + |
| 941 | + |
| 942 | +class NodeRemoveSystemTag(NodeMixin, View): |
| 943 | + """ Allows authorized users to remove system tags from a node. |
| 944 | + """ |
| 945 | + permission_required = 'osf.change_node' |
| 946 | + raise_exception = True |
| 947 | + |
| 948 | + def post(self, request, *args, **kwargs): |
| 949 | + resource = self.get_object() |
| 950 | + tag = resource.system_tags_objects.get(id=kwargs['tag_id']) |
| 951 | + resource.remove_tag(tag.name, auth=request.user) |
| 952 | + return redirect(self.get_success_url()) |
0 commit comments