Start to build out the log item actions

re-theme
JD Cantrell 5 years ago
parent 276f472bb6
commit 0602646023

1
.gitignore vendored

@ -62,3 +62,4 @@ cache/
*.sql
*.sqlite
node_modules
live/

@ -7,9 +7,9 @@ name = "pypi"
[packages]
Flask = "*"
Flask = ">=1.0.2"
Flask-Login = "*"
"Jinja2" = "*"
"Jinja2" = ">=2.10.1"
MarkupSafe = "*"
Pygments = "*"
shortid = "*"

@ -1,16 +1,21 @@
from flask import Flask
from flask_login import LoginManager
app = Flask(__name__)
app.config.from_pyfile('../settings.cfg', silent=False)
def create_app(test_config=None):
app = Flask(__name__)
login_manager = LoginManager()
login_manager.init_app(app)
if test_config is None:
app.config.from_pyfile('../settings.cfg', silent=False)
else:
app.config.from_mapping(test_config)
from spice.database import db_session
import spice.views
login_manager = LoginManager()
login_manager.init_app(app)
from spice.database import db_session
db.init_app(app)
@app.teardown_appcontext
def shutdown_session(exception=None):
db_session.remove()
import spice.views
from . import log
app.register_blueprint(log.bp)

@ -1,4 +1,6 @@
from spice import app
import click
from flask.cli import with_appcontext
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
@ -16,7 +18,23 @@ db_session = scoped_session(
Base = declarative_base()
Base.query = db_session.query_property()
def close_db(exception=None):
db_session.remove()
def init_db():
import spice.models
Base.metadata.create_all(bind=engine)
@click.command('init-db')
@with_appcontext
def init_db_command():
"""Clear the existing data and create new tables."""
init_db()
click.echo('Initialized the database.')
def init_app(app):
app.teardown_appcontext(close_db)
app.add_command(init_db_command)

@ -0,0 +1,30 @@
from flask import (
Blueprint, render_template
)
bp = Blueprint('log', __name__ )
@bp.route('/')
@bp.route('/<int:page>')
def log(page=0):
page_size = 30
json, files = get_file_data(page_size, page * page_size)
next_page = False
if (len(files) == page_size):
next_page = page + 1
print(files);
return render_template(
'log.html',
current_user=current_user,
files=files,
json=json,
prev_page=page - 1,
next_page=next_page,
static_web_path=app.config['STATIC_WEB_PATH'],
upload_web_path=app.config['UPLOAD_WEB_PATH'],
root_web_path=app.config['ROOT_WEB_PATH'],
)

@ -4,6 +4,42 @@
{% include 'upload.html' %}
<style>
.item-header {
display: flex;
flex-direction: row;
align-items: center;
}
.item-header-content {
flex: 1;
}
.item-header-actions {
padding-left: 16px;
}
.pretty-select {
position: relative;
cursor: pointer;
color: #458588;
display: inline-block;
}
.pretty-select:hover {
text-decoration: underline;
color: #458588;
}
.pretty-select select {
color: #000;
kursor: pointer;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
opacity: 0;
}
.progress {
background-image: linear-gradient(to right, #458588 , #458588);
background-repeat: no-repeat;

@ -1,8 +1,19 @@
<div>
<div class="item bg-c07 c00">
<a class="visit" href="{{ file.link }}">
{{ file.data.name }}
</a>
<div class="item-header">
<div class="item-header-content">
<h4>
<a class="visit" href="{{ file.link }}">
{{ file.data.name }}
</a>
</h4>
</div>
{% if current_user.is_authenticated %}
<div class="item-header-actions">
<div>Remove</div>
</div>
{% endif %}
</div>
{% if file.type == 'images' %}
<div class="preview">
<a href="{{ file.link }}">
@ -19,7 +30,19 @@
</div>
{% endif %}
<div>
{{ file.data.created.strftime('%Y %m %d') }} - {{ file.data.access }}
{{ file.data.created.strftime('%Y-%m-%d') }} -
{% if current_user.is_authenticated %}
<div class="pretty-select">
{{ file.data.access }}
<select onChange="setMode(this, {{ file.data.id }})">
<option>public</option>
<option>private</option>
<option>limited</option>
</select>
</div>
{% else %}
{{ file.data.access }}
{% endif %}
</div>
</div>
</div>

@ -0,0 +1,22 @@
from flask_login import current_user
from spice.database import db_session
from spice.models import File
from spice.handlers import get_handler_instance
def get_file_data(limit=50, offset=0):
files = []
if current_user.is_authenticated:
query = db_session.query(File)
else:
query = db_session.query(File).filter_by(access='public')
files = query.order_by(File.id.desc()).limit(limit).offset(offset).all()
json = []
handlers = []
for record in files:
json.append(file_json(record))
handlers.append(get_handler_instance(record))
return (json, handlers)

@ -94,30 +94,6 @@ def index(page=0):
root_web_path=app.config['ROOT_WEB_PATH'],
)
@app.route('/log')
@app.route('/log/<int:page>')
def log(page=0):
page_size = 30
json, files = get_file_data(page_size, page * page_size)
next_page = False
if (len(files) == page_size):
next_page = page + 1
print(files);
return render_template(
'log.html',
current_user=current_user,
files=files,
json=json,
prev_page=page - 1,
next_page=next_page,
static_web_path=app.config['STATIC_WEB_PATH'],
upload_web_path=app.config['UPLOAD_WEB_PATH'],
root_web_path=app.config['ROOT_WEB_PATH'],
)
@app.route('/tiles/')
@app.route('/tiles/<int:page>')

Loading…
Cancel
Save