示例#1
0
def get_script_versions(request, script_id):
    """
        get all versions for given script.
    """
    user = request.user
    status = 500
    data = {}
    try:
        script = _script.get_script_by_params(pk=script_id,
                                              is_delete=False,
                                              is_once=False)
        if not script:
            msg = u'未找到该id对应脚本'
        else:
            versions = _script.get_versions_by_params(script=script,
                                                      is_delete=False)
            vers_info = {}
            [vers_info.update({ver.id: ver.name}) for ver in versions]
            msg = u'操作成功'
            status = 200
            data.update({"versions": vers_info})
    except Exception, e:
        msg = u"未知错误"
        error = traceback.format_exc()
        print error
        logger.error(error)
示例#2
0
def script_edit(request):
    user = request.user
    sdicts = {}
    code = 500

    try:
        script_id = request.POST.get('script_id')
        script_name = request.POST.get('script_name')
        script_describe = request.POST.get('script_describe')

        script = _script.get_script_by_params(id=script_id)
        scripts = _script.get_scripts_by_params(
            name=script_name, create_user=user,
            is_delete=False).exclude(id=script.id)
        if scripts:
            return HttpResponse(json.dumps({"status": 500, "msg": u"作业名称已存在"}))

        script.name = script_name
        script.describe = script_describe
        script.update_user = user
        script.save()
        script_type_display = script.get_script_type_display()
        version_list = _script.get_versions_by_params(script=script,
                                                      is_delete=False)

        code = 200
    except Exception, e:
        code = 500
        msg = u'保存脚本名称失败'
示例#3
0
def script_edit(request):
    user = request.user
    sdicts = {}
    code = 500
    
    try:
        script_id = request.POST.get('script_id')
        script_name = request.POST.get('script_name')
        script_describe = request.POST.get('script_describe')
        
        script = _script.get_script_by_params(id=script_id)
        scripts = _script.get_scripts_by_params(name=script_name,create_user=user,is_delete=False).exclude(id=script.id)
        if scripts:
            return HttpResponse(json.dumps({
                "status":500,
                "msg": u"作业名称已存在"
            }))
        
        script.name = script_name
        script.describe = script_describe
        script.update_user = user
        script.save()
        script_type_display = script.get_script_type_display()
        version_list = _script.get_versions_by_params(script=script,is_delete=False)
    
        code = 200
    except Exception,e:
        code = 500
        msg = u'保存脚本名称失败'
示例#4
0
def script_add(request):
    user = request.user
    sdicts = {}
    code = 500
    
    if request.method == 'POST':
        try:
            check_id = request.POST.get('check_id')
            script_name = request.POST.get('new_script_name')
            script_describe = request.POST.get('new_script_describe')
            script_type = request.POST.get('new_script_type')
            file_content = request.POST.get('new_file_content')
        
            script = _script.get_script_by_params(name=script_name,create_user=user,is_delete=False)
            if script:
                return HttpResponse(json.dumps({
                    "status":500,
                    "msg": u"作业名称已存在"
                }))
        
            script = _script.create_script_by_params(name=script_name,create_user=user)
            script.script_type = script_type
            script.update_user = user
            script.describe = script_describe
            script.save()
            script_type_display = enum_script.SCIPT_TYPE_CHOICES[int(script.script_type)-1][1]
            version_list = _script.get_versions_by_params(script=script,is_delete=False)
            
            version_name = '%s_%s'%(check_id,user.username)
            version = _script.get_or_create_version_by_params(script=script,name=version_name)[0]
    
            file_doc_num = version.id % 100
            file_doc_path = os.path.join(MEDIA_ROOT,'scripts','%s'%file_doc_num)
            if not os.path.exists(file_doc_path):
                os.mkdir(file_doc_path)
            suffix = enum_script.SCIPT_TYPE_DICT.get(int(script.script_type))
            filename = u'%s.%s'%(version_name, suffix)
            file_path = os.path.join(file_doc_path,filename)
    
            f = open(file_path, 'wb')
            try:
                f.write(file_content)
            except Exception,e:
                print e
            finally:
                f.close()
                
            md5sum = calc_md5(file_path)
            fileserver_save_file(file_path,user.username,md5sum)
    
            version.sfile = u'%s/%s'%(file_doc_num, filename)
            version.save()
        
            code = 200
        except Exception,e:
            code = 500
            msg = u'保存脚本失败'
示例#5
0
def script_view(request):
    user = request.user
    sdicts = {}
    code = 500
    
    try:
        script_id = request.POST.get('script_id')
        script = _script.get_script_by_params(id=script_id)
        script_type_display = script.get_script_type_display()
        version_list = _script.get_versions_by_params(script=script,is_delete=False)
        code = 200
    except Exception,e:
        code = 500
示例#6
0
def script_view(request):
    user = request.user
    sdicts = {}
    code = 500

    try:
        script_id = request.POST.get('script_id')
        script = _script.get_script_by_params(id=script_id)
        script_type_display = script.get_script_type_display()
        version_list = _script.get_versions_by_params(script=script,
                                                      is_delete=False)
        code = 200
    except Exception, e:
        code = 500
示例#7
0
def script_describe_edit(request):
    user = request.user
    sdicts = {}
    code = 500
    
    try:
        script_id = request.POST.get('script_id')
        script_describe = request.POST.get('script_describe')
    
        script = _script.get_script_by_params(id=script_id)
        script.describe = script_describe
        script.update_user = user
        script.save()
        script_type_display = script.get_script_type_display()
        version_list = _script.get_versions_by_params(script=script,is_delete=False)
    
        code = 200
    except Exception,e:
        code = 500
        msg = u'保存脚本描述失败'
示例#8
0
def script_delete(request):
    '''
        delete script
    '''
    sdicts = {}
    script_id = request.POST.get('script_id', 0)
    user = request.user
    script = _script.get_script_by_params(id=script_id)
    if script:
        versions = _script.get_versions_by_params(script=script,
                                                  is_delete=False)
        #        jobStepScripts = _job.get_jobStepScripts_by_params(step__job__is_delete=False,version__in=versions)
        templateStepScripts = _template.get_templateStepScripts_by_params(
            step__template__is_delete=False, version__in=versions)
        #        if jobStepScripts:
        #            sdicts = {'result':0}
        #            sdicts['showMsg'] = _(u"删除失败: 当前脚本存在关联的作业实例")
        #        elif templateStepScripts:
        #            sdicts = {'result':0}
        #            sdicts['showMsg'] = _(u"删除失败: 当前脚本存在关联的作业模板")
        if templateStepScripts:
            sdicts = {'result': 0}
            sdicts['showMsg'] = _(u"删除失败: 当前脚本存在关联的作业实例")
        else:
            script.is_delete = True
            script.update_user = user
            script.save()
            sdicts['result'] = 1
            sdicts['showMsg'] = _(u"删除成功")
    else:
        sdicts = {'result': 0}
        sdicts['showMsg'] = _(u"删除失败")


#    table_fields = [u'脚本名称', u'脚本描述', u'创建人', u'创建时间', u'最后修改人', u'最后修改时间', u'操作']
    table_fields = [u'脚本名称', u'脚本描述', u'创建人', u'最后修改人', u'已授权用户', u'操作']
    ajax_url = u'/script_manage/list/'
    template_file = "script_manage/contentDiv.html"
    html = render_to_string(template_file, locals())
    sdicts['html'] = html
    return HttpResponse(json.dumps(sdicts, cls=LazyEncoder))
示例#9
0
def script_describe_edit(request):
    user = request.user
    sdicts = {}
    code = 500

    try:
        script_id = request.POST.get('script_id')
        script_describe = request.POST.get('script_describe')

        script = _script.get_script_by_params(id=script_id)
        script.describe = script_describe
        script.update_user = user
        script.save()
        script_type_display = script.get_script_type_display()
        version_list = _script.get_versions_by_params(script=script,
                                                      is_delete=False)

        code = 200
    except Exception, e:
        code = 500
        msg = u'保存脚本描述失败'
示例#10
0
def script_delete(request):
    '''
        delete script
    '''
    sdicts = {}
    script_id = request.POST.get('script_id',0)
    user = request.user
    script = _script.get_script_by_params(id=script_id)
    if script:
        versions = _script.get_versions_by_params(script=script,is_delete=False)
#        jobStepScripts = _job.get_jobStepScripts_by_params(step__job__is_delete=False,version__in=versions)
        templateStepScripts = _template.get_templateStepScripts_by_params(step__template__is_delete=False,version__in=versions)
#        if jobStepScripts:
#            sdicts = {'result':0}
#            sdicts['showMsg'] = _(u"删除失败: 当前脚本存在关联的作业实例")
#        elif templateStepScripts:
#            sdicts = {'result':0}
#            sdicts['showMsg'] = _(u"删除失败: 当前脚本存在关联的作业模板")
        if templateStepScripts:
            sdicts = {'result':0}
            sdicts['showMsg'] = _(u"删除失败: 当前脚本存在关联的作业实例")
        else:
            script.is_delete = True
            script.update_user = user
            script.save()
            sdicts['result'] = 1
            sdicts['showMsg'] = _(u"删除成功")
    else:
        sdicts = {'result':0}
        sdicts['showMsg'] = _(u"删除失败")
    
#    table_fields = [u'脚本名称', u'脚本描述', u'创建人', u'创建时间', u'最后修改人', u'最后修改时间', u'操作']
    table_fields = [u'脚本名称', u'脚本描述', u'创建人', u'最后修改人', u'已授权用户', u'操作']
    ajax_url = u'/script_manage/list/' 
    template_file = "script_manage/contentDiv.html"
    html = render_to_string(template_file, locals())
    sdicts['html'] = html
    return HttpResponse(json.dumps(sdicts, cls=LazyEncoder))
示例#11
0
def get_script_versions(request,script_id):
    """
        get all versions for given script.
    """
    user = request.user
    status = 500
    data = {}
    try:
        script = _script.get_script_by_params(pk=script_id,is_delete=False,is_once=False)
        if not script:
            msg = u'未找到该id对应脚本'
        else:
            versions = _script.get_versions_by_params(script=script,is_delete=False)
            vers_info = {}
            [vers_info.update({ver.id:ver.name}) for ver in versions]
            msg = u'操作成功'
            status = 200
            data.update({"versions":vers_info})
    except Exception,e:
        msg = u"未知错误"
        error = traceback.format_exc()
        print error
        logger.error(error)
示例#12
0
def script_execute(request):
    '''
        @author: wx
        execute script
    '''
    user = request.user
    logger.debug("### start execute script...")
    script_name = request.POST.get('script_once_name')
    script_type = request.POST.get('script_once_type')
    file_content = request.POST.get('file_content')
    script_account = request.POST.get('script_account')
    account = _account.get_account_by_params(id=int(script_account))
    timeout = request.POST.get('script_once_timeout')
    if timeout:
        timeout = int(timeout)
    else:
        timeout = 0
    parameter = request.POST.get('script_once_parameter').strip()
    ip_area_hide = request.POST.get('ip-area-script-hide')
    minion_info_dict = json.loads(ip_area_hide)

    script = _script.get_script_by_params(name=script_name,
                                          create_user=user,
                                          is_delete=False)
    if script:
        return HttpResponse(
            json.dumps({
                "status": 500,
                "result": {
                    "msg": u"作业名称已存在"
                }
            }))

    try:
        script = _script.create_script_by_params(name=script_name,
                                                 create_user=user)
        script.script_type = script_type
        script.update_user = user
        script.is_once = True
        script.save()

        now = datetime.datetime.now()
        version_name = '%s_%s' % (datetime.datetime.strftime(
            now, '%Y%m%d%H%M%S'), user.username)
        version = _script.get_or_create_version_by_params(script=script,
                                                          name=version_name)[0]

        file_doc_num = version.id % 100
        file_doc_path = os.path.join(MEDIA_ROOT, 'scripts',
                                     '%s' % file_doc_num)
        if not os.path.exists(file_doc_path):
            os.mkdir(file_doc_path)
        suffix = enum_script.SCIPT_TYPE_DICT.get(int(script.script_type))
        filename = u'%s.%s' % (version_name, suffix)
        file_path = os.path.join(file_doc_path, filename)

        f = open(file_path, 'wb')
        try:
            f.write(file_content)
        except Exception, e:
            print e
        finally:
            f.close()

        md5sum = calc_md5(file_path)
        fileserver_save_file(file_path, user.username, md5sum)

        version.sfile = u'%s/%s' % (file_doc_num, filename)
        version.save()

        # minion-ip map
        minion_id_map = {}

        # add all minion item to ip_set.
        ip_set = set()
        if minion_info_dict:
            for (item, minion_info) in minion_info_dict.items():
                if item == 'total' or item == 'num':
                    continue

                minion_id = item
                ip_str = minion_info[3]
                ip_list = ip_str.split('<br>')
                minion_ip = ip_list[0]

                if minion_id in minion_id_map.keys():
                    continue
                minion_id_map.update({minion_id: item})
                ip_set.add(minion_ip)

        template = _template.get_or_create_template_by_params(
            name=u'一次性脚本模板')[0]
        template.template_type = enum_template.TEMPLATE_TYPE99
        template.account = account
        template.target = json.dumps(list(ip_set))
        template.save()

        templateStep = _template.get_or_create_templateStep_by_params(
            template=template, name=version_name)[0]
        templateStep.step_type = enum_template.STEP_TYPE_SCRIPT
        templateStep.order = 1
        templateStep.save()

        templateStepScript = _template.get_or_create_templateStepScript_by_params(
            step=templateStep, version=version)[0]
        templateStepScript.parameter = parameter
        templateStepScript.timeout = timeout
        templateStepScript.save()

        job = _job.get_or_create_job_by_params(template=template,
                                               name=script_name)[0]
        job.account = account
        job.target = json.dumps(list(ip_set))
        job.create_user = user
        job.update_user = user
        job.save()

        jobStep = _job.get_or_create_jobStep_by_params(
            job=job, template_step=templateStep, name=u'一次性脚本操作')[0]
        jobStep.target = job.target
        jobStep.step_type = enum_template.STEP_TYPE_SCRIPT
        jobStep.order = 1
        jobStep.save()

        jobStepScript = _job.get_or_create_jobStepScript_by_params(
            step=jobStep, version=version)[0]
        jobStepScript.parameter = parameter
        jobStepScript.timeout = timeout
        jobStepScript.save()
        logger.debug("start handle job...")
        result = handle_job(job, user)
        logger.debug("script_result:%s" % (result))

        return HttpResponse(json.dumps(result))
示例#13
0
def script_add(request):
    user = request.user
    sdicts = {}
    code = 500

    if request.method == 'POST':
        try:
            check_id = request.POST.get('check_id')
            script_name = request.POST.get('new_script_name')
            script_describe = request.POST.get('new_script_describe')
            script_type = request.POST.get('new_script_type')
            file_content = request.POST.get('new_file_content')

            script = _script.get_script_by_params(name=script_name,
                                                  create_user=user,
                                                  is_delete=False)
            if script:
                return HttpResponse(
                    json.dumps({
                        "status": 500,
                        "msg": u"作业名称已存在"
                    }))

            script = _script.create_script_by_params(name=script_name,
                                                     create_user=user)
            script.script_type = script_type
            script.update_user = user
            script.describe = script_describe
            script.save()
            script_type_display = enum_script.SCIPT_TYPE_CHOICES[
                int(script.script_type) - 1][1]
            version_list = _script.get_versions_by_params(script=script,
                                                          is_delete=False)

            version_name = '%s_%s' % (check_id, user.username)
            version = _script.get_or_create_version_by_params(
                script=script, name=version_name)[0]

            file_doc_num = version.id % 100
            file_doc_path = os.path.join(MEDIA_ROOT, 'scripts',
                                         '%s' % file_doc_num)
            if not os.path.exists(file_doc_path):
                os.mkdir(file_doc_path)
            suffix = enum_script.SCIPT_TYPE_DICT.get(int(script.script_type))
            filename = u'%s.%s' % (version_name, suffix)
            file_path = os.path.join(file_doc_path, filename)

            f = open(file_path, 'wb')
            try:
                f.write(file_content)
            except Exception, e:
                print e
            finally:
                f.close()

            md5sum = calc_md5(file_path)
            fileserver_save_file(file_path, user.username, md5sum)

            version.sfile = u'%s/%s' % (file_doc_num, filename)
            version.save()

            code = 200
        except Exception, e:
            code = 500
            msg = u'保存脚本失败'
示例#14
0
def script_execute(request):
    '''
        @author: wx
        execute script
    '''
    user = request.user
    logger.debug("### start execute script...")
    script_name = request.POST.get('script_once_name')
    script_type = request.POST.get('script_once_type')
    file_content = request.POST.get('file_content')
    script_account = request.POST.get('script_account')
    account = _account.get_account_by_params(id=int(script_account))
    timeout = request.POST.get('script_once_timeout')
    if timeout:
        timeout = int(timeout)
    else:
        timeout = 0
    parameter = request.POST.get('script_once_parameter').strip()
    ip_area_hide = request.POST.get('ip-area-script-hide')
    minion_info_dict = json.loads(ip_area_hide)
    
    script = _script.get_script_by_params(name=script_name,create_user=user,is_delete=False)
    if script:
        return HttpResponse(json.dumps({
            "status":500,
            "result":{
                "msg": u"作业名称已存在"
            }
        }))
    
    try:
        script = _script.create_script_by_params(name=script_name,create_user=user)
        script.script_type = script_type
        script.update_user = user
        script.is_once = True
        script.save()
    
        now = datetime.datetime.now()
        version_name = '%s_%s'%(datetime.datetime.strftime(now, '%Y%m%d%H%M%S'),user.username)
        version = _script.get_or_create_version_by_params(script=script,name=version_name)[0]
    
        file_doc_num = version.id % 100
        file_doc_path = os.path.join(MEDIA_ROOT,'scripts','%s'%file_doc_num)
        if not os.path.exists(file_doc_path):
            os.mkdir(file_doc_path)
        suffix = enum_script.SCIPT_TYPE_DICT.get(int(script.script_type))
        filename = u'%s.%s'%(version_name, suffix)
        file_path = os.path.join(file_doc_path,filename)

        f = open(file_path, 'wb')
        try:
            f.write(file_content)
        except Exception,e:
            print e
        finally:
            f.close()
            
        md5sum = calc_md5(file_path)
        fileserver_save_file(file_path,user.username,md5sum)

        version.sfile = u'%s/%s'%(file_doc_num, filename)
        version.save()

        # minion-ip map
        minion_id_map = {}

        # add all minion item to ip_set.
        ip_set = set()
        if minion_info_dict:
            for (item, minion_info) in minion_info_dict.items():
                if item == 'total' or item == 'num':
                    continue
                
                minion_id = item
                ip_str = minion_info[3]
                ip_list = ip_str.split('<br>')
                minion_ip = ip_list[0]
                
                if minion_id in minion_id_map.keys():
                    continue
                minion_id_map.update({minion_id:item})
                ip_set.add(minion_ip)

        template = _template.get_or_create_template_by_params(name=u'一次性脚本模板')[0]
        template.template_type = enum_template.TEMPLATE_TYPE99
        template.account = account
        template.target = json.dumps(list(ip_set))
        template.save()

        templateStep = _template.get_or_create_templateStep_by_params(template=template,name=version_name)[0]
        templateStep.step_type = enum_template.STEP_TYPE_SCRIPT
        templateStep.order = 1
        templateStep.save()

        templateStepScript = _template.get_or_create_templateStepScript_by_params(step=templateStep, version=version)[0]
        templateStepScript.parameter = parameter
        templateStepScript.timeout = timeout
        templateStepScript.save()

        job = _job.get_or_create_job_by_params(template=template,name=script_name)[0]
        job.account = account
        job.target = json.dumps(list(ip_set))
        job.create_user=user
        job.update_user = user
        job.save()
        
        jobStep = _job.get_or_create_jobStep_by_params(job=job,template_step=templateStep,name=u'一次性脚本操作')[0]
        jobStep.target = job.target
        jobStep.step_type = enum_template.STEP_TYPE_SCRIPT
        jobStep.order = 1
        jobStep.save()

        jobStepScript = _job.get_or_create_jobStepScript_by_params(step=jobStep, version=version)[0]
        jobStepScript.parameter = parameter
        jobStepScript.timeout = timeout
        jobStepScript.save()
        logger.debug("start handle job...")
        result = handle_job(job,user)
        logger.debug("script_result:%s"%(result))

        return HttpResponse(json.dumps(result))
示例#15
0
def update_auth(request):
    '''
        更新用户授权.
    '''
    result = {}
    status = 500
    data = {}
    msg = ''
    try:
        user = request.user
        req = request.POST
        req_type = req.get("auth_type", "")
        obj_ids = req.getlist('obj_list[]', [])
        select_ids = req.getlist("user_list[]", [])
        logger.debug(
            "start update auth, auth_type:{0}, obj_ids:{1}, user_names:{2}".
            format(req_type, ','.join(obj_ids), ','.join(select_ids)))
        if req_type not in PERM_PTYPE_MAP.keys():
            msg = u'授权类型错误'
            raise Exception, msg
        if not obj_ids or not isinstance(obj_ids, list):
            msg = u'未勾选或所选对象类型错误'
            raise Exception, msg
        user_names = []
        logger.debug("request:{0}".format(req))
        auth_type = PERM_PTYPE_MAP.get(req_type)
        msg = u'不允许二次授权,请重新选择'
        for obj_id in obj_ids:
            if auth_type == PERM_PTYPE_TEMPLATE and _template.get_template_by_params(
                    id=obj_id).create_user != user:
                raise Exception, msg
            if auth_type == PERM_PTYPE_JOB and _job.get_job_by_params(
                    id=obj_id).create_user != user:
                raise Exception, msg
            if auth_type == PERM_PTYPE_SCRIPT and _script.get_script_by_params(
                    id=obj_id).create_user != user:
                raise Exception, msg
        msg = ""
        for select_id in select_ids:
            if str(select_id).startswith('emp_'):
                user_names.append(select_id.split('_')[1])
        for obj_id in obj_ids:
            logger.debug(
                "==> start update perm for object id:{0}".format(obj_id))
            old_perms = Perm.objects.filter(ptype=PERM_PTYPE_MAP[req_type],
                                            object_id=obj_id,
                                            is_delete=False).values_list('id')
            old_perm_ids = [i[0] for i in old_perms]
            new_perm_ids = set()

            scripts = None
            if auth_type == PERM_PTYPE_TEMPLATE:
                #获取所有该模板的脚本
                steps = TemplateStep.objects.filter(
                    template__id=obj_id,
                    step_type=enum_template.STEP_TYPE_SCRIPT,
                    is_delete=False)
                script_steps = TemplateStepScript.objects.filter(
                    step__in=steps)
                scripts = [step.version.script for step in script_steps]

            for user_name in user_names:
                to_user = User.objects.get(username=user_name)
                p, is_create = Perm.objects.get_or_create(
                    ptype=PERM_PTYPE_MAP[req_type],
                    object_id=obj_id,
                    is_delete=False,
                    create_user=user,
                    to_user=to_user)
                new_perm_ids.add(p.id)
                if is_create:
                    logger.debug(
                        'perm of user:{0} to {1}_id:{2} is created'.format(
                            user_name, req_type, obj_id))
                else:
                    logger.debug(
                        'perm of user:{0} to {1}_id:{2} already exists.'.
                        format(user_name, req_type, obj_id))

                ### 自动脚本授权
                if auth_type == PERM_PTYPE_TEMPLATE:
                    for script in scripts:
                        p, is_create = Perm.objects.get_or_create(
                            ptype=PERM_PTYPE_SCRIPT,
                            object_id=script.id,
                            is_delete=False,
                            create_user=user,
                            to_user=to_user)
                        logger.debug(
                            "create auth for script:{0} to user:{1},is_create:{2}"
                            .format(script.id, to_user.username, is_create))

            discard_perms = set(old_perm_ids).difference(new_perm_ids)
            if discard_perms:
                names = [
                    i[0] for i in Perm.objects.filter(
                        id__in=discard_perms).values_list('to_user__username')
                ]
                logger.debug("drop perms of {0} to {1}_id:{2}".format(
                    ','.join(names), req_type, obj_id))
                Perm.objects.filter(id__in=discard_perms).update(
                    is_delete=True)

                ### 脚本授权回收.
                if auth_type == PERM_PTYPE_TEMPLATE:
                    script_ids = [script.id for script in scripts] or []
                    for script_id in script_ids:
                        rel_script_steps = TemplateStepScript.objects.filter(
                            version__script__id=script_id,
                            step__is_delete=False)
                        rel_template_ids = [
                            script_step.step.template.id
                            for script_step in rel_script_steps
                        ]
                        for name in names:
                            # 存在其他关联模板授权的不进行回收该脚本.
                            if Perm.objects.filter(
                                    ptype=PERM_PTYPE_TEMPLATE,
                                    object_id__in=rel_template_ids,
                                    is_delete=False,
                                    to_user__username=name).count() > 0:
                                logger.debug(
                                    "other template using this template, no revoke,user:{0},script_id:{1}"
                                    .format(name, script_id))
                            else:
                                logger.debug(
                                    "revoke auth, script_id:{0}, user:{1}".
                                    format(script_id, name))
                                Perm.objects.filter(
                                    ptype=PERM_PTYPE_SCRIPT,
                                    object_id=script_id,
                                    is_delete=False,
                                    create_user=user,
                                    to_user__username=name).update(
                                        is_delete=True)

            logger.debug("==> update perm successfully!\n")
        msg = u'授权更新成功'
        status = 200
        logger.debug("## All perm update successfully!\n")
    except Exception, e:
        msg = u'授权更新失败' if not msg else msg
        error = traceback.format_exc()
        print error
        logger.error(error)