def getMain(): db = getattr(g, 'db', None) sessionId, vkIdStored, girlLeftStored, girlRightStored = getSessionParams(db) vkIdRaw = request.args.get('vk_id') if vkIdRaw is None and vkIdStored is None: # No vk_id has been provided yet. Wait for it resp = make_response(render_template('index.html')) resp.set_cookie('session_id', str(sessionId)) return resp vkId = None try: vkId = parseVkId(vkIdRaw) vkId = VK.getIdByShortName(vkId) except ValueError: if vkIdStored is None: return redirect(url_for('getMain')) if vkId is None and vkIdStored is not None: vkId = vkIdStored elif vkId != vkIdStored: db.cleanupUsersForSession(sessionId) db.updateStoredVkIdForSession(sessionId, vkId) # На этом этапе мы уже знаем, что ид у нас есть, но мы не знаем, # грузили ли мы уже его подруг или нет. Надо проверить if db.areFriendsLoaded(sessionId) == False: friends = VK.getFriendsIds(vkId) db.cleanupUsersForSession(sessionId) db.storeUsersForSession(sessionId, friends) # Теперь мы уверены, что инфа по подругам в базе. Достаем рандомную # пару и грузим ссылки на их аватарки из вконтакта girl1, girl2 = GirlPair.getRandomPair(sessionId, db) # Апдейтим запись в сессии новыми айдишниками девочек db.updateStoredGirlsForSession(sessionId, girl1.id, girl2.id) # Теперь у нас есть фотки девочек. Рендерим шаблон главной, # вставляем в него фотки и отдаем resp = make_response(render_template('index.html',\ vk_id=vkId, girl1=girl1, girl2=girl2)) resp.set_cookie('session_id', str(sessionId)) return resp
def parseVkId(str): parsedId = None # Try parsing without regexps for the sake of speed and simplicity if str is None or len(str) == 0: raise ValueError('Cannot parse vk id from {}'.format(str)) indx = str.find('vk.com/') if indx < 0: # Maybe we got an already parsed vk_id? try: parsedId = int(str) except ValueError: # Nope, we didnt. Report error raise ValueError('Cannot parse vk id from {}'.format(str)) else: indx += len('vk.com/') parsedId = str[indx:] # Now we need to make sure that user with such id exists id = VK.getIdByShortName(parsedId) return id