예제 #1
0
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)
예제 #2
0
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)