def add_repo(request): def gitignores(): path = "%s/gitignores/"%settings.TEMPLATE_DIRS[0] files = [] for ps, ds, fs in os.walk(path): for f in fs: n, x = os.path.splitext(f) if x==".gitignore": p = { "name" : f.replace(".gitignore",""), "path" : os.path.join(ps, f).replace(path,""), "value": f.replace(".gitignore","").lower() } files.append(p) return files sshkeys_len = SSHKey.objects.filter(user = request.user).count() if sshkeys_len < 1: return render_to_response("error.html", context_instance = RequestContext(request,{ "error" : '在创建项目前,请先添加你的 SSH key,<a href="/accounts/settings/sshkey">点击这里</a> 添加。' })) if request.method == "POST": form = RepoForm(request.POST) if form.is_valid(): repo = form.save(commit=False) repo.touchreadme = request.POST.get("touchreadme", False) repo.gitignore = request.POST.get("gitignores", None) repo.create_repo() return HttpResponseRedirect("/%s/%s"%(repo.owner.username, repo.name)) else: form_message(request, form) else: form = RepoForm() owner_teams = [] profile = request.user.get_profile() teams = profile.teams for team in teams.all(): team_profile = team.get_profile() for team_owner in team_profile.owners.all(): if request.user.username == team_owner.username: owner_teams.append(team) context = { "page" : "repo", "form" : form, "owner_teams" : owner_teams, "gitignores" : gitignores() } return render('repo/add.html', request, context=context)
def git_repo_add(request): """View for adding repository permissions""" repos = list_user_repos(request.user.username) if request.method == 'POST': form = RepoForm(request.POST, repos=repos) if form.is_valid(): my_username = request.user.username username = form.cleaned_data['username'] reponame = form.cleaned_data['reponame'] permissions = form.cleaned_data['permissions'] # User that want access to repo guest = LdapUser.objects.get(uid=username) # Owner of repo user = LdapUser.objects.get(uid=my_username) command = 'command="/var/student/gitserver.py %s" ' % (guest,) try: user.ssh_public_key.append(command + find_primary_key(guest)) user.save() except ldap.TYPE_OR_VALUE_EXISTS: pass Git = git_entry(my_username) git = Git() git.ou = "git" try: git.save() except ldap.ALREADY_EXISTS: pass Repo = repo_entry(my_username) try: repo = Repo.objects.get(repo=reponame) except ObjectDoesNotExist: repo = Repo() repo.repo = reponame; if permissions == "rw": repo.userRW.append(username) elif permissions == "ro": repo.userRO.append(username) try: repo.save() except ldap.TYPE_OR_VALUE_EXISTS: return git_repos(request, err={'err': 'permission_exist'}) return git_repos(request, repository_modification={'username': username, 'reponame': reponame, 'permission': 'zapis' if permissions == 'rw' else 'odczyt', 'modification': 'add'}) else: if not repos: return render_to_response('repos.html', {'error_no_git_dir': True}, context_instance=RequestContext(request)) form = RepoForm(repos=repos) return render_to_response('repo_add.html', {'form': form,}, context_instance=RequestContext(request))
def crepo(): if request.method == 'POST': form = RepoForm(request.form) if form.validate(): data = form.json() github.post('user/repos', data=data) flash('Repo created successfully.', 'success') return redirect(url_for('repos')) else: form = RepoForm() return render_template('create.html', form=form)
def erepo(slug): if request.method == 'POST': form = RepoForm(request.form) if form.validate(): github.patch('repos/' + request.cookies.get('username') + '/' + slug, data=form.json()) flash('Repo has been edit.', 'success') return redirect(url_for('repos')) else: form = RepoForm() return render_template('edit.html', slug=slug, form=form)
def add_repo(request): def gitignores(): path = "%s/gitignores/" % settings.TEMPLATE_DIRS[0] files = [] for ps, ds, fs in os.walk(path): for f in fs: n, x = os.path.splitext(f) if x == ".gitignore": p = { "name": f.replace(".gitignore", ""), "path": os.path.join(ps, f).replace(path, ""), "value": f.replace(".gitignore", "").lower() } files.append(p) return files sshkeys_len = SSHKey.objects.filter(user=request.user).count() if sshkeys_len < 1: return render_to_response( "error.html", context_instance=RequestContext( request, { "error": '在创建项目前,请先添加你的 SSH key,<a href="/accounts/settings/sshkey">点击这里</a> 添加。' })) if request.method == "POST": form = RepoForm(request.POST) if form.is_valid(): repo = form.save(commit=False) repo.touchreadme = request.POST.get("touchreadme", False) repo.gitignore = request.POST.get("gitignores", None) repo.create_repo() return HttpResponseRedirect("/%s/%s" % (repo.owner.username, repo.name)) else: form_message(request, form) else: form = RepoForm() owner_teams = [] profile = request.user.get_profile() teams = profile.teams for team in teams.all(): team_profile = team.get_profile() for team_owner in team_profile.owners.all(): if request.user.username == team_owner.username: owner_teams.append(team) context = { "page": "repo", "form": form, "owner_teams": owner_teams, "gitignores": gitignores() } return render('repo/add.html', request, context=context)