1 from advene.model.consts import DC_NS_PREFIX, RDFS_NS_PREFIX
2 from advene.model.cam.consts import CAM_TYPE, CAMSYS_TYPE
3 from advene.model.cam.exceptions import SemanticError, UnsafeUseWarning
4 import advene.model.cam.util.bookkeeping as bk
5 from advene.model.core.content import WithContentMixin
6 from advene.model.core.element import PackageElement, ElementCollection
7 from advene.model.tales import tales_property, tales_use_as_context
8
9 from warnings import warn
12 """
13 This mixin class implement the behaviour specific to the Cinelab
14 Application Model.
15 It must necessarily be mixed in a subclass of PackageElement. To ensure
16 correct MRO, it explicitly inherit PackageElement, but it is indeed a mixin
17 class (having no implication in instance creation).
18 """
19
20 @classmethod
30
35
39
44
52
58
63
65 """
66 This method is inherited from core.Package but is unsafe on
67 cam.Package. Use instead `iter_my_user_tag_ids`.
68 """
69 warn("use iter_my_user_tag_ids instead", UnsafeUseWarning, 2)
70 return super(CamElementMixin, self).iter_my_tag_ids(package, inherited)
71
77
94
95 @tales_property
96 @tales_use_as_context("package")
109 return TagCollection(self._owner)
110
111
112 _make_meta = CamElementMixin.make_metadata_property
113
114 _make_meta(bk.CREATOR, default="")
115 _make_meta(bk.CONTRIBUTOR, default="")
116 _make_meta(bk.CREATED, default="")
117 _make_meta(bk.MODIFIED, default="")
118
119 _make_meta(DC_NS_PREFIX + "title", default="")
120 _make_meta(DC_NS_PREFIX + "description", default="")
121
122 _make_meta(RDFS_NS_PREFIX + "seeAlso", default=None)
123