added photo upload functionality but this is a work in progress

This commit is contained in:
crunk 2021-04-17 23:34:28 +02:00
parent e5a43b49b3
commit a4986a2e84
7 changed files with 43 additions and 6 deletions

View File

@ -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

View File

@ -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 ONeill",2019,Varia,"Software, internet, taking care, homebrew",paperback,Varia,Copyleft,Copyleft,,Networks Of Ones Own is a periodic para-nodal1 publication that is itself collectively within a network2.,

1 Id Publication Author Year Custodian Fields Type Publishers License LicenseShort Highlights Comments Currently borrowed by
53 61 Mots de la cage aux ours - woorden uit de berenkuil Constant 2012 Varia words, language, Bruxelles Softcover Constant Copyleft Copyleft
54 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
55 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
56 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.

View File

@ -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:

View File

@ -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;

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -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 %}

View File

@ -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:",
[