[PATCH 2 of 2 eac] [entities] allow controlling export of recordId and otherRecordId

Philippe Pepiot philippe.pepiot at logilab.fr
Mon Feb 27 18:28:20 CET 2017


On 02/27/2017 12:05 PM, Denis Laxalde wrote:
> Philippe Pepiot a écrit :
>> # HG changeset patch
>> # User Philippe Pepiot <philippe.pepiot at logilab.fr>
>> # Date 1487955070 -3600
>> #      Fri Feb 24 17:51:10 2017 +0100
>> # Node ID 8eea971119c48ad944a366f08ed675c551fe3288
>> # Parent  a7a2ad4e5cf2a4a266897b04defb9dbc90467844
>> # Available At https://hg.logilab.org/review/cubes/eac
>> #              hg pull https://hg.logilab.org/review/cubes/eac -r
>> 8eea971119c4
>> # Tested at: https://jenkins.logilab.org/job/cubicweb-eac/58/
>> [entities] allow controlling export of recordId and otherRecordId
>>
>> This allow to control what will be written in <recordId> and
>> <otherRecordId> by
>> inheriting AuthorityRecordEACAdapter.
>>
>> Related to extranet #12572781
>>
>> diff --git a/cubicweb_eac/entities.py b/cubicweb_eac/entities.py
>> --- a/cubicweb_eac/entities.py
>> +++ b/cubicweb_eac/entities.py
>> @@ -278,6 +278,16 @@ class AuthorityRecordEACAdapter(Abstract
>>              name = text_type(self.entity.eid)
>>          return u'EAC_{0}.xml'.format(name)
>>
>> +    @property
>> +    def record_id(self):
>> +        # likely inherited in other cubes
>> +        return self.entity.record_id
>> +
>> +    @property
>> +    def other_record_ids(self):
>> +        # likely inherited in other cubes
>> +        return self.entity.other_record_ids
>> +
>>      def dump(self):
>>          """Return an XML string representing the given agent using
>> the EAC-CPF schema."""
>>          # Keep related activities since they are used multiple times
>> @@ -295,11 +305,11 @@ class AuthorityRecordEACAdapter(Abstract
>>
>>      def control_element(self, eac_cpf_elt):
>>          control_elt = self.element('control', parent=eac_cpf_elt)
>> -        record_id = self.entity.record_id
>> +        record_id = self.record_id
>>          if record_id is None:
>>              record_id = text_type(self.entity.eid)
>>          self.element('recordId', parent=control_elt, text=record_id)
>> -        for local_type, value in self.entity.other_record_ids:
>> +        for local_type, value in self.other_record_ids:
>>              attrs = {}
>>              if local_type is not None:
>>                  attrs['localType'] = local_type
>>
>
> I wonder if it wouldn't be cleaner to define a "recordid_element(self,
> control_elt)" method that we could override downstream. This appears to
> follow the existing API and looks less hackish.

I wonder the same thing while writing the code, but cannot see what is 
the less "hackish" because defining recordid_element() would need to 
rewrite the whole method in downstream cube. But agree, this would be 
less confusing.

I'll send a V2 (BTW, first patch of the serie is still applicable).



More information about the saem-devel mailing list