def post_project_comment(request, project_author, project_pk): user = request.user project = get_object_or_404(Project, pk=project_pk) if request.method == "POST": comment_form = CommentForm(request.POST) if comment_form.is_valid(): text = comment_form.cleaned_data["text"] comment = Comment(text=text, author=user, project=project) comment.save() project_notification( project, user, "Clusterify -- new comment on project", render_to_string( "projects/emails/comment_on_project.txt", {"project": project, "comment": comment, "site_url": get_full_url()}, ), ) return HttpResponseRedirect(project.get_absolute_url()) else: comment_form = CommentForm() return single_project(request, project_author, project_pk, comment_form)
def list_comments_as_feed(request): page_title, comments = list_comments(request, return_raw_comments=True) f = feedgenerator.Rss201rev2Feed( title=page_title, link=get_full_url(), description=u"Recent Project Comments", language=u"en" ) to_print = comments[0 : min(ITEMS_IN_FEED, comments.count())] for p in to_print: f.add_item( title="Comment on " + p.project.title + " by " + p.author.username, link=get_full_url() + p.project.get_absolute_url(), description=p.text, pubdate=p.pub_date, ) return HttpResponse(f.writeString("UTF-8"), mimetype="application/rss+xml")
def list_projects_as_feed(request, completeness, list_type="top"): page_title, url, projects, list_type = list_projects( request, list_type, completeness == "completed", return_raw_projects=True ) f = feedgenerator.Rss201rev2Feed( title=page_title + " (" + list_type + ")", link=get_full_url() + url, description=u"", language=u"en" ) to_print = projects[0 : min(ITEMS_IN_FEED, projects.count())] for p in to_print: f.add_item( title=p.title, link=get_full_url() + p.get_absolute_url(), description=p.description_html, pubdate=p.pub_date, ) return HttpResponse(f.writeString("UTF-8"), mimetype="application/rss+xml")
def file_uploader_handler(update, context): if update.message.document is not None: file_id = update.message.document elif len(update.message.photo) > 0: file_id = update.message.photo[-1] else: context.bot.send_message(chat_id=update.message.chat_id, text="Can't recognize type of document") return False file = context.bot.get_file(file_id) file_extension = file.file_path.split('.')[-1] filename = f'{uuid.uuid4()}.{file_extension}' file.download(os.path.join(config.IMAGES_UPLOAD_DIR, filename)) file_url = get_full_url(filename) context.bot.send_message(chat_id=update.message.chat_id, text=f"Uploaded!\n{file_url}", disable_web_page_preview=True)
def approve_join(request, project_author, project_pk, joining_username): user = request.user project = get_object_or_404(Project, pk=project_pk) joining_user = get_object_or_404(User, username=joining_username) if user == project.author: project.join_user(joining_user) role = project.member_role(joining_user) project_notification( project, None, "Clusterify -- new user joined project", render_to_string( "projects/emails/join_approved.txt", {"project": project, "role": role, "joining_user": joining_user, "site_url": get_full_url()}, ), ) return HttpResponseRedirect(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())