oh shit dog, adding static and templates

This commit is contained in:
lza_menace 2020-08-07 23:12:33 -07:00
parent 4d9b37545d
commit b6aac85f48
30 changed files with 11886 additions and 79 deletions

View file

@ -1,8 +1,6 @@
import json
from flask import Flask, request, session
from flask import render_template, flash
from flask import make_response
from flask import jsonify
from flask_session import Session
from suchwow.models import Post, Profile, Comment, Notification, db
from suchwow.routes import auth, comment, post, profile
@ -19,26 +17,25 @@ app.register_blueprint(auth.bp)
@app.route("/")
def index():
page = request.args.get("page", "1")
if page.isdigit() is False:
itp = 20
page = request.args.get("page", 1)
try:
page = int(page)
except:
flash("Wow, wtf hackerman. Cool it.")
page = 1
posts = Post.select().order_by(Post.timestamp).paginate(int(page), 10)
return render_template("index.html", posts=posts, page=page)
posts = Post.select().order_by(Post.timestamp.desc()).paginate(page, itp)
total_pages = round(Post.select().count() / itp)
return render_template("index.html", posts=posts, page=page, total_pages=total_pages)
@app.route("/debug")
@login_required
def debug():
return f"""
<h3>We are logged in!</h3>
<pre>{json.dumps(session["auth"], indent=4, sort_keys=True)}</pre><br>
<a href="/logout">Logout</a>
"""
@app.route("/about")
def about():
return render_template("about.html")
@app.errorhandler(404)
def not_found(error):
return make_response(jsonify({"error": "Page not found"}), 404)
return "nothin there, brah"
@app.cli.command("dbinit")
def dbinit():

View file

@ -7,7 +7,7 @@ db = SqliteDatabase('data/sqlite.db')
class Post(Model):
id = AutoField()
title = CharField()
subtitle = CharField()
text = CharField()
# submitter = ForeignKeyField(Profile, field=Profile.username)
submitter = CharField()
image_name = CharField()

View file

@ -1,5 +1,5 @@
from os import path
from flask import render_template, Blueprint, request, session
from flask import render_template, Blueprint, request, session, flash
from flask import send_from_directory, redirect, url_for, current_app
from werkzeug.utils import secure_filename
from suchwow.models import Post
@ -42,7 +42,7 @@ def create():
# gen wallet
post = Post(
title=post_title,
subtitle=request.form.get("subtitle", ""),
text=request.form.get("text", ""),
submitter=session["auth"]["preferred_username"],
image_name=filename,
account_index=0,
@ -54,4 +54,4 @@ def create():
@bp.route("/uploads/<path:filename>")
def uploaded_file(filename):
return send_from_directory(current_app.config["UPLOAD_FOLDER"], filename)
return send_from_directory(current_app.config["UPLOAD_FOLDER"], filename)

BIN
suchwow/static/bg.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

1567
suchwow/static/css/bootstrap-grid.css vendored Executable file

File diff suppressed because it is too large Load diff

7
suchwow/static/css/bootstrap-grid.min.css vendored Executable file

File diff suppressed because one or more lines are too long

342
suchwow/static/css/bootstrap-reboot.css vendored Executable file
View file

@ -0,0 +1,342 @@
/*!
* Bootstrap Reboot v4.0.0-beta.2 (https://getbootstrap.com)
* Copyright 2011-2017 The Bootstrap Authors
* Copyright 2011-2017 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
-ms-overflow-style: scrollbar;
-webkit-tap-highlight-color: transparent;
}
@-ms-viewport {
width: device-width;
}
article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {
display: block;
}
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
}
[tabindex="-1"]:focus {
outline: none !important;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: 0.5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
dfn {
font-style: italic;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -.25em;
}
sup {
top: -.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
-webkit-text-decoration-skip: objects;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:not([href]):not([tabindex]) {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):focus {
outline: 0;
}
pre,
code,
kbd,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
-ms-overflow-style: scrollbar;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
}
svg:not(:root) {
overflow: hidden;
}
a,
area,
button,
[role="button"],
input:not([type="range"]),
label,
select,
summary,
textarea {
-ms-touch-action: manipulation;
touch-action: manipulation;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #868e96;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
}
label {
display: inline-block;
margin-bottom: .5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html [type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
-webkit-appearance: listbox;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
}
template {
display: none;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

8
suchwow/static/css/bootstrap-reboot.min.css vendored Executable file
View file

@ -0,0 +1,8 @@
/*!
* Bootstrap Reboot v4.0.0-beta.2 (https://getbootstrap.com)
* Copyright 2011-2017 The Bootstrap Authors
* Copyright 2011-2017 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#868e96;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */

8981
suchwow/static/css/bootstrap.css vendored Executable file

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

7
suchwow/static/css/bootstrap.min.css vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

793
suchwow/static/css/wow.css Executable file
View file

@ -0,0 +1,793 @@
body {
padding-top: 54px;
}
@media (min-width: 992px) {
body {
padding-top: 56px;
}
}
.center {
text-align: center;
margin: 0 auto 0 auto;
}
.navbar {
padding: .1rem 1rem;
}
.navbar .navbar-brand img#logo{
width: 32px;
height: 32px;
display: inline-block;
vertical-align: middle;
}
.navbar .navbar-brand img#text{
width:235px;
margin-top: -4px;
padding-top: 0px;
display: inline-block;
}
.navbar-nav .nav-link{
color: #fff;
font-weight: bold;
font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana', sans-serif
}
.container>div:first-child {
padding-top: 30px;
}
.mb-4, .my-4{
margin-top:0 !important;
}
.mt-4, .my-4 {
margin-top: 0rem !important;
}
.proposal-info-table td {
padding: .35rem !important;
}
.proposal_address {
white-space: pre-wrap;
padding: 2px;
border-radius: 2px;
margin-top: 6px;
font-weight: bold;
color: #ff0000;
font-size: 18px;
margin-bottom: 0;
}
.proposal_content blockquote {
background-color: #efefef;
padding: 8px;
}
.proposal_content h1, .proposal_content h2, .proposal_content h3, .proposal_content h4{
margin-bottom: 16px;
margin-top: 16px;
}
.proposal_content p {
margin-bottom: 0.5rem;
}
.proposal_content img {
margin-top:8px;
margin-bottom:8px;
max-width: 70%;
}
.proposal_content code {
background: #ebebeb;
padding: 2px;
}
.table td, .table th {
padding: 0.35rem;
}
/* Sticky footer styles
-------------------------------------------------- */
html {
position: relative;
min-height: 100%;
}
body {
margin-bottom: 60px; /* Margin bottom by footer height */
font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;
background-image: url("/static/bg.png");
background-repeat: repeat;
}
.footer {
position: absolute;
bottom: 0;
width: 100%;
height: 30px;
line-height: 30px;
background-color: #f5f5f5;
}
.bg-dark {
background: linear-gradient(90deg, #d253c8, #ffa93e);
}
.navbar-dark .navbar-brand {
color: #fff;
font-size: 18pt;
margin-top: 0;
padding-top: 0;
margin-bottom: 0;
padding-bottom: 0;
text-shadow: 2px 2px #667ff952;
font-family: "Comic Sans MS", "Comic Sans", cursive;
}
.table-proposal td {
font-size: 15px;
}
.table-proposal tbody td:first-child{
word-break: break-word;
width: 40%;
}
.table-hover tbody tr:hover {
background-color: rgba(0,0,0,.055);
}
.table th, .table td {
border-top: 1px solid #00000029;
padding-top: .65rem;
}
.table-tilted{
-ms-transform: rotate(0.5deg);
-webkit-transform: rotate(0.5deg);
transform: rotate(0.5deg);
}
.table-tilted-v{
-ms-transform: rotate(-0.2deg);
-webkit-transform: rotate(-0.2deg);
transform: rotate(-0.2deg);
}
.table-no-header thead{
display: none;
}
.table-wow{
background-image: url(https://wownero.win/static/game-table-bg.png);
background-size: cover;
}
.table a{
color: #006400;
}
.table thead th {
border-bottom: 1px solid #00000029 !important;
border-top: none;
font-size: 14px;
}
.table tbody td.date {
max-width: 100px;
}
.table tbody td.user {
font-size: 14px;
}
.table tbody td{
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
.nav-tabs .nav-item.show .nav-link, .nav-tabs .nav-link.active {
color: #495057;
background-color: #fff;
border-left-color: #008926;
border-left-width: 2px;
border-top-color: #008926;
border-top-width: 1px;
border-right-color: #008926;
border-right-width: 1px;
}
.nav-tabs .nav-link {
border: 1px solid transparent;
border-top-left-radius: .25rem;
border-top-right-radius: .25rem;
border-bottom-color: #008926;
}
.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {
border-color: #e9ecef #e9ecef #dee2e6;
}
.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {
border-color: #00892630 #00892630 #008926;
}
a {
color: #008926;
}
.btn-group-toggle a{
color: white;
}
.btn-group-toggle a:hover{
text-decoration: none;
}
.btn-primary{
background-color: #28a745;
border-color: #28a745;
}
.btn-primary:hover{
color: #fff;
background-color: #1e7e34;
border-color: #1c7430;
}
.card-body {
background-color: #00000008;
}
.card {
background-color: #ffffff00;
border: 0px solid rgba(0,0,0,.125);
border-radius: .25rem;
}
.card-header {
padding: 0.5rem;
padding-left: 1.0rem;
font-size: 16px;
margin-bottom: 0;
background-color: rgba(0,0,0,.03);
background: linear-gradient(90deg, #d253c829, #ffa93e69);
/*background: linear-gradient(90deg, #40d61e1f, #ffa93e69);*/
border-radius: calc(.25rem - 1px) calc(.25rem - 1px) 0 0;
border-bottom: 1px solid #e6e6e6;
border-bottom: 0px;
}
.proposal_content{
background-color: #00000008;
padding: 1.25rem 1.25rem;
}
.form-control {
padding: .375rem .75rem;
font-size: 1rem;
line-height: 1.5;
color: #495057;
background-color: #fff;
background-clip: padding-box;
border: 1px solid #008926;
}
.form-group {
margin-bottom: 1rem;
}
.form-group:last-of-type {
margin-bottom:2.5rem;
}
/*fuku chrome*/
input {
outline:none;
}
input:focus {
outline: 0;
}
*:focus {
outline: none;
}
input[type="text"], textarea {
outline: none;
box-shadow:none !important;
border: 1px solid #008926 !important;
}
.navbar-dark .navbar-nav .nav-link {
color: white;
padding-top: 0.4rem;
padding-bottom: 0.4rem;
font-size: 15px;
padding-right: 1em;
}
.navbar-nav .nav-item {
line-height: 20px;
}
nav .nav-link{
color: white;
}
nav .nav-link .active{
text-shadow: none;
}
.proposal-info-table td{
border-top: 0;
}
.proposal-info-table td span.badge{
font-size:20px;
}
.table-proposal .progress {
max-width: 70px !important;
min-width: 50px !important;
float:right;
}
.table-proposal .progress-bar {
display: -ms-flexbox;
display: flex;
-ms-flex-pack: center;
justify-content: center;
color: #fff;
text-shadow: 1px 1px #000000;
text-align: center;
white-space: nowrap;
background-color: #009845;
transition: width .6s ease;
font-family: monospace;
padding: 6px;
}
#point-wow-left{
display: inline;
}
@media only screen and (max-width: 600px) {
.proposal-info-table tr:first-child>td, .proposal-info-table tr:first-child>td>span {
font-size: 28px !important;
font-weight: 100;
}
.navbar-dark .navbar-brand {
font-size: 13pt;
}
.proposal-info-table tr:first-child>td, .proposal-info-table tr:first-child>td>span {
font-size: 14px !important;
}
.proposal-info-table td span.badge {
font-size: 14px;
}
.proposal_content {
background-color: #00000008;
padding: 0.1rem 0.75rem;
}
.card-body{
padding: 0.5rem;
}
#point-wow-left{
display: none;
}
.table-proposal thead th#date, .table-proposal tbody td#date{
display: none;
}
.table-proposal, .table-proposal td{
font-size:14px !important;
}
.navbar-brand {
display: none;
}
.navbar-brand-mobile{
display: block !important;
color: white;
font-size:14px;
}
pre.proposal_address{
font-size:14px;
}
label {
font-size:12px !important;
}
}
@media only screen and (max-width: 768px) {
#point-wow-left {
display: none;
}
}
textarea.comment{
padding-left: 6px;
padding-right: 6px;
padding-bottom: 6px;
width: 100%;
max-width: 600px;
}
.votearrow {
width: 10px;
height: 10px;
border: 0px;
margin: 3px 2px 6px;
margin-right: 10px;
margin-top: 7px;
background: url(/static/grayarrow.gif) no-repeat;
}
span.username a{
font-family: Verdana, Geneva, sans-serif;
font-size: 12pt;
color: #828282;
}
.comment-container a.reply{
margin-bottom:2px;
font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;
font-size: 11pt;
text-decoration: underline;
color: black;
}
span.date_posted a{
color: #828282;
font-family: Verdana, Geneva, sans-serif;
font-size: 10pt;
margin-left:2px;
}
.comment-container .comment-container{
margin-top: 0.4rem !important;
}
.comment-container, .comment-container .comment-container{
margin-bottom: 0.4rem !important;
font-family: serif;
font-size: 16px;
}
span.username a.author{
color: #008926;
font-weight: bold;
}
:target {
background: linear-gradient(90deg, #ff606008, #ffa93e2b);
}
.form-admin{
border: 1px solid #b60000;
}
ul.b {
list-style-type: square;
padding-left: 1.0rem;
}
.media-body #comment{
word-break: break-all;
}
.api_documentation code{
background-color: #f3f3f3;
padding: 4px;
padding-top:2px;
padding-bottom:2px;
}
.api_documentation pre{
margin-top:0;
background-color: #f3f3f3;
padding: 4px;
font-size: 12px;
padding-left:8px;
white-space: pre-wrap; /* Since CSS 2.1 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}
.api_documentation .api_container hr{
margin-bottom: 14px;
margin-top: 12px;
}
.api_documentation .api_container{
margin-bottom: 60px;
}
.sidebar .card-body{
padding-top: 1rem;
padding-left: 1rem;
padding-right: 1rem;
font-size: 14px;
}
.sidebar .card-body ul.b{
margin-bottom:0;
}
.card-header {
border-radius: 10px 0 0 !important;
}
/* cyrillic-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(/static/fonts/roboto-1.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(/static/fonts/roboto-2.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(/static/fonts/roboto-3.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(/static/fonts/roboto-4.woff2) format('woff2');
unicode-range: U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(/static/fonts/roboto-5.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(/static/fonts/roboto-6.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(/static/fonts/roboto-7.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
.proposal-overview .table-proposal[data-status="4"] {
opacity: 0.4;
}
.proposal-overview .table-proposal[data-status="4"] thead th {
border-bottom: 1px solid #4b4b4b !important;
}
.proposal-overview .table-proposal[data-status="4"] td {
border-top: 1px solid #4b4b4b;
}
.proposal-overview .table-proposal[data-status="4"], .proposal-overview .table-proposal[data-status="4"] a {
color: #4b4b4b;
}
.comments-panel {
background-color: #ffffffb0;
}
.wow_addy{
color: red;
cursor: pointer;
font-family: monospace;
background: #f6f6f6;
font-size:14px;
}
.wow_addy[data-active="true"]{
cursor: default;
}
.proposal_qr{
margin-top:8px;
margin-bottom:8px;
}
.table-proposal tr {
background: #00000005;
}
.tx_item {
padding-top: 4px;
padding-bottom: 4px;
background: #ffffff80;
}
.tx_item .amount {
float:right;
font-weight:bold;
color:#890000;
}
.tx_item .amount.in {
color:#008926;
}
.tx_item .datetime {
font-size: 14px;
color: #999;
}
.tx_item .height b {
font-size:14px;
}
.container>.content h1,
.container>.content h2,
.container>.content h3,
.container>.content h4{
margin-bottom:20px;
}
.comment-container .media-body span.body {
word-wrap: break-word;
display: block;
margin-top: 4px;
margin-bottom: 4px;
}
.comment-container .media-body span.body img {
width: 100%;
max-width:500px;
max-height:600px;
margin-top:10px;
margin-bottom:10px;
display: block;
}
.navbar-brand {
margin-top:0
margin-bottom:0
padding-top:0
padding-bottom:0;
}
.card h5{
color: #0000009e;
font-size: 14px;
}
.wowtable{
width:100%;
display: block;
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace
}
.wowtable .trow{
width: 100%;
height: 34px;
display: table;
}
.wowtable .trow .item{
float:right;
width:100px;
}
.wowtable .trow .item.one{
width:30%;
min-width: 200px;
}
.wowtable .trow .item.small{
max-width:100px;
text-align:right;
}
.wowtable .trow.header .item span {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-size: 14px;
font-weight: 700;
padding-top:6px;
display: block;
}
.wowtable .trow .item.comments{
max-width:70px;
text-align: center;
}
.wowtable .trow .item.big{
display: inline-block;
text-align: left;
float: left;
width: auto;
max-width: 50%;
}
.wowtable .trow.header .item.big span{
padding-left:7px;
padding-top:3px;
font-size:18px;
word-break: break-word;
}
.trow.divider{
height:1px;
background: #00000029 !important;
}
.wowtable .trow.body .item span {
font-size:14px;
padding-top:6px;
display: block;
}
.wowtable .trow.body .item.big a {
display: block;
padding-left: 7px;
color: #006400;
padding-top: 6px;
font-size: 15px;
font-weight: 700;
word-break: break-word;
}
.wowtable .trow span.alignl{
text-align:left;
padding-left:7px;
}
@media (max-width: 990px) {
.wowtable .small{
display:none
}
.wowtable .trow .item.big{
max-width: 88%;
}
}
.subtext {
color: grey;
margin: 0;
}
.subtitle {
font-size: 1.2em;
}
.container {
margin: 0 auto;
display: block;
}
.flashes {
text-align: center;
font-size: 1.5em;
}
.navbar-nav {
flex-direction: row;
}

BIN
suchwow/static/favicon.ico Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
suchwow/static/msg.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
suchwow/static/reply.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
suchwow/static/wownero.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View file

@ -0,0 +1,12 @@
{% extends 'base.html' %}
{% block content %}
<div class="container" style="width:40%;text-align:center;">
<div class="about">
<h1>About</h1>
<p>Post memes! Have fun! <s>Comment and talk shit! Earn WOW!</s> (soon :tm:)</p>
</div>
</div>
{% endblock %}

View file

@ -1,31 +1,70 @@
<!DOCTYPE html>
<html>
<head>
<html lang="en">
<!--
░░░░░░░█▐▓▓░████▄▄▄█▀▄▓▓▓▌█ very website
░░░░░▄█▌▀▄▓▓▄▄▄▄▀▀▀▄▓▓▓▓▓▌█
░░░▄█▀▀▄▓█▓▓▓▓▓▓▓▓▓▓▓▓▀░▓▌█
░░█▀▄▓▓▓███▓▓▓███▓▓▓▄░░▄▓▐█▌ such html
░█▌▓▓▓▀▀▓▓▓▓███▓▓▓▓▓▓▓▄▀▓▓▐█
▐█▐██▐░▄▓▓▓▓▓▀▄░▀▓▓▓▓▓▓▓▓▓▌█▌ WOW
█▌███▓▓▓▓▓▓▓▓▐░░▄▓▓███▓▓▓▄▀▐█
█▐█▓▀░░▀▓▓▓▓▓▓▓▓▓██████▓▓▓▓▐█
▌▓▄▌▀░▀░▐▀█▄▓▓██████████▓▓▓▌█▌
▌▓▓▓▄▄▀▀▓▓▓▀▓▓▓▓▓▓▓▓█▓█▓█▓▓▌█▌ many memes
█▐▓▓▓▓▓▓▄▄▄▓▓▓▓▓▓█▓█▓█▓█▓▓▓▐█
-->
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>SuchWOW!</title>
<meta name="author" content="name">
<meta name="description" content="description here">
<meta name="keywords" content="keywords,here">
</head>
<body>
<a href="/">Home</a><br>
{% if session.auth == None %}
<a href="{{ url_for('auth.login') }}">Login</a><br>
{% else %}
<a href="{{ url_for('auth.logout') }}">Logout</a><br>
{% endif %}
<hr>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul class=flashes>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
<hr>
{% block content %}{% endblock %}
</body>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<link rel="shortcut icon" href="/static/favicon.ico" type="image/x-icon" />
<meta property="fb:app_id" content="0" />
<meta property="og:image" content="https://funding.wownero.com/static/wowdoge-a.jpg" />
<meta property="og:description" content="SuchWow! Memes n shit!" />
<meta property="og:url" content="https://suchwow.xyz/" />
<meta property="og:title" content="SuchWow!" />
<meta property="og:type" content="website" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="theme-color" content="#ffffff">
<meta name="apple-mobile-web-app-title" content="SuchWow!">
<meta name="application-name" content="SuchWow!">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="keywords" content="wownero, memes, monero, xmr, bitmonero, cryptocurrency, crypto money, mining crypto currencies, virtual currency">
<link href="/static/css/bootstrap.min.css" rel="stylesheet">
<link href="/static/css/bootstrap-grid.min.css" rel="stylesheet">
<link href="/static/css/bootstrap-reboot.min.css" rel="stylesheet">
<link href="/static/css/wow.css" rel="stylesheet">
</head>
<body>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul class=flashes>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
{% include 'navbar.html' %}
<!-- Page Content -->
{% block content %} {% endblock %}
<!-- Footer -->
<footer class="bg-dark footer">
<div class="container">
<p class="m-0 text-center text-white">SuchWow! 2020</p>
</div>
</footer>
</body>
</html>

View file

@ -1,20 +1,29 @@
{% extends 'base.html' %}
{% block content %}
{% block content %}
<a href="{{ url_for('post.create') }}">Submit A Meme</a><br>
<a href="{{ url_for('debug') }}">Debug</a>
<div class="container" style="text-align:center;">
{% block header %}
<h1>{% block title %}Latest Submissions{% endblock %}</h1>
{% endblock %}
<div class="title">
<h3>{% block title %}Latest Submissions{% endblock %}</h3>
</div>
<ul>
{% for post in posts %}
<li><a href="{{ url_for('post.read', id=post.id) }}">{{ post.title }}</a></li>
{% endfor %}
</ul>
<ul>
{% for post in posts %}
<li>#{{ post.id }} - <a href="{{ url_for('post.read', id=post.id) }}">{{ post.title }}</a> - {{ post.submitter }}</li>
{% endfor %}
</ul>
{{ page }}
{% if page > 1 %}
<a href="/?page={{ page - 1 }}" style="padding:1em;">Back</a>
{% endif %}
{% if not page == total_pages %}
<a href="/?page={{ page + 1 }}" style="padding:1em;">Next</a>
{% endif %}
</div>
{% endblock %}

28
suchwow/templates/navbar.html Executable file
View file

@ -0,0 +1,28 @@
<!-- 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">
<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">
<a class="nav-link" href="{{ url_for('auth.logout') }}">Logout</a>
</li>
{% endif %}
</ul>
</div>
</div>
</nav>

View file

@ -1,12 +1,26 @@
{% extends 'base.html' %}
{% block content %}
<title>Upload new File</title>
<h1>Upload new File</h1>
<form method=post enctype=multipart/form-data>
<input type="text" name="title"><br>
<input type="text" name="subtitle"><br>
<input type=file name=file>
<input type=submit value=Submit>
</form>
<div class="container" style="width:40%;">
<div class="submit">
<h1>Submit A Meme</h1>
<form method=post enctype=multipart/form-data class="form-horizontal">
<div class="form-group">
<label class="sr-only" for="inlineFormInput">Title</label>
<input type="text" class="form-control mb-2 mr-sm-2 mb-sm-0" id="inlineFormInput" placeholder="Title" name="title">
</div>
<div class="form-group">
<label class="sr-only" for="inlineFormInput">Text</label>
<input type="text" class="form-control mb-2 mr-sm-2 mb-sm-0" id="inlineFormInput" placeholder="Text" name="text">
</div>
<div class="form-group">
<input type=file name=file>
</div>
<div class="form-group">
<button type="submit" class="btn btn-success">Submit</button>
</div>
</form>
</div>
</div>
{% endblock %}

View file

@ -1,19 +1,20 @@
{% extends 'base.html' %}
{% block header %}
<h1>{% block title %}View Post{% endblock %}</h1>
{% endblock %}
{% block content %}
<div class="container" style="width:40%;">
<div class="post" style="text-align:center;">
<a href="/">< Go Back</a>
{% if post.hidden %}
You cannot see this post
<h2>You cannot see this post</h2>
{% else %}
<p>Submitter: {{ post.submitter }}</p>
<p>ID: {{ post.id }}</p>
<p>Title: {{ post.title }}</p>
<p>Subtitle: {{ post.subtitle }}</p>
<p>Submitted: {{ post.timestamp }}</p>
<p>Image Name: {{ post.image_name }}</p>
<img src="{{ url_for('post.uploaded_file', filename=post.image_name) }}" width=500/>
<h1>{{ post.title }}</h1>
<p class="subtitle">{{ post.text }}</p>
<img src="{{ url_for('post.uploaded_file', filename=post.image_name) }}" width=500/ style="margin-bottom:1em;border-radius:4px;">
<p class="subtext">Submitted by <i>{{ post.submitter }}</i> at <i>{{ post.timestamp }}</i></p>
{% endif %}
</div>
</div>
{% endblock %}