Improve the Poser Setup page; allow poser dir refresh

This commit is contained in:
Lance Edgar 2022-03-05 09:12:01 -06:00
parent 128657810b
commit 33abeb1aca
2 changed files with 160 additions and 40 deletions

View file

@ -26,6 +26,7 @@ Various common views
from __future__ import unicode_literals, absolute_import
import os
import six
from rattail.db import model
@ -206,22 +207,67 @@ class CommonView(View):
app = self.get_rattail_app()
app_title = self.rattail_config.app_title()
poser_handler = app.get_poser_handler()
poser_dir = poser_handler.get_default_poser_dir()
poser_dir_exists = os.path.isdir(poser_dir)
if self.request.method == 'POST':
try:
path = poser_handler.make_poser_dir()
except Exception as error:
self.request.session.flash(simple_error(error), 'error')
else:
self.request.session.flash("Poser folder created at: {}".format(path))
self.request.session.flash("Please restart the web app!", 'warning')
return self.redirect(self.request.route_url('home'))
# maybe refresh poser dir
if self.request.POST.get('action') == 'refresh':
poser_handler.refresh_poser_dir()
self.request.session.flash("Poser folder has been refreshed.")
else: # otherwise make poser dir
if poser_dir_exists:
self.request.session.flash("Poser folder already exists!", 'error')
else:
try:
path = poser_handler.make_poser_dir()
except Exception as error:
self.request.session.flash(simple_error(error), 'error')
else:
self.request.session.flash("Poser folder created at: {}".format(path))
self.request.session.flash("Please restart the web app!", 'warning')
return self.redirect(self.request.route_url('home'))
try:
from poser import reports
reports_error = None
except Exception as error:
reports = None
reports_error = simple_error(error)
try:
from poser.web import views
views_error = None
except Exception as error:
views = None
views_error = simple_error(error)
try:
import poser
poser_error = None
except Exception as error:
poser = None
poser_error = simple_error(error)
return {
'use_buefy': use_buefy,
'app_title': app_title,
'index_title': app_title,
'poser_dir': poser_handler.get_default_poser_dir(),
'poser_dir': poser_dir,
'poser_dir_exists': poser_dir_exists,
'poser_imported': {
'poser': poser,
'reports': reports,
'views': views,
},
'poser_import_errors': {
'poser': poser_error,
'reports': reports_error,
'views': views_error,
},
}
@classmethod