def preprocess_project(project): stage = project.stage pm = get_pluginmanager(stage.xom.config) name = normalize_name(project.name) try: user = stage.user.name index = stage.index except AttributeError: user, index = stage.name.split('/') user = ensure_unicode(user) index = ensure_unicode(index) if not is_project_cached(stage, name): result = dict(name=name, user=user, index=index) pm.hook.devpiweb_modify_preprocess_project_result(project=project, result=result) return result stage.offline = True if not stage.has_project_perstage(name): # project doesn't exist anymore return setuptools_metadata = frozenset(getattr(stage, 'metadata_keys', ())) versions = get_sorted_versions(stage.list_versions_perstage(name)) result = dict(name=name) for i, version in enumerate(versions): if i == 0: verdata = stage.get_versiondata_perstage(name, version) result.update(verdata) links = stage.get_linkstore_perstage(name, version).get_links(rel="doczip") if links: docs = Docs(stage, name, version) if docs.exists(): result['doc_version'] = version result['+doczip'] = docs break else: assert '+doczip' not in result result[u'user'] = user result[u'index'] = index for key in setuptools_metadata: if key in result: value = result[key] if value == 'UNKNOWN' or not value: del result[key] pm.hook.devpiweb_modify_preprocess_project_result(project=project, result=result) return result
def preprocess_project(stage, name_input): name = normalize_name(name_input) try: user = stage.user.name index = stage.index except AttributeError: user, index = stage.name.split('/') if not is_project_cached(stage, name): return dict(name=name, user=user, index=index) setuptools_metadata = frozenset(( 'author', 'author_email', 'classifiers', 'description', 'download_url', 'home_page', 'keywords', 'license', 'platform', 'summary')) versions = get_sorted_versions(stage.list_versions_perstage(name)) result = dict(name=name) for i, version in enumerate(versions): if i == 0: verdata = stage.get_versiondata_perstage(name, version) result.update(verdata) links = stage.get_linkstore_perstage(name, version).get_links(rel="doczip") if links: # we assume it has been unpacked result['doc_version'] = version result['+doczip'] = Docs(stage, name, version) break else: assert '+doczip' not in result result[u'user'] = user result[u'index'] = index for key in setuptools_metadata: if key in result: value = result[key] if value == 'UNKNOWN' or not value: del result[key] return result
def get_docs(self, stage, data): path = data['path'] if path not in self._docs: self._docs[path] = Docs(stage, data['name'], data['doc_version']) return self._docs[path]