Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
No results found
Show changes
Showing
with 724 additions and 0 deletions
{% extends "mock_login_base.html" %}
{% block body %}
<form class='form-horizontal' method="post">
{{ form.csrf_token }}
<div class='form-group'>
<div class='col-md-6'>
{% if form.username.errors %}
<ul class='errors'>
{% for error in form.username.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{{ form.username(class='form-control',placeholder='username') }}
</div>
</div>
<div class='form-group'>
<div class='col-md-6'>
{% if form.password.errors %}
<ul class='errors'>
{% for error in form.password.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{{
form.password(class='form-control',placeholder='password') }}
</div>
</div>
<div class='form-group'>
<div class='col-md-6'>
{% if form.password2.errors %}
<ul class='errors'>
{% for error in form.password2.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{{ form.password2(class='form-control',placeholder='confirm password') }}
</div>
</div>
<div class='form-group'>
<div class='col-md-6'>
{{ form.submit(class='btn btn-primary btn-block') }}
</div>
</div>
</form>
{% for item in list %}
<div class="row">
<div class="col-md-4 h2">{{ item }}</div>
<div class="col-md-4"></div>
<div class="col-md-4"></div>
</div>
{% endfor %}
{% endblock %}
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- jQuery library -->
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!-- Latest compiled JavaScript -->
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<style>
img {
height: 200px;
}
</style>
</head>
<body>
<div class="container">
{% for category, message in get_flashed_messages(with_categories=true) %}
<div class="alert alert-dismissable alert-warning alert-{{ category }}">
<button type="button" class="close" data-dismiss="alert">&times;</button>
{{ message }}
</div>
{% endfor %}
<div class="jumbotron">
{% block body %}{% endblock %}
</div>
</div>
</body>
</html>
{% extends "base.html" %}
{% block body %}
<a href='/upload'>upload</a>
{% for f in files %}
<div class="row">
<div class="col-md-12"><img src="{{ f }}" /></div>
</div>
{% endfor %}
{% endblock %}
from flask import url_for
URL_PREFIX = '/usr/253'
def vs_url_for(view):
url = url_for(view)
url = URL_PREFIX + url
return url
-- MySQL dump 10.13 Distrib 5.7.20, for Linux (x86_64)
--
-- Host: localhost Database: mytwit
-- ------------------------------------------------------
-- Server version 5.7.20-0ubuntu0.16.04.1
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `twits`
--
DROP TABLE IF EXISTS `twits`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `twits` (
`twit_id` int(11) NOT NULL AUTO_INCREMENT,
`twit` varchar(140) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`twit_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `twits_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `twits`
--
LOCK TABLES `twits` WRITE;
/*!40000 ALTER TABLE `twits` DISABLE KEYS */;
INSERT INTO `twits` VALUES (1,'i am not a bot',1,'2017-12-23 08:17:07'),(2,'nor me; i am also not a bot',2,'2017-12-23 08:17:38'),(3,'i am a bot that hunts bots - beware!',3,'2017-12-23 08:18:37');
/*!40000 ALTER TABLE `twits` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `users`
--
DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `users`
--
LOCK TABLES `users` WRITE;
/*!40000 ALTER TABLE `users` DISABLE KEYS */;
INSERT INTO `users` VALUES (1,'dan1','password'),(2,'dan2','password'),(3,'dan3','password');
/*!40000 ALTER TABLE `users` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2017-12-28 15:42:49
File added
{"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"mytwits.twits"}]}
\ No newline at end of file
File added
{"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"mytwits.users"}]}
\ No newline at end of file
from flask import Flask, request
from flask import render_template
from flask import redirect, url_for
import pymongo
class DBHelper:
def __init__(self):
client = pymongo.MongoClient()
self.db = client['mytwits']
def get_all_twits(self):
return self.db.twits.find().sort('created_at',pymongo.ASCENDING)
app = Flask(__name__)
db = DBHelper()
@app.route('/')
def index():
twits = db.get_all_twits()
return render_template("mytwits_mongo_1.html", twits=twits)
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=8000)
from flask import Flask, request
from flask import render_template
from flask import redirect, url_for
import pymongo
import datetime
from vs_url_for import vs_url_for
class DBHelper:
def __init__(self):
client = pymongo.MongoClient()
self.db = client['mytwits']
def get_all_twits(self):
return self.db.twits.find().sort('created_at',pymongo.DESCENDING)
def add_twit(self,twit):
return self.db.twits.insert({'twit':twit,'username':'dan1','created_at': datetime.datetime.utcnow()})
app = Flask(__name__)
db = DBHelper()
@app.route('/')
def index():
twits = db.get_all_twits()
return render_template("mytwits_mongo_2.html", twits=twits)
@app.route('/add_twit', methods = ['GET', 'POST'])
def add_twit():
if request.form.get('twit'):
db.add_twit(request.form['twit'])
return redirect(vs_url_for('index'))
return render_template('add_twit_mongo_2.html')
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=8000)
from flask import Flask, request
from flask import render_template
from flask import redirect, url_for
import pymongo
import datetime
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms import SubmitField
from wtforms import validators
from vs_url_for import vs_url_for
class addTwitForm(FlaskForm):
twit = StringField('twit', validators = [validators.DataRequired()])
submit = SubmitField('submit', [validators.DataRequired()])
class DBHelper:
def __init__(self):
client = pymongo.MongoClient()
self.db = client['mytwits']
def get_all_twits(self):
return self.db.twits.find().sort('created_at',pymongo.DESCENDING)
def add_twit(self,twit):
return self.db.twits.insert({'twit':twit,'username':'dan1','created_at': datetime.datetime.utcnow()})
app = Flask(__name__)
db = DBHelper()
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
@app.route('/')
def index():
twits = db.get_all_twits()
return render_template("mytwits_mongo_3.html", twits=twits)
@app.route('/add_twit', methods = ['GET', 'POST'])
def add_twit():
form = addTwitForm()
if form.validate_on_submit():
twit = form.twit.data
db.add_twit(twit)
return redirect(vs_url_for('index'))
return render_template('add_twit_mongo_3.html',form=form)
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=8000)
from flask import Flask, request
from flask import render_template
from flask import redirect, url_for
import pymysql
class DBHelper:
def __init__(self):
self.db = pymysql.connect(host='localhost',
user='mytwits_user',
passwd='mytwits_password',
db='mytwits')
def get_all_twits(self):
query = "select u.username, t.twit, t.created_at from twits t, users u where t.user_id=u.user_id order by t.created_at desc;"
with self.db.cursor() as cursor:
cursor.execute(query)
return cursor.fetchall() # The method fetches all (or all remaining) rows of a query result set and returns a list of tuples
app = Flask(__name__)
db = DBHelper()
@app.route('/')
def index():
twits = db.get_all_twits()
return render_template("mytwits_mysql_1.html", twits=twits)
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=8000)
from flask import Flask, request
from flask import render_template
from flask import redirect, url_for
import pymysql
from vs_url_for import vs_url_for
class DBHelper:
def __init__(self):
self.db = pymysql.connect(host='localhost',
user='mytwits_user',
passwd='mytwits_password',
db='mytwits')
def get_all_twits(self):
query = "select u.username, t.twit, t.created_at from twits t, users u where t.user_id=u.user_id order by t.created_at desc;"
with self.db.cursor() as cursor:
cursor.execute(query)
return cursor.fetchall() # The method fetches all (or all remaining) rows of a query result set and returns a list of tuples
def add_twit(self,twit):
query = "insert into twits (twit,user_id) values \
('{}','{}');".format(twit,1)
print(query)
with self.db.cursor() as cursor:
cursor.execute(query)
return self.db.commit()
app = Flask(__name__)
db = DBHelper()
@app.route('/')
def index():
twits = db.get_all_twits()
return render_template("mytwits_mysql_2.html", twits=twits)
@app.route('/add_twit', methods = ['GET', 'POST'])
def add_twit():
if request.form.get('twit'):
db.add_twit(request.form['twit'])
return redirect(vs_url_for('index'))
return render_template('add_twit_mysql_2.html')
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=8000)
from flask import Flask, request
from flask import render_template
from flask import redirect, url_for
import pymysql
import datetime
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms import SubmitField
from wtforms import validators
from vs_url_for import vs_url_for
class addTwitForm(FlaskForm):
twit = StringField('twit', validators = [validators.DataRequired()])
submit = SubmitField('submit', [validators.DataRequired()])
class DBHelper:
def __init__(self):
self.db = pymysql.connect(host='localhost',
user='mytwits_user',
passwd='mytwits_password',
db='mytwits')
def get_all_twits(self):
query = "select u.username, t.twit, t.created_at from twits t, users u where t.user_id=u.user_id order by t.created_at desc;"
with self.db.cursor() as cursor:
cursor.execute(query)
return cursor.fetchall() # The method fetches all (or all remaining) rows of a query result set and returns a list of tuples
def add_twit(self,twit):
query = "insert into twits (twit,user_id) values \
('{}','{}');".format(twit,1)
print(query)
with self.db.cursor() as cursor:
cursor.execute(query)
return self.db.commit()
app = Flask(__name__)
db = DBHelper()
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
@app.route('/')
def index():
twits = db.get_all_twits()
return render_template("mytwits_mysql_3.html", twits=twits)
@app.route('/add_twit', methods = ['GET', 'POST'])
def add_twit():
form = addTwitForm()
if form.validate_on_submit():
twit = form.twit.data
db.add_twit(twit)
return redirect(vs_url_for('index'))
return render_template('add_twit_mysql_3.html',form=form)
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=8000)
from flask import Flask, request
from flask import render_template
from flask import redirect, url_for
import pymysql
import datetime
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms import HiddenField
from wtforms import SubmitField
from wtforms import validators
from vs_url_for import vs_url_for
class addTwitForm(FlaskForm):
twit = StringField('twit', validators = [validators.DataRequired()])
submit = SubmitField('submit', [validators.DataRequired()])
class editTwitForm(FlaskForm):
twit = StringField('twit', validators = [validators.DataRequired()])
twit_id = HiddenField('twit_id')
submit = SubmitField('submit', [validators.DataRequired()])
class DBHelper:
def __init__(self):
self.db = pymysql.connect(host='localhost',
user='mytwits_user',
passwd='mytwits_password',
db='mytwits')
def get_all_twits(self):
query = "select u.username, t.twit_id, t.twit, t.created_at from twits t, users u where t.user_id=u.user_id order by t.created_at desc;"
with self.db.cursor() as cursor:
cursor.execute(query)
return cursor.fetchall() # The method fetches all (or all remaining) rows of a query result set and returns a list of tuples
def get_twit(self,twit_id):
query = "select twit from twits where twit_id={}".format(twit_id)
with self.db.cursor() as cursor:
cursor.execute(query)
return cursor.fetchone()
# more detals about cursor.fetchone at
# https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-fetchone.html
def add_twit(self,twit):
query = "insert into twits (twit,user_id) values \
('{}','{}');".format(twit,1)
with self.db.cursor() as cursor:
cursor.execute(query)
return self.db.commit()
def update_twit(self,twit,twit_id):
query = "update twits set twit='{}' where twit_id='{}'"\
.format(twit,twit_id)
with self.db.cursor() as cursor:
cursor.execute(query)
return self.db.commit()
app = Flask(__name__)
db = DBHelper()
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
@app.route('/')
def index():
twits = db.get_all_twits()
return render_template("mytwits_mysql_4.html", twits=twits)
@app.route('/add_twit', methods = ['GET', 'POST'])
def add_twit():
form = addTwitForm()
if form.validate_on_submit():
twit = form.twit.data
db.add_twit(twit)
return redirect(vs_url_for('index'))
return render_template('add_twit_mysql_4.html',form=form)
@app.route('/edit_twit', methods = ['GET', 'POST'])
def edit_twit():
form = editTwitForm()
if request.args.get('id'):
twit_id = request.args.get('id')
twit = db.get_twit(twit_id)
form.twit.data = twit[0]
form.twit_id.data = twit_id
return render_template('edit_twit_mysql_4.html',form=form,twit=twit)
if form.validate_on_submit():
twit = form.twit.data
twit_id = form.twit_id.data
db.update_twit(twit,twit_id)
return redirect(vs_url_for('index'))
return render_template('edit_twit_mysql_4.html',form=form)
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=8000)
from flask import Flask, request
from flask import render_template
from flask import redirect, url_for
import pymysql
import datetime
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms import HiddenField
from wtforms import SubmitField
from wtforms import validators
from vs_url_for import vs_url_for
class addTwitForm(FlaskForm):
twit = StringField('twit', validators = [validators.DataRequired()])
submit = SubmitField('submit', [validators.DataRequired()])
class editTwitForm(FlaskForm):
twit = StringField('twit', validators = [validators.DataRequired()])
twit_id = HiddenField('twit_id')
submit = SubmitField('submit', [validators.DataRequired()])
class DBHelper:
def __init__(self):
self.db = pymysql.connect(host='localhost',
user='mytwits_user',
passwd='mytwits_password',
db='mytwits')
def get_all_twits(self):
query = "select u.username, t.twit_id, t.twit, t.created_at from twits t, users u where t.user_id=u.user_id order by t.created_at desc;"
with self.db.cursor() as cursor:
cursor.execute(query)
return cursor.fetchall() # The method fetches all (or all remaining) rows of a query result set and returns a list of tuples
def get_twit(self,twit_id):
query = "select twit from twits where twit_id={}".format(twit_id)
with self.db.cursor() as cursor:
cursor.execute(query)
return cursor.fetchone()
# more detals about cursor.fetchone at
# https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-fetchone.html
def add_twit(self,twit):
query = "insert into twits (twit,user_id) values \
('{}','{}');".format(twit,1)
with self.db.cursor() as cursor:
cursor.execute(query)
return self.db.commit()
def update_twit(self,twit,twit_id):
query = "update twits set twit='{}' where twit_id='{}'"\
.format(twit,twit_id)
with self.db.cursor() as cursor:
cursor.execute(query)
return self.db.commit()
def delete_twit(self,twit_id):
query = "delete from twits where twit_id='{}'"\
.format(twit_id)
with self.db.cursor() as cursor:
cursor.execute(query)
return self.db.commit()
app = Flask(__name__)
db = DBHelper()
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
@app.route('/')
def index():
twits = db.get_all_twits()
return render_template("mytwits_mysql_5.html", twits=twits)
@app.route('/add_twit', methods = ['GET', 'POST'])
def add_twit():
form = addTwitForm()
if form.validate_on_submit():
twit = form.twit.data
db.add_twit(twit)
return redirect(vs_url_for('index'))
return render_template('add_twit_mysql_4.html',form=form)
@app.route('/edit_twit', methods = ['GET', 'POST'])
def edit_twit():
form = editTwitForm()
if request.args.get('id'):
twit_id = request.args.get('id')
twit = db.get_twit(twit_id)
form.twit.data = twit[0]
form.twit_id.data = twit_id
return render_template('edit_twit_mysql_4.html',form=form,twit=twit)
if form.validate_on_submit():
twit = form.twit.data
twit_id = form.twit_id.data
db.update_twit(twit,twit_id)
return redirect(vs_url_for('index'))
return render_template('edit_twit_mysql_4.html',form=form)
@app.route('/delete_twit', methods = ['GET', 'POST'])
def delete_twit():
if request.args.get('id'):
twit_id = request.args.get('id')
twit = db.delete_twit(twit_id)
return redirect(vs_url_for('index'))
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=8000)
{% extends "base.html" %}
{% block body %}
<div class="jumbotron">
<div class="form-horizontal">
<form method="post" action="/add_twit">
<p>twit<input type='text' name='twit'>
<p><input type='submit' value='post twit'>
</form>
</div>
</div>
{% endblock %}
{% extends "base.html" %}
{% block body %}
<div class="jumbotron">
<div >
<form class="form-horizontal" method="post" action="/add_twit">
{{ form.csrf_token }}
<div class='form-group'>
<div class='col-md-6'>
{% if form.twit.errors %}
<ul class='errors'>
{% for error in form.twit.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{{ form.twit(class='form-control',placeholder='twit') }}
</div>
</div>
<div class='form-group'>
<div class='col-md-6'>
{{ form.submit(class='btn btn-primary btn-block') }}
</div>
</div>
</form>
</div>
</div>
{% endblock %}
{% extends "base.html" %}
{% block body %}
<div class="jumbotron">
<div class="form-horizontal">
<form method="post" action="/add_twit">
<p>twit<input type='text' name='twit'>
<p><input type='submit' value='post twit'>
</form>
</div>
</div>
{% endblock %}