3efeb7ddb50d2fe9ad54cde63f0d6d5048cd7aec
kent
  Wed Sep 25 17:16:10 2019 -0700
Stripping out return of contact info other than name from public API pending discussion at least.  Making project comments and contacts visible.

diff --git src/hca/hcat/mysite/hcat/api.py src/hca/hcat/mysite/hcat/api.py
index 7c671b5..7116644 100644
--- src/hca/hcat/mysite/hcat/api.py
+++ src/hca/hcat/mysite/hcat/api.py
@@ -1,144 +1,147 @@
 
 from django.http import HttpResponse
 from django.shortcuts import get_object_or_404
 import json
 from .models import *
 
 def api_index(request):
     objects = [Project, ProjectState, Contributor, Tracker, AssayTech, Disease, Organ]
     a = []
     for o in objects:
         p = {"class": o.__name__.lower(), "count": o.objects.count()}
         a.append(p)
     return HttpResponse(json.dumps(a), content_type="application/json")
 
 def serializable_assay_tech(c):
     projects = []
     for p in c.projects.all():
          projects.append(p.short_name)
     return {"short_name": c.short_name, "description": c.description, "projects": projects}
 
 def api_assaytech_list(request):
     a = []
     for p in AssayTech.objects.order_by("id"):
         j = serializable_assay_tech(p)
         a.append(j)
     return HttpResponse(json.dumps(a), content_type="application/json")
 
 def serializable_project_state(p):
     return {"state": p.state, "description": p.description}
 
 def api_projectstate_list(request):
     a = []
     for p in ProjectState.objects.order_by("id"):
         j = serializable_project_state(p)
         a.append(j)
     return HttpResponse(json.dumps(a), content_type="application/json")
 
 def serializable_contributor(c):
     projects = []
     for p in c.projects.all():
          projects.append(p.short_name)
     labs = []
     for p in c.labs.all():
          labs.append(p.short_name)
-    return {"name": c.name, "type": str(c.type),
-            "email": c.email, "phone": c.phone, "address": c.address,
-            "department": c.department, "institute":c.institute, "city":c.city,
-            "zip_postal_code":c.zip_postal_code, "country":c.country,
-            "projects":projects, "labs":labs}
+    return {"name": c.name, "projects":projects, "labs":labs}
     #projects = models.ManyToManyField("Project", blank=True, through="project_contributors")
     #labs = models.ManyToManyField("Lab", blank=True, through="lab_contributors")
     #grants = models.ManyToManyField("Grant", blank=True, through="grant_funded_contributors")
 
 def api_contributor_list(request):
     a = []
     for p in Contributor.objects.order_by("name"):
         c = serializable_contributor(p)
         a.append(c)
     return HttpResponse(json.dumps(a), content_type="application/json")
 
 def serializable_organ(c):
     projects = []
     for p in c.projects.all():
          projects.append(p.short_name)
     return {"short_name": c.short_name, "description": c.description, 
         "ontology_id":c.ontology_id, "ontology_label":c.ontology_label,"projects":projects}
 
 def api_organ_list(request):
     a = []
     for p in Organ.objects.order_by("short_name"):
         c = serializable_organ(p)
         a.append(c)
     return HttpResponse(json.dumps(a), content_type="application/json")
 
 def api_organ_detail(request,short_name):
    c = get_object_or_404(Organ, short_name=short_name)
    return HttpResponse(json.dumps(serializable_organ(c)), content_type="application/json")
 
 def serializable_tracker(c):
     return {
         "project": str(c.project),
         "uuid": c.uuid, "submission_id": c.submission_id, 
         "submission_bundles_exported_count":c.submission_bundles_exported_count, 
         "aws_primary_bundle_count":c.aws_primary_bundle_count,
         "gcp_primary_bundle_count":c.gcp_primary_bundle_count,
         "aws_analysis_bundle_count":c.aws_analysis_bundle_count,
         "gcp_analysis_bundle_count":c.gcp_analysis_bundle_count,
         "azul_analysis_bundle_count":c.azul_analysis_bundle_count,
         "succeeded_workflows":c.succeeded_workflows,
         "matrix_bundle_count":c.matrix_bundle_count,
         "matrix_cell_count":c.matrix_cell_count,
         }
 
 def api_tracker_list(request):
     a = []
     for p in Tracker.objects.order_by("-project_id"):
         c = serializable_tracker(p)
         a.append(c)
     return HttpResponse(json.dumps(a), content_type="application/json")
 
 def serializable_disease(c):
     projects = []
     for p in c.projects.all():
          projects.append(p.short_name)
     return {"short_name": c.short_name, "description": c.description, "projects":projects}
 
 def api_disease_list(request):
     a = []
     for p in Disease.objects.order_by("short_name"):
         c = serializable_disease(p)
         a.append(c)
     return HttpResponse(json.dumps(a), content_type="application/json")
 
 def serializable_project(p):
     contributors = []
     for c in p.contributors.all():
         contributors.append(str(c))
+    contacts = []
+    for c in p.contacts.all():
+        contacts.append(str(c))
     organs = []
     for o in p.organ.all():
         organs.append(str(o))
+    sample_type = []
+    for s in p.sample_type.all():
+        sample_type.append(str(s))
     species = []
     for s in p.species.all():
         species.append(str(s))
     techs = []
     for t in p.assay_tech.all():
         techs.append(str(t))
     return {
         "short_name":p.short_name, "stars":p.stars, "state_reached": str(p.state_reached), 
         "origin_name": p.origin_name, "title":p.title, 
-        "wrangler1": str(p.wrangler1), "wrangler2": str(p.wrangler2), 
-        "species":species, "organs":organs, "assay_tech": techs, "contributors":contributors,
-        "description":p.description, "submit_date":str(p.submit_date)}
+        "wrangler1": str(p.wrangler1), "wrangler2": str(p.wrangler2), "contacts":contacts,
+        "species":species, "organs":organs, "sample_type":sample_type,
+        "assay_tech": techs, "contributors":contributors,
+        "description":p.description, "comments":p.comments, "submit_date":str(p.submit_date)}
     
 def api_project_list(request):
     a = []
     for p in Project.objects.order_by("-id"):
         j = serializable_project(p)
         a.append(j)
     return HttpResponse(json.dumps(a), content_type="application/json")
 
 
 def api_project_detail(request,short_name):
    c = get_object_or_404(Project, short_name=short_name)
    return HttpResponse(json.dumps(serializable_project(c)), content_type="application/json")