def edit_project(request, project_id): project = Project.objects.select_related(depth=1).get(id=int(project_id)) parent_project = project.parent_project if not project.is_editable_by(request.user): return HttpResponseRedirect('/permission_denied/edit_project/not_author') if parent_project: if not _is_author_of_parent_project(request.user, parent_project.created_by): return HttpResponseRedirect('/permission_denied/add_project/not_parent_project_author') sectors = ", ".join([sector.name for sector in Sector.objects.all()]) implementors = ", ".join([implementor.name for implementor in Implementor.objects.all()]) action = "edit_project/" + project_id + "/" if request.method == 'POST': form = ProjectForm(request.POST) link_titles = request.POST.getlist('link_title') link_urls = request.POST.getlist('link_url') tags = request.POST.get("tags") video_urls = [request.POST.get(video_id) for video_id in request.POST.keys() if video_id.startswith("video_url")] if form.is_valid(): project.link_set.all().delete() project.sector_set.clear() project.implementor_set.clear() _set_project_status(project, request) project.save() _create_links(request, project_id, link_titles, link_urls) _add_project_details(form, project, request, parent_project) return _add_edit_success_page(project,request,"edit") else: return _render_response(request, form, action, sectors, implementors, project, parent_project, video_urls, link_titles, link_urls, project.resource_set.all(), title="Edit Project") else: form = _create_initial_data_from_project(project) video_urls = [video.url for video in project.video_set.all()] links = project.link_set.all() link_titles = [link.title for link in links] link_urls = [link.url for link in links] return _render_response(request, form, action, sectors, implementors, project, parent_project, video_urls, link_titles, link_urls, project.resource_set.all(), title="Edit Project")
def add_project(request): parent_project = _get_parent(request.META['QUERY_STRING']) # check for authorness... Can't use 'user_passes_test' decorator # because it doesn't handle redirects properly if not _is_project_author(request.user): return HttpResponseRedirect('/permission_denied/add_project/not_author') if parent_project: if not _is_author_of_parent_project(request.user, parent_project.created_by): return HttpResponseRedirect('/permission_denied/add_project/not_parent_project_author') sectors = ", ".join([sector.name for sector in Sector.objects.all()]) implementors = ", ".join([implementor.name for implementor in Implementor.objects.all()]) action = 'add_project?parent_id=' if parent_project: action = action + str(parent_project.id) if request.method == 'POST': form = ProjectForm(request.POST) project_id = request.POST.get("project_id") link_titles = request.POST.getlist('link_title') link_urls = request.POST.getlist('link_url') video_urls = [request.POST.get(video_id) for video_id in request.POST.keys() if video_id.startswith("video_url")] project = Project.objects.get(id=int(project_id)) if form.is_valid(): _create_links(request, project_id, link_titles, link_urls) _set_project_status(project, request) _add_project_details(form, project, request, parent_project) return _add_edit_success_page(project, request, "add") else: return _render_response(request, form, action, sectors, implementors, project, parent_project, video_urls, link_titles, link_urls, project.resource_set.all(), title="Add Project") else: form = ProjectForm() project = _create_new_project(request) return _render_response(request, form, action, sectors, implementors, project, parent_project, title="Add Project")