In my experience, getItem will return None if *anything* goes wrong with data retieval or object creation. Sometimes you get a traceback in the STUPID_LOG, and sometimes you don't (and I haven't figured out the pattern yet). Test everything you can independently, and simplify everything to the bare minimum until you get it to work, and then add back the other variables, etc.
In all simplicity I still can't get it to work but here's some more info from the console: Traceback (innermost last): File C:\PROGRA~1\ZOPE230\lib\python\Products\ZPatterns\AttributeProviders.py, line 335, in _AttributeFor (Object: GAPMixin) File C:\PROGRA~1\ZOPE230\lib\python\Products\ZPatterns\Expressions.py, line 13 6, in eval KeyError: AllotmentArea_ID Roché