예제 #1
0
파일: views.py 프로젝트: shitiven/GitPower
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)
예제 #2
0
파일: views.py 프로젝트: pawelpbm/student
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))
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)