Beispiel #1
0
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
Beispiel #2
0
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