Stop assuming that library_id == pk.
authorDiane Trout <diane@caltech.edu>
Wed, 8 Apr 2009 00:47:34 +0000 (00:47 +0000)
committerDiane Trout <diane@caltech.edu>
Wed, 8 Apr 2009 00:47:34 +0000 (00:47 +0000)
I needed to fix the get_absolute_url to lookup by library_id,
we needed a redirect function to get to the right admin page.

And for sequence runs I don't have any eland results so the get result files
failed because it was assuming that the eland_result from the run xml would
always have all 8 lanes defined in its dictionary. Now I check to see if its
defined and if its not I don't display anything.

htsworkflow/frontend/samples/models.py
htsworkflow/frontend/samples/views.py

index 26d718576d9c45905b9544d733087099d3ec20a3..7199fbf8ea10eb547d56dd27a1955a127cc864b0 100644 (file)
@@ -237,4 +237,4 @@ class Library(models.Model):
 
   @models.permalink
   def get_absolute_url(self):
-    return ('htsworkflow.frontend.samples.views.library_to_flowcells', [str(self.id)])
+    return ('htsworkflow.frontend.samples.views.library_to_flowcells', [str(self.library_id)])
index ee426261179244cd6243aaaf4e225db0549e82aa..478c547030e57a8a303ad9f2c0db4627b38aadc4 100644 (file)
@@ -9,7 +9,7 @@ from htsworkflow.frontend import settings
 from htsworkflow.util import makebed
 from htsworkflow.util import opener
 
-from django.http import HttpResponse
+from django.http import HttpResponse, HttpResponseRedirect
 from django.shortcuts import render_to_response
 from django.template import RequestContext
 from django.template.loader import get_template
@@ -316,7 +316,7 @@ def _make_eland_results(flowcell_id, lane, interesting_flowcells):
 
     results = []
     for cycle in cur_fc.keys():
-        result_path = cur_fc[cycle]['eland_results'][lane]
+        result_path = cur_fc[cycle]['eland_results'].get(lane, None)
         result_link = make_result_link(flowcell_id, cycle, lane, result_path)
         results.append({'flowcell_id': flowcell_id,
                         'cycle': cycle, 
@@ -333,6 +333,9 @@ def make_summary_url(flowcell_id, cycle_name):
     return url
 
 def make_result_link(flowcell_id, cycle_name, lane, eland_result_path):
+    if eland_result_path is None:
+        return ("", "", "")
+
     result_type = get_eland_result_type(eland_result_path)
     result_url = '/results/%s/%s/eland_result/%s' % (flowcell_id, cycle_name, lane)
     result_label = 'eland %s' % (result_type,)
@@ -377,4 +380,8 @@ def _files(flowcell_id, lane):
         return ''
     
     return '(' + '|'.join(output) + ')'
-            
+
+def library_id_to_admin_url(request, lib_id):
+    lib = Library.objects.get(library_id=lib_id)
+    return HttpResponseRedirect('/admin/samples/library/%s' % (lib.id,))
+