Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-25 08:29:11

0001 from rest_framework import serializers
0002 from .models import (PhysicsCategory, PhysicsTag, EvgenTag, SimuTag, RecoTag,
0003                      Dataset, ProdConfig, ProdTask)
0004 from .schemas import validate_parameters
0005 
0006 
0007 class PhysicsCategorySerializer(serializers.ModelSerializer):
0008     tag_count = serializers.IntegerField(read_only=True, required=False)
0009 
0010     class Meta:
0011         model = PhysicsCategory
0012         fields = ['digit', 'name', 'description', 'created_by', 'created_at', 'tag_count']
0013         read_only_fields = ['created_by', 'created_at']
0014 
0015 
0016 class PhysicsTagSerializer(serializers.ModelSerializer):
0017     category_name = serializers.CharField(source='category.name', read_only=True)
0018 
0019     class Meta:
0020         model = PhysicsTag
0021         fields = [
0022             'id', 'tag_number', 'tag_label', 'category', 'category_name',
0023             'status', 'description', 'parameters',
0024             'created_by', 'created_at', 'updated_at',
0025         ]
0026         read_only_fields = ['id', 'tag_number', 'tag_label', 'status', 'created_by', 'created_at', 'updated_at']
0027 
0028     def validate_parameters(self, value):
0029         ok, msg = validate_parameters('p', value)
0030         if not ok:
0031             raise serializers.ValidationError(msg)
0032         return value
0033 
0034 
0035 class _SimpleTagSerializer(serializers.ModelSerializer):
0036     class Meta:
0037         fields = [
0038             'id', 'tag_number', 'tag_label', 'status', 'description',
0039             'parameters', 'created_by', 'created_at', 'updated_at',
0040         ]
0041         read_only_fields = ['id', 'tag_number', 'tag_label', 'status', 'created_by', 'created_at', 'updated_at']
0042 
0043 
0044 class EvgenTagSerializer(_SimpleTagSerializer):
0045     class Meta(_SimpleTagSerializer.Meta):
0046         model = EvgenTag
0047 
0048     def validate_parameters(self, value):
0049         ok, msg = validate_parameters('e', value)
0050         if not ok:
0051             raise serializers.ValidationError(msg)
0052         return value
0053 
0054 
0055 class SimuTagSerializer(_SimpleTagSerializer):
0056     class Meta(_SimpleTagSerializer.Meta):
0057         model = SimuTag
0058 
0059     def validate_parameters(self, value):
0060         ok, msg = validate_parameters('s', value)
0061         if not ok:
0062             raise serializers.ValidationError(msg)
0063         return value
0064 
0065 
0066 class RecoTagSerializer(_SimpleTagSerializer):
0067     class Meta(_SimpleTagSerializer.Meta):
0068         model = RecoTag
0069 
0070     def validate_parameters(self, value):
0071         ok, msg = validate_parameters('r', value)
0072         if not ok:
0073             raise serializers.ValidationError(msg)
0074         return value
0075 
0076 
0077 class DatasetSerializer(serializers.ModelSerializer):
0078     physics_tag_label = serializers.CharField(source='physics_tag.tag_label', read_only=True)
0079     evgen_tag_label = serializers.CharField(source='evgen_tag.tag_label', read_only=True)
0080     simu_tag_label = serializers.CharField(source='simu_tag.tag_label', read_only=True)
0081     reco_tag_label = serializers.CharField(source='reco_tag.tag_label', read_only=True)
0082 
0083     class Meta:
0084         model = Dataset
0085         fields = [
0086             'id', 'dataset_name', 'scope', 'detector_version', 'detector_config',
0087             'physics_tag', 'evgen_tag', 'simu_tag', 'reco_tag',
0088             'physics_tag_label', 'evgen_tag_label', 'simu_tag_label', 'reco_tag_label',
0089             'block_num', 'blocks', 'did', 'file_count', 'data_size',
0090             'description', 'metadata', 'created_by', 'created_at',
0091         ]
0092         read_only_fields = [
0093             'id', 'dataset_name', 'did', 'block_num', 'blocks',
0094             'file_count', 'data_size', 'created_by', 'created_at',
0095         ]
0096 
0097 
0098 class ProdConfigSerializer(serializers.ModelSerializer):
0099     class Meta:
0100         model = ProdConfig
0101         fields = '__all__'
0102         read_only_fields = ['id', 'created_by', 'created_at', 'updated_at']
0103 
0104 
0105 class ProdTaskSerializer(serializers.ModelSerializer):
0106     dataset_name = serializers.CharField(source='dataset.dataset_name', read_only=True)
0107     dataset_did = serializers.CharField(source='dataset.did', read_only=True)
0108     prod_config_name = serializers.CharField(source='prod_config.name', read_only=True)
0109 
0110     class Meta:
0111         model = ProdTask
0112         fields = [
0113             'id', 'name', 'description', 'status',
0114             'dataset', 'dataset_name', 'dataset_did',
0115             'prod_config', 'prod_config_name',
0116             'csv_file', 'overrides',
0117             'condor_command', 'panda_command',
0118             'panda_task_id', 'condor_cluster_id',
0119             'created_by', 'created_at', 'updated_at',
0120         ]
0121         read_only_fields = [
0122             'id', 'condor_command', 'panda_command',
0123             'created_by', 'created_at', 'updated_at',
0124         ]