diff --git a/gracedb/api/v1/events/views.py b/gracedb/api/v1/events/views.py
index 1321a43efc3ff91d750f34a904b4f993a1fb98fd..eebfa6a289765bab6a0b91bc1dbe7d98daa17a7b 100644
--- a/gracedb/api/v1/events/views.py
+++ b/gracedb/api/v1/events/views.py
@@ -4,9 +4,9 @@ import logging
 import os
 import shutil
 try:
-    from io import StringIO
-except ImportError:  # python < 3
     from StringIO import StringIO
+except ImportError:  # python >= 3
+    from io import StringIO
 
 from django.conf import settings
 from django.contrib.auth.models import User, Permission, Group as DjangoGroup
diff --git a/gracedb/core/middleware/profiling.py b/gracedb/core/middleware/profiling.py
index 6e6b0254de16ce389d528db3e07b8440bb006df2..b78257d8c763cde05c586527f40748e142ccc82c 100644
--- a/gracedb/core/middleware/profiling.py
+++ b/gracedb/core/middleware/profiling.py
@@ -7,9 +7,9 @@ import os
 import re
 import tempfile
 try:
-    from io import StringIO
-except ImportError:  # python < 3
     from StringIO import StringIO
+except ImportError:  # python >= 3
+    from io import StringIO
 
 import hotshot, hotshot.stats
 
diff --git a/gracedb/events/migrations/0036_populate_voevent_fields.py b/gracedb/events/migrations/0036_populate_voevent_fields.py
index f5da68f22e319554e3eb894bdf29c81dfd1f6ba3..32ac1bacbf9c3ce7e799bf6d4b4b6140fd029dbe 100644
--- a/gracedb/events/migrations/0036_populate_voevent_fields.py
+++ b/gracedb/events/migrations/0036_populate_voevent_fields.py
@@ -1,7 +1,10 @@
 # -*- coding: utf-8 -*-
 # Generated by Django 1.11.20 on 2019-06-10 16:58
 from __future__ import unicode_literals
-from cStringIO import StringIO
+try:
+    from StringIO import StringIO
+except ImportError:  # python >= 3
+    from io import StringIO
 from hashlib import sha1
 import os
 from lxml import etree
@@ -66,7 +69,7 @@ def get_datadir(event_or_superevent):
     hash_input = str(event_or_superevent.id)
     if event_or_superevent.__class__.__name__.lower() == 'superevent':
         hash_input = 'superevent' + hash_input
-    hdf = StringIO(sha1(hash_input).hexdigest())
+    hdf = StringIO(sha1(hash_input.encode()).hexdigest())
 
     # Build up the nodes of the directory structure
     nodes = [hdf.read(i) for i in settings.GRACEDB_DIR_DIGITS]
diff --git a/gracedb/events/models.py b/gracedb/events/models.py
index c46b9992af8346460f18a59a841403abea6577d5..05f6ed93d6b72c68f1024e2b050a13a14d566e40 100644
--- a/gracedb/events/models.py
+++ b/gracedb/events/models.py
@@ -35,7 +35,10 @@ from django.conf import settings
 import pytz
 import calendar
 
-from io import StringIO
+try:
+    from StringIO import StringIO
+except ImportError:  # python >= 3
+    from io import StringIO
 
 from hashlib import sha1
 import shutil
@@ -241,11 +244,8 @@ class Event(models.Model):
     @property
     def datadir(self):
         # Create a file-like object which is the SHA-1 hexdigest of the Event's primary key
-        hid = sha1(str(self.id).encode("utf-8")).hexdigest()
-        try:
-            hdf = StringIO(hid.decode("utf-8"))
-        except AttributeError:  # python < 3
-            hdf = StringIO(hid)
+        hid = sha1(str(self.id).encode()).hexdigest()
+        hdf = StringIO(hid)
 
         # Build up the nodes of the directory structure
         nodes = [hdf.read(i) for i in settings.GRACEDB_DIR_DIGITS]
diff --git a/gracedb/events/reports.py b/gracedb/events/reports.py
index b6d70420ea155f03bf481a61845c2f5b0c2441bf..01b824b41e9d7f0c23d4dbe2c409c7939f07ccd1 100644
--- a/gracedb/events/reports.py
+++ b/gracedb/events/reports.py
@@ -30,9 +30,9 @@ from django.utils import timezone
 import pytz
 import json
 try:
-    from io import StringIO
-except ImportError:  # python < 3
     from StringIO import StringIO
+except ImportError:  # python >= 3
+    from io import StringIO
 
 @internal_user_required
 def histo(request):
diff --git a/gracedb/events/translator.py b/gracedb/events/translator.py
index 0877df9c2271ebba080c637e50b2dfd2f5243f97..93105fb7464b4c89004ad753f4e134f12515e4cf 100644
--- a/gracedb/events/translator.py
+++ b/gracedb/events/translator.py
@@ -19,9 +19,9 @@ from core.vfile import VersionedFile
 
 import json
 try:
-    from io import StringIO
-except ImportError:  # python < 3
     from StringIO import StringIO
+except ImportError:  # python >= 3
+    from io import StringIO
 
 from math import sqrt
 
diff --git a/gracedb/superevents/migrations/0004_populate_voevent_fields.py b/gracedb/superevents/migrations/0004_populate_voevent_fields.py
index a693ff8355d620ae3e55323cad02a360ecbc3907..2adc34c7f5af9f49d9f9aad4205c8b286f39eee1 100644
--- a/gracedb/superevents/migrations/0004_populate_voevent_fields.py
+++ b/gracedb/superevents/migrations/0004_populate_voevent_fields.py
@@ -1,7 +1,10 @@
 # -*- coding: utf-8 -*-
 # Generated by Django 1.11.20 on 2019-06-10 16:58
 from __future__ import unicode_literals
-from cStringIO import StringIO
+try:
+    from StringIO import StringIO
+except ImportError:  # python >= 3
+    from io import StringIO
 from hashlib import sha1
 import os
 from lxml import etree
@@ -62,7 +65,7 @@ def get_datadir(event_or_superevent):
     hash_input = str(event_or_superevent.id)
     if event_or_superevent.__class__.__name__.lower() == 'superevent':
         hash_input = 'superevent' + hash_input
-    hdf = StringIO(sha1(hash_input).hexdigest())
+    hdf = StringIO(sha1(hash_input.encode()).hexdigest())
 
     # Build up the nodes of the directory structure
     nodes = [hdf.read(i) for i in settings.GRACEDB_DIR_DIGITS]
diff --git a/gracedb/superevents/models.py b/gracedb/superevents/models.py
index 8156038328437e55c12d68f7788d43bc31d3d919..11b0c9125fde733e7fbe1f74c4c4d772a0bb4097 100644
--- a/gracedb/superevents/models.py
+++ b/gracedb/superevents/models.py
@@ -1,7 +1,7 @@
 try:
-    from io import StringIO
-except ImportError:  # python < 3
     from StringIO import StringIO
+except ImportError:  # python >= 3
+    from io import StringIO
 import datetime
 from hashlib import sha1
 import logging
@@ -365,7 +365,7 @@ class Superevent(CleanSaveModel, AutoIncrementModel):
         # object's primary key. We prepend 'superevent' so as to not
         # have collisions with Event files
         hash_input = 'superevent' + str(self.id)
-        hdf = StringIO(sha1(hash_input).hexdigest().decode('utf-8'))
+        hdf = StringIO(sha1(hash_input.encode()).hexdigest())
 
         # Build up the nodes of the directory structure
         nodes = [hdf.read(i) for i in settings.GRACEDB_DIR_DIGITS]