hmm... I think this needs to be getattr(cron_class, 'ALLOW_PARALLEL_RUNS', False)

where False is default if its not there I think ? hasattr will return True even if user sets it to False (for whatever reason).

See:

>>> class X(object):
...   blah = False
... 
>>> x=X()
>>> x.blah
False
>>> hasattr(x, 'blah')
True