def addInternetChargeRule(self,charge_name,start_time,end_time,day_of_weeks,cpm,cpk,\ assumed_kps,bandwidth_limit_kbytes,tx_leaf_name,rx_leaf_name,ras_id,ports): """ add a charge rule to charge with id "charge_id" and reload the charge it will add charge_rule and it's ports to db too start_time(str): time representation eg "0:0:0" end_time(str): time representation eg "0:0:0" day_of_weeks(list of str): list of full day names eg ["Monday", "Wednesday"] ports(list of str): list of port names or ["_ALL_"] for all ports """ start_time, end_time, day_of_weeks = self.__chargeRuleTimesCheck( start_time, end_time, day_of_weeks) self.__internetChargeRuleCheckInput(charge_name, cpm, cpk, assumed_kps, bandwidth_limit_kbytes, tx_leaf_name, rx_leaf_name, ras_id, ports) charge_obj = charge_main.getLoader().getChargeByName(charge_name) day_of_weeks_container = self.__createDayOfWeekContainer(day_of_weeks) tx_leaf_id, rx_leaf_id = self.__convertBwLeaves( tx_leaf_name, rx_leaf_name) rule_obj=self.__createInternetChargeRuleObject(charge_obj,start_time,end_time,day_of_weeks_container,\ cpm,cpk,assumed_kps,bandwidth_limit_kbytes,tx_leaf_id,rx_leaf_id,ras_id,ports) self.__checkRuleConflict(charge_obj, rule_obj) self.__addInternetChargeRuleToDB(rule_obj) charge_main.getLoader().loadCharge(charge_obj.getChargeID())
def updateCharge(self, charge_id, name, comment, visible_to_all): """ change charge rule properties """ self.__updateChargeCheckInput(charge_id, name, comment, visible_to_all) self.__updateCharge(charge_id, name, comment, visible_to_all) charge_main.getLoader().unloadCharge(charge_id) charge_main.getLoader().loadCharge(charge_id)
def addCharge(self,name,comment,charge_type,admin_id,visible_to_all): """ add a charge to database, and command the charge loader to load it """ self.__addChargeCheckInput(name,comment,charge_type,admin_id,visible_to_all) charge_id=self.__getNewChargeID() self.__insertNewCharge(charge_id,name,comment,charge_type,admin_id,visible_to_all) charge_main.getLoader().loadCharge(charge_id)
def updateCharge(self,charge_id,name,comment,visible_to_all): """ change charge rule properties """ self.__updateChargeCheckInput(charge_id,name,comment,visible_to_all) self.__updateCharge(charge_id,name,comment,visible_to_all) charge_main.getLoader().unloadCharge(charge_id) charge_main.getLoader().loadCharge(charge_id)
def delChargeRule(self,charge_rule_id,charge_name): """ delete charge_rule with id "charge_rule_id" from charge with name "charge_name" it will delete all of charge_rule ports too """ self.__delChargeRuleCheckInput(charge_rule_id,charge_name) charge_obj=charge_main.getLoader().getChargeByName(charge_name) self.__delChargeRuleFromDB(charge_rule_id,charge_obj) charge_main.getLoader().loadCharge(charge_obj.getChargeID())
def delChargeRule(self, charge_rule_id, charge_name): """ delete charge_rule with id "charge_rule_id" from charge with name "charge_name" it will delete all of charge_rule ports too """ self.__delChargeRuleCheckInput(charge_rule_id, charge_name) charge_obj = charge_main.getLoader().getChargeByName(charge_name) self.__delChargeRuleFromDB(charge_rule_id, charge_obj) charge_main.getLoader().loadCharge(charge_obj.getChargeID())
def __tariffUsedInCharge(self,tariff_id): def checkTariffInChargeObj(charge_obj): if charge_obj.isVoIPCharge(): for rule_obj in charge_obj.getRules().itervalues(): if rule_obj.getTariffObj().getTariffID()==tariff_id: raise GeneralException(errorText("VOIP_TARIFF","TARIFF_USED_IN_CHARGE")%charge_obj.getChargeName()) charge_main.getLoader().runOnAllCharges(checkTariffInChargeObj)
def delCharge(self, charge_name): """ delete a charge from both db and list of active charges """ self.__delChargeCheckInput(charge_name) charge_obj = charge_main.getLoader().getChargeByName(charge_name) self.__checkChargeUsage(charge_obj) self.__delChargeFromDB(charge_obj) charge_main.getLoader().unloadCharge(charge_obj.getChargeID())
def __leafUsedInCharge(self,leaf_id): def checkLeafInChargeObj(charge_obj): if charge_obj.isInternetCharge(): for rule_obj in charge_obj.getRules().itervalues(): if rule_obj.bw_tx_leaf_id==leaf_id or rule_obj.bw_rx_leaf_id==leaf_id: raise GeneralException(errorText("BANDWIDTH","LEAF_USED_IN_CHARGE")%charge_obj.getChargeName()) charge_main.getLoader().runOnAllCharges(checkLeafInChargeObj)
def delCharge(self,charge_name): """ delete a charge from both db and list of active charges """ self.__delChargeCheckInput(charge_name) charge_obj=charge_main.getLoader().getChargeByName(charge_name) self.__checkChargeUsage(charge_obj) self.__delChargeFromDB(charge_obj) charge_main.getLoader().unloadCharge(charge_obj.getChargeID())
def getChargeInfo(self,request): request.needAuthType(request.ADMIN) if request.has_key("charge_name"): charge_obj=charge_main.getLoader().getChargeByName(request["charge_name"]) elif request.has_key("charge_id"): charge_obj=charge_main.getLoader().getChargeByID(to_int(request["charge_id"],"charge id")) else: request.raiseIncompleteRequest("charge_name") request.getAuthNameObj().canUseCharge(charge_obj.getChargeName()) return charge_obj.getChargeInfo()
def addVoIPChargeRule(self,charge_name,start_time,end_time,day_of_weeks,tariff_name,ras_id,ports): start_time,end_time,day_of_weeks=self.__chargeRuleTimesCheck(start_time,end_time,day_of_weeks) self.__voipChargeRuleCheckInput(charge_name,tariff_name,ras_id,ports) charge_obj=charge_main.getLoader().getChargeByName(charge_name) day_of_weeks_container=self.__createDayOfWeekContainer(day_of_weeks) tariff_id=tariff_main.getLoader().getTariffByName(tariff_name).getTariffID() rule_obj=self.__createVoIPChargeRuleObject(charge_obj,start_time,end_time,day_of_weeks_container,\ tariff_id,ras_id,ports) self.__checkRuleConflict(charge_obj,rule_obj) self.__addVoIPChargeRuleToDB(rule_obj) charge_main.getLoader().loadCharge(charge_obj.getChargeID())
def addCharge(self, name, comment, charge_type, admin_id, visible_to_all): """ add a charge to database, and command the charge loader to load it charge_type(str): Internet or VoIP """ self.__addChargeCheckInput(name, comment, charge_type, admin_id, visible_to_all) charge_id = self.__getNewChargeID() self.__insertNewCharge(charge_id, name, comment, charge_type, admin_id, visible_to_all) charge_main.getLoader().loadCharge(charge_id)
def __checkRasInCharges(self,ras_obj): """ check if this ras, is used in any charge rule, if so tell the user to go and delete the rule before deleting this ras """ def checkRasUsageInRules(charge_obj): rulez=charge_obj.getRules() for rule_obj in rulez.values(): if rule_obj.getRasID()==ras_obj.getRasID(): raise GeneralException(errorText("RAS","RAS_USED_IN_RULE")%rule_obj) charge_main.getLoader().runOnAllCharges(checkRasUsageInRules)
def __updateChargeCheckInput(self,charge_id,name,comment,visible_to_all): """ check inputs of changeChargeInfo raise an exception on bad input """ charge_obj=charge_main.getLoader().getChargeByID(charge_id) checkDBBool(visible_to_all,"Visible To All") if charge_obj.getChargeName() != name and charge_main.getLoader().chargeNameExists(name): raise GeneralException(errorText("CHARGES","CHARGE_NAME_EXISTS") % name) if not isValidName(name): raise GeneralException(errorText("CHARGES","INVALID_CHARGE_NAME") % name)
def getChargeInfo(self, request): request.needAuthType(request.ADMIN) if request.has_key("charge_name"): charge_obj = charge_main.getLoader().getChargeByName( request["charge_name"]) elif request.has_key("charge_id"): charge_obj = charge_main.getLoader().getChargeByID( to_int(request["charge_id"], "charge id")) else: request.raiseIncompleteRequest("charge_name") request.getAuthNameObj().canUseCharge(charge_obj.getChargeName()) return charge_obj.getChargeInfo()
def __checkRasInCharges(self, ras_obj): """ check if this ras, is used in any charge rule, if so tell the user to go and delete the rule before deleting this ras """ def checkRasUsageInRules(charge_obj): rulez = charge_obj.getRules() for rule_obj in rulez.values(): if rule_obj.getRasID() == ras_obj.getRasID(): raise GeneralException( errorText("RAS", "RAS_USED_IN_RULE") % rule_obj) charge_main.getLoader().runOnAllCharges(checkRasUsageInRules)
def updateVoIPChargeRule(self,charge_name,charge_rule_id,start_time,end_time,day_of_weeks,tariff_name,ras_id,ports): """ add a charge rule to charge with id "charge_id" and reload the charge it will add charge_rule and it's ports to db too """ start_time,end_time,day_of_weeks=self.__chargeRuleTimesCheck(start_time,end_time,day_of_weeks) charge_rule_id=self.__updateVoIPChargeRuleCheckInput(charge_name,charge_rule_id,start_time,end_time,day_of_weeks,tariff_name,ras_id,ports) charge_obj=charge_main.getLoader().getChargeByName(charge_name) day_of_weeks_container=self.__createDayOfWeekContainer(day_of_weeks) tariff_id=tariff_main.getLoader().getTariffByName(tariff_name).getTariffID() rule_obj=self.__createVoIPChargeRuleObject(charge_obj,start_time,end_time,day_of_weeks_container,\ tariff_id,ras_id,ports,charge_rule_id) self.__checkRuleConflict(charge_obj,rule_obj,[charge_rule_id]) self.__updateVoIPChargeRuleDB(rule_obj) charge_main.getLoader().loadCharge(charge_obj.getChargeID())
def getChargesWithBwLeaf(self, leaf_id): """ return a list of charge_names that leaf_id is used in charge rules """ charge_names = [] def checkLeafInChargeObj(charge_obj): if charge_obj.isInternetCharge(): for rule_obj in charge_obj.getRules().itervalues(): if rule_obj.bw_tx_leaf_id == leaf_id or rule_obj.bw_rx_leaf_id == leaf_id: charge_names.append(charge_obj.getChargeName()) break charge_main.getLoader().runOnAllCharges(checkLeafInChargeObj) return charge_names
def addVoIPChargeRule(self, charge_name, start_time, end_time, day_of_weeks, tariff_name, ras_id, ports): start_time, end_time, day_of_weeks = self.__chargeRuleTimesCheck( start_time, end_time, day_of_weeks) self.__voipChargeRuleCheckInput(charge_name, tariff_name, ras_id, ports) charge_obj = charge_main.getLoader().getChargeByName(charge_name) day_of_weeks_container = self.__createDayOfWeekContainer(day_of_weeks) tariff_id = tariff_main.getLoader().getTariffByName( tariff_name).getTariffID() rule_obj=self.__createVoIPChargeRuleObject(charge_obj,start_time,end_time,day_of_weeks_container,\ tariff_id,ras_id,ports) self.__checkRuleConflict(charge_obj, rule_obj) self.__addVoIPChargeRuleToDB(rule_obj) charge_main.getLoader().loadCharge(charge_obj.getChargeID())
def addInternetChargeRule(self,charge_name,start_time,end_time,day_of_weeks,cpm,cpk,\ assumed_kps,bandwidth_limit_kbytes,tx_leaf_name,rx_leaf_name,ras_id,ports): """ add a charge rule to charge with id "charge_id" and reload the charge it will add charge_rule and it's ports to db too """ start_time,end_time,day_of_weeks=self.__chargeRuleTimesCheck(start_time,end_time,day_of_weeks) self.__internetChargeRuleCheckInput(charge_name,cpm,cpk,assumed_kps,bandwidth_limit_kbytes,tx_leaf_name,rx_leaf_name,ras_id,ports) charge_obj=charge_main.getLoader().getChargeByName(charge_name) day_of_weeks_container=self.__createDayOfWeekContainer(day_of_weeks) tx_leaf_id,rx_leaf_id=self.__convertBwLeaves(tx_leaf_name,rx_leaf_name) rule_obj=self.__createInternetChargeRuleObject(charge_obj,start_time,end_time,day_of_weeks_container,\ cpm,cpk,assumed_kps,bandwidth_limit_kbytes,tx_leaf_id,rx_leaf_id,ras_id,ports) self.__checkRuleConflict(charge_obj,rule_obj) self.__addInternetChargeRuleToDB(rule_obj) charge_main.getLoader().loadCharge(charge_obj.getChargeID())
def __updateChargeCheckInput(self, charge_id, name, comment, visible_to_all): """ check inputs of changeChargeInfo raise an exception on bad input """ charge_obj = charge_main.getLoader().getChargeByID(charge_id) checkDBBool(visible_to_all, "Visible To All") if charge_obj.getChargeName() != name and charge_main.getLoader( ).chargeNameExists(name): raise GeneralException( errorText("CHARGES", "CHARGE_NAME_EXISTS") % name) if not isValidName(name): raise GeneralException( errorText("CHARGES", "INVALID_CHARGE_NAME") % name)
def changeInit(self, normal_charge): self.charge_name = normal_charge self.useGenerateQuery({ "normal_charge": charge_main.getLoader().getChargeByName( self.charge_name).getChargeID() })
def __checkChargeRuleInCharge(self,charge_rule_id,charge_name): """ check if charge rule with id "charge_rule_id" is in charge with name "charge_name" raise a GeneralException if it isn't """ if charge_rule_id not in charge_main.getLoader().getChargeByName(charge_name).getRules(): raise GeneralException(errorText("CHARGES","CHARGE_RULE_NOT_IN_CHARGE")%(charge_rule_id,charge_name))
def listChargeRules(self,request): request.needAuthType(request.ADMIN) request.checkArgs("charge_name") request.getAuthNameObj().canUseCharge(request["charge_name"]) charge_rules=charge_main.getLoader().getChargeByName(request["charge_name"]).getRules() infos=map(lambda charge_rule_obj:charge_rule_obj.getInfo(),charge_rules.values()) sorted=SortedList(infos) sorted.sortByPostText('["rule_id"]',0) return sorted.getList()
def __checkChargeRuleInCharge(self, charge_rule_id, charge_name): """ check if charge rule with id "charge_rule_id" is in charge with name "charge_name" raise a GeneralException if it isn't """ if charge_rule_id not in charge_main.getLoader().getChargeByName( charge_name).getRules(): raise GeneralException( errorText("CHARGES", "CHARGE_RULE_NOT_IN_CHARGE") % (charge_rule_id, charge_name))
def __chargeRuleCheckInput(self,charge_name,charge_type,ras_id,ports): """ check ChargeRule inputs and raise an exception on bad input """ charge_obj=charge_main.getLoader().getChargeByName(charge_name) if charge_obj.getType()!=charge_type: raise GeneralException(errorText("CHARGES","ANOTHER_CHARGE_TYPE_REQUIRED")%charge_type) if ras_id!=charge_rule.ChargeRule.ALL: ras_main.getLoader().checkRasID(ras_id) if len(ports)==0: raise GeneralException(errorText("CHARGES","NO_PORT_SELECTED"))
def listChargeRules(self, request): request.needAuthType(request.ADMIN) request.checkArgs("charge_name") request.getAuthNameObj().canUseCharge(request["charge_name"]) charge_rules = charge_main.getLoader().getChargeByName( request["charge_name"]).getRules() infos = map(lambda charge_rule_obj: charge_rule_obj.getInfo(), charge_rules.values()) sorted = SortedList(infos) sorted.sortByPostText('["rule_id"]', 0) return sorted.getList()
def checkInput(self,src,action,dargs): if src=="group": dargs["admin_obj"].canChangeVoIPAttrs(None) else: map(dargs["admin_obj"].canChangeVoIPAttrs,dargs["users"].itervalues()) if hasattr(self,"charge_name"): #update dargs["admin_obj"].canUseCharge(self.charge_name) charge_obj=charge_main.getLoader().getChargeByName(self.charge_name) if not charge_obj.isVoIPCharge(): raise GeneralException(errorText("USER_ACTIONS","VOIP_CHARGE_EXPECTED")%charge_obj.getType())
def updateInternetChargeRule(self,charge_name,charge_rule_id,start_time,end_time,day_of_weeks,cpm,cpk,\ assumed_kps,bandwidth_limit_kbytes,tx_leaf_name,rx_leaf_name,ras_id,ports): """ add a charge rule to charge with id "charge_id" and reload the charge it will add charge_rule and it's ports to db too """ start_time, end_time, day_of_weeks = self.__chargeRuleTimesCheck( start_time, end_time, day_of_weeks) charge_rule_id=self.__updateInternetChargeRuleCheckInput(charge_name,charge_rule_id,start_time,end_time,day_of_weeks,cpm,cpk,\ assumed_kps,bandwidth_limit_kbytes,tx_leaf_name,rx_leaf_name,ras_id,ports) charge_obj = charge_main.getLoader().getChargeByName(charge_name) day_of_weeks_container = self.__createDayOfWeekContainer(day_of_weeks) tx_leaf_id, rx_leaf_id = self.__convertBwLeaves( tx_leaf_name, rx_leaf_name) rule_obj=self.__createInternetChargeRuleObject(charge_obj,start_time,end_time,day_of_weeks_container,\ cpm,cpk,assumed_kps,bandwidth_limit_kbytes,tx_leaf_id,rx_leaf_id,ras_id,\ ports,charge_rule_id) self.__checkRuleConflict(charge_obj, rule_obj, [charge_rule_id]) self.__updateInternetChargeRuleDB(rule_obj) charge_main.getLoader().loadCharge(charge_obj.getChargeID())
def updateVoIPChargeRule(self, charge_name, charge_rule_id, start_time, end_time, day_of_weeks, tariff_name, ras_id, ports): """ add a charge rule to charge with id "charge_id" and reload the charge it will add charge_rule and it's ports to db too """ start_time, end_time, day_of_weeks = self.__chargeRuleTimesCheck( start_time, end_time, day_of_weeks) charge_rule_id = self.__updateVoIPChargeRuleCheckInput( charge_name, charge_rule_id, start_time, end_time, day_of_weeks, tariff_name, ras_id, ports) charge_obj = charge_main.getLoader().getChargeByName(charge_name) day_of_weeks_container = self.__createDayOfWeekContainer(day_of_weeks) tariff_id = tariff_main.getLoader().getTariffByName( tariff_name).getTariffID() rule_obj=self.__createVoIPChargeRuleObject(charge_obj,start_time,end_time,day_of_weeks_container,\ tariff_id,ras_id,ports,charge_rule_id) self.__checkRuleConflict(charge_obj, rule_obj, [charge_rule_id]) self.__updateVoIPChargeRuleDB(rule_obj) charge_main.getLoader().loadCharge(charge_obj.getChargeID())
def __addChargeCheckInput(self,name,comment,charge_type,admin_id,visible_to_all): """ check addCharge inputs validity raise exception on bad input """ admin_main.getLoader().checkAdminID(admin_id) checkDBBool(visible_to_all,"Visible to all") self.__checkChargeType(charge_type) if charge_main.getLoader().chargeNameExists(name): raise GeneralException(errorText("CHARGES","CHARGE_NAME_EXISTS") % name) if not isValidName(name): raise GeneralException(errorText("CHARGES","INVALID_CHARGE_NAME") % name)
def canUseCharge(self,charge_name): """ return True if admin can use charge with name "charge_name" """ if charge_main.getLoader().getChargeByName(charge_name).isVisibleToAll() or self.isGod() or self.hasPerm("ACCESS ALL CHARGES"): return True if self.hasPerm("CHARGE ACCESS"): try: self.checkPerm("CHARGE ACCESS",charge_name) return True except PermissionException: return False return False
def __chargeRuleCheckInput(self, charge_name, charge_type, ras_id, ports): """ check ChargeRule inputs and raise an exception on bad input """ charge_obj = charge_main.getLoader().getChargeByName(charge_name) if charge_obj.getType() != charge_type: raise GeneralException( errorText("CHARGES", "ANOTHER_CHARGE_TYPE_REQUIRED") % charge_type) if ras_id != charge_rule.ChargeRule.ALL: ras_main.getLoader().checkRasID(ras_id) if len(ports) == 0: raise GeneralException(errorText("CHARGES", "NO_PORT_SELECTED"))
def __init__(self,user_obj): user_plugin.UserPlugin.__init__(self,user_obj) self.charge_defined=True self.charge_initialized=0 #number of instances with initialized charge try: if user_obj.isNormalUser(): self.charge_id=int(user_obj.getUserAttrs()["normal_charge"]) elif user_obj.isVoIPUser(): self.charge_id=int(user_obj.getUserAttrs()["voip_charge"]) except GeneralException: self.charge_defined=False if self.charge_defined: self.charge_obj=charge_main.getLoader().getChargeByID(self.charge_id)
def checkInput(self, src, action, dargs): if src == "group": dargs["admin_obj"].canChangeVoIPAttrs(None) else: map(dargs["admin_obj"].canChangeVoIPAttrs, dargs["users"].itervalues()) if hasattr(self, "charge_name"): #update dargs["admin_obj"].canUseCharge(self.charge_name) charge_obj = charge_main.getLoader().getChargeByName( self.charge_name) if not charge_obj.isVoIPCharge(): raise GeneralException( errorText("USER_ACTIONS", "VOIP_CHARGE_EXPECTED") % charge_obj.getType())
def canUseCharge(self, charge_name): """ return True if admin can use charge with name "charge_name" """ if charge_main.getLoader().getChargeByName(charge_name).isVisibleToAll( ) or self.isGod() or self.hasPerm("ACCESS ALL CHARGES"): return True if self.hasPerm("CHARGE ACCESS"): try: self.checkPerm("CHARGE ACCESS", charge_name) return True except PermissionException: return False return False
def __addChargeCheckInput(self, name, comment, charge_type, admin_id, visible_to_all): """ check addCharge inputs validity raise exception on bad input """ admin_main.getLoader().checkAdminID(admin_id) checkDBBool(visible_to_all, "Visible to all") self.__checkChargeType(charge_type) if charge_main.getLoader().chargeNameExists(name): raise GeneralException( errorText("CHARGES", "CHARGE_NAME_EXISTS") % name) if not isValidName(name): raise GeneralException( errorText("CHARGES", "INVALID_CHARGE_NAME") % name)
def __init__(self, user_obj): user_plugin.UserPlugin.__init__(self, user_obj) self.charge_defined = True self.charge_initialized = 0 #number of instances with initialized charge try: if user_obj.isNormalUser(): self.charge_id = int(user_obj.getUserAttrs()["normal_charge"]) elif user_obj.isVoIPUser(): self.charge_id = int(user_obj.getUserAttrs()["voip_charge"]) except GeneralException: self.charge_defined = False if self.charge_defined: self.charge_obj = charge_main.getLoader().getChargeByID( self.charge_id)
def listCharges(self,request): """ return a list of charge names NOTE: this handler take care of admin permissions and return only charges that admin has access to type(string,optional): type of charges """ request.needAuthType(request.ADMIN) requester=request.getAuthNameObj() charge_names=charge_main.getLoader().getAllChargeNames() def filter_func(charge_name): if request.has_key("charge_type") and charge_main.getLoader().getChargeByName(charge_name).getType()!=request["charge_type"]: return False return requester.canUseCharge(charge_name) return filter(filter_func,charge_names)
def calcApproxDuration(self, loaded_user): """ return approximate available duration when using normal charge for loaded_user return value is in seconds """ if not loaded_user.getUserAttrs().hasAttr("normal_charge"): return [] charge_obj = charge_main.getLoader().getChargeByID( int(loaded_user.getUserAttrs()["normal_charge"])) credit = loaded_user.getBasicUser().getCredit() approx = [] for rule_obj in charge_obj.getRules().itervalues(): cpm = 0 if rule_obj.cpm: cpm += rule_obj.cpm if rule_obj.cpk: cpm += rule_obj.assumed_kps / rule_obj.cpk if rule_obj.ras_id != rule_obj.ALL: ras_ip = ras_main.getLoader().getRasByID( rule_obj.ras_id).getRasIP() else: ras_ip = rule_obj.ALL if cpm: duration = credit / cpm * 60 else: duration = "Infinite" approx.append([ duration, ras_ip, rule_obj.day_of_weeks.getDayNames(), rule_obj.start_time, rule_obj.end_time ]) return approx
def listCharges(self, request): """ return a list of charge names NOTE: this handler take care of admin permissions and return only charges that admin has access to type(string,optional): type of charges """ request.needAuthType(request.ADMIN) requester = request.getAuthNameObj() charge_names = charge_main.getLoader().getAllChargeNames() def filter_func(charge_name): if request.has_key("charge_type") and charge_main.getLoader( ).getChargeByName(charge_name).getType() != request["charge_type"]: return False return requester.canUseCharge(charge_name) charge_names = filter(filter_func, charge_names) sorted_charge_names = SortedList(charge_names) sorted_charge_names.sort(False) return sorted_charge_names.getList()
def genQueryAuditLogPrepareOldValue(self, attr_name, old_value): return charge_main.getLoader().getChargeByID( int(old_value)).getChargeName()
def __delChargeCheckInput(self, charge_name): """ check del Charge inputs raise exception on bad input """ charge_main.getLoader().checkChargeName(charge_name)
def getParsedDic(self): return { "normal_charge": charge_main.getLoader().getChargeByID( self.normal_charge_id).getChargeName() }
def getValueCandidates(self): return charge_main.getLoader().getAllChargeNames()
def checkNewValue(self, new_val): charge_main.getLoader().checkChargeName(new_val)
from core.charge import charge_main charge_obj=charge_main.getLoader().getChargeByName('test') rules=charge_obj.getRules() print rules[8].interval.containsNow()
def changeInit(self,voip_charge): self.charge_name=voip_charge self.useGenerateQuery({"voip_charge":charge_main.getLoader().getChargeByName(self.charge_name).getChargeID()})
def run(self): self.exactSearchOnUserAndGroupAttrs("voip_charge","voip_charge",lambda x:charge_main.getLoader().getChargeByName(x).getChargeID())
def __delChargeCheckInput(self,charge_name): """ check del Charge inputs raise exception on bad input """ charge_main.getLoader().checkChargeName(charge_name)
def filter_func(charge_name): if request.has_key("charge_type") and charge_main.getLoader().getChargeByName(charge_name).getType()!=request["charge_type"]: return False return requester.canUseCharge(charge_name)
def filter_func(charge_name): if request.has_key("charge_type") and charge_main.getLoader( ).getChargeByName(charge_name).getType() != request["charge_type"]: return False return requester.canUseCharge(charge_name)
def run(self): self.exactSearchOnUserAndGroupAttrs( "normal_charge", "normal_charge", lambda x: charge_main.getLoader().getChargeByName(x).getChargeID())
def getParsedDic(self): return {"voip_charge":charge_main.getLoader().getChargeByID(self.voip_charge_id).getChargeName()}
def checkNewValue(self,new_val): charge_main.getLoader().checkChargeName(new_val)