1 """I define class AllGroup.
2 """
3
4 from advene.model.core.group import GroupMixin
5 from advene.model.core.own_group import _prepare_meta
6 from advene.util.autoproperty import autoproperty
7 from advene.util.itertools import interclass
10 """FIXME: missing docstring.
11 """
12
13
14
15
16
17
20
21 @autoproperty
24
26 if not hasattr(element, "ADVENE_TYPE"):
27 return False
28 eo = element._owner
29 so = self._owner
30 if so is eo:
31 return element._id in so._elements
32 else:
33 be = eo._backend
34 id = eo._id
35 ids = so._backends_dict.get(be)
36 if ids and id in ids:
37 assert be.has_element(element._id), "Internal error: %s is not in the backend." % element._id
38
39
40 return True
41 else:
42 return False
43
49
50 - def iter_annotations(self, media=None,
51 begin=None, begin_min=None, begin_max=None,
52 end=None, end_min=None, end_max=None,
53 at=None):
54 """FIXME: missing docstring.
55 """
56 o = self._owner
57
58 if hasattr(media, '_get_uriref'):
59 media = media._get_uriref()
60 elif media is not None:
61
62 media = (m._get_uriref() for m in media)
63 if at is not None:
64 begin_max = end_min = at
65 def annotation_iterator(be, pdict):
66 for i in be.iter_annotations(pdict, None, media,
67 begin, begin_min, begin_max,
68 end, end_min, end_max):
69 yield pdict[i[1]].get_element(i)
70 all_annotation_iterators = [ annotation_iterator(be, pdict)
71 for be, pdict
72 in o._backends_dict.items() ]
73 return interclass(*all_annotation_iterators)
74
76 """FIXME: missing docstring.
77 """
78 assert position is None or member is not None
79 if member: member = member._get_uriref()
80 o = self._owner
81 for be, pdict in o._backends_dict.items():
82 for i in be.iter_relations(pdict, None, member, position):
83 yield pdict[i[1]].get_element(i)
84
85 - def iter_lists(self, item=None, position=None, meta=None):
95
102
108
114
120
126
131
132 - def count_annotations(self, media=None,
133 begin=None, begin_min=None, begin_max=None,
134 end=None, end_min=None, end_max=None,
135 at=None):
136 o = self._owner
137 if hasattr(media, '_get_uriref'):
138 media = media._get_uriref()
139 elif media is not None:
140
141 media = (m._get_uriref() for m in media)
142 if at is not None:
143 begin_max = end_min = at
144 return sum( be.count_annotations(pdict, None, media,
145 begin, begin_min, begin_max,
146 end, end_min, end_max)
147 for be, pdict in o._backends_dict.items() )
148
150 assert position is None or member is not None
151 if member: member = member._get_uriref()
152 o = self._owner
153 return sum( be.count_relations(pdict, None, member, position)
154 for be, pdict in o._backends_dict.items() )
155
160
165
171
172 - def count_lists(self, item=None, position=None, meta=None):
179
184
189