Exemplo n.º 1
0
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))
Exemplo n.º 2
0
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))
Exemplo n.º 3
0
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'})