def delete(self, request, group_id): """ Delete an address book group. """ group_id = int(group_id) group = ccnet_api.get_group(group_id) if not group: return Response({'success': True}) org_id = None if is_org_context(request): # request called by org admin org_id = request.user.org.org_id try: if org_id: has_repo = seafile_api.org_if_group_has_group_owned_repo( org_id, group_id) else: has_repo = seafile_api.if_group_has_group_owned_repo(group_id) child_groups = ccnet_api.get_child_groups(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) if has_repo: error_msg = _('There are libraries in this department.') return api_error(status.HTTP_400_BAD_REQUEST, error_msg) if len(child_groups) > 0: error_msg = _('There are sub-departments in this department.') return api_error(status.HTTP_400_BAD_REQUEST, error_msg) try: ret_code = ccnet_api.remove_group(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) if ret_code == -1: error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) # send admin operation log signal group_owner = group.creator_name group_name = group.group_name admin_op_detail = { "id": group_id, "name": group_name, "owner": group_owner, } admin_operation.send(sender=None, admin_name=request.user.username, operation=GROUP_DELETE, detail=admin_op_detail) return Response({'success': True})
def delete(self, request, group_id): """ Delete an address book group. """ group_id = int(group_id) group = ccnet_api.get_group(group_id) if not group: return Response({'success': True}) try: has_repo = seafile_api.if_group_has_group_owned_repo(group_id) child_groups = ccnet_api.get_child_groups(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) if has_repo: error_msg = _('There are libraries in this department.') return api_error(status.HTTP_403_FORBIDDEN, error_msg) if len(child_groups) > 0: error_msg = _('There are sub-departments in this department.') return api_error(status.HTTP_403_FORBIDDEN, error_msg) owner = '%s@seafile_group' % group_id workspace = Workspaces.objects.get_workspace_by_owner(owner) if workspace: try: seafile_api.remove_repo(workspace.repo_id) workspace.delete() except Exception as e: logger.error(e) error_msg = _('Internal Server Error') return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) try: ret_code = ccnet_api.remove_group(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) if ret_code == -1: error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) # send admin operation log signal group_owner = group.creator_name group_name = group.group_name admin_op_detail = { "id": group_id, "name": group_name, "owner": group_owner, } admin_operation.send(sender=None, admin_name=request.user.username, operation=GROUP_DELETE, detail=admin_op_detail) return Response({'success': True})
def delete(self, request, group_id): """ Delete an address book group. """ group_id = int(group_id) group = ccnet_api.get_group(group_id) if not group: return Response({'success': True}) try: has_repo = seafile_api.if_group_has_group_owned_repo(group_id) child_groups = ccnet_api.get_child_groups(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) if has_repo: error_msg = _(u'There are libraries in this department.') return api_error(status.HTTP_403_FORBIDDEN, error_msg) if len(child_groups) > 0: error_msg = _(u'There are sub-departments in this department.') return api_error(status.HTTP_403_FORBIDDEN, error_msg) try: ret_code = ccnet_api.remove_group(group_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) if ret_code == -1: error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) # send admin operation log signal group_owner = group.creator_name group_name = group.group_name admin_op_detail = { "id": group_id, "name": group_name, "owner": group_owner, } admin_operation.send(sender=None, admin_name=request.user.username, operation=GROUP_DELETE, detail=admin_op_detail) return Response({'success': True})