def delUser(self,user_ids,comment,del_connections,admin_name,remote_address): """ delete users with ids in user_ids comment: comment when deleting users del_connection tells if we should delete user(s) connection logs too """ self.__delUserCheckInput(user_ids,comment,del_connections,admin_name,remote_address) admin_obj=admin_main.getLoader().getAdminByName(admin_name) map(lambda user_id:user_main.getUserPool().addToBlackList,user_ids) try: loaded_users=self.getLoadedUsersByUserID(user_ids) total_credit=self.__delUserCheckUsers(loaded_users) admin_deposit=total_credit*-1 ibs_query=IBSQuery() ibs_query+=user_main.getCreditChangeLogActions().logCreditChangeQuery("DEL_USER", admin_obj.getAdminID(), user_ids, 0, admin_deposit, remote_address, comment) ibs_query+=admin_main.getActionManager().consumeDepositQuery(admin_obj.getAdminID(),admin_deposit) self.__delUserQuery(ibs_query,user_ids,del_connections) ibs_query.runQuery() admin_obj.consumeDeposit(admin_deposit) map(user_main.getUserPool().userChanged,user_ids) finally: map(lambda user_id:user_main.getUserPool().removeFromBlackList,user_ids)
def delUser(self, user_ids, comment, del_connections, del_audit_logs, admin_name, remote_address): """ delete users with ids in user_ids comment: comment when deleting users del_connection tells if we should delete user(s) connection logs too """ self.__delUserCheckInput(user_ids, comment, del_connections, del_audit_logs, admin_name, remote_address) admin_obj = admin_main.getLoader().getAdminByName(admin_name) map(lambda user_id: user_main.getUserPool().addToBlackList, user_ids) try: loaded_users = self.getLoadedUsersByUserID(user_ids) total_credit = self.__delUserCheckUsers(loaded_users) admin_deposit = total_credit * -1 ibs_query = IBSQuery() ibs_query += user_main.getCreditChangeLogActions( ).logCreditChangeQuery("DEL_USER", admin_obj.getAdminID(), user_ids, 0, admin_deposit, remote_address, comment) ibs_query += admin_main.getActionManager().consumeDepositQuery( admin_obj.getAdminID(), admin_deposit) ibs_query += ias_main.getActionsManager().logEvent( "DELETE_USER", admin_name, 0, ",".join(user_ids)) self.__delUserQuery(ibs_query, user_ids, del_connections, del_audit_logs) ibs_query.runQuery() admin_obj.consumeDeposit(admin_deposit) map(user_main.getUserPool().userChanged, user_ids) finally: map(lambda user_id: user_main.getUserPool().removeFromBlackList, user_ids) self.__postDelUser(loaded_users)
def __delChargeFromDB(self,charge_obj): """ --completely-- delete charge with id "charge_id" from db, also delete it's rules and ports """ ibs_query=IBSQuery() for charge_rule_id in charge_obj.getRules(): ibs_query+=self.__delChargeRuleTotallyQuery(charge_rule_id,charge_obj) ibs_query+=self.__delChargeQuery(charge_obj.getChargeID()) ibs_query.runQuery()
def __delChargeFromDB(self, charge_obj): """ --completely-- delete charge with id "charge_id" from db, also delete it's rules and ports """ ibs_query = IBSQuery() for charge_rule_id in charge_obj.getRules(): ibs_query += self.__delChargeRuleTotallyQuery( charge_rule_id, charge_obj) ibs_query += self.__delChargeQuery(charge_obj.getChargeID()) ibs_query.runQuery()
def addNewUsers(self,_count,credit,owner_name,creator_name,group_name,remote_address,credit_change_comment): self.__addNewUsersCheckInput(_count,credit,owner_name,creator_name,group_name,remote_address,credit_change_comment) admin_consumed_credit=credit*_count ibs_query=IBSQuery() ibs_query+=admin_main.getActionManager().consumeDeposit(creator_name,admin_consumed_credit) try: user_ids=self.addNewUsersQuery(_count,credit,owner_name,group_name,ibs_query) creator_admin_obj=admin_main.getLoader().getAdminByName(creator_name) ibs_query+=user_main.getCreditChangeLogActions().logCreditChangeQuery("ADD_USER",creator_admin_obj.getAdminID(),user_ids,credit,\ admin_consumed_credit,remote_address,credit_change_comment) ibs_query.runQuery() return user_ids except: admin_main.getActionManager().consumeDeposit(creator_name,-1*admin_consumed_credit,False) #re-add deposit to admin raise
def updateUserAttrs(self,loaded_users,admin_obj,attrs,to_del_attrs): """ loaded_users(list of LoadedUser instances): """ self.__updateUserAttrsCheckInput(loaded_users,admin_obj,attrs,to_del_attrs) changed_attr_updaters=user_main.getAttributeManager().getAttrUpdaters(attrs,"change") deleted_attr_updaters=user_main.getAttributeManager().getAttrUpdaters(to_del_attrs,"delete") users=self.__createUsersDic(loaded_users) ibs_query=IBSQuery() ibs_query=self.__getChangedQuery(ibs_query,users,admin_obj,changed_attr_updaters) ibs_query=self.__getDeletedQuery(ibs_query,users,admin_obj,deleted_attr_updaters) ibs_query.runQuery() self.__broadcastChange(users.keys()) self.__callPostUpdates(changed_attr_updaters,deleted_attr_updaters)
def addNewUsers(self, _count, credit, owner_name, creator_name, group_name, remote_address, credit_change_comment, user_ids=None): """ add _count of users to system _count(int): postive integer credit(float): initial credit of users owner_name(str): valid admin name, that is owner of created users creator_name(str): valid admin name, that created users group_name(str): valid group name these users belongs to remote_address(str): ip address that admin used to create these users credit_change_comment(str): user_ids(None or list of int): list of user_ids to use. if set to None generate new ids """ self.__addNewUsersCheckInput(_count, credit, owner_name, creator_name, group_name, remote_address, credit_change_comment, user_ids) admin_consumed_credit = credit * _count ibs_query = IBSQuery() ibs_query += admin_main.getActionManager().consumeDeposit( creator_name, admin_consumed_credit) try: user_ids = self.addNewUsersQuery(_count, credit, owner_name, group_name, ibs_query, user_ids) creator_admin_obj = admin_main.getLoader().getAdminByName( creator_name) ibs_query+=user_main.getCreditChangeLogActions().logCreditChangeQuery("ADD_USER",creator_admin_obj.getAdminID(),user_ids,credit,\ admin_consumed_credit,remote_address,credit_change_comment) self.__addNewUserIASQuery(ibs_query, creator_name, credit, user_ids) ibs_query.runQuery() return user_ids except: admin_main.getActionManager().consumeDeposit( creator_name, -1 * admin_consumed_credit, False) #re-add deposit to admin raise
def changeQuery(self, ibs_query, src, action, **args): admin_obj = args["admin_obj"] users = args["users"] user_ids = users.keys() user_ids.sort() self.__parseVoIPAttrs() self.__changeCheckInput(users, admin_obj) null_queries = IBSQuery() real_queries = IBSQuery() i = 0 for user_id in user_ids: loaded_user = users[user_id] if loaded_user.userHasAttr("voip_username"): null_queries += self.updateVoIPUserAttrsToNullQuery(user_id) real_queries += self.updateVoIPUserAttrsQuery( user_id, self.usernames[i], self.passwords[i].getPassword()) old_value = loaded_user.getUserAttrs()["voip_username"] else: real_queries += self.insertVoIPUserAttrsQuery( user_id, self.usernames[i], self.passwords[i].getPassword()) old_value = self.AUDIT_LOG_NOVALUE if defs.USER_AUDIT_LOG: ibs_query += user_main.getUserAuditLogManager( ).userAuditLogQuery(args["admin_obj"].getAdminID(), True, loaded_user.getUserID(), "voip_username", old_value, self.usernames[i]) i += 1 ibs_query += null_queries ibs_query += real_queries if self.voip_save: user_main.getAddUserSaveActions().newAddUser( ibs_query, user_ids, self.usernames, self.passwords, admin_obj.getAdminID(), "VoIP", "") return ibs_query
def updateGroupAttrs(self,group_name,attrs,to_del_attrs,admin_obj): """ update group attributes attrs(dic): a dic of attributes in format attr_name=>attr_value that tell "I want these attributes have these values", so attrs may contain only a portion of attributes and not all of them to_del_attrs(list): list of attributes that should be deleted from group admin_obj(Admin instance): admin that request this update """ group_obj=group_main.getLoader().getGroupByName(group_name) changed_attr_updaters=user_main.getAttributeManager().getAttrUpdaters(attrs,"change") deleted_attr_updaters=user_main.getAttributeManager().getAttrUpdaters(to_del_attrs,"delete") ibs_query=IBSQuery() self.__getChangedQuery(ibs_query,group_obj,changed_attr_updaters,admin_obj) self.__getDeletedQuery(ibs_query,group_obj,deleted_attr_updaters,admin_obj) ibs_query.runQuery() group_main.getLoader().loadGroupByName(group_name) self.__broadcastChange() self.__callPostUpdates(changed_attr_updaters,deleted_attr_updaters)
def updateGroupAttrs(self, group_name, attrs, to_del_attrs, admin_obj): """ update group attributes attrs(dic): a dic of attributes in format attr_name=>attr_value that tell "I want these attributes have these values", so attrs may contain only a portion of attributes and not all of them to_del_attrs(list): list of attributes that should be deleted from group admin_obj(Admin instance): admin that request this update """ group_obj = group_main.getLoader().getGroupByName(group_name) changed_attr_updaters = user_main.getAttributeManager( ).getAttrUpdaters(attrs, "change") deleted_attr_updaters = user_main.getAttributeManager( ).getAttrUpdaters(to_del_attrs, "delete") ibs_query = IBSQuery() self.__getChangedQuery(ibs_query, group_obj, changed_attr_updaters, admin_obj) self.__getDeletedQuery(ibs_query, group_obj, deleted_attr_updaters, admin_obj) ibs_query.runQuery() group_main.getLoader().loadGroupByName(group_name) self.__broadcastChange() self.__callPostUpdates(changed_attr_updaters, deleted_attr_updaters)
def changeCredit(self,user_ids,credit,changer_admin_name,remote_address,credit_change_comment,loaded_users): """ change credit of user(s) with user_id in "user_ids" user_ids(iterable object, list or multi_str): user_ids that credit will be changed credit(float): amount of credit change, can be negative changer_admin_name(string): username of admin that initiate the change. He should have enough deposit remote_address(string): changer client ip address credit_change_comment(string): comment that will be stored in credit change log loaded_users(LoadedUser instance): list of loaded users of "user_ids" """ self.__changeCreditCheckInput(user_ids,credit,changer_admin_name,remote_address,credit_change_comment,loaded_users) admin_consumed_credit=credit*len(user_ids) ibs_query=IBSQuery() ibs_query+=admin_main.getActionManager().consumeDeposit(changer_admin_name,admin_consumed_credit) try: changer_admin_obj=admin_main.getLoader().getAdminByName(changer_admin_name) ibs_query+=self.__changeCreditQuery(user_ids,credit) ibs_query+=user_main.getCreditChangeLogActions().logCreditChangeQuery("CHANGE_CREDIT",changer_admin_obj.getAdminID(),user_ids,credit,\ admin_consumed_credit,remote_address,credit_change_comment) ibs_query.runQuery() except: admin_main.getActionManager().consumeDeposit(changer_admin_name,-1*admin_consumed_credit,False) #re-add deposit to admin raise self.__broadcastChange(user_ids)
def changeCredit(self, user_ids, credit, changer_admin_name, remote_address, credit_change_comment, loaded_users): """ change credit of user(s) with user_id in "user_ids" user_ids(iterable object, list or multi_str): user_ids that credit will be changed credit(float): amount of credit change, can be negative changer_admin_name(string): username of admin that initiate the change. He should have enough deposit remote_address(string): changer client ip address credit_change_comment(string): comment that will be stored in credit change log loaded_users(LoadedUser instance): list of loaded users of "user_ids" """ self.__changeCreditCheckInput(user_ids, credit, changer_admin_name, remote_address, credit_change_comment, loaded_users) admin_consumed_credit = credit * len(user_ids) ibs_query = IBSQuery() ibs_query += admin_main.getActionManager().consumeDeposit( changer_admin_name, admin_consumed_credit) try: changer_admin_obj = admin_main.getLoader().getAdminByName( changer_admin_name) ibs_query += self.__changeCreditQuery(user_ids, credit) ibs_query+=user_main.getCreditChangeLogActions().logCreditChangeQuery("CHANGE_CREDIT",changer_admin_obj.getAdminID(),user_ids,credit,\ admin_consumed_credit,remote_address,credit_change_comment) ibs_query += ias_main.getActionsManager().logEvent( "CHANGE_CREDIT", changer_admin_name, credit, ",".join(user_ids)) ibs_query.runQuery() except: admin_main.getActionManager().consumeDeposit( changer_admin_name, -1 * admin_consumed_credit, False) #re-add deposit to admin raise self.broadcastChange(user_ids)
def updateUserAttrsQuery(self, loaded_users, admin_obj, attrs, to_del_attrs): """ return query for update user attrs. Caller must runQuery, broadcastChange and callPostUpdates """ self.__updateUserAttrsCheckInput(loaded_users, admin_obj, attrs, to_del_attrs) changed_attr_updaters = user_main.getAttributeManager( ).getAttrUpdaters(attrs, "change") deleted_attr_updaters = user_main.getAttributeManager( ).getAttrUpdaters(to_del_attrs, "delete") users = self.__createUsersDic(loaded_users) ibs_query = IBSQuery() ibs_query = self.__getChangedQuery(ibs_query, users, admin_obj, changed_attr_updaters) ibs_query = self.__getDeletedQuery(ibs_query, users, admin_obj, deleted_attr_updaters) return (ibs_query, changed_attr_updaters, deleted_attr_updaters, users)