def delete(self, request, collection, experiment, channel_layer): """ Delete a Channel or a Layer Args: request: DRF Request object collection: Collection name experiment: Experiment name channel_layer: Channel or Layer name Returns : Http status """ try: collection_obj = Collection.objects.get(name=collection) experiment_obj = Experiment.objects.get(name=experiment, collection=collection_obj) channel_layer_obj = ChannelLayer.objects.get(name=channel_layer, experiment=experiment_obj) if request.user.has_perm("delete", channel_layer_obj): channel_layer_obj.delete() # delete the lookup key for this object LookUpKey.delete_lookup_key(collection, experiment, channel_layer) return HttpResponse(status=204) else: return BossPermissionError('delete', channel_layer) except Collection.DoesNotExist: return BossResourceNotFoundError(collection) except Experiment.DoesNotExist: return BossResourceNotFoundError(experiment) except ChannelLayer.DoesNotExist: return BossResourceNotFoundError(channel_layer) except ProtectedError: return BossHTTPError("Cannot delete {}. It has layers that reference it.".format(channel_layer), ErrorCodes.INTEGRITY_ERROR)
def delete(self, request, collection, experiment): """ Delete a experiment Args: request: DRF Request object collection: Name of collection experiment: Experiment name to delete Returns: Http status """ try: collection_obj = Collection.objects.get(name=collection) experiment_obj = Experiment.objects.get(name=experiment, collection=collection_obj) if request.user.has_perm("delete", experiment_obj): experiment_obj.delete() # # get the lookup key and delete all the meta data for this object # bosskey = collection + '&' + experiment # lkey = LookUpKey.get_lookup_key(bosskey) # mdb = MetaDB() # mdb.delete_meta_keys(lkey) # delete the lookup key for this object LookUpKey.delete_lookup_key(collection, experiment, None) return HttpResponse(status=204) else: return BossPermissionError('delete', experiment) except Collection.DoesNotExist: return BossResourceNotFoundError(collection) except Experiment.DoesNotExist: return BossResourceNotFoundError(experiment) except ProtectedError: return BossHTTPError("Cannot delete {}. It has channels or layers that reference " "it.".format(experiment), ErrorCodes.INTEGRITY_ERROR)