Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from flask import Flask, render_template, request, flash, redirect, url_for
- from datetime import datetime
- from forms import BoulderForm, HangboardForm
- from flask_sqlalchemy import SQLAlchemy
- from flask_login import LoginManager, UserMixin, login_user, logout_user, current_user, login_required
- from oauth import OAuthSignIn
- app = Flask(__name__)
- app.config["DEBUG"] = True
- app.config['SECRET_KEY'] = '~t\x86\xc9\x1ew\x8bOcX\x85O\xb6\xa2\x11kL\xd1\xce\x7f\x14<y\x9e'
- ###################################################################################################
- SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{hostname}/{databasename}".format(
- username="kampuswerk",
- password="thecatsatonthemat",
- hostname="kampuswerk.mysql.pythonanywhere-services.com",
- databasename="kampuswerk$werkapp",
- )
- app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
- app.config["SQLALCHEMY_POOL_RECYCLE"] = 299
- db = SQLAlchemy(app)
- def flash_errors(form):
- for field, errors in form.errors.items():
- for error in errors:
- flash(u"Error in the %s field - %s" % (
- getattr(form, field).label.text,
- error
- ))
- ###################################################################################################
- app.config['OAUTH_CREDENTIALS'] = {
- 'facebook': {
- 'id': '837483683053553',
- 'secret': 'bce2321650fbb754b955453e1d10b2f0'
- },
- 'google': {
- 'id': '838769494183-f2e9i6s0ng8eps3075bfsmlgoo3e7hvk.apps.googleusercontent.com',
- 'secret': '51V_GgfoNr52oB0X9vhVXd3E'
- },
- 'twitter': {
- 'id': 'dDu5qMg32Rsh94P89UCcQoLJO',
- 'secret': 'EB6LF33hBYjhKsiPqxofG1NN8PFSQ1i007zjdIvDekgCnkbkp7'
- }
- }
- lm = LoginManager(app)
- lm.login_view = 'index'
- #Oauth decorators for social media login
- @lm.user_loader
- def load_user(id):
- return User.query.get(int(id))
- @app.route('/', methods=["GET","POST"])
- def index():
- return render_template('index.html')
- @app.route('/logout')
- def logout():
- logout_user()
- return redirect(url_for('index'))
- @app.route('/authorize/<provider>')
- def oauth_authorize(provider):
- if not current_user.is_anonymous:
- return redirect(url_for('index'))
- oauth = OAuthSignIn.get_provider(provider)
- return oauth.authorize()
- @app.route('/callback/<provider>')
- def oauth_callback(provider):
- if not current_user.is_anonymous:
- return redirect(url_for('index'))
- oauth = OAuthSignIn.get_provider(provider)
- social_id, username, email = oauth.callback()
- if social_id is None:
- flash('Authentication failed.')
- return redirect(url_for('index'))
- user = User.query.filter_by(social_id=social_id).first()
- if not user:
- user = User(social_id=social_id, nickname=username, email=email)
- db.session.add(user)
- db.session.commit()
- login_user(user, True)
- return redirect(url_for('index'))
- ######################################################################################################################
- class Comment(db.Model):
- __tablename__ = "comments"
- id = db.Column(db.Integer, primary_key=True)
- content = db.Column(db.String(4096))
- class User(UserMixin, db.Model):
- __tablename__ = 'users'
- id = db.Column(db.Integer, primary_key=True)
- social_id = db.Column(db.String(64), nullable=False, unique=True)
- nickname = db.Column(db.String(64), nullable=False)
- email = db.Column(db.String(64), nullable=True)
- hangboardwerkouts = db.relationship('HangboardWerkout', backref='author', lazy='dynamic')
- kampuswerkouts = db.relationship('KampusWerkout', backref='author', lazy='dynamic')
- class HangboardWerkout(db.Model):
- __tablename__ = "hangboardwerkout"
- id = db.Column(db.Integer, primary_key=True)
- name = db.Column(db.String(4096))
- holds_used = db.Column(db.Integer)
- arm_used = db.Column(db.String(4096))
- hangtime = db.Column(db.Integer)
- resttime = db.Column(db.Integer)
- reps = db.Column(db.Integer)
- sets = db.Column(db.Integer)
- setrest = db.Column(db.Integer)
- weight_kg = db.Column(db.Integer)
- timestamp = db.Column(db.DateTime)
- user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
- def __init__(self, name, holds_used, reps, sets, setrest, arm_used, hangtime, resttime, weight_kg, timestamp, user_id):
- self.name = name
- self.holds_used = holds_used
- self.arm_used = arm_used
- self.hangtime = hangtime
- self.resttime = resttime
- self.reps = reps
- self.sets = sets
- self.setrest = setrest
- self.weight_kg = weight_kg
- self.timestamp = timestamp
- self.user_id = user_id
- class KampusWerkout(db.Model):
- __tablename__ = "kampuswerkout"
- id = db.Column(db.Integer, primary_key = True)
- name = db.Column(db.String(4096))
- hand = db.Column(db.String(4096))
- rung1 = db.Column(db.Integer)
- rung2 = db.Column(db.Integer)
- rung3 = db.Column(db.Integer)
- rung4 = db.Column(db.Integer)
- rung5 = db.Column(db.Integer)
- rung6 = db.Column(db.Integer)
- rung7 = db.Column(db.Integer)
- rung8 = db.Column(db.Integer)
- rung9 = db.Column(db.Integer)
- timestamp = db.Column(db.DateTime)
- user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
- def __init__(self, name, hand, rung1, rung2, rung3, rung4, rung5, rung6, rung7, rung8, rung9, timestamp, user_id):
- self.name = name
- self.hand = hand
- self.rung1 = rung1
- self.rung2 = rung2
- self.rung3 = rung3
- self.rung4 = rung4
- self.rung5 = rung5
- self.rung6 = rung6
- self.rung7 = rung7
- self.rung8 = rung8
- self.rung9 = rung9
- self.timestamp = timestamp
- self.user_id = user_id
- class BoulderMoves(db.Model):
- __tablename__ = "bouldermoves"
- id = db.Column(db.Integer, primary_key = True)
- name = db.Column(db.String(4096))
- numberofmoves = db.Column(db.Integer)
- intensity = db.Column(db.Integer)
- reps = db.Column(db.Integer)
- werktime = db.Column(db.Integer)
- resttime = db.Column(db.Integer)
- grade = db.Column(db.String(4096))
- sets = db.Column(db.Integer)
- setrest = db.Column(db.Integer)
- comments = db.Column(db.String(4096))
- timestamp = db.Column(db.DateTime)
- user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
- def __init__(self, name, numberofmoves, intensity, reps, werktime, resttime, grade, sets, comments, setrest, timestamp, user_id):
- self.name = name
- self.numberofmoves = numberofmoves
- self.intensity = intensity
- self.reps = reps
- self.werktime = werktime
- self.resttime = resttime
- self.grade = grade
- self.sets = sets
- self.setrest = setrest
- self.comments = comments
- self.timestamp = timestamp
- self.user_id = user_id
- #############################################
- ############# VIEWS #########################
- #############################################
- @app.route("/timerwerk", methods=["GET","POST"])
- def timer():
- return render_template("timerwerk.html")
- @app.route("/boulder", methods=["GET", "POST"])
- @login_required
- def Boulder():
- form = BoulderForm()
- if form.validate_on_submit():
- timestamp=datetime.utcnow()
- bouldermove = BoulderMoves(current_user.nickname, request.form['numberofmoves'], request.form['intensity'], request.form['reps'], request.form['werktime'], request.form['resttime'], request.form['comments'], request.form['grade'], request.form['sets'], request.form['setrest'], timestamp, current_user.id)
- #numberofmoves = BoulderMoves(numberofmoves=request.form["numberofmoves"])
- #name = BoulderMoves(name=request.form["name"])
- #db.session.add_all([numberofmoves, name])
- db.session.add(bouldermove)
- db.session.commit()
- return render_template("timerwerk.html", hangtime=request.form['werktime'], resttime=request.form['resttime'], reps=request.form['reps'], sets = request.form['sets'], setrest=request.form['setrest'])
- else:
- flash_errors(form)
- return render_template("boulder.html", title="Time to get strong", form=form, boulder=BoulderMoves.query.all())
- ##########################################################
- @app.route("/hangboard", methods=["GET", "POST"])
- @login_required
- def Hangboard():
- form = HangboardForm()
- if form.validate_on_submit():
- timestamp=datetime.utcnow()
- werk = HangboardWerkout(current_user.nickname, request.form['holds_used'], request.form['reps'], request.form['sets'], request.form['setrest'], request.form['arm_used'], request.form['hangtime'], request.form['resttime'], request.form['weight_kg'], timestamp, current_user.id)
- db.session.add(werk)
- db.session.commit()
- return render_template("timerwerk.html", hangtime=request.form['hangtime'], resttime=request.form['resttime'], reps=request.form['reps'], sets = request.form['sets'], setrest=request.form['setrest'], arm_used = request.form['arm_used'])
- else:
- flash_errors(form)
- return render_template("hangboard.html", title="Time to get strong", form=form, hangboard=HangboardWerkout.query.all())
- #################################################################
- @app.route("/kampus", methods=["GET", "POST"])
- @login_required
- def Kampus():
- if request.method == "POST":
- timestamp=datetime.utcnow()
- kampuswerkout = KampusWerkout(current_user.nickname, request.form['hand'], request.form['rung1'], request.form['rung2'], request.form['rung3'], request.form['rung4'], request.form['rung5'], request.form['rung6'], request.form['rung7'], request.form['rung8'], request.form['rung9'], timestamp, current_user.id)
- db.session.add(kampuswerkout)
- db.session.commit()
- return render_template("kampus.html", kampus=KampusWerkout.query.all())
- return render_template("kampus.html", kampus=KampusWerkout.query.all())
- ##############################################
- @app.route("/diary", methods=["GET", "POST"])
- def diary():
- if request.method == "GET":
- return render_template("diary.html", comments=Comment.query.all())
- comment = Comment(content=request.form["contents"])
- db.session.add(comment)
- db.session.commit()
- return redirect(url_for('diary'))
- ############################################################
- @app.route("/werktime", methods=["GET","POST"])
- def werktime():
- return render_template("werktime.html")
- ## mongo details #####################################
- '''
- from pymongo import MongoClient
- #connect
- client = MongoClient('mongodb://monkeymoves:onelife999@ds054288.mlab.com:54288/campus')
- db = client.campus
- def connect():
- connection = MongoClient("ds054288.mlab.com",54288)
- handle = connection["campus"]
- handle.authenticate("monkeymoves","onelife999")
- return handle
- handle = connect()
- @app.route("/kampus", methods=["GET", "POST"])
- def Kampus():
- userinputs = [x for x in handle.mycollection.find()]
- return render_template("kampus.html", userinputs=userinputs)'''
- ######################################################################################################################
- ''' from flask_script import Manager
- from flask_migrate import Migrate, MigrateCommand
- migrate = Migrate(app, db)
- manager = Manager(app)
- manager.add_command('db', MigrateCommand) '''
- ######################################################################################################################
Add Comment
Please, Sign In to add comment