Compare commits
	
		
			10 commits
		
	
	
		
			7fcca23071
			...
			dc941bdb31
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| dc941bdb31 | |||
| d362a1cbd5 | |||
| 7e532e2472 | |||
| 0934c64809 | |||
| 6c8a0f6d10 | |||
| 50f8f99909 | |||
| 055864eb4e | |||
| 0f66d24dd4 | |||
| f989f41e86 | |||
| 019d30d8a0 | 
					 20 changed files with 86 additions and 76 deletions
				
			
		
							
								
								
									
										12
									
								
								.pylintrc
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								.pylintrc
									
										
									
									
									
								
							| 
						 | 
					@ -3,25 +3,16 @@
 | 
				
			||||||
[MESSAGES CONTROL]
 | 
					[MESSAGES CONTROL]
 | 
				
			||||||
disable=fixme,
 | 
					disable=fixme,
 | 
				
			||||||
        abstract-method,
 | 
					        abstract-method,
 | 
				
			||||||
        anomalous-backslash-in-string,
 | 
					 | 
				
			||||||
        arguments-differ,
 | 
					        arguments-differ,
 | 
				
			||||||
        arguments-renamed,
 | 
					        arguments-renamed,
 | 
				
			||||||
        assignment-from-no-return,
 | 
					        assignment-from-no-return,
 | 
				
			||||||
        attribute-defined-outside-init,
 | 
					        attribute-defined-outside-init,
 | 
				
			||||||
        bare-except,
 | 
					 | 
				
			||||||
        broad-exception-caught,
 | 
					 | 
				
			||||||
        consider-using-dict-comprehension,
 | 
					        consider-using-dict-comprehension,
 | 
				
			||||||
        consider-using-dict-items,
 | 
					        consider-using-dict-items,
 | 
				
			||||||
        consider-using-generator,
 | 
					        consider-using-generator,
 | 
				
			||||||
        consider-using-get,
 | 
					        consider-using-get,
 | 
				
			||||||
        consider-using-set-comprehension,
 | 
					        consider-using-set-comprehension,
 | 
				
			||||||
        cyclic-import,
 | 
					 | 
				
			||||||
        dangerous-default-value,
 | 
					 | 
				
			||||||
        deprecated-method,
 | 
					 | 
				
			||||||
        duplicate-code,
 | 
					        duplicate-code,
 | 
				
			||||||
        implicit-str-concat,
 | 
					 | 
				
			||||||
        import-outside-toplevel,
 | 
					 | 
				
			||||||
        invalid-name,
 | 
					 | 
				
			||||||
        isinstance-second-argument-not-valid-type,
 | 
					        isinstance-second-argument-not-valid-type,
 | 
				
			||||||
        keyword-arg-before-vararg,
 | 
					        keyword-arg-before-vararg,
 | 
				
			||||||
        missing-function-docstring,
 | 
					        missing-function-docstring,
 | 
				
			||||||
| 
						 | 
					@ -49,8 +40,5 @@ disable=fixme,
 | 
				
			||||||
        unnecessary-lambda-assignment,
 | 
					        unnecessary-lambda-assignment,
 | 
				
			||||||
        unspecified-encoding,
 | 
					        unspecified-encoding,
 | 
				
			||||||
        unused-argument,
 | 
					        unused-argument,
 | 
				
			||||||
        unused-wildcard-import,
 | 
					 | 
				
			||||||
        use-a-generator,
 | 
					        use-a-generator,
 | 
				
			||||||
        use-dict-literal,
 | 
					        use-dict-literal,
 | 
				
			||||||
        wildcard-import,
 | 
					 | 
				
			||||||
        wrong-import-order,
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,7 +63,7 @@ def webapp(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    elif runner == "uvicorn":
 | 
					    elif runner == "uvicorn":
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        import uvicorn  # pylint: disable=import-error
 | 
					        import uvicorn  # pylint: disable=import-error,import-outside-toplevel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # need service details from config
 | 
					        # need service details from config
 | 
				
			||||||
        spec = config.require(f"{config.appname}.web.app.spec")
 | 
					        spec = config.require(f"{config.appname}.web.app.spec")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,7 +27,7 @@
 | 
				
			||||||
from wuttjamaican.email import EmailSetting
 | 
					from wuttjamaican.email import EmailSetting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class feedback(EmailSetting):
 | 
					class feedback(EmailSetting):  # pylint: disable=invalid-name
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    Sent when user submits feedback via the web app.
 | 
					    Sent when user submits feedback via the web app.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -274,14 +274,14 @@ class Form:  # pylint: disable=too-many-instance-attributes
 | 
				
			||||||
        schema=None,
 | 
					        schema=None,
 | 
				
			||||||
        model_class=None,
 | 
					        model_class=None,
 | 
				
			||||||
        model_instance=None,
 | 
					        model_instance=None,
 | 
				
			||||||
        nodes={},
 | 
					        nodes=None,
 | 
				
			||||||
        widgets={},
 | 
					        widgets=None,
 | 
				
			||||||
        validators={},
 | 
					        validators=None,
 | 
				
			||||||
        defaults={},
 | 
					        defaults=None,
 | 
				
			||||||
        readonly=False,
 | 
					        readonly=False,
 | 
				
			||||||
        readonly_fields=[],
 | 
					        readonly_fields=None,
 | 
				
			||||||
        required_fields={},
 | 
					        required_fields=None,
 | 
				
			||||||
        labels={},
 | 
					        labels=None,
 | 
				
			||||||
        action_method="post",
 | 
					        action_method="post",
 | 
				
			||||||
        action_url=None,
 | 
					        action_url=None,
 | 
				
			||||||
        reset_url=None,
 | 
					        reset_url=None,
 | 
				
			||||||
| 
						 | 
					@ -465,7 +465,9 @@ class Form:  # pylint: disable=too-many-instance-attributes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Node overrides are tracked via :attr:`nodes`.
 | 
					        Node overrides are tracked via :attr:`nodes`.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        from wuttaweb.forms.schema import ObjectNode
 | 
					        from wuttaweb.forms.schema import (  # pylint: disable=import-outside-toplevel
 | 
				
			||||||
 | 
					            ObjectNode,
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if isinstance(nodeinfo, colander.SchemaNode):
 | 
					        if isinstance(nodeinfo, colander.SchemaNode):
 | 
				
			||||||
            # assume nodeinfo is a complete node
 | 
					            # assume nodeinfo is a complete node
 | 
				
			||||||
| 
						 | 
					@ -494,7 +496,7 @@ class Form:  # pylint: disable=too-many-instance-attributes
 | 
				
			||||||
        :param widget: Either a :class:`deform:deform.widget.Widget`
 | 
					        :param widget: Either a :class:`deform:deform.widget.Widget`
 | 
				
			||||||
           instance, or else a widget "type" name.
 | 
					           instance, or else a widget "type" name.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        :param \**kwargs: Any remaining kwargs are passed along to
 | 
					        :param \\**kwargs: Any remaining kwargs are passed along to
 | 
				
			||||||
           :meth:`make_widget()` - if applicable.
 | 
					           :meth:`make_widget()` - if applicable.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Widget overrides are tracked via :attr:`widgets`.
 | 
					        Widget overrides are tracked via :attr:`widgets`.
 | 
				
			||||||
| 
						 | 
					@ -526,13 +528,13 @@ class Form:  # pylint: disable=too-many-instance-attributes
 | 
				
			||||||
        :param widget_type: Which of the above (or custom) widget
 | 
					        :param widget_type: Which of the above (or custom) widget
 | 
				
			||||||
           type to create.
 | 
					           type to create.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        :param \**kwargs: Remaining kwargs are passed as-is to the
 | 
					        :param \\**kwargs: Remaining kwargs are passed as-is to the
 | 
				
			||||||
           widget factory.
 | 
					           widget factory.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        :returns: New widget instance, or ``None`` if e.g. it could
 | 
					        :returns: New widget instance, or ``None`` if e.g. it could
 | 
				
			||||||
           not determine how to create the widget.
 | 
					           not determine how to create the widget.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        from wuttaweb.forms import widgets
 | 
					        from wuttaweb.forms import widgets  # pylint: disable=import-outside-toplevel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if widget_type == "notes":
 | 
					        if widget_type == "notes":
 | 
				
			||||||
            return widgets.NotesWidget(**kwargs)
 | 
					            return widgets.NotesWidget(**kwargs)
 | 
				
			||||||
| 
						 | 
					@ -556,7 +558,7 @@ class Form:  # pylint: disable=too-many-instance-attributes
 | 
				
			||||||
        * :class:`sqlalchemy:sqlalchemy.types.DateTime` ->
 | 
					        * :class:`sqlalchemy:sqlalchemy.types.DateTime` ->
 | 
				
			||||||
          :class:`~wuttaweb.forms.widgets.WuttaDateTimeWidget`
 | 
					          :class:`~wuttaweb.forms.widgets.WuttaDateTimeWidget`
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        from wuttaweb.forms import widgets
 | 
					        from wuttaweb.forms import widgets  # pylint: disable=import-outside-toplevel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if not self.model_class:
 | 
					        if not self.model_class:
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
| 
						 | 
					@ -586,7 +588,9 @@ class Form:  # pylint: disable=too-many-instance-attributes
 | 
				
			||||||
        :param widget: :class:`~wuttaweb.grids.base.Grid` instance,
 | 
					        :param widget: :class:`~wuttaweb.grids.base.Grid` instance,
 | 
				
			||||||
           pre-configured and (usually) with data.
 | 
					           pre-configured and (usually) with data.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        from wuttaweb.forms.widgets import GridWidget
 | 
					        from wuttaweb.forms.widgets import (  # pylint: disable=import-outside-toplevel
 | 
				
			||||||
 | 
					            GridWidget,
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        widget = GridWidget(self.request, grid)
 | 
					        widget = GridWidget(self.request, grid)
 | 
				
			||||||
        self.set_widget(key, widget)
 | 
					        self.set_widget(key, widget)
 | 
				
			||||||
| 
						 | 
					@ -599,7 +603,7 @@ class Form:  # pylint: disable=too-many-instance-attributes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if grid.key in self.grid_vue_context:
 | 
					        if grid.key in self.grid_vue_context:
 | 
				
			||||||
            log.warning(
 | 
					            log.warning(
 | 
				
			||||||
                "grid data with key '%s' already registered, " "but will be replaced",
 | 
					                "grid data with key '%s' already registered, but will be replaced",
 | 
				
			||||||
                grid.key,
 | 
					                grid.key,
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,7 +63,7 @@ class WuttaDateTime(colander.DateTime):
 | 
				
			||||||
        for fmt in formats:
 | 
					        for fmt in formats:
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                return datetime.datetime.strptime(cstruct, fmt)
 | 
					                return datetime.datetime.strptime(cstruct, fmt)
 | 
				
			||||||
            except:
 | 
					            except Exception:  # pylint: disable=broad-exception-caught
 | 
				
			||||||
                pass
 | 
					                pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        node.raise_invalid("Invalid date and/or time")
 | 
					        node.raise_invalid("Invalid date and/or time")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,8 +37,8 @@ from paginate_sqlalchemy import SqlalchemyOrmPage
 | 
				
			||||||
from pyramid.renderers import render
 | 
					from pyramid.renderers import render
 | 
				
			||||||
from webhelpers2.html import HTML
 | 
					from webhelpers2.html import HTML
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from wuttaweb.util import FieldList, get_model_fields, make_json_safe
 | 
					 | 
				
			||||||
from wuttjamaican.db.util import UUID
 | 
					from wuttjamaican.db.util import UUID
 | 
				
			||||||
 | 
					from wuttaweb.util import FieldList, get_model_fields, make_json_safe
 | 
				
			||||||
from wuttaweb.grids.filters import default_sqlalchemy_filters, VerbNotSupported
 | 
					from wuttaweb.grids.filters import default_sqlalchemy_filters, VerbNotSupported
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -379,14 +379,14 @@ class Grid:  # pylint: disable=too-many-instance-attributes
 | 
				
			||||||
        key=None,
 | 
					        key=None,
 | 
				
			||||||
        columns=None,
 | 
					        columns=None,
 | 
				
			||||||
        data=None,
 | 
					        data=None,
 | 
				
			||||||
        labels={},
 | 
					        labels=None,
 | 
				
			||||||
        renderers={},
 | 
					        renderers=None,
 | 
				
			||||||
        enums={},
 | 
					        enums=None,
 | 
				
			||||||
        checkable=False,
 | 
					        checkable=False,
 | 
				
			||||||
        row_class=None,
 | 
					        row_class=None,
 | 
				
			||||||
        actions=[],
 | 
					        actions=None,
 | 
				
			||||||
        linked_columns=[],
 | 
					        linked_columns=None,
 | 
				
			||||||
        hidden_columns=[],
 | 
					        hidden_columns=None,
 | 
				
			||||||
        sortable=False,
 | 
					        sortable=False,
 | 
				
			||||||
        sort_multiple=True,
 | 
					        sort_multiple=True,
 | 
				
			||||||
        sort_on_backend=True,
 | 
					        sort_on_backend=True,
 | 
				
			||||||
| 
						 | 
					@ -467,7 +467,7 @@ class Grid:  # pylint: disable=too-many-instance-attributes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # enums
 | 
					        # enums
 | 
				
			||||||
        self.enums = {}
 | 
					        self.enums = {}
 | 
				
			||||||
        for k in enums:
 | 
					        for k in enums or {}:
 | 
				
			||||||
            self.set_enum(k, enums[k])
 | 
					            self.set_enum(k, enums[k])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_columns(self):
 | 
					    def get_columns(self):
 | 
				
			||||||
| 
						 | 
					@ -1853,7 +1853,7 @@ class Grid:  # pylint: disable=too-many-instance-attributes
 | 
				
			||||||
                data = filtr.apply_filter(data)
 | 
					                data = filtr.apply_filter(data)
 | 
				
			||||||
            except VerbNotSupported as error:
 | 
					            except VerbNotSupported as error:
 | 
				
			||||||
                log.warning("verb not supported for '%s' filter: %s", key, error.verb)
 | 
					                log.warning("verb not supported for '%s' filter: %s", key, error.verb)
 | 
				
			||||||
            except:
 | 
					            except Exception:  # pylint: disable=broad-exception-caught
 | 
				
			||||||
                log.exception("filtering data by '%s' failed!", key)
 | 
					                log.exception("filtering data by '%s' failed!", key)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return data
 | 
					        return data
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,7 +63,7 @@ class GridFilter:  # pylint: disable=too-many-instance-attributes
 | 
				
			||||||
       column by which to filter.  For instance,
 | 
					       column by which to filter.  For instance,
 | 
				
			||||||
       ``model.Person.full_name``.
 | 
					       ``model.Person.full_name``.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    :param \**kwargs: Any additional kwargs will be set as attributes
 | 
					    :param \\**kwargs: Any additional kwargs will be set as attributes
 | 
				
			||||||
       on the filter instance.
 | 
					       on the filter instance.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Filter instances have the following attributes:
 | 
					    Filter instances have the following attributes:
 | 
				
			||||||
| 
						 | 
					@ -175,7 +175,7 @@ class GridFilter:  # pylint: disable=too-many-instance-attributes
 | 
				
			||||||
        key,
 | 
					        key,
 | 
				
			||||||
        label=None,
 | 
					        label=None,
 | 
				
			||||||
        verbs=None,
 | 
					        verbs=None,
 | 
				
			||||||
        choices={},
 | 
					        choices=None,
 | 
				
			||||||
        default_active=False,
 | 
					        default_active=False,
 | 
				
			||||||
        default_verb=None,
 | 
					        default_verb=None,
 | 
				
			||||||
        default_value=None,
 | 
					        default_value=None,
 | 
				
			||||||
| 
						 | 
					@ -198,7 +198,7 @@ class GridFilter:  # pylint: disable=too-many-instance-attributes
 | 
				
			||||||
            self.default_verb = default_verb
 | 
					            self.default_verb = default_verb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # choices
 | 
					        # choices
 | 
				
			||||||
        self.set_choices(choices)
 | 
					        self.set_choices(choices or {})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # value
 | 
					        # value
 | 
				
			||||||
        self.default_value = default_value
 | 
					        self.default_value = default_value
 | 
				
			||||||
| 
						 | 
					@ -358,7 +358,7 @@ class GridFilter:  # pylint: disable=too-many-instance-attributes
 | 
				
			||||||
            verb = self.verb
 | 
					            verb = self.verb
 | 
				
			||||||
        if not verb:
 | 
					        if not verb:
 | 
				
			||||||
            verb = self.get_default_verb()
 | 
					            verb = self.get_default_verb()
 | 
				
			||||||
            log.warn(
 | 
					            log.warning(
 | 
				
			||||||
                "missing verb for '%s' filter, will use default verb: %s",
 | 
					                "missing verb for '%s' filter, will use default verb: %s",
 | 
				
			||||||
                self.key,
 | 
					                self.key,
 | 
				
			||||||
                verb,
 | 
					                verb,
 | 
				
			||||||
| 
						 | 
					@ -582,7 +582,7 @@ class IntegerAlchemyFilter(NumericAlchemyFilter):
 | 
				
			||||||
        if value:
 | 
					        if value:
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                return int(value)
 | 
					                return int(value)
 | 
				
			||||||
            except:
 | 
					            except Exception:  # pylint: disable=broad-exception-caught
 | 
				
			||||||
                pass
 | 
					                pass
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -187,8 +187,8 @@ class WebHandler(GenericHandler):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # registered via entry points
 | 
					        # registered via entry points
 | 
				
			||||||
        registered = []
 | 
					        registered = []
 | 
				
			||||||
        for Handler in load_entry_points(f"{self.appname}.web.menus").values():
 | 
					        for handler in load_entry_points(f"{self.appname}.web.menus").values():
 | 
				
			||||||
            spec = Handler.get_spec()
 | 
					            spec = handler.get_spec()
 | 
				
			||||||
            if spec not in handlers:
 | 
					            if spec not in handlers:
 | 
				
			||||||
                registered.append(spec)
 | 
					                registered.append(spec)
 | 
				
			||||||
        if registered:
 | 
					        if registered:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -51,8 +51,8 @@ This module contains the following references:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from webhelpers2.html import *
 | 
					from webhelpers2.html import *  # pylint: disable=wildcard-import,unused-wildcard-import
 | 
				
			||||||
from webhelpers2.html.tags import *
 | 
					from webhelpers2.html.tags import *  # pylint: disable=wildcard-import,unused-wildcard-import
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from wuttaweb.util import (  # pylint: disable=unused-import
 | 
					from wuttaweb.util import (  # pylint: disable=unused-import
 | 
				
			||||||
    get_liburl,
 | 
					    get_liburl,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -314,7 +314,7 @@ class AuthView(View):
 | 
				
			||||||
def defaults(config, **kwargs):
 | 
					def defaults(config, **kwargs):
 | 
				
			||||||
    base = globals()
 | 
					    base = globals()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    AuthView = kwargs.get("AuthView", base["AuthView"])
 | 
					    AuthView = kwargs.get("AuthView", base["AuthView"])  # pylint: disable=invalid-name
 | 
				
			||||||
    AuthView.defaults(config)
 | 
					    AuthView.defaults(config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -127,7 +127,7 @@ class BatchMasterView(MasterView):
 | 
				
			||||||
        model = self.app.model
 | 
					        model = self.app.model
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # created_by
 | 
					        # created_by
 | 
				
			||||||
        CreatedBy = orm.aliased(model.User)
 | 
					        CreatedBy = orm.aliased(model.User)  # pylint: disable=invalid-name
 | 
				
			||||||
        g.set_joiner(
 | 
					        g.set_joiner(
 | 
				
			||||||
            "created_by",
 | 
					            "created_by",
 | 
				
			||||||
            lambda q: q.join(
 | 
					            lambda q: q.join(
 | 
				
			||||||
| 
						 | 
					@ -221,7 +221,7 @@ class BatchMasterView(MasterView):
 | 
				
			||||||
        on the batch handler - when creating.  Parent/default logic is
 | 
					        on the batch handler - when creating.  Parent/default logic is
 | 
				
			||||||
        used when updating.
 | 
					        used when updating.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        :param \**kwargs: Additional kwargs will be passed as-is to
 | 
					        :param \\**kwargs: Additional kwargs will be passed as-is to
 | 
				
			||||||
           the ``make_batch()`` call.
 | 
					           the ``make_batch()`` call.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        if self.creating:
 | 
					        if self.creating:
 | 
				
			||||||
| 
						 | 
					@ -329,7 +329,7 @@ class BatchMasterView(MasterView):
 | 
				
			||||||
            self.batch_handler.do_populate(batch, progress=progress)
 | 
					            self.batch_handler.do_populate(batch, progress=progress)
 | 
				
			||||||
            session.flush()
 | 
					            session.flush()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        except Exception as error:
 | 
					        except Exception as error:  # pylint: disable=broad-exception-caught
 | 
				
			||||||
            session.rollback()
 | 
					            session.rollback()
 | 
				
			||||||
            log.warning(
 | 
					            log.warning(
 | 
				
			||||||
                "failed to populate %s: %s",
 | 
					                "failed to populate %s: %s",
 | 
				
			||||||
| 
						 | 
					@ -367,7 +367,7 @@ class BatchMasterView(MasterView):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            self.batch_handler.do_execute(batch, self.request.user)
 | 
					            self.batch_handler.do_execute(batch, self.request.user)
 | 
				
			||||||
        except Exception as error:
 | 
					        except Exception as error:  # pylint: disable=broad-exception-caught
 | 
				
			||||||
            log.warning("failed to execute batch: %s", batch, exc_info=True)
 | 
					            log.warning("failed to execute batch: %s", batch, exc_info=True)
 | 
				
			||||||
            self.request.session.flash(f"Execution failed!: {error}", "error")
 | 
					            self.request.session.flash(f"Execution failed!: {error}", "error")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -383,8 +383,8 @@ class BatchMasterView(MasterView):
 | 
				
			||||||
        if hasattr(cls, "row_model_class"):
 | 
					        if hasattr(cls, "row_model_class"):
 | 
				
			||||||
            return cls.row_model_class
 | 
					            return cls.row_model_class
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Batch = cls.get_model_class()
 | 
					        model_class = cls.get_model_class()
 | 
				
			||||||
        return Batch.__row_class__
 | 
					        return model_class.__row_class__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_row_grid_data(self, batch):
 | 
					    def get_row_grid_data(self, batch):
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
| 
						 | 
					@ -392,8 +392,10 @@ class BatchMasterView(MasterView):
 | 
				
			||||||
        :attr:`~wuttjamaican:wuttjamaican.db.model.batch.BatchMixin.rows`
 | 
					        :attr:`~wuttjamaican:wuttjamaican.db.model.batch.BatchMixin.rows`
 | 
				
			||||||
        data.
 | 
					        data.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        BatchRow = self.get_row_model_class()
 | 
					        row_model_class = self.get_row_model_class()
 | 
				
			||||||
        query = self.Session.query(BatchRow).filter(BatchRow.batch == batch)
 | 
					        query = self.Session.query(row_model_class).filter(
 | 
				
			||||||
 | 
					            row_model_class.batch == batch
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
        return query
 | 
					        return query
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def configure_row_grid(self, g):  # pylint: disable=empty-docstring
 | 
					    def configure_row_grid(self, g):  # pylint: disable=empty-docstring
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -109,7 +109,7 @@ class CommonView(View):
 | 
				
			||||||
        # send email
 | 
					        # send email
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            self.feedback_send(context)
 | 
					            self.feedback_send(context)
 | 
				
			||||||
        except Exception as error:
 | 
					        except Exception as error:  # pylint: disable=broad-exception-caught
 | 
				
			||||||
            log.warning("failed to send feedback email", exc_info=True)
 | 
					            log.warning("failed to send feedback email", exc_info=True)
 | 
				
			||||||
            return {"error": str(error) or error.__class__.__name__}
 | 
					            return {"error": str(error) or error.__class__.__name__}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -287,7 +287,7 @@ class CommonView(View):
 | 
				
			||||||
        if theme:
 | 
					        if theme:
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                set_app_theme(self.request, theme, session=Session())
 | 
					                set_app_theme(self.request, theme, session=Session())
 | 
				
			||||||
            except Exception as error:
 | 
					            except Exception as error:  # pylint: disable=broad-exception-caught
 | 
				
			||||||
                error = self.app.render_error(error)
 | 
					                error = self.app.render_error(error)
 | 
				
			||||||
                self.request.session.flash(f"Failed to set theme: {error}", "error")
 | 
					                self.request.session.flash(f"Failed to set theme: {error}", "error")
 | 
				
			||||||
        referrer = self.request.params.get("referrer") or self.request.get_referrer()
 | 
					        referrer = self.request.params.get("referrer") or self.request.get_referrer()
 | 
				
			||||||
| 
						 | 
					@ -345,7 +345,9 @@ class CommonView(View):
 | 
				
			||||||
def defaults(config, **kwargs):
 | 
					def defaults(config, **kwargs):
 | 
				
			||||||
    base = globals()
 | 
					    base = globals()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    CommonView = kwargs.get("CommonView", base["CommonView"])
 | 
					    CommonView = kwargs.get(  # pylint: disable=invalid-name
 | 
				
			||||||
 | 
					        "CommonView", base["CommonView"]
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
    CommonView.defaults(config)
 | 
					    CommonView.defaults(config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -301,7 +301,9 @@ class EmailSettingView(MasterView):
 | 
				
			||||||
def defaults(config, **kwargs):
 | 
					def defaults(config, **kwargs):
 | 
				
			||||||
    base = globals()
 | 
					    base = globals()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EmailSettingView = kwargs.get("EmailSettingView", base["EmailSettingView"])
 | 
					    EmailSettingView = kwargs.get(  # pylint: disable=invalid-name
 | 
				
			||||||
 | 
					        "EmailSettingView", base["EmailSettingView"]
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
    EmailSettingView.defaults(config)
 | 
					    EmailSettingView.defaults(config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,11 +34,11 @@ from sqlalchemy import orm
 | 
				
			||||||
from pyramid.renderers import render_to_response
 | 
					from pyramid.renderers import render_to_response
 | 
				
			||||||
from webhelpers2.html import HTML
 | 
					from webhelpers2.html import HTML
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from wuttaweb.views import View
 | 
					from wuttjamaican.util import get_class_hierarchy
 | 
				
			||||||
 | 
					from wuttaweb.views.base import View
 | 
				
			||||||
from wuttaweb.util import get_form_data, render_csrf_token
 | 
					from wuttaweb.util import get_form_data, render_csrf_token
 | 
				
			||||||
from wuttaweb.db import Session
 | 
					from wuttaweb.db import Session
 | 
				
			||||||
from wuttaweb.progress import SessionProgress
 | 
					from wuttaweb.progress import SessionProgress
 | 
				
			||||||
from wuttjamaican.util import get_class_hierarchy
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
log = logging.getLogger(__name__)
 | 
					log = logging.getLogger(__name__)
 | 
				
			||||||
| 
						 | 
					@ -826,7 +826,7 @@ class MasterView(View):
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            self.delete_bulk_action(records, progress=progress)
 | 
					            self.delete_bulk_action(records, progress=progress)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        except Exception as error:
 | 
					        except Exception as error:  # pylint: disable=broad-exception-caught
 | 
				
			||||||
            session.rollback()
 | 
					            session.rollback()
 | 
				
			||||||
            log.warning(
 | 
					            log.warning(
 | 
				
			||||||
                "failed to delete %s results for %s",
 | 
					                "failed to delete %s results for %s",
 | 
				
			||||||
| 
						 | 
					@ -1128,7 +1128,7 @@ class MasterView(View):
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            self.execute_instance(obj, user, progress=progress)
 | 
					            self.execute_instance(obj, user, progress=progress)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        except Exception as error:
 | 
					        except Exception as error:  # pylint: disable=broad-exception-caught
 | 
				
			||||||
            session.rollback()
 | 
					            session.rollback()
 | 
				
			||||||
            log.warning("%s failed to execute: %s", model_title, obj, exc_info=True)
 | 
					            log.warning("%s failed to execute: %s", model_title, obj, exc_info=True)
 | 
				
			||||||
            if progress:
 | 
					            if progress:
 | 
				
			||||||
| 
						 | 
					@ -1651,7 +1651,7 @@ class MasterView(View):
 | 
				
			||||||
           button act like a link.  This will yield something like:
 | 
					           button act like a link.  This will yield something like:
 | 
				
			||||||
           ``<b-button tag="a" href="{url}">``
 | 
					           ``<b-button tag="a" href="{url}">``
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        :param \**kwargs: All remaining kwargs are passed to the
 | 
					        :param \\**kwargs: All remaining kwargs are passed to the
 | 
				
			||||||
           underlying ``HTML.tag()`` call, so will be rendered as
 | 
					           underlying ``HTML.tag()`` call, so will be rendered as
 | 
				
			||||||
           attributes on the button tag.
 | 
					           attributes on the button tag.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2260,7 +2260,7 @@ class MasterView(View):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        :param obj: Model instance object.
 | 
					        :param obj: Model instance object.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        :param \**kwargs: Additional kwargs to be passed to
 | 
					        :param \\**kwargs: Additional kwargs to be passed to
 | 
				
			||||||
           ``request.route_url()``, if needed.
 | 
					           ``request.route_url()``, if needed.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        kw = self.get_action_route_kwargs(obj)
 | 
					        kw = self.get_action_route_kwargs(obj)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -210,7 +210,9 @@ class PersonView(MasterView):
 | 
				
			||||||
def defaults(config, **kwargs):
 | 
					def defaults(config, **kwargs):
 | 
				
			||||||
    base = globals()
 | 
					    base = globals()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PersonView = kwargs.get("PersonView", base["PersonView"])
 | 
					    PersonView = kwargs.get(  # pylint: disable=invalid-name
 | 
				
			||||||
 | 
					        "PersonView", base["PersonView"]
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
    PersonView.defaults(config)
 | 
					    PersonView.defaults(config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -264,7 +264,9 @@ class ReportView(MasterView):
 | 
				
			||||||
def defaults(config, **kwargs):
 | 
					def defaults(config, **kwargs):
 | 
				
			||||||
    base = globals()
 | 
					    base = globals()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ReportView = kwargs.get("ReportView", base["ReportView"])
 | 
					    ReportView = kwargs.get(  # pylint: disable=invalid-name
 | 
				
			||||||
 | 
					        "ReportView", base["ReportView"]
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
    ReportView.defaults(config)
 | 
					    ReportView.defaults(config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -374,10 +374,12 @@ class PermissionView(MasterView):
 | 
				
			||||||
def defaults(config, **kwargs):
 | 
					def defaults(config, **kwargs):
 | 
				
			||||||
    base = globals()
 | 
					    base = globals()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    RoleView = kwargs.get("RoleView", base["RoleView"])
 | 
					    RoleView = kwargs.get("RoleView", base["RoleView"])  # pylint: disable=invalid-name
 | 
				
			||||||
    RoleView.defaults(config)
 | 
					    RoleView.defaults(config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PermissionView = kwargs.get("PermissionView", base["PermissionView"])
 | 
					    PermissionView = kwargs.get(  # pylint: disable=invalid-name
 | 
				
			||||||
 | 
					        "PermissionView", base["PermissionView"]
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
    PermissionView.defaults(config)
 | 
					    PermissionView.defaults(config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -278,10 +278,14 @@ class SettingView(MasterView):
 | 
				
			||||||
def defaults(config, **kwargs):
 | 
					def defaults(config, **kwargs):
 | 
				
			||||||
    base = globals()
 | 
					    base = globals()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    AppInfoView = kwargs.get("AppInfoView", base["AppInfoView"])
 | 
					    AppInfoView = kwargs.get(  # pylint: disable=invalid-name
 | 
				
			||||||
 | 
					        "AppInfoView", base["AppInfoView"]
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
    AppInfoView.defaults(config)
 | 
					    AppInfoView.defaults(config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SettingView = kwargs.get("SettingView", base["SettingView"])
 | 
					    SettingView = kwargs.get(  # pylint: disable=invalid-name
 | 
				
			||||||
 | 
					        "SettingView", base["SettingView"]
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
    SettingView.defaults(config)
 | 
					    SettingView.defaults(config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -86,7 +86,7 @@ class UpgradeView(MasterView):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # created_by
 | 
					        # created_by
 | 
				
			||||||
        g.set_link("created_by")
 | 
					        g.set_link("created_by")
 | 
				
			||||||
        Creator = orm.aliased(model.User)
 | 
					        Creator = orm.aliased(model.User)  # pylint: disable=invalid-name
 | 
				
			||||||
        g.set_joiner(
 | 
					        g.set_joiner(
 | 
				
			||||||
            "created_by",
 | 
					            "created_by",
 | 
				
			||||||
            lambda q: q.join(Creator, Creator.uuid == model.Upgrade.created_by_uuid),
 | 
					            lambda q: q.join(Creator, Creator.uuid == model.Upgrade.created_by_uuid),
 | 
				
			||||||
| 
						 | 
					@ -101,7 +101,7 @@ class UpgradeView(MasterView):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # executed_by
 | 
					        # executed_by
 | 
				
			||||||
        g.set_link("executed_by")
 | 
					        g.set_link("executed_by")
 | 
				
			||||||
        Executor = orm.aliased(model.User)
 | 
					        Executor = orm.aliased(model.User)  # pylint: disable=invalid-name
 | 
				
			||||||
        g.set_joiner(
 | 
					        g.set_joiner(
 | 
				
			||||||
            "executed_by",
 | 
					            "executed_by",
 | 
				
			||||||
            lambda q: q.outerjoin(
 | 
					            lambda q: q.outerjoin(
 | 
				
			||||||
| 
						 | 
					@ -378,7 +378,9 @@ class UpgradeView(MasterView):
 | 
				
			||||||
def defaults(config, **kwargs):
 | 
					def defaults(config, **kwargs):
 | 
				
			||||||
    base = globals()
 | 
					    base = globals()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    UpgradeView = kwargs.get("UpgradeView", base["UpgradeView"])
 | 
					    UpgradeView = kwargs.get(  # pylint: disable=invalid-name
 | 
				
			||||||
 | 
					        "UpgradeView", base["UpgradeView"]
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
    UpgradeView.defaults(config)
 | 
					    UpgradeView.defaults(config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -418,7 +418,7 @@ class UserView(MasterView):
 | 
				
			||||||
def defaults(config, **kwargs):
 | 
					def defaults(config, **kwargs):
 | 
				
			||||||
    base = globals()
 | 
					    base = globals()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    UserView = kwargs.get("UserView", base["UserView"])
 | 
					    UserView = kwargs.get("UserView", base["UserView"])  # pylint: disable=invalid-name
 | 
				
			||||||
    UserView.defaults(config)
 | 
					    UserView.defaults(config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue