def set_completed_confirm(request, project_author, project_pk): user = request.user project = get_object_or_404(Project, pk=project_pk) # only a project's author can edit it if not user == project.author: return oops("") if project.wont_be_completed: return oops("The project is set as 'won't be completed': you can't do that.") return generic_confirmation_view( request, "Are you sure you want to set the project as completed?", "ok/", project.get_absolute_url() )
def set_project_admin_confirm(request, project_author, project_pk): project = get_object_or_404(Project, pk=project_pk) if not project.looking_for_admin: return oops("") if project.wont_be_completed: return oops("The project is set as 'won't be completed': you can't do that.") return generic_confirmation_view( request, "Are you sure you want to become admin for this project?", project.get_absolute_url() + "become_admin/ok/", project.get_absolute_url(), )
def join_project(request, project_author, project_pk): user = request.user project = get_object_or_404(Project, pk=project_pk) if project.wont_be_completed: return oops("This project won't be completed: you can't join it.") if request.method == "POST": form = JoinForm(request.POST) role = form.cleaned_data["role"] if form.is_valid(): project.add_interested_user(user, role) project_notification( project, user, "Clusterify -- user wants to join project", render_to_string( "projects/emails/author_approve_join.txt", {"project": project, "role": role, "joining_user": user, "site_url": get_full_url()}, ), True, ) else: user.message_set.create( message="Something was wrong with your form. Please note that your role description may not be longer than 120 characters. " % role ) return HttpResponseRedirect(project.get_absolute_url())
def set_wont_be_completed_doit(request, project_author, project_pk): user = request.user project = get_object_or_404(Project, pk=project_pk) # only a project's author can edit it if not user == project.author and not project.p_completed: return render_to_response("oops.html", {}, context_instance=RequestContext(request)) if project.wont_be_completed: return oops("The project is already set as 'won't be completed': you can't do that.") project.wont_be_completed = True project.looking_for_admin = False # no point anymore project.save() project_notification( project, user, "Clusterify -- project has been set as 'won't be completed'", render_to_string( "projects/emails/project_wont_be_completed.txt", {"project": project, "site_url": get_full_url()} ), ) return HttpResponseRedirect(project.get_absolute_url())
def set_completed_doit(request, project_author, project_pk): user = request.user project = get_object_or_404(Project, pk=project_pk) # only a project's author can edit it if not user == project.author: return oops("") if project.wont_be_completed: return oops("The project is set as 'won't be completed': you can't do that.") project.p_completed = True project.looking_for_admin = False project.save() return HttpResponseRedirect(project.get_absolute_url())
def set_project_admin_doit(request, project_author, project_pk): user = request.user project = get_object_or_404(Project, pk=project_pk) if not project.looking_for_admin: return oops("") if project.wont_be_completed: return oops("The project is set as 'won't be completed': you can't do that.") project.author = user project.join_user(user) project.looking_for_admin = False project.save() # TODO: post notification of admin change user.message_set.create(message="You are now admin for this project.") return HttpResponseRedirect(project.get_absolute_url())
def set_wont_be_completed_confirm(request, project_author, project_pk): user = request.user project = get_object_or_404(Project, pk=project_pk) # only a project's author can edit it if not user == project.author: return oops("") return generic_confirmation_view( request, "Are you sure you want to set this project as 'won't be completed'. This will remove the project from the 'proposed' lists without putting it on the 'completed' list.", "ok/", project.get_absolute_url(), )
def add_or_edit_project(request, project_author=None, project_pk=None, is_add=False): user = request.user project = None if not is_add: project = get_object_or_404(Project, pk=project_pk) if project.wont_be_completed: return oops("This project is set as 'won't be completed': you can't edit it") # only a project's author can edit it if not user == project.author: return oops("Only a project's author can edit it.") if request.method == "POST": if is_add: project = Project(proposed_by=user, author=user) elif project.author != user: return oops("Only a project's author can edit it.") form = ProjectForm(request.POST) if form.is_valid(): project.title = form.cleaned_data["title"] # if form.cleaned_data['event']: # project.event = get_object_or_404(Event, pk=form.cleaned_data['event']) project.description_markdown = form.cleaned_data["description"] if form.cleaned_data["time_estimate"]: project.hour_estimate = form.cleaned_data["time_estimate"] if project.p_completed: project.showcase_markdown = form.cleaned_data["showcase"] if not project.p_completed: not_involved = form.cleaned_data["not_involved"] if not_involved: project.looking_for_admin = True if not is_add: user.message_set.create( message="The project is now set as 'looking for admin'. You have admin rights until someone else clicks 'Become admin for this project'." ) project.remove_member(user) else: project.looking_for_admin = False tags = form.cleaned_data["tags"] project.save() # Need to save() before calling this, so we couldn't do it up there if is_add and not not_involved: project.join_user(user) project.set_tags(tags) return HttpResponseRedirect(project.get_absolute_url()) elif not is_add: # initialize the form with existing project info form = ProjectForm( initial={ "title": project.title, "description": project.description_markdown, "showcase": project.showcase_markdown, "tags": project.get_editable_tags, "time_estimate": project.hour_estimate, } ) else: form = ProjectForm() return render_to_response( "projects/add_or_edit_project.html", {"form": form, "is_editing": not is_add, "project": project}, context_instance=RequestContext(request), )