Add users API #5

Open
_xxfedexx_ wants to merge 9 commits from _xxfedexx_/suchwow:only-newapi into master

@ -1,43 +1,63 @@
from flask import jsonify, Blueprint, url_for, request, abort
from suchwow.models import Post
from suchwow import wownero
bp = Blueprint("api", "api")
@bp.route("/api/list")
def api_list():
limit = request.args.get('limit', 30)
offset = request.args.get('offset', 0)
# Hacky way to convert query str value to int
try:
limit = int(limit)
offset = int(offset)
except:
abort(500, "Bleep bleep")
if limit > 30:
limit = 30
all_posts = []
posts = Post.select().where(Post.approved==True).order_by(Post.timestamp.desc()).limit(limit).offset(offset)
for post in posts:
wallet = wownero.Wallet()
if wallet.connected:
address = wallet.get_address(account=post.account_index)
else:
address = ''
payload = {
'image': url_for('post.uploaded_file', filename=post.image_name, _external=True),
'submitter': post.submitter,
'address': address,
'title': post.title,
'text': post.text,
'href': url_for('post.read', id=post.id, _external=True),
'id': post.id,
'timestamp': post.timestamp
}
all_posts.append(payload)
return jsonify(all_posts)
from flask import jsonify, Blueprint, url_for, request, abort
from suchwow.models import Post
from suchwow import wownero
from suchwow.utils.helpers import rw_cache, get_top_posters, get_top_posts
bp = Blueprint("api", "api")
@bp.route("/api/list")
def api_list():
limit = request.args.get('limit', 30)
offset = request.args.get('offset', 0)
# Hacky way to convert query str value to int
try:
limit = int(limit)
offset = int(offset)
except:
abort(500, "Bleep bleep")
if limit > 30:
limit = 30
all_posts = []
posts = Post.select().where(Post.approved == True).order_by(
Post.timestamp.desc()).limit(limit).offset(offset)
for post in posts:
wallet = wownero.Wallet()
if wallet.connected:
address = wallet.get_address(account=post.account_index)
else:
address = ''
payload = {
'image': url_for('post.uploaded_file', filename=post.image_name, _external=True),
'submitter': post.submitter,
'address': address,
'title': post.title,
'text': post.text,
'href': url_for('post.read', id=post.id, _external=True),
'id': post.id,
'timestamp': post.timestamp
}
all_posts.append(payload)
return jsonify(all_posts)
@bp.route("/api/posters")
def api_posters():
posters = get_top_posters()
all_posters = {}
for poster, data in posters.items():
payload = {
"submitter": poster,
"posts": data["posts"],
"amount": data["amount"],
}
all_posters.append(payload)
return jsonify(posters)

@ -47,45 +47,3 @@
</div>
</div>
</nav>
<!-- Navigation -->
<!-- <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
<div class="container">
<a class="navbar-brand" href="/">
<h3>SuchWow!</h3>
</a>
<div class="" id="">
<ul class="navbar-nav ml-auto">
{% if session.auth %}
<li class="nav-item">
</li>
{% endif %}
<li class="nav-item">
</li>
<li class="nav-item">
<a class="nav-link" href="{{ url_for('post.create') }}">Submit</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ url_for('about') }}">About</a>
</li>
{% if session.auth == None %}
<li class="nav-item">
<a class="nav-link" href="{{ url_for('auth.login') }}">Login</a>
</li>
{% else %}
<li class="nav-item">
{% if session.auth %}
<a class="nav-link" href="{{ url_for('profile.edit') }}">Profile ({{ session.auth.preferred_username }})</a>
{% endif %}
</li>
<li class="nav-item">
<a class="nav-link" href="{{ url_for('auth.logout') }}">Logout</a>
</li>
{% endif %}
</ul>
</div>
</div>
</nav> -->