From f2463d936bd70a97c9229d5256a8f31d7a543e69 Mon Sep 17 00:00:00 2001
From: Tanner Prestegard <tanner.prestegard@ligo.org>
Date: Thu, 28 Jun 2018 09:34:57 -0500
Subject: [PATCH] Useful file-related utility methods for logs

---
 gracedb/core/models.py        | 10 ++++++++++
 gracedb/events/models.py      |  5 +----
 gracedb/superevents/models.py |  7 +++----
 3 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/gracedb/core/models.py b/gracedb/core/models.py
index 53e4221cb..e9be116ab 100644
--- a/gracedb/core/models.py
+++ b/gracedb/core/models.py
@@ -213,6 +213,16 @@ class LogBase(models.Model):
         abstract = True
         ordering = ['-created', '-N']
 
+    @property
+    def full_filename(self):
+        if self.filename:
+            actual_filename = self.filename
+            if self.file_version is not None:
+                actual_filename += ",{n}".format(n=self.file_version)
+        else:
+            actual_filename = None
+        return actual_filename
+
     def fileurl(self):
         # Override this on derived classes
         return NotImplemented
diff --git a/gracedb/events/models.py b/gracedb/events/models.py
index 771750211..60972b06a 100644
--- a/gracedb/events/models.py
+++ b/gracedb/events/models.py
@@ -357,11 +357,8 @@ class EventLog(CleanSaveModel, LogBase, AutoIncrementModel):
 
     def fileurl(self):
         if self.filename:
-            actual_filename = self.filename
-            if self.file_version >= 0:
-                actual_filename += ',%d' % self.file_version
             return reverse('file-download', args=[self.event.graceid(),
-                actual_filename])
+                self.full_filename])
         else:
             return None
 
diff --git a/gracedb/superevents/models.py b/gracedb/superevents/models.py
index 06118e239..ac3146e10 100644
--- a/gracedb/superevents/models.py
+++ b/gracedb/superevents/models.py
@@ -346,12 +346,11 @@ class Log(CleanSaveModel, LogBase, AutoIncrementModel):
         unique_together = (('superevent', 'N'),)
 
     def get_full_file_path(self):
-        # TODO: add file_version?
-        return os.path.join(self.superevent.datadir, self.filename)
+        return os.path.join(self.superevent.datadir, self.full_filename)
 
     def fileurl(self):
-        # TODO: implement this
-        super(Log, self).fileurl()
+        return reverse("superevents:file-download", args=
+            [self.superevent.superevent_id, self.full_filename])
 
 
 class Labelling(m2mThroughBase):
-- 
GitLab