Merge branch 'add-condition'
authorDiane Trout <diane@caltech.edu>
Thu, 26 May 2011 17:47:24 +0000 (10:47 -0700)
committerDiane Trout <diane@caltech.edu>
Thu, 26 May 2011 17:47:24 +0000 (10:47 -0700)
Conflicts:
htsworkflow/frontend/templates/samples/library_detail.html

Resolve differences between the headers of library_detail for
adding RDFa and reordering the sample details.

1  2 
htsworkflow/frontend/samples/models.py
htsworkflow/frontend/templates/samples/library_detail.html

index aac0ff6692686440e0943dabeed75b095d2d9b44,7584cfe94ed7ddd74f45320def558c4aab14152d..e49d23b16e98cde532377ae7ab08d24bfb7bb7f1
@@@ -4,6 -4,7 +4,6 @@@ from django.db import model
  from django.contrib.auth.models import User, UserManager
  from django.db.models.signals import pre_save, post_save
  from django.db import connection
 -from htsworkflow.frontend import settings
  from htsworkflow.frontend.reports.libinfopar import *
  
  
@@@ -19,8 -20,7 +19,7 @@@ class Antibody(models.Model)
          max_length=20,
          blank=True,
          null=True, 
-         db_index=True,
-         verbose_name = 'Short Name'
+         db_index=True
      )
      catalog = models.CharField(max_length=50, unique=True, db_index=True)
      antibodies = models.CharField(max_length=500, db_index=True)
@@@ -38,8 -38,8 +37,8 @@@ class Cellline(models.Model)
      nickname = models.CharField(max_length=20,
          blank=True,
          null=True, 
-         db_index=True,
-         verbose_name = 'Short Name')
+         db_index=True)
+     
      notes = models.TextField(blank=True)
      def __unicode__(self):
          return unicode(self.cellline_name)
@@@ -101,10 -101,6 +100,10 @@@ class Species(models.Model)
    class Meta:
      verbose_name_plural = "species"
      ordering = ["scientific_name"]
 +
 +  @models.permalink
 +  def get_absolute_url(self):
 +    return ('htsworkflow.frontend.samples.views.species', [str(self.id)])
    
  class Affiliation(models.Model):
    name = models.CharField(max_length=256, db_index=True, verbose_name='Name')
@@@ -152,7 -148,7 +151,7 @@@ class Library(models.Model)
    # New field Aug/19/08
    # SQL to add column: alter table fctracker_library add column "replicate" smallint unsigned NULL;
    REPLICATE_NUM = ((1,1),(2,2),(3,3),(4,4))
-   replicate =  models.PositiveSmallIntegerField(choices=REPLICATE_NUM,default=1
+   replicate =  models.PositiveSmallIntegerField(choices=REPLICATE_NUM,blank=True,null=True
    experiment_type = models.ForeignKey(ExperimentType)
    library_type = models.ForeignKey(LibraryType, blank=True, null=True)
    creation_date = models.DateField(blank=True, null=True)
        ordering = ["-id"]
    
    def antibody_name(self):
-     str ='<a target=_self href="/admin/samples/antibody/'+self.antibody.id.__str__()+'/" title="'+self.antibody.__str__()+'">'+self.antibody.nickname+'</a>' 
+     str ='<a target=_self href="/admin/samples/antibody/'+self.antibody.id.__str__()+'/" title="'+self.antibody.__str__()+'">'+self.antibody.label+'</a>' 
      return str
    antibody_name.allow_tags = True
  
    @models.permalink
    def get_absolute_url(self):
      return ('htsworkflow.frontend.samples.views.library_to_flowcells', [str(self.id)])
 -    
 -  
 -    
  
  
  class HTSUser(User):
index 35baefc8c043f96122cff7a719c4cffcbf6d4a1f,412f201c0b26d5e1bafcca0e8637743122939c98..2c2d90bf793acfb87e34d4be28997444e86705f6
      {% block additional_javascript %}
      {% endblock %}
  
+ <style type="text/css">
+   /* <![CDATA[ */
+   div#librarydetail {
+     margin: 0;
+     padding: 0;
+   }
+   div#librarydetail table, div#librarydetail td {
+     border-style: solid;
+   }
+   div#librarydetail table {
+     border-width: 0 0 1px 1px;
+     border-spacing: 0;
+     border-collapse: collapse;
+   }
+   div#librarydetail td {
+     margin: 0;
+     padding: 3px;
+     border-width: 1px 1px 0 0;
+   }
+   div#librarydetail thead {
+     text-align: center;
+     }
+   div#librarydetail tbody {
+     text-align: right;
+   }
+   div#librarydetail h1,
+   div#librarydetail h2
+   {
+     font-size: 150%;
+   }
+   div#librarydetail h3 {
+      font-size: 125%;
+      margin: 0;
+   }
+   div#librarydetail h4,
+   div#librarydetail h5,
+   div#librarydetail ul,
+   div#librarydetail ol,
+   div#librarydetail li
+   {
+     list-style: none;
+     margin: 0;   
+   }
+   div#librarydetail ul,
+   div#librarydetail ol
+   {
+     margin-bottom: .5em;
+   }
+   div.library_identity { 
+     float: left; margin: 5px; }
+   div.library_sample_detail { float: left; margin: 5px; }
+   div.library_library_detail { float: left; margin: 5px; }
+   div.library_statistics { clear: both; border: 1px; }
+  /* ]]> */
+ </style>
  {% endblock %}
  
  {% block content %}
- <div id="library_detail">
-   <h2>About this library</h2>
-   <b>Library ID</b>: {{ lib.id }}<br/>
-   <b>Name</b>: 
-     <span property="libns:name">{{ lib.library_name }}</span>
-   <br/>
-   <b>Species</b>: 
-     <a href="{{lib.library_species.get_absolute_url}}" rel="libns:species">
-     <span property="libns:species_name">{{ lib.library_species.scientific_name }}</span></a>
-   <br/>
-   <b>Concentration</b>: 
-     <span property="libns:concentration">{{ lib.undiluted_concentration }} ng/µl</span>
-   <br/>
-   <b>Gel Cut Size</b>: 
-     <span property="libns:gel_cut">{{ lib.gel_cut_size }}</span>
-   <br/>
-   <b>Insert Size</b>: 
-     <span property="libns:insert_size">{{ lib.insert_size }}</span>
-   <br/>
-   <b>Background or Cell Line</b>:
-      <span property="libns:cell_line">{{ lib.cell_line }}</span>
-   <br/>
-   <b>Replicate</b>: 
-      <span property="libns:replicate">{{ lib.replicate }}</span>
-   <br/>
-   <b>Library Type</b>:
-      <span property="libns:library_type">{{ lib.library_type }}</span>
-   <br/>
-   <b>Experiment Type</b>:
-      <span property="libns:experiment_type">{{ lib.experiment_type }}</span>
-   <br/>
-   <b>Made By</b>: 
-     <span property="libns:made_by">{{ lib.made_by }}</span>
-   <br/>
-   <b>Creation Date</b>
-     <span property="libns:date" content="{{lib.creation_date|date:'Y-m-d'}}T00:00:00" datatype="xsd:dateTime">{{ lib.creation_date }}</span>
-   <br/> 
-   <b>Protocol Stopping Point</b>
-     <span property="libns:stopping_point">{{ lib.stopping_point_name }}</span>
-   <br/> 
-   <b>Affiliations</b>:
-   <ul>
-     {% for individual in lib.affiliations.all %}
-       <li property="libns:affliation" content="{{individual.name}}">
-         {{ individual.name }} ( {{ individual.contact }} )
-       </li>
-     {% endfor %}
-   </ul>
-   <div class="htswdetail">
+ <div id="librarydetail">
+   <div class="library_identity">
+     <h2>Library Name</h2>  
+     <b>Library ID</b>: {{ lib.id }}<br/>
+     <b>Name</b>: 
+       <span property="libns:name">{{ lib.library_name }}</span>
+     <br/>
+     <b>Affiliations</b>:
+     <ul>
+       {% for individual in lib.affiliations.all %}
+         <li property="libns:affliation" content="{{individual.name}}">
+           {{ individual.name }} ( {{ individual.contact }} )
+         </li>
+       {% endfor %}
+     </ul>
+   </div>
+   <div class="library_sample_detail">
+     <h2>Sample Details</h2>
+     <b>Species</b>: 
+       <span property="libns:species">{{ lib.library_species.scientific_name }}</span>
+     <br/>
+     <b>Experiment Type</b>:
+        <span property="libns:experiment_type">{{ lib.experiment_type }}</span>
+     <br/>
+     {% if lib.antibody %}
+     <b>Antibody</b>:
+        <span property="libns:antibody">{{ lib.antibody.antibodies }}</span>
+        {% if lib.antibody.antibodies.nuckname %}
+        (<span property="libns:antibody_term">{{ lib.antibody.nickname }}</span>)
+        {% endif %}
+     <br/>
+     {% endif %}
+     {% if lib.cell_line %}
+     <b>Background or Cell Line</b>:
+        <span property="libns:cell_line">{{ lib.cell_line }}</span>
+     <br/>
+     {% endif %}
+     {% if lib.condition %}
+     <b>Condition</b>:
+        <span property="libns:condition">{{ lib.condition.condition_name }}</span>
+        {% if lib.condition.nickname %}
+        (<span property="libns:condition_term">{{ lib.condition.nickname }}</span>)
+        {% endif %}
+     <br/>
+     {% endif %}
+     {% if lib.replicate %}
+     <b>Replicate</b>: 
+        <span property="libns:replicate">{{ lib.replicate }}</span>
+     <br/>
+     {% endif %}
+   </div>
+   <div class="library_library_detail">
+     <h2>Library Details</h2>
+     <b>Library Type</b>:
+        <span property="libns:library_type">{{ lib.library_type }}</span>
+     <br/>
+     <b>Creation Date</b>
+       <span property="libns:date" content="{{lib.creation_date|date:'Y-m-d'}}T00:00:00" datatype="xsd:dateTime">{{ lib.creation_date }}</span>
+     <br/> 
+     <b>Made By</b>: 
+       <span property="libns:made_by">{{ lib.made_by }}</span>
+     <br/>
+     {% if lib.gel_cut_size %}
+     <b>Gel Cut Size</b>: 
+       <span property="libns:gel_cut">{{ lib.gel_cut_size }}</span>
+     <br/>
+     {% endif %}
+     {% if lib.insert_size %}
+     <b>Insert Size</b>: 
+       <span property="libns:insert_size">{{ lib.insert_size }}</span>
+     <br/>
+     {% endif %}
+     {% if lib.undiluted_concentration %}
+     <b>Concentration</b>: 
+       <span property="libns:concentration">{{ lib.undiluted_concentration }} ng/µl</span>
+     <br/>
+     {% endif %}
+     {% if lib.stopping_point_name %}
+     <b>Protocol Stopping Point</b>
+       <span property="libns:stopping_point">{{ lib.stopping_point_name }}</span>
+     <br/>
+     {% endif %}
+   </div>
+   <div class="library_statistics">
    <h2>Raw Result Files</h2>
    <table>
    <thead>
    </thead>
    <tbody>
      {% for result in eland_results %}
 -    <tr about="/flowcell/{{result.flowcell_id}}/lane/{{result.lane}}">
 +    <tr about="{{result.flowcell.get_absolute_url}}">
        <td property="libns:date" content="{{result.run_date|date:'Y-m-d\TH:i:s'}}" datatype="xsd:dateTime">{{ result.run_date|date}}</td>
        <td>{{ result.cycle }}</td>
 -      <td property="libns:flowcell_id">{{ result.flowcell_id }}</td>
 -      <td property="libns:lane">{{ result.lane }}</td>
 +      <td><a href="{{result.flowcell.get_absolute_url}}"><span property="libns:flowcell_id">{{ result.flowcell_id }}</span></a></td>
 +      <td><a href="{{result.lane.get_absolute_url}}" rel="libns:has_lane"><span property="libns:lane_number" datatype="xsd:decimal">{{ result.lane.lane_number }}</span></a></td>
        <td><a href="{{ result.summary_url }}">Summary</a></td>
        <td><a href="{{ result.result_url }}">{{ result.result_label }}</a></td>
        <td>
      <tbody>
    
        {% for lane in lane_summary_list %}
 -      <tr about="/flowcell/{{lane.flowcell_id}}/lane/{{lane.lane_id}}/end/{% if lane.end %}{{ lane.end }}{% endif %}">
 +      <tr about="/flowcell/{{lane.flowcell_id}}/{{lane.lane_id}}/{% if lane.end %}#end{{ lane.end }}{% endif %}">
          <td>{{ lane.cycle_width }}</td>
          <td>{{ lane.flowcell_id }}</td>
          <td>{{ lane.lane_id }}</td>
      </thead>
      <tbody>
        {% for lane in lib.lane_set.all %}
 -      <tr>
 -        <td>{{ lane.flowcell.flowcell_id }}</td>
 -        <td>{{ lane.lane_number }}</td>
 +      <tr rel="libns:has_lane" resource="{{lane.get_absolute_url}}">
 +        <td><a href="{{lane.flowcell.get_absolute_url}}" rel="libns:flowcell">
 +            <span property="libns:flowcell_id">{{ lane.flowcell.flowcell_id }}</span></a></td>
 +        <td><a href="{{lane.get_absolute_url}}"> 
 +            <span property="libns:lane_number"  datatype="xsd:decimal"
 +               >{{ lane.lane_number }}</span></a></td>
          <td>{{ lane.comment }}</td>
        </tr>
          {% endfor %}
      </tbody>
    </table>
 -  <br/>
 -  <hr/>
 -  <h2>Count of multi-reads</h2>
 -  {% for lane in lane_summary_list %}
 -    {% if lane.summarized_reads %}
 -    <h3>
 -      {{lane.cycle_width}} {{ lane.flowcell_id }} lane {{ lane.lane_id }} 
 -      {% if lane.end %} end {{ lane.end }}{% endif %}
 -    </h3>
 -    <ul>
 -      {% for name, counts in lane.summarized_reads.items %}
 -      <li><b>{{ name }}</b>: {{ counts|intcomma }}</li>
 -      {% endfor %}
 -    </ul>
 -    {% endif %}
 -  {% endfor %}
    {% endblock %}
    </div>
  </div>