|
|
@@ -2,21 +2,20 @@
|
|
|
|
|
|
import flask
|
|
|
|
|
|
-from flask import request, jsonify
|
|
|
+from flask import make_response, request, redirect, jsonify, render_template, url_for
|
|
|
from flask_sqlalchemy import SQLAlchemy
|
|
|
from flask_marshmallow import Marshmallow
|
|
|
|
|
|
db = SQLAlchemy()
|
|
|
app = flask.Flask(__name__)
|
|
|
-app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root@mysql-0.mysql.svc.cluster.local/gopy'
|
|
|
+app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:m9Eb5OflQb@mysql.mysql.svc.cluster.local/gopy'
|
|
|
db.init_app(app)
|
|
|
-app.run(host="0.0.0.0")
|
|
|
|
|
|
ma = Marshmallow(app)
|
|
|
|
|
|
class Link(db.Model):
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
|
- name = db.Column(db.String(255))
|
|
|
+ name = db.Column(db.String(255), unique=True)
|
|
|
target = db.Column(db.String(255))
|
|
|
|
|
|
def __repr__(self):
|
|
|
@@ -28,16 +27,59 @@ class LinkSchema(ma.Schema):
|
|
|
class Meta:
|
|
|
fields = ('id', 'name', 'target')
|
|
|
|
|
|
-@app.route('/links', methods=['GET'])
|
|
|
def get_links():
|
|
|
links = Link.query.all()
|
|
|
schema = LinkSchema(many=True)
|
|
|
link_json = schema.dump(links)
|
|
|
- return jsonify(link_json)
|
|
|
+ print(link_json)
|
|
|
+ return links
|
|
|
+ #jsonify(link_json)
|
|
|
+
|
|
|
+
|
|
|
+@app.route('/<string:name>', strict_slashes=False, methods=['GET'])
|
|
|
+def redirect_to_link(name):
|
|
|
+ try:
|
|
|
+ link = Link.query.filter_by(name=name).first()
|
|
|
+ except e:
|
|
|
+ return redirect("/", code=302)
|
|
|
+ if link is None:
|
|
|
+ return redirect("/", code=302)
|
|
|
+ return redirect(link.target, code=302)
|
|
|
+
|
|
|
+
|
|
|
+@app.post('/<string:link_name>/add', strict_slashes=False)
|
|
|
+def add_link(link_name):
|
|
|
+ db.create_all()
|
|
|
+ link = Link(name=link_name, target=request.form['target'])
|
|
|
+ db.session.add(link)
|
|
|
+ db.session.commit()
|
|
|
+ return redirect("/", code=302)
|
|
|
+
|
|
|
+
|
|
|
+@app.route('/<string:link_name>/add', strict_slashes=False)
|
|
|
+def add_link_form(link_name):
|
|
|
+ return render_template('add.html', link_name=link_name)
|
|
|
+
|
|
|
+@app.post('/<string:link_name>/delete', strict_slashes=False)
|
|
|
+def delete_link(link_name):
|
|
|
+ link = Link.query.filter_by(name=link_name).first()
|
|
|
+ db.session.delete(link)
|
|
|
+ db.session.commit()
|
|
|
+ return redirect(url_for('hello_world'))
|
|
|
+
|
|
|
+
|
|
|
+@app.route('/<string:link_name>/delete', strict_slashes=False)
|
|
|
+def delete_link_form(link_name):
|
|
|
+ link = Link.query.filter_by(name=link_name).first()
|
|
|
+ print(link)
|
|
|
+ return render_template('delete.html', link=link)
|
|
|
+
|
|
|
|
|
|
@app.route('/')
|
|
|
def hello_world():
|
|
|
- return "<p>Hello, World!</p>"
|
|
|
+ links = get_links()
|
|
|
+ print(links)
|
|
|
+ return render_template('list.html', links=links)
|
|
|
|
|
|
#@app.route('/links/<int:id>', methods=['GET'])
|
|
|
|