From 84c6411e1f1ff42db07b1d0de26f8d80399857ed Mon Sep 17 00:00:00 2001
From: Brian Moe <brian.moe@ligo.org>
Date: Tue, 21 Jul 2009 11:23:45 -0500
Subject: [PATCH] Misc re upload permissions, email alerts, creation logs. Only
 submitter can upload/log to an event. Email alerts - removed file url.  Added
 event summary, which currently only includes GPS time. Fixed bug where Omega
 event creation failed to add EventLog entries for event.log and coinc.xml.

---
 gracedb/alert.py      | 26 +++++++++++++++++---------
 gracedb/translator.py | 19 +++++++++++++++++--
 gracedb/views.py      |  4 ++++
 3 files changed, 38 insertions(+), 11 deletions(-)

diff --git a/gracedb/alert.py b/gracedb/alert.py
index d1d4f7939..4137a0eb3 100644
--- a/gracedb/alert.py
+++ b/gracedb/alert.py
@@ -13,6 +13,13 @@ def issueAlert(event, location):
     issueXMPPAlert(event, location)
     issueEmailAlert(event, location)
 
+def indent(nindent, text):
+    return "\n".join([(nindent*' ')+line for line in text.split('\n')])
+
+def prepareSummary(event):
+    # XXX TBD what exactly this summary is.
+    return "GPS Time: %s" % event.gpstime
+
 def issueEmailAlert(event, location):
     if event.group.name == 'Test':
         fromaddress = settings.ALERT_TEST_EMAIL_FROM
@@ -22,14 +29,15 @@ def issueEmailAlert(event, location):
         toaddress = settings.ALERT_EMAIL_TO
     subject = "[gracedb] %s event. ID: %s" % (event.get_analysisType_display(), event.graceid())
     message = """
-    New Event
-    %s / %s
-    GRACEID:   %s
-    Info:      %s
-    Data:      %s
-    TWiki:     %s
-    Submitter: %s
-    Original Data: %s
+New Event
+%s / %s
+GRACEID:   %s
+Info:      %s
+Data:      %s
+TWiki:     %s
+Submitter: %s
+Event Summary:
+%s
 """
     message %= (event.group.name,
                 event.get_analysisType_display(),
@@ -38,7 +46,7 @@ def issueEmailAlert(event, location):
                 event.weburl(),
                 event.wikiurl(),
                 event.submitter.name,
-                location)
+                indent(3, prepareSummary(event)))
     send_mail(subject, message, fromaddress, toaddress)
 
 def issueXMPPAlert(event, location):
diff --git a/gracedb/translator.py b/gracedb/translator.py
index ec87bcbab..f96166dde 100644
--- a/gracedb/translator.py
+++ b/gracedb/translator.py
@@ -53,7 +53,7 @@ def handle_uploaded_data(event, datafilename,
                        comment="Coinc Table Created")
         log.save()
 
-        # Exctract relevant data from xmldoc.
+        # Extract relevant data from xmldoc.
         coinc_table = glue.ligolw.table.getTablesByName(
                             xmldoc,
                             glue.ligolw.lsctables.CoincInspiralTable.tableName)
@@ -79,7 +79,22 @@ def handle_uploaded_data(event, datafilename,
         output_dir = os.path.dirname(datafilename)
         write_output_files(output_dir, xmldoc, log_data)
 
-        # Exctract relevant data from xmldoc.
+        # Create EventLog entries about these files.
+        private_data_url = os.path.join(event.weburl(), 'private')
+
+        log = EventLog(event=event,
+                       filename=log_filename,
+                       issuer=event.submitter,
+                       comment="Log File Created" )
+        log.save()
+
+        log = EventLog(event=event,
+                       filename=coinc_table_filename,
+                       issuer=event.submitter,
+                       comment="Coinc Table Created")
+        log.save()
+
+        # Extract relevant data from xmldoc.
         coinc_table = glue.ligolw.table.getTablesByName(
                             xmldoc,
                             glue.ligolw.lsctables.MultiBurstTable.tableName)
diff --git a/gracedb/views.py b/gracedb/views.py
index 44f99cea4..e34c5b554 100644
--- a/gracedb/views.py
+++ b/gracedb/views.py
@@ -120,6 +120,8 @@ def upload(request):
         msg = "ERROR: missing arg(s)"
     elif not event:
         msg = "ERROR: Event '%s' does not exist" % graceid
+    elif event.submitter != request.ligouser:
+        msg = "ERROR: Only submitter can upload files"
     else:
         #event issuer comment
         log = EventLog(event=event,
@@ -158,6 +160,8 @@ def log(request):
         msg = "ERROR: missing arg(s)"
     elif not event:
         msg = "ERROR: Event '%s' does not exist" % graceid
+    elif event.submitter != request.ligouser:
+        msg = "ERROR: Only submitter can add log messages"
     else:
         #event issuer comment
         log = EventLog(event=event, issuer=request.ligouser, comment=message)
-- 
GitLab