def authenticate(self, memberid, ws): if (memberid == None): self.guest = True for x in self.transaction.buffer: self.write(ws, x) return self.user = User(int(memberid)) try: self.user.update() except Exception as e: print 'API call failed: %r' % (e) reactor.stop() # if this user opened two tabs make sure we use the same MessageLimiter to stop flooding for proto in self.transaction.connections.keys(): if (proto != self and proto.user != None and proto.user.mid == self.user.mid): self.limiter = proto.limiter if (self.limiter == None): self.limiter = MessageLimiter() self.editlimiter = MessageLimiter(0.2) for x in self.transaction.buffer: self.write(ws, x)
def handle_user(self, cmd: Command): username = cmd.param if self.x.client.authed: self.send_response(230, 'Already logged in.') else: self.x.client.user = User(username) self.send_response(331, 'Specify password.')
def authenticate(self, memberid, ws): if(memberid == None): self.guest = True for x in self.transaction.buffer: self.write(ws, x) return self.user = User(int(memberid)) try: self.user.update() except Exception as e: print 'API call failed: %r' % (e) reactor.stop() # if this user opened two tabs make sure we use the same MessageLimiter to stop flooding for proto in self.transaction.connections.keys(): if(proto != self and proto.user != None and proto.user.mid == self.user.mid): self.limiter = proto.limiter if(self.limiter == None): self.limiter = MessageLimiter() self.editlimiter = MessageLimiter(0.2) for x in self.transaction.buffer: self.write(ws, x)
def get_user(input_key): YAML_PATH = 'conf/conf.yaml' with open(YAML_PATH, 'r') as f: data = yaml.load(f) app = App(**data['app']) setting = data["users"][input_key] user = User(app, input_key, **setting) return user
def get_users(): YAML_PATH = 'conf/conf.yaml' with open(YAML_PATH, 'r') as f: data = yaml.load(f) app = App(**data['app']) users = [ User(app, user, **setting) for user, setting in data['users'].items() ] return users
def addUser(update: Update, context: CallbackContext): global state bot = update.message.bot user = getUser(update.message.chat_id, state.users) if user.permissions >= 7: new_user = getUser(update.message.contact.user_id, state.users) if new_user is None: new_user = User(update.message.contact, 3) state.users.append(new_user) saveState() result = bot.send_message(text=buildMessage(new_user.contact.first_name + " added as user."), chat_id=update.message.chat_id, reply_markup=makeKeyboard(user)) user.message_id = result['message_id']
def test_act_raise_value_error(): test_user = User(username="******", first_name="Test", last_name="User") type_of_action = "be_idle" with pytest.raises(ValueError) as excinfo: act(user=test_user, type_of_action=type_of_action) msg = str(excinfo.value) assert msg == f"Invalid action. type_of_action was {type_of_action} instead of" \ f" one of ['register', 'borrow', 'return', 'withdraw'] "
def start(update: Update, context: CallbackContext) -> None: global state user = getUser(update.message.chat_id, state.users) if user is None: if str(update.message.from_user.id) in admins: user = User(Contact("", update.message.from_user.first_name, user_id=update.message.from_user.id), 7) state.users.append(user) saveState() else: kb = [[KeyboardButton('/start')]] kb_markup = ReplyKeyboardMarkup(kb) message = "No access rights. Contact an admin." context.bot.send_message(chat_id=update.message.chat_id, text=message, reply_markup=kb_markup) return if user.permissions == 0: kb = [[KeyboardButton('/start')]] kb_markup = ReplyKeyboardMarkup(kb) message = "No access rights. Contact an admin." context.bot.send_message(chat_id=update.message.chat_id, text=message, reply_markup=kb_markup) return message = buildMessage("Welcome") result = context.bot.send_message(chat_id=update.message.chat_id, text=message, reply_markup=makeKeyboard(user)) user.message_id = result['message_id']
def run_simulation(self): dai_price = self.dai_price # dai_price = 1 iterations = 500 users = [ User(self.initial_distribution[i], self.rho) for i in range(len(self.initial_distribution)) ] market_dai = 0 log("simulation start with %d" % iterations, self.filename, self.logger) for i in range(iterations): total_market_dai = 0 stats = [] # compute proposed asset allocation for j in range(self.sample_size): risk_param = self.risk_params[j] proposed_assets = optimize(users[j].getAssets(), self.rho, self.txf, self.cdpRate, risk_param, self.eth_price, dai_price, False) old_assets = users[j].getAssets() stats.append([old_assets, proposed_assets]) # perform buy/sell adjustment, if market player in action if self.market: updated_stats = find_actual_allocation(stats, dai_price, self.eth_price, self.rho, self.txf) else: updated_stats = stats # update dai price for j in range(self.sample_size): old_assets, new_assets = updated_stats[j] proposed_assets = stats[j][1] users[j].setAssets(new_assets) self.final_distribution[j] = new_assets # total_market_dai keeps track of total DAI demand! BUY - SELL - MINTED_DAI total_market_dai += (proposed_assets[2] - old_assets[2]) cdpDAI = (new_assets[3] - old_assets[3] ) * self.eth_price / dai_price / self.rho # I think selling DAI equates to the same effect produced by CDP DAI generation total_market_dai -= cdpDAI market_dai = total_market_dai if i % LOG_ITER == 0: log("Total DAI in market %d" % market_dai, self.filename, self.logger) if abs(total_market_dai) < 10: if i % LOG_ITER == 0: log("DAI Price settling %.6f" % dai_price, self.filename, self.logger) break elif total_market_dai < 0: dai_price -= price_update(total_market_dai) else: dai_price += price_update(total_market_dai) if i % LOG_ITER == 0: log("DAI Price update %.6f" % dai_price, self.filename, self.logger) for i in range(len(self.final_distribution)): log( "Investor %d Final Assets: %s" % (i + 1, getAssetLogString(self.final_distribution[i])), self.filename, self.logger) log("simulation ends", self.filename, self.logger) return dai_price, market_dai
def load_user(user_id): return User.get(user_id)
jsonReview["text"] = jsonReview["text"].lower() review = Review(jsonReview) reviews.append(review) userIdsWithReviews.add(review.userId) reviewIds.add(review.id) bizToReviewCount[review.bizId] += 1 reviewsRead.close() #get all the users that wrote reviews for the businesses above users = [] userIdToUser = {} n = 0 for line in userRead: jsonUser = json.loads(line) if jsonUser['review_count'] >= minUserReviews and jsonUser['user_id'] in userIdsWithReviews: user = User(jsonUser) users.append(user) userIdToUser[user.id] = user n += 1 if n >= maxUsers: break # get all the other reviews for the users in our set that are NOT for the restaurants we have userIds = userIdToUser.keys() reviewsRead = open('../yelp_academic_dataset_review.json') for line in reviewsRead: jsonReview = json.loads(line) if jsonReview['user_id'] in userIds and (jsonReview['user_id'] + jsonReview['business_id']) not in reviewIds: jsonReview["text"] = jsonReview["text"].lower() review = Review(jsonReview) reviews.append(review)
class ShoutboxWSProtocol(BaseShoutboxWSProtocol): def connectionMade(self, ws): self.user = None self.guest = False self.limiter = None self.registerHandler('auth', self.authenticate, verifyAuth.__get__(self, self.__class__)) self.registerHandler('m', self.messageReceived, verifyMsg.__get__(self, self.__class__)) self.registerHandler('rem', self.removeMessage, verifyRemove.__get__(self, self.__class__)) self.registerHandler('edit', self.editMessage, verifyEdit.__get__(self, self.__class__)) self.write(ws, '', raw='PLEASE_AUTH') def messageReceived(self, data, ws): data = data.decode('utf8') data = unicodedata.normalize('NFKD', data).encode('ascii','replace') m = '<%s> %s' % (self.user.username, data) print m if(data.startswith('/')): if(data == '/clear' and self.transaction.isMod(self.user.mid)): self.transaction.sendMessage('') self.transaction.buffer = [] return return m = Shout(self.user, data) self.transaction.pushBuffer(m) self.transaction.sendMessage(m) def authenticate(self, memberid, ws): if(memberid == None): self.guest = True for x in self.transaction.buffer: self.write(ws, x) return self.user = User(int(memberid)) try: self.user.update() except Exception as e: print 'API call failed: %r' % (e) reactor.stop() # if this user opened two tabs make sure we use the same MessageLimiter to stop flooding for proto in self.transaction.connections.keys(): if(proto != self and proto.user != None and proto.user.mid == self.user.mid): self.limiter = proto.limiter if(self.limiter == None): self.limiter = MessageLimiter() self.editlimiter = MessageLimiter(0.2) for x in self.transaction.buffer: self.write(ws, x) def removeMessage(self, data, ws): m = self.transaction.getByID(data) if(m): if(self.transaction.isMod(self.user)): self.transaction.removeBuffer(m) self.transaction.sendMessage(data, raw='rem') else: self.disconnect() def editMessage(self, data, ws): m = self.transaction.getByID(data[0]) if(m): if(m.user.mid == self.user.mid or self.transaction.isMod(self.user) or not isinstance(m, Shout)): m.edit(data[1]) for proto, connection in self.transaction.connections.iteritems(): proto.write(connection, '%s|%s' % (data[0], m.render(self.transaction, proto.user)), raw='edit') else: self.disconnect()
class ShoutboxWSProtocol(BaseShoutboxWSProtocol): def connectionMade(self, ws): self.user = None self.guest = False self.limiter = None self.registerHandler('auth', self.authenticate, verifyAuth.__get__(self, self.__class__)) self.registerHandler('m', self.messageReceived, verifyMsg.__get__(self, self.__class__)) self.registerHandler('rem', self.removeMessage, verifyRemove.__get__(self, self.__class__)) self.registerHandler('edit', self.editMessage, verifyEdit.__get__(self, self.__class__)) self.write(ws, '', raw='PLEASE_AUTH') def messageReceived(self, data, ws): data = data.decode('utf8') data = unicodedata.normalize('NFKD', data).encode('ascii', 'replace') m = '<%s> %s' % (self.user.username, data) print m if (data.startswith('/')): if (data == '/clear' and self.transaction.isMod(self.user.mid)): self.transaction.sendMessage('') self.transaction.buffer = [] return return m = Shout(self.user, data) self.transaction.pushBuffer(m) self.transaction.sendMessage(m) def authenticate(self, memberid, ws): if (memberid == None): self.guest = True for x in self.transaction.buffer: self.write(ws, x) return self.user = User(int(memberid)) try: self.user.update() except Exception as e: print 'API call failed: %r' % (e) reactor.stop() # if this user opened two tabs make sure we use the same MessageLimiter to stop flooding for proto in self.transaction.connections.keys(): if (proto != self and proto.user != None and proto.user.mid == self.user.mid): self.limiter = proto.limiter if (self.limiter == None): self.limiter = MessageLimiter() self.editlimiter = MessageLimiter(0.2) for x in self.transaction.buffer: self.write(ws, x) def removeMessage(self, data, ws): m = self.transaction.getByID(data) if (m): if (self.transaction.isMod(self.user)): self.transaction.removeBuffer(m) self.transaction.sendMessage(data, raw='rem') else: self.disconnect() def editMessage(self, data, ws): m = self.transaction.getByID(data[0]) if (m): if (m.user.mid == self.user.mid or self.transaction.isMod(self.user) or not isinstance(m, Shout)): m.edit(data[1]) for proto, connection in self.transaction.connections.iteritems( ): proto.write( connection, '%s|%s' % (data[0], m.render(self.transaction, proto.user)), raw='edit') else: self.disconnect()
def login_12306(self, url, username, password): # 开始登录 self.login_btn.SetLabel(u'开始登录...') randCode = ','.join(self.pos) data = { 'randCode': randCode, 'loginUserDTO.user_name': username, 'userDTO.password': password } login_res = Req.post(url, data, Common.headers) res_data_obj = Req.zippedDecompress(login_res) print(res_data_obj) if res_data_obj: res_rs = json.loads(res_data_obj) data, msg = res_rs.get('data'), res_rs.get('messages') # if data and data.get('loginCheck') == 'Y': self.login_btn.SetLabel(u'登录成功...') # 登录 self.login_btn.SetLabel(u'正在初始化...') Req.post(Common.ulogin_url, {}, Common.headers) # 初始化my12306 Req.get(Common.init_my12306_url, Common.headers) print(Common.headers) # 初始化leftTicket init Common.headers['Referer'] = Common.init_my12306_url print(Common.headers) left_res = Req.get(Common.left_ticket_url, Common.headers) if left_res: left_res_html = Req.zippedDecompress(left_res) html_reg = r'</title>(.*?)</head>' all_list = re.findall(html_reg, left_res_html, re.S | re.M) # 查找到动态js,找到,执行 if all_list: script_reg = r'(?<=src=\").+?(?=\")|(?<=src=\').+?(?=\')' script_list = re.findall(script_reg, all_list[0], re.S | re.M) if script_list: self.dynamic_js_init(Common.headers['Origin'] + script_list[-1]) # Req.get(HEADERS['Origin'] + script_list[-1], HEADERS) # self.Close(True) self.login_btn.SetLabel(u'正在获取联系人...') user = u.User(username, password) # 获取当前登录帐号的联系人 passenger_data, two_isOpenClick, other_isOpenClick = Common.GetPassenger( Common.headers) self.login_btn.SetLabel(u'获取联系人成功...') return dict(user=user, passenger_data=passenger_data, login_frame=self, two_isOpenClick=two_isOpenClick, other_isOpenClick=other_isOpenClick) # 显示登录后主窗体 # wx.CallAfter(MainFrame, user=user, headers=Common.headers, passenger_data=passenger_data, # login_frame=self, # two_isOpenClick=two_isOpenClick, other_isOpenClick=other_isOpenClick) # MainFrame(user, HEADERS, passenger_data, self) else: # wx.CallAfter(self.maintenance_time, msg[0]) return self.maintenance_time(msg[0])