Beispiel #1
0
 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())
Beispiel #2
0
 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)
Beispiel #3
0
    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)
Beispiel #4
0
    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)
Beispiel #5
0
    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())
Beispiel #6
0
 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())
Beispiel #7
0
    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)
Beispiel #8
0
 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())
Beispiel #9
0
    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)	
Beispiel #10
0
    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())
Beispiel #11
0
    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()
Beispiel #12
0
    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())
Beispiel #13
0
 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)
Beispiel #14
0
    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)
Beispiel #15
0
    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)
Beispiel #16
0
 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()
Beispiel #17
0
    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)
Beispiel #18
0
    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())
Beispiel #19
0
    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
Beispiel #20
0
 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())
Beispiel #21
0
    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())
Beispiel #22
0
    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)
Beispiel #23
0
 def changeInit(self, normal_charge):
     self.charge_name = normal_charge
     self.useGenerateQuery({
         "normal_charge":
         charge_main.getLoader().getChargeByName(
             self.charge_name).getChargeID()
     })
Beispiel #24
0
    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))
Beispiel #25
0
    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()
Beispiel #26
0
 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))
Beispiel #27
0
    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"))
Beispiel #28
0
 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()
Beispiel #29
0
    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())
Beispiel #30
0
    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())
Beispiel #31
0
 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())
Beispiel #32
0
    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)
Beispiel #33
0
    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
Beispiel #34
0
 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"))
Beispiel #35
0
    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)
Beispiel #36
0
    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())
Beispiel #37
0
    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
Beispiel #38
0
    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)
Beispiel #39
0
    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)
Beispiel #40
0
    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)
Beispiel #41
0
    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
Beispiel #42
0
    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()
Beispiel #43
0
 def genQueryAuditLogPrepareOldValue(self, attr_name, old_value):
     return charge_main.getLoader().getChargeByID(
         int(old_value)).getChargeName()
Beispiel #44
0
 def __delChargeCheckInput(self, charge_name):
     """
         check del Charge inputs
         raise exception on bad input
     """
     charge_main.getLoader().checkChargeName(charge_name)
Beispiel #45
0
 def getParsedDic(self):
     return {
         "normal_charge":
         charge_main.getLoader().getChargeByID(
             self.normal_charge_id).getChargeName()
     }
Beispiel #46
0
 def getValueCandidates(self):
     return charge_main.getLoader().getAllChargeNames()
Beispiel #47
0
 def checkNewValue(self, new_val):
     charge_main.getLoader().checkChargeName(new_val)
Beispiel #48
0
from core.charge import charge_main
charge_obj=charge_main.getLoader().getChargeByName('test')
rules=charge_obj.getRules()
print rules[8].interval.containsNow()
Beispiel #49
0
    def getValueCandidates(self):
	return charge_main.getLoader().getAllChargeNames()
Beispiel #50
0
    def changeInit(self,voip_charge):
	self.charge_name=voip_charge
	self.useGenerateQuery({"voip_charge":charge_main.getLoader().getChargeByName(self.charge_name).getChargeID()})
Beispiel #51
0
    def run(self):
	self.exactSearchOnUserAndGroupAttrs("voip_charge","voip_charge",lambda x:charge_main.getLoader().getChargeByName(x).getChargeID())
Beispiel #52
0
    def __delChargeCheckInput(self,charge_name):
	"""
	    check del Charge inputs
	    raise exception on bad input
	"""
	charge_main.getLoader().checkChargeName(charge_name)
Beispiel #53
0
	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) 
Beispiel #54
0
 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)
Beispiel #55
0
 def run(self):
     self.exactSearchOnUserAndGroupAttrs(
         "normal_charge", "normal_charge",
         lambda x: charge_main.getLoader().getChargeByName(x).getChargeID())
Beispiel #56
0
    def getParsedDic(self):
	return {"voip_charge":charge_main.getLoader().getChargeByID(self.voip_charge_id).getChargeName()}
Beispiel #57
0
    def checkNewValue(self,new_val):
	charge_main.getLoader().checkChargeName(new_val)