diff --git a/verse/distribusisinfo.py b/verse/distribusisinfo.py index 88987c2..ccee156 100644 --- a/verse/distribusisinfo.py +++ b/verse/distribusisinfo.py @@ -18,7 +18,9 @@ class DistribusisInfo: Distribusis.publictheme.isnot(None) ).all() for distribusi in distribusis: - publicthemes.append( - f"{distribusi.publictheme} used in {distribusi.distribusiname}" + publictheme = ( + f"{distribusi.distribusiname}/{distribusi.publictheme}", + f"{distribusi.publictheme} used in {distribusi.distribusiname}", ) + publicthemes.append(publictheme) return publicthemes diff --git a/verse/editor.py b/verse/editor.py index 7e44241..f387b57 100644 --- a/verse/editor.py +++ b/verse/editor.py @@ -19,6 +19,7 @@ from distribusisinfo import DistribusisInfo from forms.uploadform import UploadForm from forms.distribusiform import DistribusiForm from forms.themeform import ThemeForm +from forms.publicthemeform import PublicThemeForm from forms.editorform import EditorForm from forms.selectorform import SelectorForm @@ -92,7 +93,8 @@ def RenderDistribusiTemplate(current_distribusi): uploadform = UploadForm() distribusiform = DistribusiForm() themeform = ThemeForm() - themeform.publicthemes.choices = DistribusisInfo.publicthemes() + publicthemeform = PublicThemeForm() + publicthemeform.publicthemes.choices = DistribusisInfo.publicthemes() selectorform = SelectorForm() files_uploaded = IsZipUploaded(current_distribusi) @@ -105,6 +107,7 @@ def RenderDistribusiTemplate(current_distribusi): uploadform=uploadform, distribusiform=distribusiform, themeform=themeform, + publicthemeform=publicthemeform, selectorform=selectorform, files_uploaded=files_uploaded, distribusi_live=distribusi_live, diff --git a/verse/forms/publicthemeform.py b/verse/forms/publicthemeform.py new file mode 100644 index 0000000..482de0f --- /dev/null +++ b/verse/forms/publicthemeform.py @@ -0,0 +1,16 @@ +"""Form object declaration.""" +from flask_wtf import FlaskForm +from wtforms import ( + RadioField, + SubmitField, +) + + +class PublicThemeForm(FlaskForm): + """PublicTheme selection form.""" + + publicthemes = RadioField( + "Public themes from other distribusi-verse users:" + ) + + save = SubmitField("Save") diff --git a/verse/forms/themeform.py b/verse/forms/themeform.py index 448875f..8844bba 100644 --- a/verse/forms/themeform.py +++ b/verse/forms/themeform.py @@ -18,8 +18,4 @@ class ThemeForm(FlaskForm): ], ) - publicthemes = RadioField( - "Public themes from other distribusi-verse users:" - ) - save = SubmitField("Save") diff --git a/verse/start.py b/verse/start.py index 1349147..1fee0c3 100644 --- a/verse/start.py +++ b/verse/start.py @@ -26,6 +26,7 @@ from distribusimodel import Distribusis from forms.uploadform import UploadForm from forms.distribusiform import DistribusiForm from forms.themeform import ThemeForm +from forms.publicthemeform import PublicThemeForm from forms.selectorform import SelectorForm # CRUD! @@ -105,7 +106,8 @@ def distribusi(): uploadform = UploadForm() distribusiform = DistribusiForm() themeform = ThemeForm() - themeform.publicthemes.choices = DistribusisInfo.publicthemes() + publicthemeform = PublicThemeForm() + publicthemeform.publicthemes.choices = DistribusisInfo.publicthemes() selectorform = SelectorForm() selectorform.distribusis.choices = DistribusisInfo.userdistribusis() @@ -152,6 +154,7 @@ def distribusi(): uploadform=uploadform, distribusiform=distribusiform, themeform=themeform, + publicthemeform=publicthemeform, selectorform=selectorform, files_uploaded=files_uploaded, distribusi_live=distribusi_live, @@ -166,7 +169,8 @@ def distribusi(): def upload(): distribusiform = DistribusiForm() themeform = ThemeForm() - themeform.publicthemes.choices = DistribusisInfo.publicthemes() + publicthemeform = PublicThemeForm() + publicthemeform.publicthemes.choices = DistribusisInfo.publicthemes() selectorform = SelectorForm() selectorform.distribusis.choices = DistribusisInfo.userdistribusis() selectorvisible = SelectorVisible() @@ -183,6 +187,7 @@ def upload(): uploadform=uploadform, distribusiform=distribusiform, themeform=themeform, + publicthemeform=publicthemeform, selectorform=selectorform, files_uploaded=files_uploaded, distribusi_live=distribusi_live, @@ -211,7 +216,8 @@ def selector(): uploadform = UploadForm() distribusiform = DistribusiForm() themeform = ThemeForm() - themeform.publicthemes.choices = DistribusisInfo.publicthemes() + publicthemeform = PublicThemeForm() + publicthemeform.publicthemes.choices = DistribusisInfo.publicthemes() selectorform = SelectorForm() selectorform.distribusis.choices = DistribusisInfo.userdistribusis() current_distribusi = CurrentDistribusi() @@ -250,6 +256,7 @@ def selector(): uploadform=uploadform, distribusiform=distribusiform, themeform=themeform, + publicthemeform=publicthemeform, selectorform=selectorform, files_uploaded=files_uploaded, distribusi_live=distribusi_live, diff --git a/verse/templates/distribusiworkflow/theme.html b/verse/templates/distribusiworkflow/theme.html index 366115e..b7e89ef 100644 --- a/verse/templates/distribusiworkflow/theme.html +++ b/verse/templates/distribusiworkflow/theme.html @@ -1,20 +1,36 @@
-

(Optional) Step 2: Theme

-

Select your Theme here. If you want your own custom css, skip and go to - step 3. Don't forget to press Save

+

(Optional) Step 2: Choose a Theme

+

Select your Theme here. If you want to make own custom css, skip and go to + step 3.

+

Don't forget to press Save

{{ themeform.csrf_token }}
{{ themeform.theme.label }} {{ themeform.theme }}
+ {% if files_uploaded or distribusi_live %} +
+ {{ themeform.save }} +
+ {% else %} +

+ You need to upload your files first before you can a css theme + for your files. +

+ Go to Step 1 + {% endif %} +
+
+
+ {{ publicthemeform.csrf_token }}
- {{ themeform.publicthemes.label }} - {{ themeform.publicthemes }} + {{ publicthemeform.publicthemes.label }} + {{ publicthemeform.publicthemes }}
{% if files_uploaded or distribusi_live %}
- {{ themeform.save }} + {{ publicthemeform.save }}
{% else %}

diff --git a/verse/themeselector.py b/verse/themeselector.py index 7ec6281..293dc2c 100644 --- a/verse/themeselector.py +++ b/verse/themeselector.py @@ -12,39 +12,44 @@ from distribusisinfo import DistribusisInfo from forms.uploadform import UploadForm from forms.distribusiform import DistribusiForm from forms.themeform import ThemeForm +from forms.publicthemeform import PublicThemeForm from forms.selectorform import SelectorForm def ThemeSelector(): themeform = ThemeForm() - themeform.publicthemes.choices = DistribusisInfo.publicthemes() + publicthemeform = PublicThemeForm() + publicthemeform.publicthemes.choices = DistribusisInfo.publicthemes() current_distribusi = CurrentDistribusi() if themeform.validate_on_submit(): - newcssfolder = os.path.join("themes/userthemes", current_distribusi) - if not os.path.exists(newcssfolder): - os.mkdir(newcssfolder) - if themeform.theme.data: - copycssfile = os.path.join( - "themes", - f"{themeform.theme.data}.css", - ) - if themeform.publicthemes.data: - publictheme = themeform.publicthemes.data - copycssfile = os.path.join( - "themes/publicthemes", - f"{distribusiname}", - f"{themename}.css", - ) - shutil.copy(copycssfile, newcssfolder) + copycssfile = os.path.join( + "themes", + f"{themeform.theme.data}.css", + ) + MoveCssToUserFolder(current_distribusi, copycssfile) + if publicthemeform.validate_on_submit(): + copycssfile = os.path.join( + "themes/publicthemes/", + f"{publicthemeform.publicthemes.data}.css", + ) + MoveCssToUserFolder(current_distribusi, copycssfile) + return RenderDistribusiTemplate( + themeform, + publicthemeform, + current_distribusi + ) + - return RenderDistribusiTemplate(current_distribusi) +def MoveCssToUserFolder(current_distribusi, copycssfile): + newcssfolder = os.path.join("themes/userthemes", current_distribusi) + if not os.path.exists(newcssfolder): + os.mkdir(newcssfolder) + shutil.copy(copycssfile, newcssfolder) -def RenderDistribusiTemplate(current_distribusi): +def RenderDistribusiTemplate(themeform, publicthemeform, current_distribusi): uploadform = UploadForm() distribusiform = DistribusiForm() - themeform = ThemeForm() - themeform.publicthemes.choices = DistribusisInfo.publicthemes() selectorform = SelectorForm() files_uploaded = IsZipUploaded(current_distribusi) @@ -57,6 +62,7 @@ def RenderDistribusiTemplate(current_distribusi): uploadform=uploadform, distribusiform=distribusiform, themeform=themeform, + publicthemeform=publicthemeform, selectorform=selectorform, files_uploaded=files_uploaded, distribusi_live=distribusi_live,