예제 #1
0
파일: views.py 프로젝트: kch8qx/osf.io
 def delete(self, request, *args, **kwargs):
     try:
         node, user = self.get_object()
         if node.remove_contributor(user, None, log=False):
             update_admin_log(
                 user_id=self.request.user.id,
                 object_id=node.pk,
                 object_repr="Contributor",
                 message="User {} removed from node {}.".format(user.pk, node.pk),
                 action_flag=CONTRIBUTOR_REMOVED,
             )
             # Log invisibly on the OSF.
             osf_log = NodeLog(
                 action=NodeLog.CONTRIB_REMOVED,
                 user=None,
                 params={"project": node.parent_id, "node": node.pk, "contributors": user.pk},
                 date=datetime.utcnow(),
                 should_hide=True,
             )
             osf_log.save()
     except AttributeError:
         return page_not_found(
             request,
             AttributeError(
                 '{} with id "{}" not found.'.format(self.context_object_name.title(), kwargs.get("node_id"))
             ),
         )
     return redirect(reverse_node(self.kwargs.get("node_id")))
예제 #2
0
 def delete(self, request, *args, **kwargs):
     try:
         node, user = self.get_object()
         if node.remove_contributor(user, None, log=False):
             update_admin_log(
                 user_id=self.request.user.id,
                 object_id=node.pk,
                 object_repr='Contributor',
                 message='User {} removed from {} {}.'.format(
                     user.pk, node.__class__.__name__.lower(), node.pk
                 ),
                 action_flag=CONTRIBUTOR_REMOVED
             )
             # Log invisibly on the OSF.
             self.add_contributor_removed_log(node, user)
     except AttributeError:
         return page_not_found(
             request,
             AttributeError(
                 '{} with id "{}" not found.'.format(
                     self.context_object_name.title(),
                     self.kwargs.get('guid')
                 )
             )
         )
     if isinstance(node, Node):
         return redirect(reverse_node(self.kwargs.get('guid')))
예제 #3
0
    def post(self, request, *args, **kwargs):
        stuck_reg = self.get_object()
        if Registration.find_failed_registrations().filter(id=stuck_reg.id).exists():
            stuck_reg.delete_registration_tree(save=True)
            messages.success(request, 'The registration has been deleted')
        else:
            messages.error(request, 'This registration may not technically be stuck,'
                                    ' if the problem persists get a developer to fix it.')

        return redirect(reverse_node(self.kwargs.get('guid')))
예제 #4
0
 def delete(self, request, *args, **kwargs):
     node = self.get_object()
     update_node_share(node)
     update_admin_log(
         user_id=self.request.user.id,
         object_id=node._id,
         object_repr='Node',
         message='Node Reindexed (SHARE): {}'.format(node._id),
         action_flag=REINDEX_SHARE
     )
     return redirect(reverse_node(self.kwargs.get('guid')))
예제 #5
0
 def delete(self, request, *args, **kwargs):
     node = self.get_object()
     search.search.update_node(node, bulk=False, async=False)
     update_admin_log(
         user_id=self.request.user.id,
         object_id=node._id,
         object_repr='Node',
         message='Node Reindexed (Elastic): {}'.format(node._id),
         action_flag=REINDEX_ELASTIC
     )
     return redirect(reverse_node(self.kwargs.get('guid')))
예제 #6
0
 def delete(self, request, *args, **kwargs):
     node = self.get_object()
     node.confirm_ham(save=True)
     update_admin_log(
         user_id=self.request.user.id,
         object_id=node._id,
         object_repr='Node',
         message='Confirmed HAM: {}'.format(node._id),
         action_flag=CONFIRM_HAM
     )
     return redirect(reverse_node(self.kwargs.get('guid')))
예제 #7
0
 def delete(self, request, *args, **kwargs):
     node = self.get_object()
     osf_admin_change_status_identifier(node, 'unavailable | spam')
     node.confirm_spam(save=True)
     update_admin_log(
         user_id=self.request.user.id,
         object_id=node._id,
         object_repr='Node',
         message='Confirmed SPAM: {}'.format(node._id),
         action_flag=CONFIRM_SPAM
     )
     return redirect(reverse_node(self.kwargs.get('guid')))
예제 #8
0
 def delete(self, request, *args, **kwargs):
     try:
         node = self.get_object()
         flag = None
         osf_flag = None
         message = None
         if node.is_deleted:
             node.is_deleted = False
             node.deleted_date = None
             node.deleted = None
             flag = NODE_RESTORED
             message = 'Node {} restored.'.format(node.pk)
             osf_flag = NodeLog.NODE_CREATED
         elif not node.is_registration:
             node.is_deleted = True
             node.deleted = timezone.now()
             node.deleted_date = node.deleted
             flag = NODE_REMOVED
             message = 'Node {} removed.'.format(node.pk)
             osf_flag = NodeLog.NODE_REMOVED
         node.save()
         if flag is not None:
             update_admin_log(
                 user_id=self.request.user.id,
                 object_id=node.pk,
                 object_repr='Node',
                 message=message,
                 action_flag=flag
             )
         if osf_flag is not None:
             # Log invisibly on the OSF.
             osf_log = NodeLog(
                 action=osf_flag,
                 user=None,
                 params={
                     'project': node.parent_id,
                 },
                 date=timezone.now(),
                 should_hide=True,
             )
             osf_log.save()
     except AttributeError:
         return page_not_found(
             request,
             AttributeError(
                 '{} with id "{}" not found.'.format(
                     self.context_object_name.title(),
                     kwargs.get('guid')
                 )
             )
         )
     return redirect(reverse_node(self.kwargs.get('guid')))
예제 #9
0
 def delete(self, request, *args, **kwargs):
     node = self.get_object()
     node.confirm_ham(save=True)
     osf_admin_change_status_identifier(node)
     update_admin_log(
         user_id=self.request.user.id,
         object_id=node._id,
         object_repr=self.object_type,
         message='Confirmed HAM: {}'.format(node._id),
         action_flag=CONFIRM_HAM
     )
     if isinstance(node, Node):
         return redirect(reverse_node(self.kwargs.get('guid')))
예제 #10
0
 def delete(self, request, *args, **kwargs):
     node = self.get_object()
     node.confirm_ham(save=True)
     osf_admin_change_status_identifier(node)
     update_admin_log(
         user_id=self.request.user.id,
         object_id=node._id,
         object_repr=self.object_type,
         message='Confirmed HAM: {}'.format(node._id),
         action_flag=CONFIRM_HAM
     )
     if isinstance(node, Node):
         return redirect(reverse_node(self.kwargs.get('guid')))
예제 #11
0
 def delete(self, request, *args, **kwargs):
     try:
         node = self.get_object()
         flag = None
         osf_flag = None
         message = None
         if node.is_deleted:
             node.is_deleted = False
             node.deleted_date = None
             flag = NODE_RESTORED
             message = 'Node {} restored.'.format(node.pk)
             osf_flag = NodeLog.NODE_CREATED
         elif not node.is_registration:
             node.is_deleted = True
             node.deleted_date = timezone.now()
             flag = NODE_REMOVED
             message = 'Node {} removed.'.format(node.pk)
             osf_flag = NodeLog.NODE_REMOVED
         node.save()
         if flag is not None:
             update_admin_log(
                 user_id=self.request.user.id,
                 object_id=node.pk,
                 object_repr='Node',
                 message=message,
                 action_flag=flag
             )
         if osf_flag is not None:
             # Log invisibly on the OSF.
             osf_log = NodeLog(
                 action=osf_flag,
                 user=None,
                 params={
                     'project': node.parent_id,
                 },
                 date=timezone.now(),
                 should_hide=True,
             )
             osf_log.save()
     except AttributeError:
         return page_not_found(
             request,
             AttributeError(
                 '{} with id "{}" not found.'.format(
                     self.context_object_name.title(),
                     kwargs.get('guid')
                 )
             )
         )
     return redirect(reverse_node(self.kwargs.get('guid')))
예제 #12
0
    def post(self, request, *args, **kwargs):
        node = Node.load(self.kwargs.get('guid')) or Registration.load(
            self.kwargs.get('guid'))
        new_private_cap = request.POST.get('private-cap-input')
        new_public_cap = request.POST.get('public-cap-input')
        if float(new_private_cap) != (node.custom_storage_usage_limit_private
                                      or STORAGE_LIMIT_PRIVATE):
            node.custom_storage_usage_limit_private = new_private_cap

        if float(new_public_cap) != (node.custom_storage_usage_limit_public
                                     or STORAGE_LIMIT_PUBLIC):
            node.custom_storage_usage_limit_public = new_public_cap

        node.save()
        return redirect(reverse_node(self.kwargs.get('guid')))
예제 #13
0
파일: views.py 프로젝트: icereval/osf.io
    def post(self, request, *args, **kwargs):
        from osf.management.commands.force_archive import archive, verify
        stuck_reg = self.get_object()
        if verify(stuck_reg):
            try:
                archive(stuck_reg)
                messages.success(request, 'Registration archive processes has restarted')
            except Exception as exc:
                messages.error(request, 'This registration cannot be unstuck due to {} '
                                        'if the problem persists get a developer to fix it.'.format(exc.__class__.__name__))

        else:
            messages.error(request, 'This registration may not technically be stuck,'
                                    ' if the problem persists get a developer to fix it.')

        return redirect(reverse_node(self.kwargs.get('guid')))
예제 #14
0
    def post(self, request, *args, **kwargs):
        from osf.management.commands.force_archive import archive, verify
        stuck_reg = self.get_object()
        if verify(stuck_reg):
            try:
                archive(stuck_reg)
                messages.success(request, 'Registration archive processes has restarted')
            except Exception as exc:
                messages.error(request, 'This registration cannot be unstuck due to {} '
                                        'if the problem persists get a developer to fix it.'.format(exc.__class__.__name__))

        else:
            messages.error(request, 'This registration may not technically be stuck,'
                                    ' if the problem persists get a developer to fix it.')

        return redirect(reverse_node(self.kwargs.get('guid')))
예제 #15
0
 def delete(self, request, *args, **kwargs):
     try:
         node, user = self.get_object()
         if node.remove_contributor(user, None, log=False):
             update_admin_log(user_id=self.request.user.id,
                              object_id=node.pk,
                              object_repr='Contributor',
                              message='User {} removed from {} {}.'.format(
                                  user.pk, node.__class__.__name__.lower(),
                                  node.pk),
                              action_flag=CONTRIBUTOR_REMOVED)
             # Log invisibly on the OSF.
             self.add_contributor_removed_log(node, user)
     except AttributeError:
         return page_not_found(
             request,
             AttributeError('{} with id "{}" not found.'.format(
                 self.context_object_name.title(),
                 self.kwargs.get('guid'))))
     if isinstance(node, Node):
         return redirect(reverse_node(self.kwargs.get('guid')))
예제 #16
0
    def post(self, request, *args, **kwargs):
        validation_only = (request.POST.get('validation_only', False) == 'True')
        end_date = request.POST.get('date')
        user = request.user
        registration = self.get_object()

        try:
            end_date = pytz.utc.localize(datetime.strptime(end_date, '%m/%d/%Y'))
        except ValueError:
            return HttpResponse('Please enter a valid date.', status=400)

        try:
            if validation_only:
                validate_embargo_date(registration, user, end_date)
            else:
                change_embargo_date(registration, user, end_date)
        except ValidationError as e:
            return HttpResponse(e, status=409)
        except PermissionDenied as e:
            return HttpResponse(e, status=403)

        return redirect(reverse_node(self.kwargs.get('guid')))
예제 #17
0
    def post(self, request, *args, **kwargs):
        validation_only = (request.POST.get('validation_only', False) == 'True')
        end_date = request.POST.get('date')
        user = request.user
        registration = self.get_object()

        try:
            end_date = pytz.utc.localize(datetime.strptime(end_date, '%m/%d/%Y'))
        except ValueError:
            return HttpResponse('Please enter a valid date.', status=400)

        try:
            if validation_only:
                validate_embargo_date(registration, user, end_date)
            else:
                change_embargo_date(registration, user, end_date)
        except ValidationError as e:
            return HttpResponse(e, status=409)
        except PermissionDenied as e:
            return HttpResponse(e, status=403)

        return redirect(reverse_node(self.kwargs.get('guid')))
예제 #18
0
파일: views.py 프로젝트: envobe/osf.io
 def delete(self, request, *args, **kwargs):
     try:
         node, user = self.get_object()
         if node.remove_contributor(user, None, log=False):
             update_admin_log(
                 user_id=self.request.user.id,
                 object_id=node.pk,
                 object_repr='Contributor',
                 message='User {} removed from node {}.'.format(
                     user.pk, node.pk
                 ),
                 action_flag=CONTRIBUTOR_REMOVED
             )
             # Log invisibly on the OSF.
             osf_log = NodeLog(
                 action=NodeLog.CONTRIB_REMOVED,
                 user=None,
                 params={
                     'project': node.parent_id,
                     'node': node.pk,
                     'contributors': user.pk
                 },
                 date=timezone.now(),
                 should_hide=True,
             )
             osf_log.save()
     except AttributeError:
         return page_not_found(
             request,
             AttributeError(
                 '{} with id "{}" not found.'.format(
                     self.context_object_name.title(),
                     kwargs.get('node_id')
                 )
             )
         )
     return redirect(reverse_node(self.kwargs.get('node_id')))
예제 #19
0
 def success_url(self):
     return reverse_node(self.guid)
예제 #20
0
def remove_node(request, guid):
    node = Node.load(guid)
    node.is_deleted = True  # Auth required for
    node.deleted_date = datetime.utcnow()
    node.save()
    return redirect(reverse_node(guid))
예제 #21
0
 def delete(self, request, *args, **kwargs):
     node = self.get_object()
     # TODO: update to force set private
     node.set_privacy('private')
     if isinstance(node, (Node, Registration)):
         return redirect(reverse_node(self.kwargs.get('guid')))
예제 #22
0
def restore_node(request, guid):
    node = Node.load(guid)
    node.is_deleted = False
    node.deleted_date = None
    node.save()
    return redirect(reverse_node(guid))
예제 #23
0
 def delete(self, request, *args, **kwargs):
     node = self.get_object()
     update_storage_usage_cache(node.id, node._id)
     if isinstance(node, (Node, Registration)):
         return redirect(reverse_node(self.kwargs.get('guid')))
예제 #24
0
def remove_contributor(request, node_id, user_id):
    user = User.load(user_id)
    node = Node.load(node_id)
    node.remove_contributor(user, None, log=False)  # TODO: log on OSF as admin
    return redirect(reverse_node(node_id))
예제 #25
0
 def success_url(self):
     return reverse_node(self.guid)
예제 #26
0
파일: views.py 프로젝트: digideskio/osf.io
def remove_node(request, guid):
    node = Node.load(guid)
    node.is_deleted = True  # Auth required for
    node.deleted_date = datetime.utcnow()
    node.save()
    return redirect(reverse_node(guid))
예제 #27
0
파일: views.py 프로젝트: digideskio/osf.io
def restore_node(request, guid):
    node = Node.load(guid)
    node.is_deleted = False
    node.deleted_date = None
    node.save()
    return redirect(reverse_node(guid))
예제 #28
0
파일: views.py 프로젝트: digideskio/osf.io
def remove_contributor(request, node_id, user_id):
    user = User.load(user_id)
    node = Node.load(node_id)
    node.remove_contributor(user, None, log=False)  # TODO: log on OSF as admin
    return redirect(reverse_node(node_id))