def pubkey_edit(request, key_id=None): if key_id is not None: pk = get_object_or_404(PublicKey, pk=key_id) else: pk = None user = request.user if not user.is_authenticated() or pk.owner != user: return HttpResponse("Not allowed", status=401) if request.method == 'POST': if key_id is not None: form = PublicKeyForm(request.POST, instance=pk) else: form = PublicKeyForm(request.POST) if form.is_valid(): try: pk = form.save() return redirect('user_settings') except IntegrityError: form._errors["description"] = ErrorList(["You have a public key with that name already"]) context = get_context(request, {'form' : form, 'pk': pk}) return render_to_response('user_manage/key_edit.html', context, context_instance=RequestContext(request)) elif request.method == 'GET': form = PublicKeyForm(model_to_dict(pk)) else: return HttpResponse("Not implemented", status=405) context = get_context(request, {'form' : form, 'pk' : pk}) return render_to_response('user_manage/key_edit.html', context, context_instance= RequestContext(request))
def repo_new(request): user = request.user if not user.is_authenticated(): return HttpResponse("You can't add this", status=401) if request.method == 'GET': new_form = NewRepositoryForm() form = RepositoryForm() elif request.method == 'POST': new_form = NewRepositoryForm(request.POST) form = RepositoryForm(request.POST) if new_form.is_valid() and form.is_valid(): repo = form.save(commit=False) repo.owner = user repo.name = new_form.cleaned_data['repo_name'] try: repo.save() repo.collaboration_set.add( Collaboration(user=user, permission='O')) return redirect('repo_desc', user.username, repo.name) except IntegrityError: new_form._errors["repo_name"] = ErrorList( ["You already have a repository named that"]) context = get_context(request, {'new_form': new_form, 'form': form}) return render_to_response('repo_manage/repo_edit.html', context, context_instance=RequestContext(request))
def repo_access(request, user_name, repo_name): user = request.user owner = get_object_or_404(User, username=user_name) repo = get_object_or_404(Repository, owner=owner, name=repo_name) owners = repo.owners() writers = repo.writers() readers = repo.readers() access = repo.user_access(user) if access is None: return HttpResponse('Not authorized', status=401) context = get_context( request, { 'repo': repo, 'access': access, 'owners': owners, 'writers': writers, 'readers': readers, 'owner': owner }) return render_to_response('repo_manage/repo_access.html', context, context_instance=RequestContext(request))
def repo_edit(request, user_name, repo_name): owner = get_object_or_404(User, username=user_name) user = request.user repo = get_object_or_404(Repository, owner=owner, name=repo_name) access = repo.user_access(user) if access != 'O': return HttpResponse("You can't edit this", status=401) if request.method == 'GET': form = RepositoryForm(model_to_dict(repo)) colab_form = CollaborationFormSet(instance=repo, queryset=repo.collaboration_set.exclude(user=user)) elif request.method == 'POST': form = RepositoryForm(request.POST, instance=repo) colab_form = CollaborationFormSet(request.POST, instance=repo) if form.is_valid() and colab_form.is_valid(): repo = form.save() colab_form.save() return redirect('repo_desc', owner.username, repo.name) context = get_context(request, {'owner': owner, 'repo' : repo, 'form' : form, 'colab': colab_form, 'access': access }) return render_to_response('repo_manage/repo_edit.html', context, context_instance=RequestContext(request))
def repo_edit(request, user_name, repo_name): owner = get_object_or_404(User, username=user_name) user = request.user repo = get_object_or_404(Repository, owner=owner, name=repo_name) access = repo.user_access(user) if access != 'O': return HttpResponse("You can't edit this", status=401) if request.method == 'GET': form = RepositoryForm(model_to_dict(repo)) colab_form = CollaborationFormSet( instance=repo, queryset=repo.collaboration_set.exclude(user=user)) elif request.method == 'POST': form = RepositoryForm(request.POST, instance=repo) colab_form = CollaborationFormSet(request.POST, instance=repo) if form.is_valid() and colab_form.is_valid(): repo = form.save() colab_form.save() return redirect('repo_desc', owner.username, repo.name) context = get_context( request, { 'owner': owner, 'repo': repo, 'form': form, 'colab': colab_form, 'access': access }) return render_to_response('repo_manage/repo_edit.html', context, context_instance=RequestContext(request))
def user_settings(request): user = request.user new_pk = PublicKeyForm() p_form = ProfileForm() pubkeys = user.publickey_set.all() profile = UserProfile.objects.get_or_create(user=user)[0] if not user.is_authenticated(): return HttpResponse("Not authorized", status=401) if request.method == 'GET': user_form = UserForm(model_to_dict(user)) p_form = ProfileForm(model_to_dict(profile)) elif request.method == 'POST': user_form = UserForm(request.POST, instance=user) if user_form.is_valid(): user = user_form.save() return redirect('user_settings') context = get_context( request, { 'user_form': user_form, 'pk_form': new_pk, 'keys': pubkeys, 'profile_form': p_form }) return render_to_response('user_manage/user_settings.html', context, context_instance=RequestContext(request))
def repo_clone(request, user_name, repo_name): user = request.user owner = get_object_or_404(User, username=user_name) repo = get_object_or_404(Repository, owner=owner, name=repo_name) access = repo.user_access(user) if access is None: return HttpResponse('Not authorized', status=401) context = get_context(request, {'repo' : repo, 'access':access, 'owner':owner}) return render_to_response('repo_manage/repo_clone.html', context, context_instance=RequestContext(request))
def pubkey_edit(request, key_id=None): if key_id is not None: pk = get_object_or_404(PublicKey, pk=key_id) else: pk = None user = request.user if not user.is_authenticated() or pk.owner != user: return HttpResponse("Not allowed", status=401) if request.method == 'POST': if key_id is not None: form = PublicKeyForm(request.POST, instance=pk) else: form = PublicKeyForm(request.POST) if form.is_valid(): try: pk = form.save() return redirect('user_settings') except IntegrityError: form._errors["description"] = ErrorList( ["You have a public key with that name already"]) context = get_context(request, {'form': form, 'pk': pk}) return render_to_response( 'user_manage/key_edit.html', context, context_instance=RequestContext(request)) elif request.method == 'GET': form = PublicKeyForm(model_to_dict(pk)) else: return HttpResponse("Not implemented", status=405) context = get_context(request, {'form': form, 'pk': pk}) return render_to_response('user_manage/key_edit.html', context, context_instance=RequestContext(request))
def repo_list(request, user_name): user = request.user owner = get_object_or_404(User, username=user_name) if user == owner: owned = owned_repos(owner, include_private=True) write = writable_repos(owner, include_private=True) read = readable_repos(owner, include_private=True) else: owned = owned_repos(owner) write = writable_repos(owner) read = None context = get_context(request, { 'owned' : owned,'write':write, 'read':read, 'owner' : owner,}) return render_to_response('repo_manage/repo_list.html', context, context_instance=RequestContext(request))
def repo_browse(request, user_name, repo_name, method='summary', path=None): user = request.user owner = get_object_or_404(User, username=user_name) repo = get_object_or_404(Repository, owner=owner, name=repo_name) collaborators = repo.collaborators.all() access = repo.user_access(user) if access is None: return HttpResponse('Not authorized', status=401) commit_id = request.GET.get('id') q = request.GET.get('q', '') qtype = request.GET.get('qt', 'grep') messages = { 'grep': 'Log Message', 'author': 'Author', 'committer': 'Committer', 'range': 'Range' } search_text = messages.get(qtype, messages['grep']) if method == 'tree': file_path = path.split('/') path_parts = cumulative_path(file_path) file_path = zip(file_path, path_parts) else: file_path = None query = request.GET.urlencode() url = cgit_url(user_name, repo_name, method, path, query) text = get(url) context = get_context( request, { 'owner': owner, 'repo_html': text.text, 'repo': repo, 'access': access, 'id': commit_id, 'method': method, 'q': q, 'qtype': qtype, 'search_text': search_text, 'file_path': file_path }) return render_to_response('viewer/repo_view.html', context)
def repo_browse(request, user_name, repo_name, method="summary", path=None): user = request.user owner = get_object_or_404(User, username=user_name) repo = get_object_or_404(Repository, owner=owner, name=repo_name) collaborators = repo.collaborators.all() access = repo.user_access(user) if access is None: return HttpResponse("Not authorized", status=401) commit_id = request.GET.get("id") q = request.GET.get("q", "") qtype = request.GET.get("qt", "grep") messages = {"grep": "Log Message", "author": "Author", "committer": "Committer", "range": "Range"} search_text = messages.get(qtype, messages["grep"]) if method == "tree": file_path = path.split("/") path_parts = cumulative_path(file_path) file_path = zip(file_path, path_parts) else: file_path = None query = request.GET.urlencode() url = cgit_url(user_name, repo_name, method, path, query) text = get(url) context = get_context( request, { "owner": owner, "repo_html": text.text, "repo": repo, "access": access, "id": commit_id, "method": method, "q": q, "qtype": qtype, "search_text": search_text, "file_path": file_path, }, ) return render_to_response("viewer/repo_view.html", context)
def feedback_main(request): success = False if 'success' in request.GET: success = True if request.method == 'GET': form = FeedbackForm() elif request.method == 'POST': form = FeedbackForm(request.POST) if form.is_valid(): feedback = form.save(commit=False) feedback.sender = request.user feedback.save() furl = reverse('feedback') + '?success=1' return HttpResponseRedirect(furl) context = get_context(request, {'form':form, 'success':success}) return render_to_response('feedback/feedback.html', context, context_instance=RequestContext(request))
def pubkey_add(request): user = request.user if not user.is_authenticated(): return HttpResponse("You should be authenticated....", status=401) if request.method == 'GET': form = PublicKeyForm() elif request.method == 'POST': form = PublicKeyForm(request.POST) if form.is_valid(): key = form.save(commit=False) key.owner = user try: key.save() return redirect('user_settings') except IntegrityError: form._errors["description"] = ErrorList(["You have a public key with that name already"]) context = get_context(request, {'form' : form}) return render_to_response('user_manage/key_edit.html', context, context_instance=RequestContext(request))
def feedback_main(request): success = False if 'success' in request.GET: success = True if request.method == 'GET': form = FeedbackForm() elif request.method == 'POST': form = FeedbackForm(request.POST) if form.is_valid(): feedback = form.save(commit=False) feedback.sender = request.user feedback.save() furl = reverse('feedback') + '?success=1' return HttpResponseRedirect(furl) context = get_context(request, {'form': form, 'success': success}) return render_to_response('feedback/feedback.html', context, context_instance=RequestContext(request))
def user_settings(request): user = request.user new_pk = PublicKeyForm() p_form = ProfileForm() pubkeys = user.publickey_set.all() profile = UserProfile.objects.get_or_create(user=user)[0] if not user.is_authenticated(): return HttpResponse("Not authorized", status=401) if request.method == 'GET': user_form = UserForm(model_to_dict(user)) p_form = ProfileForm(model_to_dict(profile)) elif request.method == 'POST': user_form = UserForm(request.POST, instance=user) if user_form.is_valid(): user = user_form.save() return redirect('user_settings') context = get_context(request, { 'user_form' : user_form, 'pk_form': new_pk, 'keys' : pubkeys, 'profile_form': p_form }) return render_to_response('user_manage/user_settings.html', context, context_instance=RequestContext(request))
def repo_list(request, user_name): user = request.user owner = get_object_or_404(User, username=user_name) if user == owner: owned = owned_repos(owner, include_private=True) write = writable_repos(owner, include_private=True) read = readable_repos(owner, include_private=True) else: owned = owned_repos(owner) write = writable_repos(owner) read = None context = get_context(request, { 'owned': owned, 'write': write, 'read': read, 'owner': owner, }) return render_to_response('repo_manage/repo_list.html', context, context_instance=RequestContext(request))
def repo_simple_new(request): user = request.user if not user.is_authenticated(): return HttpResponse("You can't add this", status=401) if request.method == 'GET': return redirect('repo_new') elif request.method == 'POST': new_form = NewRepositoryForm(request.POST) if new_form.is_valid(): repo = Repository(owner=user) repo.name = new_form.cleaned_data['repo_name'] try: repo.save() repo.collaboration_set.add(Collaboration(user=user, permission='O')) return redirect('repo_edit', user.username, repo.name) except IntegrityError: new_form._errors["repo_name"] = ErrorList(["You DKDKDK already have a repository named that"]) context = get_context(request, {'new_form':new_form, 'form':RepositoryForm()}) return render_to_response('repo_manage/repo_edit.html', context, context_instance=RequestContext(request))
def pubkey_add(request): user = request.user if not user.is_authenticated(): return HttpResponse("You should be authenticated....", status=401) if request.method == 'GET': form = PublicKeyForm() elif request.method == 'POST': form = PublicKeyForm(request.POST) if form.is_valid(): key = form.save(commit=False) key.owner = user try: key.save() return redirect('user_settings') except IntegrityError: form._errors["description"] = ErrorList( ["You have a public key with that name already"]) context = get_context(request, {'form': form}) return render_to_response('user_manage/key_edit.html', context, context_instance=RequestContext(request))