Browse Source

update theme after initial upload

current_wdka_release
crunk 3 years ago
parent
commit
8214b714ba
  1. 27
      verse/selector.py
  2. 34
      verse/start.py
  3. 31
      verse/statuspengguna/helper.py
  4. 2
      verse/templates/distribusiworkflow/editcss.html
  5. 4
      verse/templates/distribusiworkflow/launch.html
  6. 2
      verse/templates/distribusiworkflow/theme.html
  7. 2
      verse/templates/editor.html
  8. 3
      verse/themes/userstyles/.gitignore
  9. 10
      verse/upload.py

27
verse/selector.py

@ -6,39 +6,25 @@ from flask_login import current_user
from usermodel import User
from distribusimodel import Distribusis
from forms.selectorform import SelectorForm
from forms.selectorform import SelectorForm
from statuspengguna.helper import HasDistribusi
from statuspengguna.helper import DistribusiSelected
from statuspengguna.helper import SelectCurrentDistribusi
from app import db
def SelectNewDistribusi():
print("make a new distribusi")
selectorform = SelectorForm()
user = User.query.filter_by(email=current_user.email).first()
try:
user.currentdistribusi = "new"
db.session.commit()
except:
db.session.rollback()
selectorform.distribusis.errors.append("Unknown error occured!")
flash("An error occured !", "danger")
SelectCurrentDistribusi("new")
return selectorform
def SelectUpdateDistribusi(distribusiname):
print(f"Update this distribusi {distribusiname}")
selectorform = SelectorForm()
user = User.query.filter_by(email=current_user.email).first()
try:
user.currentdistribusi = distribusiname
db.session.commit()
except:
db.session.rollback()
selectorform.distribusis.errors.append("Unknown error occured!")
flash("An error occured !", "danger")
SelectCurrentDistribusi(distribusiname)
return selectorform
@ -55,6 +41,11 @@ def DeleteDistribusi(distribusiname):
db.session.commit()
userfolder = os.path.join("stash", distribusi.distribusiname)
shutil.rmtree(userfolder)
cssfolder = os.path.join(
"themes/userstyles",
distribusi.distribusiname
)
shutil.rmtree(cssfolder)
except:
db.session.rollback()
selectorform.distribusis.errors.append("Unknown error occured!")

34
verse/start.py

@ -47,6 +47,7 @@ from statuspengguna.helper import (
IsCssSelected,
CurrentDistribusi,
HasDistribusi,
IsDistribusiLive,
ResetUserState,
)
from statuspengguna.loginuser import LoginUser
@ -70,7 +71,7 @@ def index():
ResetUserState()
uploadform = UploadForm()
distribusis = Distribusis.query.filter(
Distribusis.distribusiname.isnot(None)
Distribusis.visible.isnot(False)
).all()
distribusies = {}
for distribusi in distribusis:
@ -109,6 +110,7 @@ def distribusi():
selectorvisible = SelectorVisible()
current_distribusi = CurrentDistribusi()
files_uploaded = IsZipUploaded(current_distribusi)
distribusi_live = IsDistribusiLive(current_distribusi)
css_selected = IsCssSelected(current_distribusi)
user = User.query.filter_by(email=current_user.email).first()
distribusi = Distribusis.query.filter_by(
@ -128,15 +130,17 @@ def distribusi():
os.remove(os.path.join(userfolder, zipfilename))
# To Do: Make sure nothing can be executed from the upload folder
cssfile = ""
for filename in os.listdir(userfolder):
cssfolder = os.path.join("themes/userstyles", distribusi.distribusiname)
for filename in os.listdir(cssfolder):
if filename.endswith(".css"):
cssfile = os.path.join(userfolder, filename)
cssfile = os.path.join(cssfolder, filename)
parser = build_argparser()
args = parser.parse_args(["-s", cssfile])
distribusify(args, userfolder)
distribusi.visible = True
user.currentdistribusi = None
os.remove(cssfile)
db.session.commit()
return redirect(url_for("index"))
template = render_template(
@ -146,6 +150,7 @@ def distribusi():
themeform=themeform,
selectorform=selectorform,
files_uploaded=files_uploaded,
distribusi_live=distribusi_live,
css_selected=css_selected,
selectorvisible=selectorvisible,
)
@ -168,6 +173,7 @@ def upload():
else:
uploadform = UploadUpdatedFiles(APP.config["UPLOAD_FOLDER"])
files_uploaded = IsZipUploaded(uploadform.sitename.data)
distribusi_live = IsDistribusiLive(current_distribusi)
css_selected = IsCssSelected(current_distribusi)
template = render_template(
"distribusi.html",
@ -176,6 +182,7 @@ def upload():
themeform=themeform,
selectorform=selectorform,
files_uploaded=files_uploaded,
distribusi_live=distribusi_live,
css_selected=css_selected,
selectorvisible=selectorvisible,
)
@ -193,15 +200,20 @@ def theme():
selectorvisible = SelectorVisible()
current_distribusi = CurrentDistribusi()
print(current_distribusi)
files_uploaded = IsZipUploaded(current_distribusi)
distribusi_live = IsDistribusiLive(current_distribusi)
css_selected = IsCssSelected(current_distribusi)
if themeform.validate_on_submit():
newuserfolder = os.path.join("stash", current_distribusi)
newcssfolder = os.path.join("themes/userstyles", current_distribusi)
if not os.path.exists(newcssfolder):
os.mkdir(newcssfolder)
copycssfile = os.path.join(
"themes",
"{}.css".format(themeform.theme.data),
)
shutil.copy(copycssfile, newuserfolder)
shutil.copy(copycssfile, newcssfolder)
css_selected = IsCssSelected(current_distribusi)
template = render_template(
@ -211,6 +223,7 @@ def theme():
themeform=themeform,
selectorform=selectorform,
files_uploaded=files_uploaded,
distribusi_live=distribusi_live,
css_selected=css_selected,
selectorvisible=selectorvisible,
)
@ -223,6 +236,7 @@ def editor():
editorform = EditorForm()
current_distribusi = CurrentDistribusi()
files_uploaded = IsZipUploaded(current_distribusi)
distribusi_live = IsDistribusiLive(current_distribusi)
cssplaceholder = "Try out your CSS here"
with open('themes/editor/placeholder.css') as f:
cssplaceholder = f.read()
@ -233,7 +247,8 @@ def editor():
htmlplaceholder = f.read()
print(htmlplaceholder)
if editorform.validate_on_submit():
userfolder = os.path.join("stash", current_distribusi)
userfolder = os.path.join("themes/userstyles", current_distribusi)
os.mkdir(newuserfolder)
cssfilename = "{}.css".format(editorform.cssname.data)
with open(os.path.join(userfolder, cssfilename), "w") as cssfile:
cssfile.write(editorform.css.data)
@ -242,6 +257,7 @@ def editor():
template = render_template(
"editor.html",
files_uploaded=files_uploaded,
distribusi_live=distribusi_live,
editorform=editorform,
htmlplaceholder=htmlplaceholder,
)
@ -280,7 +296,10 @@ def selector():
uploadform.tags.data = distribusi.tags
files_uploaded = IsZipUploaded(current_distribusi)
css_selected = IsCssSelected(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()
template = render_template(
@ -290,6 +309,7 @@ def selector():
themeform=themeform,
selectorform=selectorform,
files_uploaded=files_uploaded,
distribusi_live=distribusi_live,
css_selected=css_selected,
selectorvisible=selectorvisible,
)

31
verse/statuspengguna/helper.py

@ -13,12 +13,25 @@ def IsZipUploaded(distribusiname):
if os.path.exists(os.path.join(userfolder, zipfilename)):
print("folder with zipfile found, file uploaded")
return True
print("distribusi folder has no zipfile")
return False
def IsDistribusiLive(distribusiname):
userfolder = os.path.join("stash", distribusiname)
if os.path.exists(userfolder):
zipfilename = "{}.zip".format(distribusiname)
if os.path.exists(os.path.join(userfolder, zipfilename)):
print("folder with zipfile found, file uploaded")
return False
if len(os.listdir(userfolder)) > 0:
return True
print("distribusi folder is empty")
return False
def IsCssSelected(distribusiname):
userfolder = os.path.join("stash", distribusiname)
userfolder = os.path.join("themes/userstyles", distribusiname)
if os.path.exists(userfolder):
for file in os.listdir(userfolder):
if file.endswith(".css"):
@ -33,9 +46,6 @@ def HasDistribusi():
if distribusi is None:
print("no distribusi found")
return False
if distribusi.visible is False:
print("distribusi not visible")
return False
return True
@ -43,8 +53,6 @@ def CurrentDistribusi():
user = User.query.filter_by(email=current_user.email).first()
if user.currentdistribusi is None:
return "None"
if user.currentdistribusi == "new":
return "new"
return user.currentdistribusi
@ -67,6 +75,17 @@ def ResetUserState():
flash("An error occured !", "danger")
def SelectCurrentDistribusi(distribusiname):
user = User.query.filter_by(email=current_user.email).first()
try:
user.currentdistribusi = distribusiname
db.session.commit()
except:
db.session.rollback()
selectorform.distribusis.errors.append("Unknown error occured!")
flash("An error occured !", "danger")
# def IsThemeSelected
# def IsCustomThemePresent
# def IsDistribusiLive

2
verse/templates/distribusiworkflow/editcss.html

@ -1,6 +1,6 @@
<div id="edit" class="workflow">
<h3>(Optional) Step 3: Edit</h3>
{% if files_uploaded %}
{% if files_uploaded or distribusi_live %}
<a href="/editor"><p>Go to CSS editor</p></a>
{% else %}
<p>

4
verse/templates/distribusiworkflow/launch.html

@ -1,10 +1,10 @@
<div id="launch" class="workflow">
<h3>Step 4: Distribusi</h3>
<p>Run distribusi on your files, this will generate your website and make
<p>Run distribusi on your files. This will generate your website and make
your content public.</p>
<form method="POST" enctype="multipart/form-data" action="{{ url_for('distribusi') }}">
{{ distribusiform.csrf_token }}
{% if files_uploaded %}
{% if files_uploaded or distribusi_live %}
<fieldset class="button required">
{{ distribusiform.submit }}
</fieldset>

2
verse/templates/distribusiworkflow/theme.html

@ -8,7 +8,7 @@
{{ themeform.theme.label }}
{{ themeform.theme }}
</fieldset>
{% if files_uploaded %}
{% if files_uploaded or distribusi_live %}
<fieldset class="button required">
{{ themeform.save }}
</fieldset>

2
verse/templates/editor.html

@ -19,7 +19,7 @@
</fieldset>
</div>
<div class="editarea">
{% if files_uploaded %}
{% if files_uploaded or distribusi_live %}
<fieldset class="required">
{{ editorform.cssname.label }}
{{ editorform.cssname }}

3
verse/themes/userstyles/.gitignore

@ -0,0 +1,3 @@
*
*/
!.gitignore

10
verse/upload.py

@ -1,16 +1,20 @@
import os
import shutil
from flask import flash
from flask_login import current_user
from sqlalchemy.exc import (
IntegrityError,
InvalidRequestError,
)
from app import db
from usermodel import User
from distribusimodel import Distribusis
from flask_login import current_user
from statuspengguna.helper import CurrentDistribusi
from statuspengguna.helper import SelectCurrentDistribusi
from forms.uploadform import UploadForm
from app import db
def UploadNewDistribusi(uploadfolder):
@ -39,7 +43,7 @@ def UploadNewDistribusi(uploadfolder):
"distribusi name already exists!"
)
flash("distribusi name already exists!", "warning")
SelectCurrentDistribusi(newdistribusi.distribusiname)
zipfilename = "{}.zip".format(newdistribusi.distribusiname)
zipfile = uploadform.zipfile.data
zipfile.save(os.path.join(uploadfolder, zipfilename))

Loading…
Cancel
Save