def git_repos(request, repository_modification=None, err=None): """View displaying list of repositories""" username = request.user.ldap_user._username Repos = repo_entry(username) repos = [] for repo in Repos.objects.all(): repos.append({"name" : repo.repo, "perms": {'userRO': repo.userRO, 'userRW': repo.userRW}}) del Repos return render_to_response('repos.html', {'err': err, 'repos': repos, 'repository_modification': repository_modification}, context_instance=RequestContext(request))
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 delete(request, reponame, username, permissions): """View for removing permission for repositories""" ownername = request.user.ldap_user._username Repos = repo_entry(ownername) try: if permissions == 'ro': entry = Repos.objects.get(repo=reponame, userRO__contains=username) entry.userRO.remove(username) entry.save() elif permissions == 'rw': entry = Repos.objects.get(repo=reponame, userRW__contains=username) entry.userRW.remove(username) entry.save() except ObjectDoesNotExist: return HttpResponse("Brak obiektu do usunięcia.") return git_repos(request, repository_modification={'username': username, 'reponame': reponame, 'permission': 'zapis' if permissions == 'rw' else 'odczyt', 'modification': 'del'})