class DetailedComputedFileSerializer(serializers.ModelSerializer): result = ComputationalResultRelationSerializer(many=False, read_only=False) samples = DetailedExperimentSampleSerializer(many=True) compendia_organism_name = serializers.CharField( source="compendia_organism__name", read_only=True) class Meta: model = ComputedFile fields = ( "id", "filename", "samples", "size_in_bytes", "is_qn_target", "is_smashable", "is_qc", "is_compendia", "quant_sf_only", "compendia_version", "compendia_organism_name", "sha1", "s3_bucket", "s3_key", "s3_url", "download_url", "created_at", "last_modified", "result", )
class DetailedExperimentSerializer(serializers.ModelSerializer): annotations = ExperimentAnnotationSerializer(many=True, source="experimentannotation_set") samples = DetailedExperimentSampleSerializer(many=True) sample_metadata = serializers.ReadOnlyField(source="sample_metadata_fields") organism_names = serializers.StringRelatedField(many=True, source="organisms", read_only=True) class Meta: model = Experiment fields = ( "id", "title", "description", "annotations", "samples", "protocol_description", "accession_code", "alternate_accession_code", "source_database", "source_url", "has_publication", "publication_title", "publication_doi", "publication_authors", "pubmed_id", "source_first_published", "source_last_modified", "submitter_institution", "last_modified", "created_at", "organism_names", "sample_metadata", "num_total_samples", "num_processed_samples", "num_downloadable_samples", )
class ComputedFileListSerializer(serializers.ModelSerializer): result = ComputationalResultNoFilesRelationSerializer(many=False) samples = DetailedExperimentSampleSerializer(many=True) compendia_organism_name = serializers.CharField( source="compendia_organism__name", read_only=True) def __init__(self, *args, **kwargs): super(ComputedFileListSerializer, self).__init__(*args, **kwargs) if "context" in kwargs: # only include the field `download_url` if a valid token is specified # the token lookup happens in the view. if "token" not in kwargs["context"]: self.fields.pop("download_url") class Meta: model = ComputedFile fields = ( "id", "filename", "samples", "size_in_bytes", "is_qn_target", "is_smashable", "is_qc", "is_compendia", "quant_sf_only", "compendium_version", "compendia_organism_name", "sha1", "s3_bucket", "s3_key", "s3_url", "download_url", "created_at", "last_modified", "result", ) read_only_fields = fields extra_kwargs = { "download_url": { "help_text": "This will contain an url to download the file. You must send a valid [token](#tag/token) in order to receive this." } }
class DetailedOriginalFileSerializer(OriginalFileSerializer): samples = DetailedExperimentSampleSerializer(many=True) processor_jobs = ProcessorJobRelationSerializer(many=True) downloader_jobs = DownloaderJobRelationSerializer(many=True)