added photo upload functionality but this is a work in progress
This commit is contained in:
parent
e5a43b49b3
commit
a4986a2e84
@ -54,8 +54,10 @@ def getpublications():
|
||||
|
||||
|
||||
def hasimage(id):
|
||||
image_file = os.path.join(image_dir, "image-{0}.jpg".format(id))
|
||||
if os.path.exists(image_file):
|
||||
image_jpg = os.path.join(image_dir, "image-{0}.jpg".format(id))
|
||||
image_png = os.path.join(image_dir, "image-{0}.png".format(id))
|
||||
image_gif = os.path.join(image_dir, "image-{0}.gif".format(id))
|
||||
if os.path.exists(image_jpg):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
@ -53,3 +53,4 @@ Id,Publication,Author,Year,Custodian,Fields,Type,Publishers,License,LicenseShort
|
||||
61,Mots de la cage aux ours - woorden uit de berenkuil,Constant,2012,Varia,"words, language, Bruxelles",Softcover,Constant,Copyleft,Copyleft,,,
|
||||
62,Snake rituals and switching circuits,Florian Cramer,2009,Danny,"mass communication, personal communication, new media",paperback,Piet Zwart Institute,Creative Commons Attribution-Share Alike 3.0,Creative Commons,The function of a medium is ultimately decided by its users and not by its creators,,
|
||||
63,Magium issue 1: On Eating in isolation,Alice Strete,2020,Varia,"food, sharing, personal stories, consumption",zine,Self Published,Free Art License,Free Art License,,,No one
|
||||
64,Networks of One's Own: three takes on taking care,"Varia, Constant and Colm O’Neill",2019,Varia,"Software, internet, taking care, homebrew",paperback,Varia,Copyleft,Copyleft,,Networks Of One’s Own is a periodic para-nodal1 publication that is itself collectively within a network2.,
|
||||
|
|
@ -1,6 +1,7 @@
|
||||
"""This is the main flask library page"""
|
||||
|
||||
|
||||
import os
|
||||
import flask
|
||||
from requests import get
|
||||
from icalendar import Calendar
|
||||
@ -11,6 +12,8 @@ from flask import (
|
||||
redirect,
|
||||
request,
|
||||
)
|
||||
from flask_wtf.csrf import CSRFProtect
|
||||
from werkzeug.utils import secure_filename
|
||||
from rnrfeed.rnrfeeder import getevents, getlatestevent
|
||||
from uploadform import PublicationForm
|
||||
from borrowform import BorrowForm
|
||||
@ -23,7 +26,7 @@ from csvparser.csvparser import (
|
||||
writepublication,
|
||||
editborrowedby,
|
||||
)
|
||||
from flask_wtf.csrf import CSRFProtect
|
||||
|
||||
|
||||
|
||||
csrf = CSRFProtect()
|
||||
@ -56,6 +59,7 @@ def upload():
|
||||
if (uploadform.validate_on_submit() and
|
||||
checksecret(uploadform.secret.data)):
|
||||
id = writepublication(uploadform)
|
||||
saveimage(uploadform.image.data, id)
|
||||
return redirect(str(id), code=303)
|
||||
else:
|
||||
return render_template("upload.html", uploadform=uploadform)
|
||||
@ -120,6 +124,11 @@ def upcoming_or_latest():
|
||||
|
||||
return dict(upcoming=upcoming)
|
||||
|
||||
def saveimage(image, id):
|
||||
print(image.filename)
|
||||
filename = secure_filename("image-{0}.jpg".format(id))
|
||||
image.save(os.path.join("static/images/", filename))
|
||||
|
||||
|
||||
def checksecret(secret):
|
||||
with open("secret") as f:
|
||||
|
@ -28,6 +28,18 @@ input[type=text], select {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
input[type="file"] {
|
||||
width: 100%;
|
||||
background-color: #F1F1F1;
|
||||
z-index: -1;
|
||||
border: none;
|
||||
margin: 1em 0;
|
||||
font-size: 17px;
|
||||
color: black;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
input[type=submit] {
|
||||
background-color: #DD4F77;
|
||||
text-align: right;
|
||||
|
BIN
library/static/images/image-64.jpg
Normal file
BIN
library/static/images/image-64.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
@ -15,7 +15,7 @@
|
||||
{% endfor %}
|
||||
|
||||
<h2 id="uploadformtitle">Upload a new book</h2>
|
||||
<form method="POST" action="{{ url_for('upload') }}">
|
||||
<form method="POST" enctype="multipart/form-data" action="{{ url_for('upload') }}">
|
||||
{{ uploadform.csrf_token }}
|
||||
<fieldset class="uploadform-field">
|
||||
{{ uploadform.uploadpublication.label }}
|
||||
@ -89,7 +89,15 @@
|
||||
{{ uploadform.borrowed }}
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="borrowform-field">
|
||||
<fieldset class="fileupload-field">
|
||||
{{ uploadform.image.label }}
|
||||
{{ uploadform.image }}
|
||||
{% for message in uploadform.image.errors %}
|
||||
<div class="error">{{ message }}</div>
|
||||
{% endfor %}
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="uploadform-field">
|
||||
{{ uploadform.secret.label }}
|
||||
{{ uploadform.secret }}
|
||||
{% for message in uploadform.secret.errors %}
|
||||
|
@ -1,5 +1,8 @@
|
||||
"""Form object declaration."""
|
||||
from flask_wtf import FlaskForm
|
||||
from flask_wtf.file import FileField, FileAllowed
|
||||
from werkzeug.utils import secure_filename
|
||||
from wtforms import validators
|
||||
from wtforms import (
|
||||
StringField,
|
||||
IntegerField,
|
||||
@ -7,7 +10,6 @@ from wtforms import (
|
||||
RadioField,
|
||||
SubmitField,
|
||||
)
|
||||
from wtforms import validators
|
||||
from wtforms.validators import (
|
||||
Length,
|
||||
NumberRange,
|
||||
@ -77,6 +79,9 @@ class PublicationForm(FlaskForm):
|
||||
highlights = TextField("Highlights from the publication:")
|
||||
comments = TextField("Comments on the publication:")
|
||||
borrowed = StringField("Currently borrowed by:")
|
||||
image = FileField('Image of the book:', validators=[
|
||||
FileAllowed(['jpg', 'png', 'gif'], 'Images only!')
|
||||
])
|
||||
secret = StringField(
|
||||
"Librarians secret:",
|
||||
[
|
||||
|
Loading…
Reference in New Issue
Block a user