Merge pull request #2791 from ryanpetrello/fix-iso-installs

only override django for FIPS in environments where Django is installed

Reviewed-by: Yanis Guenane
             https://github.com/Spredzy
This commit is contained in:
softwarefactory-project-zuul[bot]
2018-11-26 15:36:23 +00:00
committed by GitHub

View File

@@ -22,39 +22,45 @@ except ImportError: # pragma: no cover
import hashlib import hashlib
import django
from django.utils.encoding import force_bytes try:
from django.db.backends.base.schema import BaseDatabaseSchemaEditor import django
from django.db.backends.base import schema from django.utils.encoding import force_bytes
from django.db.backends.base.schema import BaseDatabaseSchemaEditor
from django.db.backends.base import schema
HAS_DJANGO = True
except ImportError:
HAS_DJANGO = False
# This line exists to make sure we don't regress on FIPS support if we if HAS_DJANGO is True:
# upgrade Django; if you're upgrading Django and see this error, # This line exists to make sure we don't regress on FIPS support if we
# update the version check below, and confirm that FIPS still works. # upgrade Django; if you're upgrading Django and see this error,
if django.__version__ != '1.11.16': # update the version check below, and confirm that FIPS still works.
raise RuntimeError("Django version other than 1.11.16 detected {}. \ if django.__version__ != '1.11.16':
Subclassing BaseDatabaseSchemaEditor is known to work for Django 1.11.16 \ raise RuntimeError("Django version other than 1.11.16 detected {}. \
and may not work in newer Django versions.".format(django.__version__)) Subclassing BaseDatabaseSchemaEditor is known to work for Django 1.11.16 \
and may not work in newer Django versions.".format(django.__version__))
class FipsBaseDatabaseSchemaEditor(BaseDatabaseSchemaEditor): class FipsBaseDatabaseSchemaEditor(BaseDatabaseSchemaEditor):
@classmethod @classmethod
def _digest(cls, *args): def _digest(cls, *args):
""" """
Generates a 32-bit digest of a set of arguments that can be used to Generates a 32-bit digest of a set of arguments that can be used to
shorten identifying names. shorten identifying names.
""" """
try: try:
h = hashlib.md5() h = hashlib.md5()
except ValueError: except ValueError:
h = hashlib.md5(usedforsecurity=False) h = hashlib.md5(usedforsecurity=False)
for arg in args: for arg in args:
h.update(force_bytes(arg)) h.update(force_bytes(arg))
return h.hexdigest()[:8] return h.hexdigest()[:8]
schema.BaseDatabaseSchemaEditor = FipsBaseDatabaseSchemaEditor schema.BaseDatabaseSchemaEditor = FipsBaseDatabaseSchemaEditor
def find_commands(management_dir): def find_commands(management_dir):