def login_command(transport, data): if transport is None: return else: log.debug('login command start') login = data['login'] password = data['password'] _id = int(data['id']) usermanager = UserManager() user = usermanager.get_user(login) if not user: usermanager.add_user(login, password) user = usermanager.get_user(login) log.debug('get user %i' % user.uid) transport.uid = user.uid user.transport = transport rspd = {'login': login, 'status': 'ok'} rsp = Mlang().create_rsp(rspd, _id) peername = transport.get_extra_info('peername') log.debug('client logon : %i %s' % (user.uid, str(peername))) transport.write(rsp.encode()) log.debug('login command end')
class VKBotApplication: cfg = None logger = None botAPI = None uManager = None def __init__(self, setting_filename): dir_path = os.path.dirname(os.path.realpath(__file__)) self.cfg = Config(os.path.join(dir_path, setting_filename)) self.logger = Log.get_logger(os.path.join(dir_path, self.cfg.LOG_FILE)) self.cfg.verify_config() self.botAPI = VkApi(self.cfg) self.uManager = UserManager(os.path.join(dir_path, self.cfg.USERS_FILE)) self.logger.info("\nVKBot started") def get_id_that_members(self, vk_id_string): vk_id_arr = vk_id_string.split(",") result_id = [] members = self.get_members() for vk_id in vk_id_arr: if int(vk_id) not in members: self.logger.info("skip user {0} because he is not group member".format(vk_id)) else: result_id.append(int(vk_id)) return result_id def get_members(self): self.logger.info("getting_members") r = self.botAPI.get_members_list() # count = int(r['response']['count']) member_user_ids = r['response']['items'] # check if users in memory for user_id in member_user_ids: # new user detected if not self.uManager.has_user(user_id): # TODO try/catch # TODO multiple list # TODO check if user leave group user_info = self.get_user_info(user_id) first_name = user_info['response'][0]['first_name'].encode("utf-8") last_name = user_info['response'][0]['last_name'].encode("utf-8") self.uManager.add_user(user_id, -1, 0, "{0} {1}".format(first_name, last_name), "") self.logger.info("members are {0}".format(member_user_ids)) return member_user_ids def check_allowed_receive_message(self, member_user_ids): self.logger.info("Check allowed receive message") allowed_members = [] for member_user_id in member_user_ids: r = self.botAPI.is_messages_from_group_allowed(member_user_id) if r['response']['is_allowed'] == 1: self.uManager.set_user_property(member_user_id, "allow", 1) allowed_members.append(member_user_id) else: self.uManager.set_user_property(member_user_id, "allow", 0) time = self.uManager.get_user_property(member_user_id, "time") if time is None or time == "": # try to send message first time anyway allowed_members.append(member_user_id) self.logger.info("Allowed members are : {0}".format(allowed_members)) return allowed_members def skip_blocked_users(self, user_ids): non_blocked = [] for user_id in user_ids: if self.uManager.get_user_property(user_id, "blocked") == 0: non_blocked.append(user_id) self.logger.info("Non blocked users : {0}".format(non_blocked)) return non_blocked def get_user_info(self, user_id): self.logger.info("Get user {0} info".format(user_id)) r = self.botAPI.get_user_info(user_id) return r def send_message(self, message, user_ids): cap = 100 if not user_ids: self.logger.info("no user to send message") return if message == "" or not message: self.logger.info("no message to send") return msg = message.decode('string_escape') batch_users = [] if len(user_ids) > 1: for user_id in user_ids: batch_users.append(user_id) if len(batch_users) == cap: user_ids_str = ','.join(str(e) for e in batch_users) self.botAPI.send_messages(msg, user_ids_str) batch_users = [] if len(batch_users) > 0: user_ids_str = ','.join(str(e) for e in batch_users) self.botAPI.send_messages(msg, user_ids_str) else: self.botAPI.send_message(msg, user_ids[0]) time = datetime.datetime.now().strftime("%d %B %Y %I:%M%p") for user_id in user_ids: self.uManager.set_user_property(user_id, "time", time) self.uManager.save_users()
'Message': str(error) } if hasattr(g, 'jsonp') and g.jsonp: return '%s(%s)' % (g.jsonp, simplejson.dumps(error_result)) else: return json_response(error_result), http_code login_manager = LoginManager() login_manager.init_app(app) login_manager.login_view = 'login' try: user_manager.get_user(username=GLOBAL_USER_ID) except: user_manager.add_user(GLOBAL_USER_ID) class User(UserMixin): def __init__(self, user_id, name, config=None, features=None): self.id = user_id self.name = name self.root_context_id = None self.config = config or {} self.features = features or {} def get_name(self): return self.name def get_id(self): return self.id
from rating_system import TopcoderRatingSystem from user_manager import UserManager from datetime import datetime from utils import get_discretize_dict, get_codeforces_users_by_organization from datetime import datetime import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False user_manager = UserManager() user_manager.add_user(u'何柱', { 'codeforces': 'Hezhu', 'atcoder': 'Hezhu', 'topcoder': 'Herzu', }) user_manager.add_user(u'陈鑫', { 'codeforces': 'missever', 'atcoder': 'missever', 'topcoder': 'missever', }) user_manager.add_user(u'廖奇', { 'codeforces': 'liao772002', 'topcoder': 'liao772002', }) user_manager.add_user(u'杨宇同', { 'codeforces': 'Orenji.Sora', 'topcoder': 'Orenji.Sora', })