def poker(): strNav = strNav_base + " :: " + '<a href="/poker">' + ghPAGE_POKER + '</a>' intPlayers = 1 strPlayers = request.args.get('playercount') if strPlayers: try: intPlayers = int(strPlayers) except: intPlayers = 1 if intPlayers > 10: intPlayers = 10 if intPlayers < 1: intPlayers = 1 strNav += " :: " + str(intPlayers) + " Players" return render_template('poker.html', ghPage_Title=ghPAGE_POKER, ghSlogan=Markup(getSlogan()), ghUser_Name=get_current_user(), ghNav=Markup(strNav), ghPokerGame=Markup(get_demo(intPlayers)), ghPokerNumPlayers=intPlayers, ghErratae=Markup(get_fetch_info()))
def blog(): strNav = strNav_base + " :: " + '<a href="/blog">' + ghPAGE_BLOG + '</a>' # DETERMINE view TYPE strUserName = request.args.get('user') intViewId = request.args.get('id', type=int, default=0) intLimit = request.args.get('limit', type=int, default=5) page = request.args.get(get_page_parameter(), type=int, default=1) if strUserName: #Get owner_id #TODO load_only? owner_row = BlogzUser.query.filter_by(handle=strUserName).first() if owner_row: intOwnerId = owner_row.id else: intOwnerId = 0 strNav += ' :: <a href="?user='******'">' + strUserName + "</a>" if intViewId > 0: strNav += ' & <a href="?id=' + str(intViewId) + '">id=' + str(intViewId) + '</a>' view_entries = BlogzEntry.query.filter_by(owner_id=intOwnerId, id=intViewId).paginate(page,intLimit) else: view_entries = BlogzEntry.query.filter_by(owner_id=intOwnerId).paginate(page,intLimit) else: if intViewId > 0: strNav += ' :: <a href="?id=' + str(intViewId) + '">id=' + str(intViewId) + '</a>' view_entries = BlogzEntry.query.filter_by(id=intViewId).paginate(page,intLimit) else: strNav += ' :: <a href="blog">all</a>' view_entries = BlogzEntry.query.paginate(page,intLimit) #convert the dates to local server time #TODO get users local time? for i in view_entries.items: i.created = gh_getLocalTime(i.created) return render_template('blog.html', limit=intLimit,ghPage_Title=ghPAGE_BLOG, ghSlogan=Markup(getSlogan()), ghUser_Name=get_current_user(), ghNav=Markup(strNav), ghErratae=Markup(get_fetch_info()), ghEntries=view_entries)
def index(): view_users = BlogzUser.query.options(load_only("handle", "email", "level")) return render_template('index.html', ghPage_Title=ghPAGE_HOME, ghSlogan=Markup(getSlogan()), ghUser_Name=get_current_user(), ghNav=Markup(strNav_base), ghErratae=Markup(get_fetch_info()), ghUsers=view_users)
def newpost(): strNav = strNav_base + " :: " + '<a href="/blog">' + ghPAGE_NEWPOST + '</a>' #TODO verify reqs if request.method == 'POST': isSuccess = True strerrTitle = "" strerrEntry = "" statusTitle = "" statusEntry = "" strTitle = request.form['inTitle'] strEntry = request.form['inEntry'] if strTitle == "": isSuccess = False strerrTitle = "Post must contain a title" if strEntry == "": strerrEntry = "Post must contain an entry" isSuccess = False if not isSuccess: return render_template('newpost.html', ghPage_Title=ghPAGE_NEWPOST, ghSlogan=Markup(getSlogan()), ghUser_Name=get_current_user(), ghNav=Markup(strNav), ghErratae=get_fetch_info(), vTitle=strTitle, vEntry=strEntry, strerrTitle=strerrTitle, strerrEntry=strerrEntry) #if success owner = BlogzUser.query.filter_by(handle=session['handle']).first() new_post = BlogzEntry(owner, strTitle, strEntry) db.session.add(new_post) db.session.commit() #TODO update owner with new post return redirect('blog?id='+str(new_post.id), 302) return render_template('newpost.html', ghPage_Title=ghPAGE_NEWPOST, ghSlogan=Markup(getSlogan()), ghUser_Name=get_current_user(), ghNav=Markup(strNav), ghErratae=Markup(get_fetch_info()))
def signup(): # BUILD nav string strNav = strNav_base + " :: " + '<a href="/signup">' + ghPAGE_SIGNUP + '</a>' # POST condition if request.method == 'POST': #NOTE: error checking aggregates and falls through # Init Signup Validator vtor = ValidateSignup(request.form['inUserName'], request.form['inUserPass0'], request.form['inUserPass1'], request.form['inUserEmail']) isValid = vtor.isValid() if isValid: # default level is 1 new_user = BlogzUser(vtor.strUserName, vtor.strUserPass[0], vtor.strUserEmail, 1) db.session.add(new_user) db.session.commit() # TODO redirect to an interrim info page? return redirect('login', 302) else: return render_template('signup.html', ghPage_Title=ghPAGE_SIGNUP, ghSlogan=Markup(getSlogan()), ghUser_Name=get_current_user(), ghNav=Markup(strNav), strUserName=vtor.strUserName, strUserEmail=vtor.strUserEmail, statusUserName=vtor.ssUserName, statusUserPass0=vtor.ssUserPass[0], statusUserPass1=vtor.ssUserPass[1], statusUserEmail=vtor.ssUserEmail, strerrUserName=vtor.errUserName, strerrUserPass0=vtor.errUserPass[0], strerrUserPass1=vtor.errUserPass[1], strerrUserEmail=vtor.errUserEmail, ghErratae=Markup(get_fetch_info())) return render_template('signup.html', ghPage_Title=ghPAGE_SIGNUP, ghSlogan=Markup(getSlogan()), ghUser_Name=get_current_user(), ghUser_Menu=Markup(get_user_menu()), ghNav=Markup(strNav), ghErratae=Markup(get_fetch_info()))
def login(): strNav = strNav_base + " :: " + '<a href="/login">' + ghPAGE_LOGIN + '</a>' strUserName = "" strUserPass = "" strerrUserName = "" strerrUserPass = "" ssUserName = "" ssUserPass = "" if request.method == 'POST': strUserName = request.form['inUserName'] strUserPass = request.form['inUserPass'] # CHECK if BLANK User Name if strUserName: # CHECK if BLANK Password if strUserPass: # CHECK if FOUND rowUserEntry = BlogzUser.query.filter_by(handle=strUserName).first() if rowUserEntry: # CHECK PASSWORD if bcrypt.check_password_hash(rowUserEntry.pass_hash, strUserPass): # LOG IN #TODO: set the valid key to something random session[valid_session_key] = "legit" session['loglevel'] = rowUserEntry.level session['handle'] = rowUserEntry.handle ##strTarget = request.args.get['target'] #if not target: #return redirect("/"+target, 302) #else: return redirect("/blog?user="+session['handle'], 302) else: #FAILED PASS CHECK ssUserPass = ERRSTR_STATUS_ERROR strerrUserPass = ERRSTR_BAD_PASS else: # FAILED USER CHECK ssUserName = ERRSTR_STATUS_ERROR strerrUserName = ERRSTR_USER_NOT_FOUND else: # FAILED BLANK PASS CHECK ssUserPass = ERRSTR_STATUS_ERROR strerrUserPass = ERRSTR_EMPTY_FIELD else: # FAILED BLANK USER CHECK ssUserName = ERRSTR_STATUS_ERROR strerrUserName = ERRSTR_EMPTY_FIELD # CHECK PASSWORD (for full error report) if not strUserPass: ssUserPass = ERRSTR_STATUS_ERROR strerrUserPass = ERRSTR_EMPTY_FIELD return render_template('login.html', ghPage_Title=ghPAGE_LOGIN, ghSlogan=Markup(getSlogan()), ghUser_Name=get_current_user(), ghNav=Markup(strNav), vUserName=strUserName, statusUserName=ssUserName, strerrUserName=strerrUserName, statusUserPass=ssUserPass, strerrUserPass=strerrUserPass, ghErratae=Markup(get_fetch_info()))