PCursorStart: -99
amp;PCursorEnd: 0

Site Root: /data/fmiam/current/fmiam_org/
username: public
userid: 0
dbname: fmiam
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: br,gzip
Accept-Language: en-US,en;q=0.5
Host: www.fmi.org
User-Agent: CCBot/2.0 (https://commoncrawl.org/faq/)
X-Forwarded-Proto: https
X-Forwarded-Protocol: https

SCRIPT_NAME: /forms/meeting/MeetingFormPublic/showPastMeetings

When: Sep 16, 2024 1:25 am
PID: 3181

 
Error in KeyError.
Here is a traceback of function calls, starting with the closest to that error.
Python 3.11.0: /home/maxx/lib/matrixmaxx3/bin/uwsgi
Mon Sep 16 22:49:55 2024

KeyError: "'PCursorEnd'"


      __cause__ = None
      __class__ = <class 'KeyError'>
      __context__ = None
      __delattr__ = <method-wrapper '__delattr__' of KeyError object>
      __dict__ = {}
      __dir__ = <built-in method __dir__ of KeyError object>
      __doc__ = 'Mapping key not found.'
      __eq__ = <method-wrapper '__eq__' of KeyError object>
      __format__ = <built-in method __format__ of KeyError object>
      __ge__ = <method-wrapper '__ge__' of KeyError object>
      __getattribute__ = <method-wrapper '__getattribute__' of KeyError object>
      __getstate__ = <built-in method __getstate__ of KeyError object>
      __gt__ = <method-wrapper '__gt__' of KeyError object>
      __hash__ = <method-wrapper '__hash__' of KeyError object>
      __init__ = <method-wrapper '__init__' of KeyError object>
      __init_subclass__ = <built-in method __init_subclass__ of type object>
      __le__ = <method-wrapper '__le__' of KeyError object>
      __lt__ = <method-wrapper '__lt__' of KeyError object>
      __ne__ = <method-wrapper '__ne__' of KeyError object>
      __new__ = <built-in method __new__ of type object>
      __reduce__ = <built-in method __reduce__ of KeyError object>
      __reduce_ex__ = <built-in method __reduce_ex__ of KeyError object>
      __repr__ = <method-wrapper '__repr__' of KeyError object>
      __setattr__ = <method-wrapper '__setattr__' of KeyError object>
      __setstate__ = <built-in method __setstate__ of KeyError object>
      __sizeof__ = <built-in method __sizeof__ of KeyError object>
      __str__ = <method-wrapper '__str__' of KeyError object>
      __subclasshook__ = <built-in method __subclasshook__ of type object>
      __suppress_context__ = False
      __traceback__ = <traceback object>
      add_note = <built-in method add_note of KeyError object>
      args = ("'PCursorEnd'",)
      with_traceback = <built-in method with_traceback of KeyError object>

 /home/maxx/lib/matrixmaxx3/lib/python3.11/site-packages/paste/util/multidict.py in __getitem__(self=OurMultiDict([('PCursorStart', '-99'), ('amp;PCursorEnd', '0')]), key='PCursorEnd')
   38 
   39     def __getitem__(self, key):
   40         for k, v in self._items:
   41             if k == key:
   42                 return v
   43         raise KeyError(repr(key))
   44 
   45     def __setitem__(self, key, value):
   46         try:
   47             del self[key]
builtinKeyError = <class 'KeyError'>
builtinrepr = <built-in function repr>
key = 'PCursorEnd'

 /data/fmiam/current/libs/framework/wsgiapp.py in __getitem__(self=OurMultiDict([('PCursorStart', '-99'), ('amp;PCursorEnd', '0')]), key='PCursorEnd')
   36             value = value.decode('utf8')
   37         return MultiDict.__setitem__(self, key, value)
   38     def __getitem__(self, key):
   39         if not isinstance(key, six.text_type):
   40             key = key.decode('utf8')
   41         return MultiDict.__getitem__(self, key)
   42     def has_key(self, key):
   43         if not isinstance(key, six.text_type):
   44             key = key.decode('utf8')
   45         return MultiDict.has_key(self, key)
global MultiDict = <class 'paste.util.multidict.MultiDict'>
MultiDict.__getitem__ = <function MultiDict.__getitem__ at 0x7fb832d754e0>
self = OurMultiDict([('PCursorStart', '-99'), ('amp;PCursorEnd', '0')])
key = 'PCursorEnd'

 /data/fmiam/current/libs/framework/WebForm.py in search(self=<fmiam_MeetingFormPublic.fmiam_MeetingFormPublic object at 0x7fb8282c4e10>, action='find', find=None, type=None, showIds=None)
 1163                     size = self.getCursorSize()
 1164                     start = int(fields["FirstRecord"]) - 1
 1165                     cursor = Cursor(start, size)
 1166                 elif "PCursorStart" in fields:
 1167                     is_paged_display = True
 1168                     size = (int(fields["PCursorEnd"]) -
 1169                             int(fields["PCursorStart"]) + 1)
 1170                     start = int(fields["PCursorStart"]) - 1 + int(size)
 1171                     cursor = Cursor(start, size)
 1172                 elif fields.get("FirstRecord", False) and fields.get("LastRecord", False):
size undefined
global int = <class 'int'>
fields = OurMultiDict([('PCursorStart', '-99'), ('amp;PCursorEnd', '0')])

 /data/fmiam/current/libs/webform/PhatForm.py in search(self=<fmiam_MeetingFormPublic.fmiam_MeetingFormPublic object at 0x7fb8282c4e10>, action='find', find=None, type=None, showIds=None)
  421         self.setTarget('view')
  422         return WebForm.view(self, id, position)
  423 
  424     def search(self, action=None, find=None, type=None, showIds=None):
  425         self.setTarget('search')
  426         return WebForm.search(self, action, find, type, showIds)
  427 
  428     #--------------------
  429     # form fields
  430     #--------------------
global WebForm = <class 'libs.framework.WebForm.WebForm'>
WebForm.search = <function WebForm.search at 0x7fb8278d9a80>
self = <fmiam_MeetingFormPublic.fmiam_MeetingFormPublic object at 0x7fb8282c4e10>
action = 'find'
find = None
type = None
showIds = None

 /data/fmiam/current/libs/webform/meeting/baseMeetingForm.py in showPastMeetings(self=<fmiam_MeetingFormPublic.fmiam_MeetingFormPublic object at 0x7fb8282c4e10>)
  293         self._showUpcomingMeetings = 1
  294         return self.search(action='find')
  295 
  296     def showPastMeetings(self):
  297         self._showPastMeetings = 1
  298         return self.search(action='find')
  299 
  300     def showDays(self, meetingId):
  301         self.setTarget('showDays')
  302         #self._showDays = 1
self = <fmiam_MeetingFormPublic.fmiam_MeetingFormPublic object at 0x7fb8282c4e10>
self.search = <bound method PhatForm.search of <fmiam_MeetingFormPublic.fmiam_MeetingFormPublic object at 0x7fb8282c4e10>>
action undefined

 /data/fmiam/current/libs/framework/BaseHandler.py in _safeCall(self=<libs.framework.WebSite.WebSite object at 0x7fb82f73a450>, method=<bound method baseMeetingForm.showPastMeetings of <fmiam_MeetingFormPublic.fmiam_MeetingFormPublic object at 0x7fb8282c4e10>>, fields=OurMultiDict([('PCursorStart', '-99'), ('amp;PCursorEnd', '0')]))
  291                     args[name] = fields[name]
  292             # now if we have any args to pass call the method
  293             if args:
  294                 return method(**args)
  295         # method has no arguments
  296         return method()
  297 
  298     def cleanForHTML(self, html):
  299         if html:
  300             html = html.replace("&", "&amp;")
method = <bound method baseMeetingForm.showPastMeetings of <fmiam_MeetingFormPublic.fmiam_MeetingFormPublic object at 0x7fb8282c4e10>>

 /data/fmiam/current/libs/framework/WebSite.py in processRequest(self=<libs.framework.WebSite.WebSite object at 0x7fb82f73a450>, req=<libs.framework.MaxxRequestWrapper.MaxxRequestWrapper object at 0x7fb8284f4d50>)
  430                     # I'm not exactly familiar with when Python allocates on the stack vs.
  431                     # heap, but it appears to solve a bug.
  432                     # https://intranet.matrixgroup.net/webmaster/index.cfm?action=showmessage&messageid=91090
  433                     # print("Are we here?", file=sys.stderr)
  434                     fields = instance._fields
  435                     result = self._safeCall(method, fields)
  436 
  437                 elif req.method.upper() in ['PUT','DELETE'] and (req.uri.split('/')[1] == 'protectedRest' or \
  438                     req.uri.startswith('/forms/maxxapi/')):
  439                     #enable PUT on the protectedRest uri's
result undefined
self = <libs.framework.WebSite.WebSite object at 0x7fb82f73a450>
self._safeCall = <bound method BaseHandler._safeCall of <libs.framework.WebSite.WebSite object at 0x7fb82f73a450>>
method = <bound method baseMeetingForm.showPastMeetings of <fmiam_MeetingFormPublic.fmiam_MeetingFormPublic object at 0x7fb8282c4e10>>
fields = OurMultiDict([('PCursorStart', '-99'), ('amp;PCursorEnd', '0')])

 /data/fmiam/current/libs/framework/WebManager.py in _newRequest(self=<libs.framework.WebManager.WebManager object at 0x7fb82e2e1d50>, req=<libs.framework.MaxxRequestWrapper.MaxxRequestWrapper object at 0x7fb8284f4d50>)
  250                             self._debugSites[self._sitePath] = debugSite
  251 
  252                         result = self.callWithMiddleware(debugSite, req)
  253 
  254                     else:
  255                         result = site.processRequest(req)
  256                         # at this point result will be returned to apache
  257                         # and becomes the http result
  258 
  259 
result = 0
site = <libs.framework.WebSite.WebSite object at 0x7fb82f73a450>
site.processRequest = <bound method WebSite.processRequest of <libs.framework.WebSite.WebSite object at 0x7fb82f73a450>>
req = <libs.framework.MaxxRequestWrapper.MaxxRequestWrapper object at 0x7fb8284f4d50>