def release(request, queryset): action = sys._getframe().f_code.co_name action_name = "释放机柜" rack_ids = [id for id in queryset.values_list('id', flat=True)] # fix: unknown your action: The QuerySet value if Online.objects.filter(rack_id__in=rack_ids).exists(): mesg = "选择的机柜中仍有在线设备,无法释放" return mesg queryset = queryset.filter(actived=True) if request.POST.get('post'): for obj in queryset: o = copy.deepcopy(obj) if obj.client and obj.client.onlinenum() == 0: verb = f"客户 {force_text(obj.client)} 没有在线设备, 是否终止" log_action(user_id=request.user.pk, content_type_id=get_content_type_for_model( obj, True).pk, object_id=obj.pk, action_flag="系统通知", message=verb, content=verb) obj.actived = False obj.client = None obj.cpower = 0 obj.style = None obj.status = None obj.expiry_date = None obj.operator = request.user obj.tags.clear() if obj.jnum() != 0: verb = f"机柜 {force_text(obj)} 还有跳线存在, 请回收" log_action(user_id=request.user.pk, content_type_id=get_content_type_for_model( obj, True).pk, object_id=obj.pk, action_flag="系统通知", message=verb, content=verb) obj.save() diffs = diff_dict(serialize_object(o), serialize_object(obj)) log_action(user_id=request.user.pk, content_type_id=get_content_type_for_model(obj, True).pk, object_id=obj.pk, action_flag=action_name, message=json.dumps(list(diffs.keys())), content=json.dumps(diffs), related_client=get_related_client_name(o)) return None context = construct_context(request, queryset, action, action_name) return TemplateResponse(request, 'base/base_confirmation.html', context)
def release(request, queryset): action = sys._getframe().f_code.co_name action_name = "释放机柜" if Online.objects.filter(rack=queryset).exists(): mesg = "选择的机柜中仍有在线设备,无法释放" return mesg queryset = queryset.filter(actived=True) if request.POST.get('post'): for obj in queryset: o = copy.deepcopy(obj) if obj.client and obj.client.onlinenum() == 0: verb = "客户 {} 没有在线设备, 是否终止".format(force_text(obj.client)) notify_user.send( request.user, recipient=request.user, target=obj, verb=verb, ) obj.actived = False obj.client = None obj.cpower = 0 obj.style = None obj.status = None obj.operator = request.user obj.tags.clear() if obj.jnum() != 0: verb = "机柜 {} 还有跳线存在, 请回收".format(force_text(obj)) notify_user.send( request.user, recipient=request.user, target=obj, verb=verb, ) obj.save() from idcops.lib.tasks import get_related_client_name diffs = diff_dict(model_to_dict(o), model_to_dict(obj)) log_action(user_id=request.user.pk, content_type_id=get_content_type_for_model(obj, True).pk, object_id=obj.pk, action_flag=action_name, message=json.dumps(list(diffs.keys())), content=json.dumps(diffs), related_client=get_related_client_name(o)) return None context = construct_context(request, queryset, action, action_name) return TemplateResponse(request, 'base/base_confirmation.html', context)