diff --git a/gracedb/events/api/views.py b/gracedb/events/api/views.py
index b4490bfc338d411a3189e3ee494f7c0a0a5e7f3d..915833395664e6a3543fa11c194befc40256b6c7 100644
--- a/gracedb/events/api/views.py
+++ b/gracedb/events/api/views.py
@@ -282,7 +282,7 @@ def assembleLigoLw(data):
         eventDictList = [data,]
     xmldoc = ligolw.Document()
     for e in eventDictList:
-        fname = os.path.join(e.datadir(), "coinc.xml")
+        fname = os.path.join(e.datadir, "coinc.xml")
         if not os.path.exists(fname):
             raise MissingCoinc
         elif not os.access(fname, os.R_OK):
@@ -630,7 +630,7 @@ class EventDetail(APIView):
 
         # XXX handle duplicate file names.
         f = request.data['eventFile']
-        uploadDestination = os.path.join(event.datadir(), f.name)
+        uploadDestination = os.path.join(event.datadir, f.name)
         fdest = VersionedFile(uploadDestination, 'w')
         #for chunk in f.chunks():
         #    fdest.write(chunk)
@@ -813,7 +813,7 @@ class EventLogList(APIView):
         file_version = None
         if uploadedFile:
             filename = uploadedFile.name 
-            filepath = os.path.join(event.datadir(), filename)
+            filepath = os.path.join(event.datadir, filename)
 
             try:
                 # Open / Write the file.
@@ -1586,7 +1586,7 @@ class Files(APIView):
         filename = filename or ""
         graceid = event.graceid()
 
-        filepath = os.path.join(event.datadir(), filename)
+        filepath = os.path.join(event.datadir, filename)
 
         # Check permissions for external users
         if filename and os.path.isdir(filepath):
@@ -1602,7 +1602,7 @@ class Files(APIView):
         elif not filename:
             # Get list of files w/urls.
             rv = {}
-            filepath = event.datadir()
+            filepath = event.datadir
             fnames = []
             # Filter files for external users.
             if is_external(request.user):
@@ -1647,7 +1647,7 @@ class Files(APIView):
     def put(self, request, event, filename=""):
         """ File uploader.  Implements file versioning. """
         filename = filename or ""
-        filepath = os.path.join(event.datadir(), filename)
+        filepath = os.path.join(event.datadir, filename)
 
         try:
             # Open / Write the file.
@@ -1815,7 +1815,7 @@ class VOEventList(APIView):
 
         voevent_display_type = dict(VOEvent.VOEVENT_TYPE_CHOICES)[voevent_type].capitalize()
         filename = "%s-%d-%s.xml" % (event.graceid(), voevent.N, voevent_display_type)
-        filepath = os.path.join(event.datadir(), filename)
+        filepath = os.path.join(event.datadir, filename)
         fdest = VersionedFile(filepath, 'w')
         fdest.write(voevent_text)
         fdest.close()
diff --git a/gracedb/events/buildVOEvent.py b/gracedb/events/buildVOEvent.py
index 66960ffab12a98b69fb990b21d354e459425d3b8..306687d56cea6be551dc44d42ec601b9f016a362 100644
--- a/gracedb/events/buildVOEvent.py
+++ b/gracedb/events/buildVOEvent.py
@@ -271,7 +271,7 @@ def buildVOEvent(event, serial_number, voevent_type, request=None, skymap_filena
             raise VOEventBuilderException("Skymap filename not provided.")
 
         fits_name = skymap_filename
-        fits_path = os.path.join(event.datadir(), fits_name)
+        fits_path = os.path.join(event.datadir, fits_name)
         if not os.path.exists(fits_path):
             raise VOEventBuilderException("Skymap file does not exist: %s" % skymap_filename)
 
@@ -280,7 +280,7 @@ def buildVOEvent(event, serial_number, voevent_type, request=None, skymap_filena
         if not img_name:
             stem = '.'.join(fits_name.split('.')[:-1])
             img_name = stem + '.png'
-            img_path = os.path.join(event.datadir(), img_name)
+            img_path = os.path.join(event.datadir, img_name)
             if not os.path.exists(img_path):
                 img_name = None
 
@@ -429,7 +429,7 @@ def buildVOEvent(event, serial_number, voevent_type, request=None, skymap_filena
                 # Go find the data file.
                 log = event.eventlog_set.filter(comment__startswith="Original Data").all()[0]
                 filename = log.filename
-                filepath = os.path.join(event.datadir(),filename)
+                filepath = os.path.join(event.datadir,filename)
                 if os.path.isfile(filepath):
                     datafile = open(filepath,"r")
                 else:
diff --git a/gracedb/events/models.py b/gracedb/events/models.py
index 7e1f1962b69ea2650ac67b281373ae73f173a644..f9afd3271b9c573e1a52fc137fdf957c7a41f6d3 100644
--- a/gracedb/events/models.py
+++ b/gracedb/events/models.py
@@ -181,6 +181,7 @@ class Event(models.Model):
         # XXX Not good.  But then, it never was.
         return reverse('file_list', args=[self.graceid()])
 
+    @property
     def datadir(self):
         # Create a file-like object which is the SHA-1 hexdigest of the Event's primary key
         hdf = StringIO(sha1(str(self.id)).hexdigest())
@@ -320,7 +321,7 @@ class Event(models.Model):
 
         if purge:
             # Delete data directory
-            datadir = self.datadir()
+            datadir = self.datadir
             if os.path.isdir(datadir):
                 shutil.rmtree(datadir)
 
@@ -696,7 +697,7 @@ class SingleInspiral(models.Model):
         """Given an Event (and optional location of coinc.xml) update SingleInspiral data"""
         # XXX Need a better way to find original data.
         if datafile is None:
-            datafile = os.path.join(event.datadir(), 'coinc.xml')
+            datafile = os.path.join(event.datadir, 'coinc.xml')
 
         try:
             xmldoc = glue.ligolw.utils.load_filename(datafile, contenthandler=LIGOLWContentHandler)
diff --git a/gracedb/events/permission_utils.py b/gracedb/events/permission_utils.py
index fb8914d589ddf976b34095af6c68e208c5c8d7b7..c843af64013ba72383822bef732da4c1b5001bf0 100644
--- a/gracedb/events/permission_utils.py
+++ b/gracedb/events/permission_utils.py
@@ -158,7 +158,7 @@ def check_external_file_access(event, filename):
     filename, version = get_file_version(filename)
     if version is None:
         # Figure out the version by following the link
-        filepath = os.path.join(event.datadir(), filename)
+        filepath = os.path.join(event.datadir, filename)
         if os.path.islink(filepath):
             target_file = os.path.realpath(filepath)
             target_basename = os.path.basename(target_file)
diff --git a/gracedb/events/view_logic.py b/gracedb/events/view_logic.py
index cb6e165e01c767f0300763cda37f709ef631cc85..44a1f31279e4c270ba5082f78d5b89c09d685137 100644
--- a/gracedb/events/view_logic.py
+++ b/gracedb/events/view_logic.py
@@ -104,7 +104,7 @@ def _createEventFromForm(request, form):
 
         f = request.FILES['eventFile']
         if pipeline.name not in ['HardwareInjection',]:
-            eventDir = event.datadir()
+            eventDir = event.datadir
             os.makedirs( eventDir )
             uploadDestination = os.path.join(eventDir, f.name)
             fdest = VersionedFile(uploadDestination, 'w')
diff --git a/gracedb/events/view_utils.py b/gracedb/events/view_utils.py
index 3da787cb9e4674e7fbfd00c3838ffca518e14fd5..8a6240658ab39e6f6f035c1f98d5ae5c4cec378a 100644
--- a/gracedb/events/view_utils.py
+++ b/gracedb/events/view_utils.py
@@ -567,7 +567,7 @@ def voeventToDict(voevent, request=None):
     }
 
     # Read in the filecontents
-    filepath = os.path.join(voevent.event.datadir(), voevent.filename)
+    filepath = os.path.join(voevent.event.datadir, voevent.filename)
     text = None
     try: 
         text = open(filepath, 'r').read()
@@ -622,7 +622,7 @@ def assembleLigoLw(objects):
 
     xmldoc = ligolw.Document()
     for obj in objects:
-        fname = os.path.join(obj.datadir(), "coinc.xml")
+        fname = os.path.join(obj.datadir, "coinc.xml")
         utils.load_filename(fname, xmldoc=xmldoc, contenthandler=LIGOLWContentHandler)
 
     ligolw_add.reassign_ids(xmldoc)
@@ -631,7 +631,7 @@ def assembleLigoLw(objects):
     return xmldoc
 
 def _saveUploadedFile(event, uploadedFile):
-    fname = os.path.join(event.datadir(), uploadedFile.name)
+    fname = os.path.join(event.datadir, uploadedFile.name)
     f = VersionedFile(fname, "w")
     for chunk in uploadedFile.chunks():
         f.write(chunk)
@@ -779,7 +779,7 @@ def flexigridResponse(request, objects):
     return response
 
 def get_file(event, filename="event.log"):
-    logfilename = os.path.join(event.datadir(), filename)
+    logfilename = os.path.join(event.datadir, filename)
     contents = ""
     try:
         lines = open(logfilename, "r").readlines()
diff --git a/gracedb/events/views.py b/gracedb/events/views.py
index d9466015b46adef25b98aaef72fa922c3c88acd9..0fbdf031795c39c64cbc66d71d5aa9731df210cd 100644
--- a/gracedb/events/views.py
+++ b/gracedb/events/views.py
@@ -209,7 +209,7 @@ def logentry(request, event, num=None):
         file_version = None
         if uploadedFile:
             filename = uploadedFile.name
-            filepath = os.path.join(event.datadir(), filename)
+            filepath = os.path.join(event.datadir, filename)
 
             try:
                 # Open / Write the file.
@@ -856,7 +856,7 @@ def file_list(request, event):
                 if filename not in f:
                     f.append(filename)
     else:
-        for dirname, dirnames, filenames in os.walk(event.datadir()):
+        for dirname, dirnames, filenames in os.walk(event.datadir):
             f.extend(filenames)
             break
 
@@ -877,7 +877,7 @@ def file_download(request, event, filename):
             msg = "You do not have permission to view this file."
             return HttpResponseForbidden(msg)
 
-    file_path = os.path.join(event.datadir(), filename)
+    file_path = os.path.join(event.datadir, filename)
     return check_and_serve_file(request, file_path,
         ResponseClass=HttpResponse)