equal
deleted
inserted
replaced
1 # copyright 2003-2013 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
1 # copyright 2003-2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
3 # |
3 # |
4 # This file is part of CubicWeb. |
4 # This file is part of CubicWeb. |
5 # |
5 # |
6 # CubicWeb is free software: you can redistribute it and/or modify it under the |
6 # CubicWeb is free software: you can redistribute it and/or modify it under the |
342 rschema = eschema.subjrels[attr] |
342 rschema = eschema.subjrels[attr] |
343 except KeyError: |
343 except KeyError: |
344 cls.warning('skipping fetch_attr %s defined in %s (not found in schema)', |
344 cls.warning('skipping fetch_attr %s defined in %s (not found in schema)', |
345 attr, cls.__regid__) |
345 attr, cls.__regid__) |
346 continue |
346 continue |
347 rdef = eschema.rdef(attr) |
347 # XXX takefirst=True to remove warning triggered by ambiguous inlined relations |
|
348 rdef = eschema.rdef(attr, takefirst=True) |
348 if not user.matching_groups(rdef.get_groups('read')): |
349 if not user.matching_groups(rdef.get_groups('read')): |
349 continue |
350 continue |
350 if rschema.final or rdef.cardinality[0] in '?1': |
351 if rschema.final or rdef.cardinality[0] in '?1': |
351 var = select.make_variable() |
352 var = select.make_variable() |
352 select.add_selected(var) |
353 select.add_selected(var) |
791 if rschema.final or rschema.meta: |
792 if rschema.final or rschema.meta: |
792 continue |
793 continue |
793 # skip already defined relations |
794 # skip already defined relations |
794 if getattr(self, rschema.type): |
795 if getattr(self, rschema.type): |
795 continue |
796 continue |
|
797 # XXX takefirst=True to remove warning triggered by ambiguous relations |
|
798 rdef = self.e_schema.rdef(rschema, takefirst=True) |
796 # skip composite relation |
799 # skip composite relation |
797 rdef = self.e_schema.rdef(rschema) |
|
798 if rdef.composite: |
800 if rdef.composite: |
799 continue |
801 continue |
800 # skip relation with card in ?1 else we either change the copied |
802 # skip relation with card in ?1 else we either change the copied |
801 # object (inlined relation) or inserting some inconsistency |
803 # object (inlined relation) or inserting some inconsistency |
802 if rdef.cardinality[1] in '?1': |
804 if rdef.cardinality[1] in '?1': |
811 # skip already defined relations |
813 # skip already defined relations |
812 if self.related(rschema.type, 'object'): |
814 if self.related(rschema.type, 'object'): |
813 continue |
815 continue |
814 if rschema.type in skip_copy_for['object']: |
816 if rschema.type in skip_copy_for['object']: |
815 continue |
817 continue |
816 rdef = self.e_schema.rdef(rschema, 'object') |
818 # XXX takefirst=True to remove warning triggered by ambiguous relations |
|
819 rdef = self.e_schema.rdef(rschema, 'object', takefirst=True) |
817 # skip composite relation |
820 # skip composite relation |
818 if rdef.composite: |
821 if rdef.composite: |
819 continue |
822 continue |
820 # skip relation with card in ?1 else we either change the copied |
823 # skip relation with card in ?1 else we either change the copied |
821 # object (inlined relation) or inserting some inconsistency |
824 # object (inlined relation) or inserting some inconsistency |