@@ -44,12 +44,16 @@ class ConceptDetailSerializer(serializers.Serializer):
4444 created_on = serializers .DateTimeField (source = 'created_at' , read_only = True )
4545 updated_on = serializers .DateTimeField (source = 'updated_at' , read_only = True )
4646 extras = serializers .WritableField (required = False )
47+ version = serializers .CharField (required = False )
48+ forked_concept_version = serializers .CharField (required = False )
49+ forked_from_url = serializers .CharField (required = False )
4750
4851 class Meta :
4952 model = Concept
5053 lookup_field = 'mnemonic'
5154
5255 def restore_object (self , attrs , instance = None ):
56+ print 'ConceptDetailSerializer attrs: ' , attrs
5357 concept = instance if instance else Concept ()
5458 concept .mnemonic = attrs .get (self .Meta .lookup_field , concept .mnemonic )
5559 concept .external_id = attrs .get ('external_id' , concept .external_id )
@@ -58,13 +62,17 @@ def restore_object(self, attrs, instance=None):
5862 concept .extras = attrs .get ('extras' , concept .extras )
5963 concept .retired = attrs .get ('retired' , concept .retired )
6064
65+ concept .forked_from_url = attrs .get ('forked_from_url' , concept .forked_from_url )
66+ concept .forked_concept_version = attrs .get ('version' , concept .version )
67+
6168 # Is this desired behavior??
6269 concept .names = attrs .get ('names' , concept .names )
6370
6471 # Is this desired behavior??
6572 concept .descriptions = attrs .get ('descriptions' , concept .descriptions )
6673
6774 concept .extras = attrs .get ('extras' , concept .extras )
75+
6876 return concept
6977
7078 def save_object (self , obj , ** kwargs ):
@@ -73,6 +81,58 @@ def save_object(self, obj, **kwargs):
7381 self ._errors .update (errors )
7482
7583
84+ # class ConceptForkDetailSerializer(ResourceVersionSerializer):
85+ # id = serializers.CharField(required=True, validators=[RegexValidator(regex=NAMESPACE_REGEX)], source='mnemonic')
86+ # external_id = serializers.CharField(required=False)
87+ # concept_class = serializers.CharField(required=False)
88+ # datatype = serializers.CharField(required=False)
89+ # display_name = serializers.CharField(read_only=True)
90+ # display_locale = serializers.CharField(read_only=True)
91+ # names = LocalizedTextListField(required=False)
92+ # descriptions = LocalizedTextListField(required=False, name_override='description')
93+ # retired = serializers.BooleanField(required=False)
94+ # url = serializers.URLField(read_only=True)
95+ # source = serializers.CharField(source='parent_resource', read_only=True)
96+ # owner = serializers.CharField(source='owner_name', read_only=True)
97+ # owner_type = serializers.CharField(read_only=True)
98+ # owner_url = serializers.URLField(read_only=True)
99+ # created_on = serializers.DateTimeField(source='created_at', read_only=True)
100+ # updated_on = serializers.DateTimeField(source='updated_at', read_only=True)
101+ # extras = serializers.WritableField(required=False)
102+ # version = serializers.CharField(source='mnemonic')
103+ # forked_concept_version = serializers.CharField(required=False)
104+ # forked_from_url = serializers.CharField(required=False)
105+ #
106+ # class Meta:
107+ # model = ConceptVersion
108+ # lookup_field = 'mnemonic'
109+ #
110+ # def restore_object(self, attrs, instance=None):
111+ # print 'ConceptForkDetailSerializer attrs: ', attrs
112+ # concept = instance if instance else ConceptVersion()
113+ # concept.mnemonic = attrs.get(self.Meta.lookup_field, concept.mnemonic)
114+ # concept.external_id = attrs.get('external_id', concept.external_id)
115+ # concept.concept_class = attrs.get('concept_class', concept.concept_class)
116+ # concept.datatype = attrs.get('datatype', concept.datatype)
117+ # concept.extras = attrs.get('extras', concept.extras)
118+ # concept.retired = attrs.get('retired', concept.retired)
119+ # concept.forked_concept_version = concept.mnemonic
120+ # concept.forked_from_url = attrs.get('forked_from_url', concept.forked_from_url)
121+ #
122+ # # Is this desired behavior??
123+ # concept.names = attrs.get('names', concept.names)
124+ #
125+ # # Is this desired behavior??
126+ # concept.descriptions = attrs.get('descriptions', concept.descriptions)
127+ #
128+ # concept.extras = attrs.get('extras', concept.extras)
129+ # return concept
130+ #
131+ # def save_object(self, obj, **kwargs):
132+ # request_user = self.context['request'].user
133+ # errors = Concept.persist_new(obj, request_user, **kwargs)
134+ # self._errors.update(errors)
135+
76136
77137class ConceptVersionsSerializer (serializers .Serializer ):
78138 version = serializers .CharField (source = 'mnemonic' )
@@ -102,6 +162,8 @@ class ConceptVersionListSerializer(ResourceVersionSerializer):
102162 mappings = MappingListField (read_only = True )
103163 is_latest_version = serializers .CharField ()
104164 locale = serializers .SerializerMethodField (method_name = 'get_locale' )
165+ forked_concept_version = serializers .CharField ()
166+ forked_from_url = serializers .CharField ()
105167
106168 class Meta :
107169 model = ConceptVersion
@@ -122,7 +184,6 @@ def __init__(self, *args, **kwargs):
122184 mappings_field .source = 'get_empty_mappings'
123185
124186
125-
126187class ConceptVersionDetailSerializer (ResourceVersionSerializer ):
127188 type = serializers .CharField (source = 'versioned_resource_type' )
128189 uuid = serializers .CharField (source = 'id' )
@@ -150,6 +211,8 @@ class ConceptVersionDetailSerializer(ResourceVersionSerializer):
150211 mappings = MappingListField (read_only = True )
151212 is_latest_version = serializers .CharField ()
152213 locale = serializers .SerializerMethodField (method_name = 'get_locale' )
214+ forked_from_url = serializers .CharField ()
215+ forked_concept_version = serializers .CharField ()
153216
154217 class Meta :
155218 model = ConceptVersion
0 commit comments