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

Sylvain Thénault sylvain.thenault at logilab.fr
Tue Feb 28 09:46:02 CET 2017



Le 27/02/2017 à 18:28, Philippe Pepiot a écrit :
> 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).

applied the first one. I think the first one could be pruned by simply
providing a custome AuthorityRecord entity class in saem_ref, that
override the record_id and other_record_ids property. That would be
simple and consistent.

-- 
Sylvain Thénault, LOGILAB, Paris (01.45.32.03.12) - Toulouse (05.62.17.16.42)
Formations Python, Debian, Méth. Agiles: http://www.logilab.fr/formations
Développement logiciel sur mesure:       http://www.logilab.fr/services
CubicWeb, the semantic web framework:    http://www.cubicweb.org



More information about the saem-devel mailing list