test commit
This commit is contained in:
parent
720e8d8469
commit
cc191859bd
@ -4,7 +4,7 @@ from wtforms.validators import InputRequired, DataRequired
|
|||||||
from wtforms import FieldList
|
from wtforms import FieldList
|
||||||
from wtforms import Form as NoCsrfForm
|
from wtforms import Form as NoCsrfForm
|
||||||
from wtforms.fields import StringField, FormField, SubmitField, SelectField
|
from wtforms.fields import StringField, FormField, SubmitField, SelectField
|
||||||
from app.models import Book, BookSchema, Author
|
from app.models import Book, BookSchema, Author, Stack, StackSchema
|
||||||
|
|
||||||
# - - - Forms - - -
|
# - - - Forms - - -
|
||||||
class AuthorForm(NoCsrfForm):
|
class AuthorForm(NoCsrfForm):
|
||||||
@ -25,11 +25,14 @@ class EditForm(FlaskForm):
|
|||||||
author = FieldList(FormField(AuthorForm, default=lambda: Author()), min_entries=1)
|
author = FieldList(FormField(AuthorForm, default=lambda: Author()), min_entries=1)
|
||||||
category = StringField('category', validators=[InputRequired()])
|
category = StringField('category', validators=[InputRequired()])
|
||||||
year_published = StringField('year published', [validators.Length(max=4)],default=None)
|
year_published = StringField('year published', [validators.Length(max=4)],default=None)
|
||||||
|
|
||||||
class ChatForm(FlaskForm):
|
class ChatForm(FlaskForm):
|
||||||
message = StringField('message', validators=[InputRequired()])
|
message = StringField('message', validators=[InputRequired()])
|
||||||
send = SubmitField(label='Send')
|
send = SubmitField(label='Send')
|
||||||
|
|
||||||
|
class StackForm(FlaskForm):
|
||||||
|
stack_name = StringField('Stack', validators=[InputRequired()])
|
||||||
|
stack_description = StringField('Description', validators=[InputRequired()])
|
||||||
|
create = SubmitField(label='Create')
|
||||||
|
|
||||||
class SearchForm(FlaskForm):
|
class SearchForm(FlaskForm):
|
||||||
choices = [('All', 'All'),
|
choices = [('All', 'All'),
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
{% extends 'base.html' %}
|
|
||||||
|
|
||||||
{% block main %}
|
{% block main %}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
@ -9,7 +8,7 @@
|
|||||||
<p>Stack description:
|
<p>Stack description:
|
||||||
{% for stack in stacks %}
|
{% for stack in stacks %}
|
||||||
|
|
||||||
{{stack.stack_description}}
|
<a href="{{url_for('show_stack_by_id', id=stack.id)}}">{{ stack.stack_description }}</a>
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</p>
|
</p>
|
||||||
@ -22,7 +21,7 @@
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
|
<p><a href="{{url_for('show_stacks')}}">Go back to stacks</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -7,36 +7,25 @@
|
|||||||
|
|
||||||
<table style="width:100%">
|
<table style="width:100%">
|
||||||
|
|
||||||
<!--
|
|
||||||
<td> {% for stack in stacks %}
|
|
||||||
|
|
||||||
<li><a href="{{url_for('show_stack_by_id', id=stack.id)}}">{{ stack.stack_name }}</a> </li>
|
|
||||||
|
|
||||||
{% endfor %}
|
|
||||||
</td>
|
|
||||||
|
|
||||||
|
|
||||||
</table>
|
|
||||||
-->
|
|
||||||
|
|
||||||
|
|
||||||
<div id="tabs">
|
<div id="tabs">
|
||||||
<ul>
|
<ul>
|
||||||
{% for stack in stacks %}
|
{% for stack in stacks %}
|
||||||
|
|
||||||
<li><a href="#tabs-1">{{ stack.stack_name }}</a></li>
|
|
||||||
|
<li> <a href="stacks/{{ stack.id }}">{{ stack.stack_name }}</a></td>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
<div id="tabs-1">
|
|
||||||
<h2>Stack description</h2>
|
|
||||||
<p>This stack is nice.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
<h1 class="page-header">Build a stack</h1>
|
<h1 class="page-header">Build a stack</h1>
|
||||||
|
|
||||||
|
<p><a href= {{ url_for('add_stack') }}>Add Stack</a></p>
|
||||||
|
|
||||||
<div id="draggable" class="ui-widget-content">
|
<div id="draggable" class="ui-widget-content">
|
||||||
<p>List of books</p>
|
<p>List of books</p>
|
||||||
</div>
|
</div>
|
||||||
|
35
app/views.py
35
app/views.py
@ -9,7 +9,7 @@ from app import app, db, socketio, DOMAIN
|
|||||||
from flask import Flask, Response, render_template, request, redirect, url_for, flash, send_from_directory, jsonify, abort
|
from flask import Flask, Response, render_template, request, redirect, url_for, flash, send_from_directory, jsonify, abort
|
||||||
import json
|
import json
|
||||||
from sqlalchemy.sql.expression import func, select
|
from sqlalchemy.sql.expression import func, select
|
||||||
from app.forms import UploadForm, EditForm, SearchForm, ChatForm
|
from app.forms import UploadForm, EditForm, SearchForm, ChatForm, StackForm
|
||||||
from app.models import Book, BookSchema, Author, AuthorSchema, Stack, StackSchema, UserIns, Chat, ChatSchema
|
from app.models import Book, BookSchema, Author, AuthorSchema, Stack, StackSchema, UserIns, Chat, ChatSchema
|
||||||
from app.cover import get_cover
|
from app.cover import get_cover
|
||||||
from os import environ
|
from os import environ
|
||||||
@ -263,6 +263,39 @@ def show_stacks():
|
|||||||
stacks = db.session.query(Stack).all()
|
stacks = db.session.query(Stack).all()
|
||||||
return render_template('show_stacks.html', stacks=stacks)
|
return render_template('show_stacks.html', stacks=stacks)
|
||||||
|
|
||||||
|
@app.route('/stacks/add_stack', methods=['POST', 'GET'])
|
||||||
|
def add_stack():
|
||||||
|
form = StackForm()
|
||||||
|
stacks = db.session.query(Stack).all()
|
||||||
|
#if request.method == 'GET':
|
||||||
|
# return render_template('add_stack.html', stacks=stacks, form=form)
|
||||||
|
if request.method == 'POST':
|
||||||
|
stack_name = form.stack_name.data
|
||||||
|
stack_description = form.stack_description.data
|
||||||
|
stack = Stack(stack_name, stack_description)
|
||||||
|
if form.stack_name.data:
|
||||||
|
stack = Stack(stack_name, stack_description)
|
||||||
|
db.session.add(stack)
|
||||||
|
stacks = db.session.query(Stack).all()
|
||||||
|
#this potentially deals with the connection between books and stacks
|
||||||
|
#book = Book(title, filename, cover, file_extension, category,year_published)
|
||||||
|
|
||||||
|
#for book in books:
|
||||||
|
# book_title = book.get("title")
|
||||||
|
|
||||||
|
# if book_title:
|
||||||
|
# a = db.session.query(Book).filter_by(book_title=book_title).first()
|
||||||
|
# if a == None:
|
||||||
|
# a = Book(book_title=book_title)
|
||||||
|
# db.session.add(a)
|
||||||
|
# stacks.book.append(a)
|
||||||
|
#db.session.commit()
|
||||||
|
|
||||||
|
flash("%s stack created" % (stack_name))
|
||||||
|
return render_template('add_stack.html', stacks=stacks, form=form)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/stacks/<int:id>', methods=['POST', 'GET'])
|
@app.route('/stacks/<int:id>', methods=['POST', 'GET'])
|
||||||
def show_stack_by_id(id):
|
def show_stack_by_id(id):
|
||||||
stack = Stack.query.get(id)
|
stack = Stack.query.get(id)
|
||||||
|
@ -20,7 +20,7 @@ with open(args.csv) as f:
|
|||||||
print ('get_cover', fullpath, name)
|
print ('get_cover', fullpath, name)
|
||||||
cover = get_cover(fullpath, name)
|
cover = get_cover(fullpath, name)
|
||||||
|
|
||||||
book = Book(row['Title'], row['Filename'], cover, row['Format'], row['Shelf'], None)
|
book = Book(row['Title'], row['Filename'], cover, row['Format'], row['Category'], None)
|
||||||
|
|
||||||
db.session.add(book)
|
db.session.add(book)
|
||||||
authors = row['Author'].split(',')
|
authors = row['Author'].split(',')
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
Title,Author,Shelf,Format,OCR,Downloaded,Origin,Filename,Stack
|
Title,Author,Category,Format,OCR,Downloaded,Origin,Filename,Stack
|
||||||
Mac OS X Leopard Edition,David Pogue,Technical,pdf,1,1,LibGen,,
|
|
||||||
The Qmail Handbook,Dave Sill,Technical,pdf,1,1,LibGen,,
|
The Qmail Handbook,Dave Sill,Technical,pdf,1,1,LibGen,,
|
||||||
Hardening Network Infrastructure: Bulletproof Your Systems Before You Are Hacked!,Wes Noonan,Technical,"chm, pdf",1,1,LibGen,,Make a library
|
Hardening Network Infrastructure: Bulletproof Your Systems Before You Are Hacked!,Wes Noonan,Technical,"chm, pdf",1,1,LibGen,,Make a library
|
||||||
Cocoa Programming for Mac OS X Second Edition,Aaron Hillegaas,Technical,pdf,1,1,LibGen,,
|
Cocoa Programming for Mac OS X Second Edition,Aaron Hillegaas,Technical,pdf,1,1,LibGen,,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user