Enhance error logging in view configuration and update department change view routing

1 parent a8cf0360
...@@ -7,15 +7,14 @@ import re ...@@ -7,15 +7,14 @@ import re
import datetime import datetime
import decimal import decimal
import deform import deform
import mimetypes import traceback
from pkg_resources import resource_filename from pkg_resources import resource_filename
from pyramid.renderers import JSON from pyramid.renderers import JSON
from pyramid_beaker import session_factory_from_settings from pyramid_beaker import session_factory_from_settings
from pyramid.config import Configurator from pyramid.config import Configurator
from pyramid.events import NewRequest, BeforeRender, subscriber from pyramid.events import NewRequest, BeforeRender, subscriber
from pyramid_mailer import mailer_factory_from_settings from pyramid_mailer import mailer_factory_from_settings
from sqlalchemy import engine_from_config from sqlalchemy import engine_from_config, or_
from opensipkd.tools import get_settings, DefaultTimeZone, dmy, dmyhms, get_ext from opensipkd.tools import get_settings, DefaultTimeZone, dmy, dmyhms, get_ext
from .security import MySecurityPolicy, get_user from .security import MySecurityPolicy, get_user
...@@ -383,19 +382,17 @@ def _add_view_config(config, paket, route): ...@@ -383,19 +382,17 @@ def _add_view_config(config, paket, route):
route["func_name"] = "_".join(["view", func_name]) route["func_name"] = "_".join(["view", func_name])
file_name = f"{paket}.{route.get('file_name')}" file_name = f"{paket}.{route.get('file_name')}"
if not file_name:
_logging.error(f"File not found: {file_name}")
return
# _logging.debug(f"File Name: {file_name}") # _logging.debug(f"File Name: {file_name}")
attr = f"{route.get('func_name')}" attr = f"{route.get('func_name')}"
try: try:
class_name = route.get("class_name", None) class_name = route.get("class_name", None)
if not file_name:
_logging.error(f"File not found: {file_name}")
return
_views = importlib.import_module(file_name)
if not class_name: if not class_name:
class_name = "Views" class_name = "Views"
_views = importlib.import_module(file_name)
if not hasattr(_views, class_name): if not hasattr(_views, class_name):
_logging.error( _logging.error(
f"Class {class_name} not found in {file_name}") f"Class {class_name} not found in {file_name}")
...@@ -432,6 +429,7 @@ def _add_view_config(config, paket, route): ...@@ -432,6 +429,7 @@ def _add_view_config(config, paket, route):
config.add_view(views, **params) config.add_view(views, **params)
except Exception as e: except Exception as e:
traceback.print_exc()
_logging.error("Add View Config :{code} Kode {error}" _logging.error("Add View Config :{code} Kode {error}"
.format(code=route["kode"], error=str(e))) .format(code=route["kode"], error=str(e)))
# _logging.debug(f"Route: {route.get('kode')} {route.get('path')}") # _logging.debug(f"Route: {route.get('kode')} {route.get('path')}")
......
...@@ -25,6 +25,8 @@ class Views(BaseView): ...@@ -25,6 +25,8 @@ class Views(BaseView):
super().__init__(request) super().__init__(request)
self.add_schema = AddSchema self.add_schema = AddSchema
self.table = Departemen self.table = Departemen
self.next_home = self.req.route_url('base-home')
self.route_url = 'departemen-chg'
def get_bindings(self, row=None): def get_bindings(self, row=None):
departemens = self.table.get_list() departemens = self.table.get_list()
...@@ -33,9 +35,9 @@ class Views(BaseView): ...@@ -33,9 +35,9 @@ class Views(BaseView):
def view_change(self): def view_change(self):
next_url = self.req.params.get('next') next_url = self.req.params.get('next')
if not next_url: if not next_url:
next_url = self.req.referrer or self.req.route_url('base-home') next_url = self.req.referrer or self.next_home
return HTTPFound(self.req.route_url('departemen-chg', _query={'next': next_url})) return HTTPFound(self.req.route_url(self.route_url, _query={'next': next_url}))
if self.req.POST: if self.req.POST:
if 'save' in self.req.POST: if 'save' in self.req.POST:
form = self.get_form(self.add_schema) form = self.get_form(self.add_schema)
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!