Compare commits

..

1 Commits

Author SHA1 Message Date
lza_menace ff30728863 making graphs n shit
3 years ago

@ -1,6 +1,5 @@
import json
import click
from math import ceil
from datetime import datetime, timedelta
from random import choice
from os import makedirs, path, remove
@ -31,7 +30,7 @@ app.register_blueprint(api.bp)
@app.route("/")
def index():
itp = 15
itp = 20
page = request.args.get("page", 1)
submitter = request.args.get("submitter", None)
try:
@ -43,15 +42,9 @@ def index():
posts = Post.select().where(Post.approved==True).order_by(Post.timestamp.desc())
if submitter:
posts = posts.where(Post.submitter == submitter)
paginated_posts = posts.paginate(page, itp)
total_pages = ceil(posts.count() / itp)
return render_template(
"index.html",
posts=paginated_posts,
page=page,
total_pages=total_pages
)
posts = posts.paginate(page, itp)
total_pages = Post.select().count() / itp
return render_template("index.html", posts=posts, page=page, total_pages=total_pages)
@app.route("/mod")
@moderator_required
@ -63,6 +56,17 @@ def mod_queue():
def about():
return render_template("about.html")
@app.route("/stats")
def stats():
wow_txes = list()
posts = Post.select()
wallet = wownero.Wallet()
for post in posts:
txes = wallet.transfers(post.account_index)
if 'in' in txes:
wow_txes.append(txes['in'])
return render_template("stats.html", wow_txes=json.dumps(wow_txes))
@app.errorhandler(404)
def not_found(error):
flash("nothing there, brah")
@ -126,14 +130,5 @@ def remove_admin(username):
else:
print("That moderator doesn't exist")
@app.cli.command("show")
@click.argument("post_id")
def post_id(post_id):
p = Post.filter(id=post_id).first()
if p:
print(p.show())
else:
print("That post doesn't exist")
if __name__ == "__main__":
app.run()

@ -1,5 +1,3 @@
import pickle
from datetime import datetime
from os import path, remove
from io import BytesIO
from base64 import b64encode
@ -22,42 +20,17 @@ bp = Blueprint("post", "post")
@bp.route("/posts/top")
def top():
top_posts = {}
pickle_file = path.join(config.DATA_FOLDER, 'top_posts.pkl')
try:
mtime_ts = path.getmtime(pickle_file)
mtime = datetime.fromtimestamp(mtime_ts)
now = datetime.now()
diff = now - mtime
# If pickled data file is less than an hour old, load it and render page
# Otherwise, determine balances, build json, store pickled data, and render page
if diff.seconds < 3600:
with open(pickle_file, 'rb') as f:
print('Loading pickled data for /posts/top')
pickled_data = pickle.load(f)
return render_template("post/top.html", posts=pickled_data)
except:
pass
print('Generating and pickling new data for /posts/top')
posts = Post.select().where(Post.approved==True)
for post in posts:
transfers = []
incoming = wownero.Wallet().incoming_transfers(post.account_index)
if "transfers" in incoming:
for xfer in incoming["transfers"]:
transfers.append(xfer["amount"])
total = wownero.from_atomic(sum(transfers))
transfers.append(wownero.from_atomic(xfer["amount"]))
total = sum(transfers)
if total > 0:
top_posts[float(total)] = post
_t = sorted(top_posts.items(), reverse=True)[0:10]
with open(pickle_file, 'wb') as f:
f.write(pickle.dumps(_t))
return render_template("post/top.html", posts=_t)
return render_template("post/top.html", posts=sorted(top_posts.items(), reverse=True))
@bp.route("/post/<id>")
def read(id):
@ -126,8 +99,7 @@ def create():
wallet = wownero.Wallet()
account_index = wallet.new_account()
except:
flash("Suchwow wallet is fucked up! Try again later.")
return redirect(request.url)
account_index = 0
post = Post(
title=post_title,
text=request.form.get("text", ""),
@ -156,9 +128,14 @@ def approve(id):
post_webhook(f"Post [{post.id}]({url}) approved :white_check_mark: by `{get_session_user()}` :fieri_parrot:")
flash("Approved")
if current_app.config["DEBUG"] is False:
if not post.to_reddit:
_r = make_post(post)
if not post.to_discord:
_d = post_discord_webhook(post)
post_webhook(f"Post [{post.id}]({url}) submitted :dab_parrot: to Discord.")
if _r and _d:
post_webhook(f"Post [{post.id}]({url}) submitted :dab_parrot: to Reddit and Discord.")
else:
post_webhook(f"Post [{post.id}]({url}) failed :this-is-fine-fire: to post to socials...Reddit: {_r} - Discord: {_d}")
return redirect(url_for("mod_queue"))
else:
flash("You can't approve this")

@ -791,7 +791,3 @@ ul.b {
.navbar-nav {
flex-direction: row;
}
.current-page-btn {
font-size: 1.5em;
}

File diff suppressed because one or more lines are too long

@ -40,12 +40,15 @@
<p>No posts yet!</p>
{% endif %}
{% if total_pages %}
<div class="page-btn">
{% for p in range(1, total_pages + 1) %}
<a href="{% if request.args.submitter %}/?submitter={{ request.args.submitter }}&{% else %}/?{% endif %}page={{ p }}" class="pure-button btn {% if p == page %}current-page-btn{% endif %}">{{ p }}</a>
{% endfor %}
</div>
{% if page %}
{% if page > 1 %}
<a href="{% if request.args.submitter %}/?submitter={{ request.args.submitter }}&{% else %}/?{% endif %}page={{ page - 1 }}" style="padding:1em;">Back</a>
{% endif %}
{% if page < total_pages and total_pages > 0 %}
<a href="{% if request.args.submitter %}/?submitter={{ request.args.submitter }}&{% else %}/?{% endif %}page={{ page + 1 }}" style="padding:1em;">Next</a>
{% endif %}
{% endif %}
</div>

@ -21,6 +21,9 @@
<li class="nav-item">
<a class="nav-link" href="{{ url_for('about') }}">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ url_for('stats') }}">Stats</a>
</li>
{% if session.auth == None %}
<li class="nav-item">
<a class="nav-link" href="{{ url_for('auth.login') }}">Login</a>

@ -5,13 +5,6 @@
<div class="container" style="width:40%;">
<div class="submit">
<h1>Submit A Meme</h1>
<h2>Rules</h2>
<ol>
<li>no super low effort memes (ex. putting a wow logo on a picture and that's it) but memes where you add something to the wow logo or around is fine</li>
<li>no nsfl and nsfw</li>
<li>it has to do somethign with crypto</li>
</ol>
<form method=post enctype=multipart/form-data class="form-horizontal">
<div class="form-group">
<label class="sr-only" for="inlineFormInput">Title</label>

@ -31,9 +31,7 @@
{% if transfers.in %}
<ul>
{% for transfer in transfers.in %}
{% if transfer.amount > 0 %}
<li style="word-break:break-all;list-style:none;">{{ transfer.amount / 100000000000 }} WOW (<a href="https://wownero.club/transaction/{{ transfer.txid }}" target="_blank">{{ transfer.txid }}</a>)</li>
{% endif %}
<li style="word-break:break-all;list-style:none;">{{ transfer.amount / 100000000000 }} WOW (<a href="https://wownero.club/transaction/{{ transfer.txid }}" target="_blank">{{ transfer.txid }}</a>)</li>
{% endfor %}
</ul>
{% else %}

@ -5,7 +5,7 @@
<div class="container" style="text-align:center;">
<div class="title">
<h3>{% block title %}Top 10 Posts{% endblock %}</h3>
<h3>{% block title %}Top Posts{% endblock %}</h3>
</div>
{% if posts %}

@ -0,0 +1,77 @@
{% extends 'base.html' %}
{% block content %}
<div class="container" style="text-align:center;">
<h3>Stats</h3>
<div style="width: 100%; text-align: center;">
<div class="charts">
<canvas id="wow_wallet"></canvas>
<canvas id="wow_earnings"></canvas>
<canvas id="swap_stats"></canvas>
</div>
</div>
<script src="/static/js/Chart.bundle.min.js"></script>
<script>
var monero = '#f96b0e';
var set_title = function(t){
return {
display: true,
text: t,
fontColor: 'white',
}
}
{% for i in wow_txes %}
// console.log("{{ i['in'] }}")
{% endfor %}
{#
var ctx = document.getElementById('wow_wallet').getContext('2d');
new Chart(ctx, {
type: 'line',
data: {
labels: [0, {% for i in wow_txes %}'{{ wow_txes[i].timestamp }}',{% endfor %}],
datasets: [{
label: 'Balance',
backgroundColor: wownero,
borderColor: wownero,
data: [
0, {% for i in wow_txes %}{{ wow_txes[i].total }},{% endfor %}
],
fill: false,
}]
},
options: {
title: set_title('Wownero Wallet Balance')
}
});
var ctx = document.getElementById('wow_earnings').getContext('2d');
new Chart(ctx, {
type: 'bar',
data: {
labels: ['WOW', 'USD'],
datasets: [{
label: 'Wownero Earnings',
backgroundColor: wownero,
borderColor: wownero,
data: [
{{ earnings['wow'] | from_atomic_wow }}, {{ earnings['wow_as_ausd'] | from_atomic_usd }}
],
fill: false,
}]
},
options: {
title: set_title('Wownero Earnings')
}
});
#}
</script>
</div>
{% endblock %}
Loading…
Cancel
Save