forked from crunk/distribusi-verse
refactoring selector page view
This commit is contained in:
parent
2934efbae0
commit
123e78d3c4
@ -1,6 +1,6 @@
|
||||
import os
|
||||
import shutil
|
||||
from flask import flash
|
||||
from flask import flash, render_template
|
||||
from flask_login import current_user
|
||||
from sqlalchemy.exc import (
|
||||
DataError,
|
||||
@ -11,25 +11,70 @@ from sqlalchemy.exc import (
|
||||
|
||||
from usermodel import User
|
||||
from distribusimodel import Distribusis
|
||||
|
||||
from distribusisinfo import DistribusisInfo
|
||||
|
||||
from forms.selectorform import SelectorForm
|
||||
from statuspengguna.helper import HasDistribusi
|
||||
from forms.uploadform import UploadForm
|
||||
from forms.distribusiform import DistribusiForm
|
||||
from forms.themeform import ThemeForm
|
||||
from forms.publicthemeform import PublicThemeForm
|
||||
|
||||
# UserPengguna
|
||||
from statuspengguna.helper import (
|
||||
IsZipUploaded,
|
||||
CurrentDistribusi,
|
||||
HasDistribusi,
|
||||
IsDistribusiLive,
|
||||
DistribusiLimitReached,
|
||||
)
|
||||
|
||||
from app import db
|
||||
|
||||
|
||||
def SelectorPage():
|
||||
uploadform = UploadForm()
|
||||
selectorform = SelectorForm()
|
||||
selectorform.distribusis.choices = DistribusisInfo.userdistribusinames()
|
||||
current_distribusi = CurrentDistribusi()
|
||||
if selectorform.validate_on_submit():
|
||||
if selectorform.new.data:
|
||||
SelectNewDistribusi()
|
||||
if selectorform.delete.data:
|
||||
selectorform = DeleteDistribusi(selectorform.distribusis.data)
|
||||
selectorform.distribusis.choices = (
|
||||
DistribusisInfo.userdistribusinames()
|
||||
)
|
||||
if selectorform.update.data:
|
||||
SelectUpdateDistribusi(selectorform.distribusis.data)
|
||||
current_distribusi = CurrentDistribusi()
|
||||
uploadform = AutoFillInUploadForm(uploadform, current_distribusi)
|
||||
|
||||
return RenderDistribusiTemplate(
|
||||
selectorform, uploadform, current_distribusi
|
||||
)
|
||||
|
||||
|
||||
def AutoFillInUploadForm(uploadform, current_distribusi):
|
||||
distribusi = Distribusis.query.filter_by(
|
||||
distribusiname=current_distribusi
|
||||
).first()
|
||||
uploadform.sitename.data = distribusi.distribusiname
|
||||
uploadform.sitename.render_kw = {"readonly": True}
|
||||
uploadform.term.data = distribusi.term
|
||||
uploadform.course.data = distribusi.course
|
||||
uploadform.academicyear.data = distribusi.year
|
||||
uploadform.tags.data = distribusi.tags
|
||||
return uploadform
|
||||
|
||||
|
||||
def SelectNewDistribusi():
|
||||
print("make a new distribusi")
|
||||
selectorform = SelectorForm()
|
||||
SelectCurrentDistribusi("new")
|
||||
return selectorform
|
||||
|
||||
|
||||
def SelectUpdateDistribusi(distribusiname):
|
||||
print(f"Update this distribusi {distribusiname}")
|
||||
selectorform = SelectorForm()
|
||||
SelectCurrentDistribusi(distribusiname)
|
||||
return selectorform
|
||||
|
||||
|
||||
def DeleteDistribusi(distribusiname):
|
||||
@ -49,10 +94,11 @@ def DeleteDistribusi(distribusiname):
|
||||
"themes/userthemes", distribusi.distribusiname
|
||||
)
|
||||
shutil.rmtree(cssfolder)
|
||||
selectorform.delete.errors.append("Distribusi deleted!")
|
||||
# SelectField error is list is a tuple?? why??
|
||||
# selectorform.distribusis.errors.append("Distribusi deleted!")
|
||||
except (InvalidRequestError, DataError, InterfaceError, DatabaseError):
|
||||
db.session.rollback()
|
||||
selectorform.delete.errors.append("Unknown error occured!")
|
||||
# selectorform.distribusis.errors.append("Unknown error occured!")
|
||||
flash("An error occured !", "danger")
|
||||
return selectorform
|
||||
|
||||
@ -84,3 +130,32 @@ def SelectorVisible():
|
||||
if not has_distribusi:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def RenderDistribusiTemplate(selectorform, uploadform, current_distribusi):
|
||||
distribusiform = DistribusiForm()
|
||||
themeform = ThemeForm()
|
||||
publicthemeform = PublicThemeForm()
|
||||
publicthemeform.publicthemes.choices = DistribusisInfo.publicthemes()
|
||||
files_uploaded = IsZipUploaded(current_distribusi)
|
||||
distribusi_live = IsDistribusiLive(current_distribusi)
|
||||
|
||||
# because the user has chosen to update his distribusi, we assume
|
||||
# no selected css.
|
||||
css_selected = False
|
||||
selectorvisible = SelectorVisible()
|
||||
limit_reached = DistribusiLimitReached()
|
||||
template = render_template(
|
||||
"distribusi.html",
|
||||
uploadform=uploadform,
|
||||
distribusiform=distribusiform,
|
||||
themeform=themeform,
|
||||
publicthemeform=publicthemeform,
|
||||
selectorform=selectorform,
|
||||
files_uploaded=files_uploaded,
|
||||
distribusi_live=distribusi_live,
|
||||
css_selected=css_selected,
|
||||
selectorvisible=selectorvisible,
|
||||
limit_reached=limit_reached,
|
||||
)
|
||||
return template
|
||||
|
@ -18,7 +18,6 @@ from flask_wtf.csrf import CSRFError
|
||||
|
||||
from app import create_app, login_manager
|
||||
from usermodel import User
|
||||
from distribusimodel import Distribusis
|
||||
|
||||
# Forms!
|
||||
from forms.uploadform import UploadForm
|
||||
@ -27,20 +26,13 @@ from forms.themeform import ThemeForm
|
||||
from forms.publicthemeform import PublicThemeForm
|
||||
from forms.selectorform import SelectorForm
|
||||
|
||||
# CRUD!
|
||||
from distribusiselector import (
|
||||
SelectNewDistribusi,
|
||||
SelectUpdateDistribusi,
|
||||
DeleteDistribusi,
|
||||
SelectorVisible,
|
||||
)
|
||||
|
||||
# Interface!
|
||||
from adminpage import AdminPage
|
||||
from editor import Editor
|
||||
from themeselector import ThemeSelector
|
||||
from upload import UploadNewDistribusi, UploadUpdatedFiles
|
||||
from adminpage import AdminPage
|
||||
from distribusiworkflow import DistribusiWorkflow
|
||||
from distribusiselector import SelectorPage, SelectorVisible
|
||||
from upload import UploadNewDistribusi, UploadUpdatedFiles
|
||||
|
||||
# UserPengguna
|
||||
from statuspengguna.helper import (
|
||||
@ -153,59 +145,7 @@ def editor():
|
||||
@APP.route("/selector", methods=["GET", "POST"])
|
||||
@login_required
|
||||
def selector():
|
||||
selectorform = SelectorForm()
|
||||
uploadform = UploadForm()
|
||||
distribusiform = DistribusiForm()
|
||||
themeform = ThemeForm()
|
||||
publicthemeform = PublicThemeForm()
|
||||
publicthemeform.publicthemes.choices = DistribusisInfo.publicthemes()
|
||||
selectorform = SelectorForm()
|
||||
selectorform.distribusis.choices = DistribusisInfo.userdistribusinames()
|
||||
current_distribusi = CurrentDistribusi()
|
||||
if selectorform.validate_on_submit():
|
||||
if selectorform.new.data:
|
||||
selectorform = SelectNewDistribusi()
|
||||
if selectorform.delete.data:
|
||||
selectorform = DeleteDistribusi(selectorform.distribusis.data)
|
||||
selectorform.distribusis.choices = (
|
||||
DistribusisInfo.userdistribusinames()
|
||||
)
|
||||
if selectorform.update.data:
|
||||
selectorform = SelectUpdateDistribusi(
|
||||
selectorform.distribusis.data
|
||||
)
|
||||
current_distribusi = CurrentDistribusi()
|
||||
distribusi = Distribusis.query.filter_by(
|
||||
distribusiname=current_distribusi
|
||||
).first()
|
||||
uploadform.sitename.data = distribusi.distribusiname
|
||||
uploadform.sitename.render_kw = {"readonly": True}
|
||||
uploadform.term.data = distribusi.term
|
||||
uploadform.course.data = distribusi.course
|
||||
uploadform.academicyear.data = distribusi.year
|
||||
uploadform.tags.data = distribusi.tags
|
||||
|
||||
files_uploaded = IsZipUploaded(current_distribusi)
|
||||
distribusi_live = IsDistribusiLive(current_distribusi)
|
||||
# because the user has chosen to update his distribusi, we assume
|
||||
# no selected css.
|
||||
css_selected = False
|
||||
selectorvisible = SelectorVisible()
|
||||
limit_reached = DistribusiLimitReached()
|
||||
template = render_template(
|
||||
"distribusi.html",
|
||||
uploadform=uploadform,
|
||||
distribusiform=distribusiform,
|
||||
themeform=themeform,
|
||||
publicthemeform=publicthemeform,
|
||||
selectorform=selectorform,
|
||||
files_uploaded=files_uploaded,
|
||||
distribusi_live=distribusi_live,
|
||||
css_selected=css_selected,
|
||||
selectorvisible=selectorvisible,
|
||||
limit_reached=limit_reached,
|
||||
)
|
||||
return template
|
||||
return SelectorPage()
|
||||
|
||||
|
||||
@APP.route("/stash/<path:path>")
|
||||
|
@ -77,20 +77,16 @@ div#buttons{
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
div#buttons .logout input{
|
||||
border: none;
|
||||
background: #E0B0FF;
|
||||
text-decoration: none;
|
||||
margin: 1px;
|
||||
}
|
||||
|
||||
div#buttons .distribusi input{
|
||||
border: none;
|
||||
background: #fff600;
|
||||
text-decoration: none;
|
||||
margin: 0.2em;
|
||||
}
|
||||
div#buttons .distribusi input:hover{
|
||||
background: #ffbf00;
|
||||
|
||||
}
|
||||
fieldset.required {
|
||||
border: none;
|
||||
}
|
||||
@ -167,6 +163,7 @@ a:active {
|
||||
#fancyboi::before {
|
||||
content: "$ ";
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
@keyframes flash {
|
||||
50% { opacity: 0; }
|
||||
|
@ -3,7 +3,7 @@
|
||||
<div id="buttons">
|
||||
<div class="overview">
|
||||
<a href="/">
|
||||
<input type="button" name="button" value="Overview"></input>
|
||||
<input type="button" name="button" value="Main page"></input>
|
||||
</a>
|
||||
</div>
|
||||
<div class="logout">
|
||||
|
Loading…
Reference in New Issue
Block a user