From a9d3788a87a481262ff3bc78ba7f42c88fcd4f34 Mon Sep 17 00:00:00 2001 From: Espurna Date: Tue, 13 Jun 2017 16:17:52 +0200 Subject: [PATCH 1/4] error caching --- bika/lims/browser/bika_listing.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/bika/lims/browser/bika_listing.py b/bika/lims/browser/bika_listing.py index 0eb92e9aae..77e50ce8e6 100644 --- a/bika/lims/browser/bika_listing.py +++ b/bika/lims/browser/bika_listing.py @@ -49,6 +49,7 @@ from zope.interface import implements from bika.lims.browser.bika_listing_filter_bar import BikaListingFilterBar import types +import traceback try: from plone.batching import Batch @@ -787,8 +788,15 @@ def __call__(self): self.request.response.setCookie( 'bika_listing_filter_bar', None, path='/', max_age=0) # Saving the filter bar values - cookie_filter_bar = json.loads(cookie_filter_bar) if\ - cookie_filter_bar else '' + try: + cookie_filter_bar = json.loads(cookie_filter_bar) + except ValueError: + err_msg = traceback.format_exc() + '\n' + logger.error( + err_msg + + "Error converting loading JSON object {} in {}." + .format(cookie_filter_bar, self.context)) + cookie_filter_bar = [] # Creating a dict from cookie data cookie_data = {} for k, v in cookie_filter_bar: From 73e5893dbbfb856802f7366e917ef556dd395153 Mon Sep 17 00:00:00 2001 From: Espurna Date: Tue, 13 Jun 2017 16:20:28 +0200 Subject: [PATCH 2/4] cleaning imports --- bika/lims/browser/bika_listing.py | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/bika/lims/browser/bika_listing.py b/bika/lims/browser/bika_listing.py index 77e50ce8e6..179d33d2af 100644 --- a/bika/lims/browser/bika_listing.py +++ b/bika/lims/browser/bika_listing.py @@ -5,51 +5,34 @@ """ Display lists of items in tables. """ -import json -import re -import urllib import copy -from operator import itemgetter +import json +import traceback +from AccessControl import getSecurityManager +from Acquisition import aq_inner -import App -import pkg_resources import plone -import transaction -from AccessControl import getSecurityManager -from Acquisition import aq_parent, aq_inner from DateTime import DateTime -from OFS.interfaces import IOrderedContainer from Products.AdvancedQuery import And, Or, MatchRegexp, Between, Generic, Eq -from Products.Archetypes.config import REFERENCE_CATALOG -from Products.CMFCore.WorkflowCore import WorkflowException from Products.CMFCore.utils import getToolByName -from Products.CMFPlone import PloneMessageFactory -from Products.CMFPlone.utils import pretty_title_or_id, isExpired, safe_unicode from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile from bika.lims import PMF from bika.lims import bikaMessageFactory as _ from bika.lims import logger from bika.lims.browser import BrowserView +from bika.lims.browser.bika_listing_filter_bar import BikaListingFilterBar from bika.lims.interfaces import IFieldIcons +from bika.lims.utils import getFromString from bika.lims.utils import isActive, getHiddenAttributesForClass -from bika.lims.utils import t, format_supsub +from bika.lims.utils import t from bika.lims.utils import to_utf8 -from bika.lims.utils import getFromString from bika.lims.workflow import doActionFor from bika.lims.workflow import skip from plone.app.content.browser import tableview -from plone.app.content.browser.foldercontents import FolderContentsView, FolderContentsTable -from plone.app.content.browser.interfaces import IFolderContentsView from plone.i18n.normalizer.interfaces import IIDNormalizer from zope.component import getAdapters from zope.component import getUtility from zope.component._api import getMultiAdapter -from zope.i18nmessageid import MessageFactory -from zope.interface import Interface -from zope.interface import implements -from bika.lims.browser.bika_listing_filter_bar import BikaListingFilterBar -import types -import traceback try: from plone.batching import Batch From 495f7acc484af5b023aee9288b5d2faef43c684f Mon Sep 17 00:00:00 2001 From: Espurna Date: Tue, 13 Jun 2017 16:28:58 +0200 Subject: [PATCH 3/4] check cookie_filter_bar before loading it --- bika/lims/browser/bika_listing.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/bika/lims/browser/bika_listing.py b/bika/lims/browser/bika_listing.py index 179d33d2af..b48aa24e2e 100644 --- a/bika/lims/browser/bika_listing.py +++ b/bika/lims/browser/bika_listing.py @@ -771,14 +771,17 @@ def __call__(self): self.request.response.setCookie( 'bika_listing_filter_bar', None, path='/', max_age=0) # Saving the filter bar values - try: - cookie_filter_bar = json.loads(cookie_filter_bar) - except ValueError: - err_msg = traceback.format_exc() + '\n' - logger.error( - err_msg + - "Error converting loading JSON object {} in {}." - .format(cookie_filter_bar, self.context)) + if cookie_filter_bar is not None and cookie_filter_bar != '': + try: + cookie_filter_bar = json.loads(cookie_filter_bar) + except ValueError: + err_msg = traceback.format_exc() + '\n' + logger.error( + err_msg + + "Error decoding JSON object {} in {}." + .format(cookie_filter_bar, self.context)) + cookie_filter_bar = [] + else: cookie_filter_bar = [] # Creating a dict from cookie data cookie_data = {} From 57a591cd021df93db86b8ac60e81f4ea781fabd6 Mon Sep 17 00:00:00 2001 From: Espurna Date: Tue, 13 Jun 2017 16:31:19 +0200 Subject: [PATCH 4/4] better error description --- bika/lims/browser/bika_listing.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bika/lims/browser/bika_listing.py b/bika/lims/browser/bika_listing.py index b48aa24e2e..514061bd5c 100644 --- a/bika/lims/browser/bika_listing.py +++ b/bika/lims/browser/bika_listing.py @@ -778,7 +778,8 @@ def __call__(self): err_msg = traceback.format_exc() + '\n' logger.error( err_msg + - "Error decoding JSON object {} in {}." + "Error decoding JSON object 'bika_listing_filter_bar' " + "with value {} in {}." .format(cookie_filter_bar, self.context)) cookie_filter_bar = [] else: