Exemple #1
0
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)
Exemple #2
0
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")
Exemple #3
0
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)
Exemple #5
0
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())
Exemple #6
0
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())
Exemple #7
0
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())