def get_url_protection_options(user=None):
defaults = {
'TOKEN_LENGTH': 20,
'SIGNING_KEY': settings.SECRET_KEY,
'SIGNING_SALT': 'qr_code_url_protection_salt',
'ALLOWS_EXTERNAL_REQUESTS_FOR_REGISTERED_USER': False,
'ALLOWS_EXTERNAL_REQUESTS': False
}
options = defaults
if hasattr(settings, 'QR_CODE_URL_PROTECTION') and isinstance(settings.QR_CODE_URL_PROTECTION, dict):
options.update(settings.QR_CODE_URL_PROTECTION)
# Evaluate the callable if required.
if callable(options['ALLOWS_EXTERNAL_REQUESTS_FOR_REGISTERED_USER']):
options['ALLOWS_EXTERNAL_REQUESTS'] = user and options['ALLOWS_EXTERNAL_REQUESTS_FOR_REGISTERED_USER'](user)
elif options['ALLOWS_EXTERNAL_REQUESTS_FOR_REGISTERED_USER'] and user:
if callable(user.is_authenticated):
# Django version < 1.10
options['ALLOWS_EXTERNAL_REQUESTS'] = user.is_authenticated()
else:
# Django version >= 1.10
options['ALLOWS_EXTERNAL_REQUESTS'] = user.is_authenticated
else:
options['ALLOWS_EXTERNAL_REQUESTS'] = False
return options
评论列表
文章目录