-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
48 lines (37 loc) · 1.28 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from hashlib import md5
from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from sqlalchemy.exc import IntegrityError
app = Flask("app")
app.config.from_pyfile("default_config.py")
app.config.from_envvar("APP_SETTINGS", silent=True)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(128), unique=True)
password = db.Column(db.String(128))
@app.route("/")
def index():
users = User.query.all()
response = {
"total": len(users),
"users": [{"username": user.username} for user in users],
}
return jsonify(response)
@app.route("/api/register", methods=["POST"])
def register():
user_data = request.json
if not user_data or "username" not in user_data or "password" not in user_data:
return jsonify({"error": "invalid_request"}), 400
try:
user = User(
username=user_data["username"],
password=md5(user_data["password"].encode()).hexdigest(),
)
db.session.add(user)
db.session.commit()
except IntegrityError:
return jsonify({"error": "already_exists"}), 400
return jsonify({"username": user.username}), 200