def _q_lookup(request, name): if name == 'static': return StaticUI(request) if name == 'fair': return FairUI(request) if CodeDoubanProject.exists(name): return CodeUI(name) if User.check_exist(name): return UserPrefixedRepoAdapter(name)
def _q_lookup(request, name): if name == 'static': return StaticUI(request) if name == 'fair': return FairUI(request) if CodeDoubanProject.exists(name): return CodeUI(name) if User.check_exist(name): return UserPrefixedRepoAdapter(name)
def _q_lookup(self, request, url_part): proj_name = "%s/%s" % (self.username, url_part) if CodeDoubanProject.exists(proj_name): return CodeUI(proj_name)
def _q_lookup(self, request, part): name = "%s/%s" % (self.name, part) if not CodeDoubanProject.exists(name): raise api_errors.NotFoundError("repo") return RepositoryUI(name)
def _q_lookup(self, request, url_part): proj_name = "%s/%s" % (self.username, url_part) if CodeDoubanProject.exists(proj_name): return CodeUI(proj_name)
def create(request): user = request.user if not user: return request.redirect("/") errors = "" template_filename = 'create.html' if request.method == "POST": name = request.get_form_var('name') product = request.get_form_var('product') org_proj = request.get_form_var('org_proj') summary = request.get_form_var('summary') repo_url = request.get_form_var('url') fork_from = request.get_form_var('fork_from') intern_banned = request.get_form_var('intern_banned', None) with_proxy = request.get_form_var('with_proxy', MIRROR_NOT_PROXY) with_proxy = int(with_proxy) mirror = None def add_people_project(project): name = "%s/%s" % (project.owner_id, project.name) _project = CodeDoubanProject.add( name=name, owner_id=project.owner_id, summary=project.summary, product=project.product, intern_banned=project.intern_banned) return _project def add_org_project(project): _project = CodeDoubanProject.add( name=name, owner_id=project.owner_id, summary=project.summary, product=project.product, intern_banned=project.intern_banned) return _project def add_mirror_project(project): name = "mirror/%s" % (project.name) _project = CodeDoubanProject.add( name=name, owner_id='mirror', summary=project.summary, product=project.product, intern_banned=project.intern_banned, mirror=project.mirror_url) if _project: CodeDoubanMirror.add(url=project.mirror_url, state=MIRROR_STATE_CLONING, project_id=_project.id, with_proxy=project.mirror_proxy) return _project def add_fork_project(project): name = "%s/%s" % (project.owner_id, project.name) _project = CodeDoubanProject.add( name=name, owner_id=project.owner_id, summary=project.summary, product=project.product, fork_from=project.fork_from, intern_banned=project.intern_banned) if _project: fork_from_project = CodeDoubanProject.get(project.fork_from) _project.update(project.summary, project.product, name, fork_from_project.intern_banned) return _project def validate_project(project_type, project): error = '' if project_type in (PEOPLE_PROJECT, ORGANIZATION_PROJECT): error = project.validate() elif project_type == MIRROR_PROJECT: error = project.validate() if not error: error = CodeDoubanMirror.validate(project.mirror_url) else: error = project.validate() return error def add_project(project): _project = None if project_type == PEOPLE_PROJECT: _project = add_people_project(project) elif project_type == ORGANIZATION_PROJECT: _project = add_org_project(project) elif project_type == MIRROR_PROJECT: _project = add_mirror_project(project) else: _project = add_fork_project(project) return _project project = CodeDoubanProject(None, name, user.username, summary, datetime.now(), product, None, None, fork_from=fork_from, intern_banned=intern_banned, mirror_url=repo_url, mirror_proxy=with_proxy) # FIXME: rename org_proj of html project_type = org_proj errors = validate_project(project_type, project) if errors: return st(template_filename, **locals()) project = add_project(project) if not project: fork_from = '' errors = 'project exists' return st(template_filename, **locals()) CodeDoubanProject.add_watch(project.id, user.name) return request.redirect('/%s/' % project.name) fork_from = '' if request.get_form_var('fork_from'): fork_from = CodeDoubanProject.get(request.get_form_var('fork_from')) name = "%s/%s" % (user.name, fork_from.realname) if CodeDoubanProject.exists(name): return request.redirect('/%s/' % name) projects = CodeDoubanProject.gets_by_owner_id(user.name) for p in projects: if p.origin_project_id == fork_from.id and '/' in p.name: return request.redirect('/%s/' % p.name) return st(template_filename, **locals())
def create(request): user = request.user if not user: return request.redirect("/") errors = "" template_filename = 'create.html' if request.method == "POST": name = request.get_form_var('name') product = request.get_form_var('product') org_proj = request.get_form_var('org_proj') summary = request.get_form_var('summary') repo_url = request.get_form_var('url') fork_from = request.get_form_var('fork_from') intern_banned = request.get_form_var('intern_banned', None) with_proxy = request.get_form_var('with_proxy', MIRROR_NOT_PROXY) with_proxy = int(with_proxy) mirror = None def add_people_project(project): name = "%s/%s" % (project.owner_id, project.name) _project = CodeDoubanProject.add( name=name, owner_id=project.owner_id, summary=project.summary, product=project.product, intern_banned=project.intern_banned) return _project def add_org_project(project): _project = CodeDoubanProject.add( name=name, owner_id=project.owner_id, summary=project.summary, product=project.product, intern_banned=project.intern_banned) return _project def add_mirror_project(project): name = "mirror/%s" % (project.name) _project = CodeDoubanProject.add( name=name, owner_id='mirror', summary=project.summary, product=project.product, intern_banned=project.intern_banned, mirror=project.mirror_url) if _project: CodeDoubanMirror.add(url=project.mirror_url, state=MIRROR_STATE_CLONING, project_id=_project.id, with_proxy=project.mirror_proxy) return _project def add_fork_project(project): name = "%s/%s" % (project.owner_id, project.name) _project = CodeDoubanProject.add( name=name, owner_id=project.owner_id, summary=project.summary, product=project.product, fork_from=project.fork_from, intern_banned=project.intern_banned) if _project: fork_from_project = CodeDoubanProject.get(project.fork_from) _project.update(project.summary, project.product, name, fork_from_project.intern_banned) return _project def validate_project(project_type, project): error = '' if project_type in (PEOPLE_PROJECT, ORGANIZATION_PROJECT): error = project.validate() elif project_type == MIRROR_PROJECT: error = project.validate() if not error: error = CodeDoubanMirror.validate(project.mirror_url) else: error = project.validate() return error def add_project(project): _project = None if project_type == PEOPLE_PROJECT: _project = add_people_project(project) elif project_type == ORGANIZATION_PROJECT: _project = add_org_project(project) elif project_type == MIRROR_PROJECT: _project = add_mirror_project(project) else: _project = add_fork_project(project) return _project project = CodeDoubanProject(None, name, user.username, summary, datetime.now(), product, None, None, fork_from=fork_from, intern_banned=intern_banned, mirror_url=repo_url, mirror_proxy=with_proxy) # FIXME: rename org_proj of html project_type = org_proj errors = validate_project(project_type, project) if errors: return st(template_filename, **locals()) project = add_project(project) if not project: fork_from = '' errors = 'project exists' return st(template_filename, **locals()) CodeDoubanProject.add_watch(project.id, user.name) return request.redirect('/%s/' % project.name) fork_from = '' if request.get_form_var('fork_from'): fork_from = CodeDoubanProject.get(request.get_form_var('fork_from')) name = "%s/%s" % (user.name, fork_from.realname) if CodeDoubanProject.exists(name): return request.redirect('/%s/' % name) projects = CodeDoubanProject.gets_by_owner_id(user.name) for p in projects: if p.origin_project_id == fork_from.id and '/' in p.name: return request.redirect('/%s/' % p.name) return st(template_filename, **locals())
def _q_lookup(self, request, name): proj_name = "%s/%s" % (self.proj_name, name) proj_name = self.get_project_name(proj_name) if CodeDoubanProject.exists(proj_name): return APIUI(request, proj_name)
def _q_lookup(self, request, name): proj_name = "%s/%s" % (self.proj_name, name) proj_name = self.get_project_name(proj_name) if CodeDoubanProject.exists(proj_name): return APIUI(request, proj_name)
def _q_lookup(self, request, part): name = "%s/%s" % (self.name, part) if not CodeDoubanProject.exists(name): raise api_errors.NotFoundError("repo") return RepositoryUI(name)