예제 #1
0
def edit(request, in_username, tag):
    try:
        rm_dict = get_roadmap_objs(in_username, tag)
    except:
        return HttpResponse(status=404)

    roadmap = rm_dict["roadmap"]
    roadmap_settings = rm_dict["settings"]

    if not roadmap_settings.viewable_by(request.user):
        return HttpResponse(status=404)

    common_rm_dict = get_common_roadmap_dict(roadmap, roadmap_settings,
                                             request.user, in_username, tag)

    can_edit = roadmap_settings.editable_by(request.user)

    if request.method == 'POST':
        if not (request.user.is_authenticated() and can_edit):
            # TODO inform the user that they cannot edit
            return HttpResponse(status=401)

        form = RoadmapForm(request.POST, instance=roadmap)

        if form.is_valid():
            versions = _get_versions_obj(roadmap)
            cur_vn = len(versions) + 1
            smodel = form.save(commit=False)
            smodel.version_num = cur_vn
            with reversion.create_revision():
                smodel.save()
                reversion.set_user(request.user)
                reversion.set_comment(form.cleaned_data['commit_msg'])

            if request.POST["submitbutton"] == "Publish" and common_rm_dict[
                    'can_change_settings']:
                roadmap_settings.published = True
                roadmap_settings.save()
                return HttpResponseRedirect('/roadmaps/%s/%s' %
                                            (in_username, tag))

    elif request.method == 'GET':
        form = RoadmapForm(instance=roadmap)
    else:
        return HttpResponse(status=403)

    return render(
        request, 'roadmap-edit.html',
        dict({
            'form': form,
            'page_class': "edit",
        }, **common_rm_dict))
예제 #2
0
def new(request):
    if not request.user.is_authenticated() or is_lazy_user(request.user):
        return HttpResponseRedirect(reverse("user:login"))

    if request.method == 'POST':
        form = RoadmapForm(request.POST)
        settings_form = RoadmapSettingsForm(request.POST)
        is_publish = request.POST["submitbutton"] == "Publish"

        if form.is_valid() and settings_form.is_valid():
            with reversion.create_revision():
                roadmap = form.save(commit=False)
                roadmap.save()
                reversion.set_user(request.user)

            rms = settings_form.save(commit=False)
            if not request.user.is_superuser:
                rms.sudo_listed_in_main = models.RoadmapSettings._meta.get_field_by_name(
                    'sudo_listed_in_main')[0].default  # TODO hack

            if is_publish:
                rms.published = True

            rms.roadmap = roadmap
            prof = request.user.profile
            rms.creator = prof
            rms.save()
            rms.owners.add(prof)
            rms.save()

            return HttpResponseRedirect(
                '/roadmaps/%s/%s' %
                (request.user.username, settings_form.cleaned_data['url_tag']))
    else:
        try:
            initial_txt = open(
                os.path.join(os.path.dirname(os.path.realpath(__file__)),
                             "templates/roadmap-instructions.txt")).read()
        except:
            sys.stderr.write("unable to open roadmap instructions txt\n")
            initial_txt = ""
        form = RoadmapForm(initial={'body': initial_txt})
        settings_form = RoadmapSettingsForm()

    return render(request, 'roadmap-new.html', {
        'form': form,
        'settings_form': settings_form,
        'can_edit': True
    })
예제 #3
0
def edit(request, username, tag):

    roadmap = models.load_roadmap(username, tag)
    if roadmap is None:
        return HttpResponse(status=404)

    if not roadmap.visible_to(request.user):
        return HttpResponse(status=404)

    can_edit = roadmap.editable_by(request.user)

    if request.method == 'POST':
        if not (request.user.is_authenticated() and can_edit):
            # TODO inform the user that they cannot edit
            return HttpResponse(status=401)

        form = RoadmapForm(request.POST, instance=roadmap)

        if form.is_valid():
            versions = get_versions_obj(roadmap)
            cur_vn = len(versions) + 1
            smodel = form.save(commit=False)
            smodel.version_num = cur_vn
            with reversion.create_revision():
                smodel.save()
                reversion.set_user(request.user)
                reversion.set_comment(form.cleaned_data['commit_msg'])

            return HttpResponseRedirect('/roadmaps/%s/%s' % (username, tag))

    else:
        form = RoadmapForm(instance=roadmap)

    base_url = '/roadmaps/%s/%s' % (username, tag)  # TODO remove hardcoding
    edit_url = base_url + "/edit"
    history_url = base_url + "/history"

    return render(
        request, 'roadmap-edit.html', {
            'form': form,
            'tag': roadmap.url_tag,
            'edit_url': edit_url,
            'base_url': base_url,
            'history_url': history_url,
            'page_class': "edit",
            'roadmap': roadmap,
            'can_edit': can_edit,
        })
예제 #4
0
def edit(request, username, tag):

    roadmap = models.load_roadmap(username, tag)
    if roadmap is None:
        return HttpResponse(status=404)

    if not roadmap.visible_to(request.user):
        return HttpResponse(status=404)

    can_edit = roadmap.editable_by(request.user)
    
    if request.method == 'POST':
        if not (request.user.is_authenticated() and can_edit):
            # TODO inform the user that they cannot edit
            return HttpResponse(status=401)
        
        form = RoadmapForm(request.POST, instance=roadmap)

        if form.is_valid():
            versions = get_versions_obj(roadmap)
            cur_vn = len(versions) + 1
            smodel = form.save(commit=False)
            smodel.version_num = cur_vn
            with reversion.create_revision():
                smodel.save()
                reversion.set_user(request.user)
                reversion.set_comment(form.cleaned_data['commit_msg'])

            return HttpResponseRedirect('/roadmaps/%s/%s' % (username, tag))

    else:
        form = RoadmapForm(instance=roadmap)
    
    
    base_url = '/roadmaps/%s/%s' % (username, tag) # TODO remove hardcoding
    edit_url = base_url + "/edit"
    history_url = base_url + "/history"

    return render(request, 'roadmap-edit.html', {
        'form': form,
        'tag': roadmap.url_tag,
        'edit_url': edit_url,
        'base_url': base_url,
        'history_url': history_url,
        'page_class': "edit",
        'roadmap': roadmap,
        'can_edit': can_edit,
        })
예제 #5
0
def edit(request, in_username, tag):
    try:
        rm_dict = get_roadmap_objs(in_username, tag)
    except:
        return HttpResponse(status=404)

    roadmap = rm_dict["roadmap"]
    roadmap_settings = rm_dict["settings"]

    if not roadmap_settings.viewable_by(request.user):
        return HttpResponse(status=404)

    common_rm_dict = get_common_roadmap_dict(roadmap, roadmap_settings, request.user, in_username, tag)

    can_edit = roadmap_settings.editable_by(request.user)

    if request.method == 'POST':
        if not (request.user.is_authenticated() and can_edit):
            # TODO inform the user that they cannot edit
            return HttpResponse(status=401)

        form = RoadmapForm(request.POST, instance=roadmap)

        if form.is_valid():
            versions = _get_versions_obj(roadmap)
            cur_vn = len(versions) + 1
            smodel = form.save(commit=False)
            smodel.version_num = cur_vn
            with reversion.create_revision():
                smodel.save()
                reversion.set_user(request.user)
                reversion.set_comment(form.cleaned_data['commit_msg'])

            if request.POST["submitbutton"] == "Publish" and common_rm_dict['can_change_settings']:
                roadmap_settings.published = True
                roadmap_settings.save()
                return HttpResponseRedirect('/roadmaps/%s/%s' % (in_username, tag))

    elif request.method == 'GET':
        form = RoadmapForm(instance=roadmap)
    else:
        return HttpResponse(status=403)

    return render(request, 'roadmap-edit.html', dict({
        'form': form,
        'page_class': "edit",
    }, **common_rm_dict))
예제 #6
0
def new(request):
    if not request.user.is_authenticated() or is_lazy_user(request.user):
        return HttpResponseRedirect(reverse("user:login"))

    if request.method == 'POST':
        form = RoadmapForm(request.POST)
        settings_form = RoadmapSettingsForm(request.POST)
        is_publish = request.POST["submitbutton"] == "Publish"

        if form.is_valid() and settings_form.is_valid():
            with reversion.create_revision():
                roadmap = form.save(commit=False)
                roadmap.save()
                reversion.set_user(request.user)

            rms = settings_form.save(commit=False)
            if not request.user.is_superuser:
                rms.sudo_listed_in_main = models.RoadmapSettings._meta.get_field_by_name('sudo_listed_in_main')[0].default # TODO hack

            if is_publish:
                rms.published = True

            rms.roadmap = roadmap
            prof = request.user.profile
            rms.creator = prof
            rms.save()
            rms.owners.add(prof)
            rms.save()

            return HttpResponseRedirect('/roadmaps/%s/%s'
                                        % (request.user.username,
                                           settings_form.cleaned_data['url_tag']))
    else:
        try:
            initial_txt = open(os.path.join(os.path.dirname(os.path.realpath(__file__)), "templates/roadmap-instructions.txt")).read()
        except:
            sys.stderr.write("unable to open roadmap instructions txt\n")
            initial_txt = ""
        form = RoadmapForm(initial={'body': initial_txt})
        settings_form = RoadmapSettingsForm()

    return render(request, 'roadmap-new.html', {
        'form': form,
        'settings_form': settings_form,
        'can_edit': True
        })