067c78eb755bc60a7dceba8da0e58df055f48810
kent
  Sat Aug 31 10:17:20 2019 -0700
Changing Vocab tables to no longer need the prefix, but to be distinguished by 'wrangler' as a prefix in the verbose_name.  Adding a bunch of fields to the wrangler part of the project and rearranging that page.

diff --git src/hca/hcat/mysite/hcat/admin.py src/hca/hcat/mysite/hcat/admin.py
index cd5ed51..94643e6 100644
--- src/hca/hcat/mysite/hcat/admin.py
+++ src/hca/hcat/mysite/hcat/admin.py
@@ -1,145 +1,181 @@
 
 # Register your models here.
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
 from django.contrib import admin
-from .models import Grant,Project,Lab,Contributor,VocabFunder,VocabProjectState,VocabConsent,Species,VocabOrgan,VocabOrganPart,VocabDisease,VocabSampleType,VocabAssayTech,VocabAssayType,VocabPublication,VocabComment,VocabCommentType,VocabProjectOrigin
+from .models import *
 
 class ContributorAdmin(admin.ModelAdmin):
     list_filter = ['project_role']
     autocomplete_fields = ['comments', 'projects', 'labs', 'grants']
     search_fields = ['name', 'project_role', 'email',]
     list_display = ['name', 'project_role', 'email', ]
 
 admin.site.register(Contributor, ContributorAdmin)
 
 
 class LabAdmin(admin.ModelAdmin):
     autocomplete_fields = ['contributors', 'pi', 'contact', 'grants', 'projects', 'comments']
     search_fields = ['short_name', 'pi', 'contact']
     list_display = ['short_name', 'institution',]
 
 admin.site.register(Lab, LabAdmin)
 
-class VocabProjectStateAdmin(admin.ModelAdmin):
+class ProjectStateAdmin(admin.ModelAdmin):
     list_display = ['state', 'description']
     autocomplete_fields = ['comments']
     
-admin.site.register(VocabProjectState, VocabProjectStateAdmin)
+admin.site.register(ProjectState, ProjectStateAdmin)
 
-class VocabProjectOriginAdmin(admin.ModelAdmin):
+class ProjectOriginAdmin(admin.ModelAdmin):
     list_display = ['short_name', 'description']
     autocomplete_fields = ['comments']
     
-admin.site.register(VocabProjectOrigin, VocabProjectOriginAdmin)
+admin.site.register(ProjectOrigin, ProjectOriginAdmin)
+
+#    contacts = models.ManyToManyField(Contributor, blank=True, related_name="contacts")
+#    responders = models.ManyToManyField(Contributor, blank=True, related_name="responders")
+#    questionnaire = models.FileField(upload_to="uploads/project", blank=True, null=True, default=None)
+#    tAndC = models.FileField(upload_to="uploads/project", blank=True, null=True, default=None)
+#    sheet_template = models.FileField(upload_to="uploads/project", blank=True, null=True, default=None)
+#    sheet_from_lab = models.FileField(upload_to="uploads/project", blank=True, null=True, default=None)
+#    sheet_curated = models.FileField(upload_to="uploads/project", blank=True, null=True, default=None)
+#    sheet_validated = models.FileField(upload_to="uploads/project", blank=True, null=True, default=None)
+#    metadataExcel = models.FileField(upload_to="uploads/project", blank=True, null=True, default=None)
+#    staging_area = models.URLField(blank=True, null=True)
 
 class ProjectAdmin(admin.ModelAdmin):
-    search_fields = ['short_name', 'title', 'contributors', 'labs', 'organ_part', 'organ', 'disease', 'species']
-    autocomplete_fields = ["contributors", "labs", "organ", "organ_part", "disease", "species", "sample_type", "assay_type", "assay_tech", "publications", "comments", "grants"]
+    search_fields = ['short_name', 'title', 'contributors', 'labs', 'organ_part', 'organ', 'disease', 'species', 'grants']
+    autocomplete_fields = ["contributors", "labs", "organ", "organ_part", "disease", 
+    	"species", "sample_type", "assay_type", "assay_tech", "publications", "comments", 
+	"grants", "files", "urls", "contacts", "responders"]
     list_display = ['short_name', 'stars', 'state', 'wrangler1', 'title',]
     list_filter = ['species', 'origin', 'state', 'assay_tech']
     fieldsets = (
-        ('overall', { 'fields': ('short_name', 'title', 'description','publications', )}),
-        ('wrangling',  { 'fields': ('state', 'consent', 'stars', 'wrangler1', 'wrangler2', 'contributors', 'labs', 'grants', 'comments', 'origin')}),
-        ('biosample',  { 'fields': ('species', 'sample_type', 'organ', 'organ_part', 'disease')}),
+        ('overall', { 'fields': (('short_name', 'state', ), ('title', 'stars'), ('labs', 'consent'))}),
+        ('wrangling',  { 'fields': (('wrangler1', 'wrangler2'), 'comments',
+		('origin', 'origin_name',),
+		'contacts', 'responders',
+		('questionnaire', 'tAndC'),
+		('sheet_template', 'sheet_from_lab'),
+		('sheet_curated', 'sheet_validated'),
+		'staging_area', 
+		)}),
+        ('biosample',  { 'fields': (('species', 'sample_type'), ('organ', 'organ_part'), 'disease')}),
         ('assay', { 'fields': ('assay_type', 'assay_tech', 'cells_expected')}),
+	('pubs, people, and pay', { 'fields': ('description', 'publications', 'contributors', 'grants')}),
     )
     def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "wrangler1" or db_field.name == "wrangler2":
            kwargs["queryset"] = Contributor.objects.filter(project_role="wrangler")
        return super().formfield_for_foreignkey(db_field, request, **kwargs)
 
 admin.site.register(Project, ProjectAdmin)
 
 class GrantAdmin(admin.ModelAdmin):
     autocomplete_fields = ["funded_contributors", "funded_projects", "funded_labs", "comments"]
     search_fields = ["funded_contributors", "funded_projects", "funded_labs"]
     list_display = ['grant_id', 'funder', 'grant_title',]
     list_filter = ['funder']
 
 admin.site.register(Grant, GrantAdmin)
 
-class VocabFunderAdmin(admin.ModelAdmin):
+class FunderAdmin(admin.ModelAdmin):
     list_display = ['short_name', 'description',]
     autocomplete_fields = ['comments']
 
-admin.site.register(VocabFunder, VocabFunderAdmin)
+admin.site.register(Funder, FunderAdmin)
 
 
 class SpeciesAdmin(admin.ModelAdmin):
-    search_fields = ["common_name"]
+    search_fields = ["common_name", "scientific_name", "ncbi_taxon"]
     list_display = ['common_name', 'scientific_name', 'ncbi_taxon',]
 
 admin.site.register(Species, SpeciesAdmin)
 
-class VocabConsentAdmin(admin.ModelAdmin):
-    search_fields = ["short_name"]
+class ConsentAdmin(admin.ModelAdmin):
+    search_fields = ["short_name", "description"]
     list_display = ["short_name", "description"]
     autocomplete_fields = ['comments']
 
-admin.site.register(VocabConsent, VocabConsentAdmin)
+admin.site.register(Consent, ConsentAdmin)
 
-class VocabDiseaseAdmin(admin.ModelAdmin):
-    search_fields = ["short_name"]
+class DiseaseAdmin(admin.ModelAdmin):
+    search_fields = ["short_name", "description"]
     list_display = ["short_name", "description"]
-    autocomplete_fields = ['comments']
+    autocomplete_fields = ['comments', 'projects']
 
-admin.site.register(VocabDisease, VocabDiseaseAdmin)
+admin.site.register(Disease, DiseaseAdmin)
 
-class VocabOrganAdmin(admin.ModelAdmin):
-    search_fields = ["short_name"]
+class OrganAdmin(admin.ModelAdmin):
+    search_fields = ["short_name", "description"]
     list_display = ["short_name", "description"]
-    autocomplete_fields = ['comments']
+    autocomplete_fields = ['comments', 'projects']
 
-admin.site.register(VocabOrgan, VocabOrganAdmin)
+admin.site.register(Organ, OrganAdmin)
 
-class VocabOrganPartAdmin(admin.ModelAdmin):
-    search_fields = ["short_name"]
+class OrganPartAdmin(admin.ModelAdmin):
+    search_fields = ["short_name", "description"]
     list_display = ["short_name", "description"]
-    autocomplete_fields = ['comments']
+    autocomplete_fields = ['comments', 'projects']
 
 
-admin.site.register(VocabOrganPart, VocabOrganPartAdmin)
+admin.site.register(OrganPart, OrganPartAdmin)
 
-class VocabSampleTypeAdmin(admin.ModelAdmin):
-    search_fields = ["short_name"]
+class SampleTypeAdmin(admin.ModelAdmin):
+    search_fields = ["short_name", "description"]
     list_display = ["short_name", "description"]
     autocomplete_fields = ['comments']
 
-admin.site.register(VocabSampleType, VocabSampleTypeAdmin)
+admin.site.register(SampleType, SampleTypeAdmin)
 
-class VocabAssayTechAdmin(admin.ModelAdmin):
-    search_fields = ["short_name"]
+class AssayTechAdmin(admin.ModelAdmin):
+    search_fields = ["short_name", "description"]
     list_display = ["short_name", "description"]
-    autocomplete_fields = ['comments']
+    autocomplete_fields = ['comments', 'projects']
 
-admin.site.register(VocabAssayTech, VocabAssayTechAdmin)
+admin.site.register(AssayTech, AssayTechAdmin)
 
-class VocabAssayTypeAdmin(admin.ModelAdmin):
-    search_fields = ["short_name"]
+class AssayTypeAdmin(admin.ModelAdmin):
+    search_fields = ["short_name", "description"]
     list_display = ["short_name", "description"]
-    autocomplete_fields = ['comments']
+    autocomplete_fields = ['comments', 'projects']
 
-admin.site.register(VocabAssayType, VocabAssayTypeAdmin)
+admin.site.register(AssayType, AssayTypeAdmin)
 
-class VocabPublicationAdmin(admin.ModelAdmin):
-    search_fields = ["short_name"]
+class PublicationAdmin(admin.ModelAdmin):
+    search_fields = ["short_name", "title"]
     list_display = ["short_name", "title"]
     autocomplete_fields = ['comments']
 
-admin.site.register(VocabPublication, VocabPublicationAdmin)
+admin.site.register(Publication, PublicationAdmin)
 
-class VocabCommentTypeAdmin(admin.ModelAdmin):
-    search_fields = ["short_name"]
+class CommentTypeAdmin(admin.ModelAdmin):
+    search_fields = ["short_name", "description"]
     list_display = ["short_name", "description"]
     short_description = "emotion"
 
-admin.site.register(VocabCommentType, VocabCommentTypeAdmin)
+admin.site.register(CommentType, CommentTypeAdmin)
 
-class VocabCommentAdmin(admin.ModelAdmin):
+class CommentAdmin(admin.ModelAdmin):
     search_fields = ["type", "text"]
     list_display = ["type", "text"]
+    autocomplete_fields = ['projects', 'labs', 'contributors', 'grants', 'consents', 'organs', 'organ_parts', 'urls', 'files']
+    list_filter = ['type']
 
-admin.site.register(VocabComment, VocabCommentAdmin)
+admin.site.register(Comment, CommentAdmin)
+
+class UrlAdmin(admin.ModelAdmin):
+    search_fields = ["short_name", "path"]
+    list_display = ["short_name", "path"]
+    autocomplete_fields = ['comments']
+
+admin.site.register(Url, UrlAdmin)
+
+class FileAdmin(admin.ModelAdmin):
+    search_fields = ["short_name", "file"]
+    list_display = ["short_name", "file"]
+    autocomplete_fields = ['comments']
 
+admin.site.register(File, FileAdmin)