def delete(self, request, vendor, name, version): resource = get_object_or_404(CatalogueResource, vendor=vendor, short_name=name, version=version) resource.users.remove(request.user) resource_uninstalled.send(sender=resource, user=request.user) result = None iwidgets_to_remove = None if resource.resource_type() == 'widget' and request.GET.get('affected', 'false').lower() == 'true': iwidgets_to_remove = get_iwidgets_to_remove(resource, request.user) result = {'removedIWidgets': [iwidget.id for iwidget in iwidgets_to_remove]} if resource.public is False and resource.users.count() == 0 and resource.groups.count() == 0: resource.delete() elif resource.resource_type() == 'widget': if iwidgets_to_remove is None: iwidgets_to_remove = get_iwidgets_to_remove(resource, request.user) # We need to iterate the iwidget list as currently only the individual delete method removes Workspace cache for iwidget in iwidgets_to_remove: iwidget.delete() if result is not None: return HttpResponse(json.dumps(result), content_type='application/json; charset=UTF-8') else: return HttpResponse(status=204)
def delete(self, request, vendor, name, version=None): if version is not None: resources = [ get_object_or_404(CatalogueResource, vendor=vendor, short_name=name, version=version, users=request.user) ] else: resources = get_list_or_404(CatalogueResource, vendor=vendor, short_name=name, users=request.user) result = { "affectedVersions": [] } if request.GET.get('affected', 'false').lower() == 'true' else None for resource in resources: resource.users.remove(request.user) resource_uninstalled.send(sender=resource, user=request.user) if result is not None: result['affectedVersions'].append(resource.version) if resource.public is False and resource.users.count( ) == 0 and resource.groups.count() == 0: resource.delete() if result is not None: return HttpResponse(json.dumps(result), content_type='application/json; charset=UTF-8') else: return HttpResponse(status=204)
def delete(self, request, vendor, name, version=None): if version is not None: resources = [get_object_or_404(CatalogueResource, vendor=vendor, short_name=name, version=version, users=request.user)] else: resources = get_list_or_404(CatalogueResource, vendor=vendor, short_name=name, users=request.user) result = { "affectedVersions": [], "removedIWidgets": [] } if request.GET.get('affected', 'false').lower() == 'true' else None for resource in resources: resource.users.remove(request.user) resource_uninstalled.send(sender=resource, user=request.user) if result is not None: result['affectedVersions'].append(resource.version) if resource.resource_type() == 'widget': iwidgets_to_remove = get_iwidgets_to_remove(resource, request.user) if result is not None: result['removedIWidgets'] += [iwidget.id for iwidget in iwidgets_to_remove] # We need to iterate the iwidget list as currently only the individual delete method removes Workspace cache for iwidget in iwidgets_to_remove: iwidget.delete() if resource.public is False and resource.users.count() == 0 and resource.groups.count() == 0: resource.delete() if result is not None: return HttpResponse(json.dumps(result), content_type='application/json; charset=UTF-8') else: return HttpResponse(status=204)
def delete(self, request, vendor, name, version): resource = get_object_or_404(CatalogueResource, vendor=vendor, short_name=name, version=version) resource.users.remove(request.user) resource_uninstalled.send(sender=resource, user=request.user) if resource.public == False and resource.users.count() == 0 and resource.groups.count() == 0: resource.delete() if resource.resource_type() == 'widget': result = {'removedIWidgets': []} query = Widget.objects.filter(resource=resource) if query.exists(): widget = query.get() # Remove all iwidgets that matches the resource iwidgets = IWidget.objects.filter(widget=widget, tab__workspace__creator=request.user) for iwidget in iwidgets: result['removedIWidgets'].append(iwidget.id) iwidget.delete() if request.GET.get('affected', 'false').lower() == 'true': return HttpResponse(json.dumps(result), mimetype='application/json; charset=UTF-8') return HttpResponse(status=204)
def delete(self, request, vendor, name, version=None): allusers = request.GET.get('allusers', 'false').lower() == 'true' if allusers and not request.user.is_superuser: return build_error_response( request, 403, _('You are not allowed to delete resources')) extra_conditions = { "users": request.user } if not request.user.is_superuser else {} if version is not None: resources = [ get_object_or_404(CatalogueResource, vendor=vendor, short_name=name, version=version, **extra_conditions) ] else: resources = get_list_or_404(CatalogueResource, vendor=vendor, short_name=name, **extra_conditions) result = { "affectedVersions": [] } if request.GET.get('affected', 'false').lower() == 'true' else None for resource in resources: if allusers: resource.delete() resource_uninstalled.send(sender=resource) else: resource.users.remove(request.user) resource_uninstalled.send(sender=resource, user=request.user) if result is not None: result['affectedVersions'].append(resource.version) if not allusers and resource.public is False and resource.users.count( ) == 0 and resource.groups.count() == 0: resource.delete() if result is not None: return HttpResponse(json.dumps(result), content_type='application/json; charset=UTF-8') else: return HttpResponse(status=204)
def delete(self, request, vendor, name, version=None): if version is not None: resources = [ get_object_or_404( CatalogueResource, vendor=vendor, short_name=name, version=version, users=request.user ) ] else: resources = get_list_or_404(CatalogueResource, vendor=vendor, short_name=name, users=request.user) result = ( {"affectedVersions": [], "removedIWidgets": []} if request.GET.get("affected", "false").lower() == "true" else None ) for resource in resources: resource.users.remove(request.user) resource_uninstalled.send(sender=resource, user=request.user) if result is not None: result["affectedVersions"].append(resource.version) if resource.resource_type() == "widget": iwidgets_to_remove = get_iwidgets_to_remove(resource, request.user) if result is not None: result["removedIWidgets"] += [iwidget.id for iwidget in iwidgets_to_remove] # We need to iterate the iwidget list as currently only the individual delete method removes Workspace cache for iwidget in iwidgets_to_remove: iwidget.delete() if resource.public is False and resource.users.count() == 0 and resource.groups.count() == 0: resource.delete() if result is not None: return HttpResponse(json.dumps(result), content_type="application/json; charset=UTF-8") else: return HttpResponse(status=204)
def delete(self, request, vendor, name, version=None): if version is not None: resources = [get_object_or_404(CatalogueResource, vendor=vendor, short_name=name, version=version, users=request.user)] else: resources = get_list_or_404(CatalogueResource, vendor=vendor, short_name=name, users=request.user) result = { "affectedVersions": [] } if request.GET.get('affected', 'false').lower() == 'true' else None for resource in resources: resource.users.remove(request.user) resource_uninstalled.send(sender=resource, user=request.user) if result is not None: result['affectedVersions'].append(resource.version) if resource.public is False and resource.users.count() == 0 and resource.groups.count() == 0: resource.delete() if result is not None: return HttpResponse(json.dumps(result), content_type='application/json; charset=UTF-8') else: return HttpResponse(status=204)