Trees | Indices | Help |
|
---|
|
1 """ 2 I define the class Import. 3 """ 4 5 from advene.model.exceptions import ModelError, UnreachableImportError 6 from advene.model.core.group import GroupMixin 7 from advene.model.core.element import PackageElement, IMPORT 8 from advene.util.autoproperty import autoproperty11 12 ADVENE_TYPE = IMPORT 13 14 # attributes that do not prevent imports to be volatile 15 _url = None 16 _uri = None 17 _imported = None 18 19 @classmethod21021 r = super(Import, cls).instantiate(owner, id, id, url, uri, *args) 22 r._url = url 23 r._uri = uri 24 r._imported = owner._imports_dict.get(id) 25 return r26 27 @classmethod29 if id in owner._imports_dict: 30 # we can not wait for the backend to check that, 31 # because we will only create the import element in the backend 32 # when the internal structures of the packages are successfuly 33 # updated, so we need to be sure everything is ok 34 raise ModelError("Already have an import named %s" % id) 35 if package is owner: 36 raise ModelError("A package cannot import itself") 37 if [ p for p in owner._imports_dict.itervalues() 38 if p is not None and 39 (p.url == package.url or p.uri and p.uri == package.uri) 40 ]: 41 raise ModelError("Package already imported", p) 42 43 url, uri = package.url, package.uri # may access the backend 44 owner._imports_dict[id] = package 45 owner._update_backends_dict() 46 package._importers[owner] = id 47 48 owner._backend.create_import(owner._id, id, url, uri) 49 r = cls.instantiate(owner, id, url, uri) 50 return r5153 super(Import, self).delete() 54 o = self._owner 55 del o._imports_dict[self._id] 56 del self._imported._importers[o] 57 o._update_backends_dict()58 59 @autoproperty 65 66 @autoproperty68 assert url, "URL cannot be empty" 69 self.emit("pre-modified::url", "url", url) 70 self._url = url 71 self.__store() 72 self.emit("modified::url", "url", url)73 74 @autoproperty76 """ 77 The URI identifying the imported package. 78 79 It may be different from the physical URL from which the imported 80 package has actually been fetched. 81 """ 82 return self._uri83 84 @autoproperty86 self.emit("pre-modified::uri", "uri", uri) 87 self._uri = uri 88 self.__store() 89 self.emit("modified::uri", "uri", uri)90 91 @autoproperty93 if not self._imported: 94 raise UnreachableImportError(self._id) 95 else: 96 return self._imported97 101103 if not self._imported: 104 raise UnreachableImportError(self._id) 105 return element in self._imported.own106 107 # group interface 108110 if not self._imported: 111 raise UnreachableImportError(self._id) 112 return self._imported.own.iter_medias()113115 if not self._imported: 116 raise UnreachableImportError(self._id) 117 return self._imported.own.iter_annotations()118120 if not self._imported: 121 raise UnreachableImportError(self._id) 122 return self._imported.own.iter_relations()123125 if not self._imported: 126 raise UnreachableImportError(self._id) 127 return self._imported.own.iter_views()128130 if not self._imported: 131 raise UnreachableImportError(self._id) 132 return self._imported.own.iter_resources()133 138140 if not self._imported: 141 raise UnreachableImportError(self._id) 142 return self._imported.own.iter_lists()143145 if not self._imported: 146 raise UnreachableImportError(self._id) 147 return self._imported.own.iter_imports()148150 if not self._imported: 151 raise UnreachableImportError(self._id) 152 return self._imported.own.iter_queries()153155 if not self._imported: 156 raise UnreachableImportError(self._id) 157 return self._imported.own.count_medias()158160 if not self._imported: 161 raise UnreachableImportError(self._id) 162 return self._imported.own.count_annotations()163165 if not self._imported: 166 raise UnreachableImportError(self._id) 167 return self._imported.own.count_relations()168170 if not self._imported: 171 raise UnreachableImportError(self._id) 172 return self._imported.own.count_views()173175 if not self._imported: 176 raise UnreachableImportError(self._id) 177 return self._imported.own.count_resources()178 183185 if not self._imported: 186 raise UnreachableImportError(self._id) 187 return self._imported.own.count_lists()188190 if not self._imported: 191 raise UnreachableImportError(self._id) 192 return self._imported.own.count_imports()193195 if not self._imported: 196 raise UnreachableImportError(self._id) 197 return self._imported.own.count_queries()198 199 # dict interface 200 205
Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Wed Jul 8 16:00:04 2009 | http://epydoc.sourceforge.net |