def import_tool(self, project, user, project_name=None, mount_point=None, mount_label=None, **kw): """ Import a Google Code repo into a new SVN, Git, or Hg Allura tool. """ extractor = GoogleCodeProjectExtractor(project_name, 'source_browse') repo_type = extractor.get_repo_type() repo_url = get_repo_url(project_name, repo_type) app = project.install_app(REPO_ENTRY_POINTS[repo_type], mount_point=mount_point or 'code', mount_label=mount_label or 'Code', init_from_url=repo_url, import_id={ 'source': self.source, 'project_name': project_name, }) M.AuditLog.log('import tool %s from %s on %s' % ( app.config.options.mount_point, project_name, self.source, ), project=project, user=user, url=app.url) g.post_event('project_updated') return app
def import_project_info(project_name): from forgeimporters.google.project import GoogleCodeProjectImporter importer = GoogleCodeProjectImporter(None) with ImportErrorHandler(importer, project_name, c.project) as handler: extractor = GoogleCodeProjectExtractor(project_name, 'project_info') extractor.get_short_description(c.project) extractor.get_icon(c.project) extractor.get_license(c.project) ThreadLocalORMSession.flush_all() g.post_event('project_updated')
def _to_python(self, value, state): value = super(self.__class__, self)._to_python(value, state) gc_project_name = value['gc_project_name'] mount_point = value['mount_point'] try: repo_type = GoogleCodeProjectExtractor( gc_project_name).get_repo_type() except urllib2.HTTPError as e: if e.code == 404: msg = 'No such project' else: msg = str(e) msg = 'gc_project_name:' + msg raise fe.Invalid(msg, value, state) except Exception: raise tool_class = REPO_APPS[repo_type] try: value['mount_point'] = v.MountPointValidator(tool_class).to_python( mount_point) except fe.Invalid as e: raise fe.Invalid('mount_point:' + str(e), value, state) return value