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))
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 })
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, })
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, })
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))
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 })