Example #1
0
def editorials():
    if len(request.args) < 1:
        redirect(URL("default", "index"))
    record = db.problem(int(request.args[0]))
    if record is None:
        redirect(URL("default", "index"))

    uetable = db.user_editorials
    atable = db.auth_user
    query = (uetable.problem_id == record.id)
    user_editorials = db(query).select(orderby=~uetable.added_on)
    accepted_count = len(
        filter(
            lambda x:
            (x.verification == "accepted" or
             (auth.is_logged_in() and
              (x.user_id == session.user_id or session.user_id == 1))),
            user_editorials))
    if accepted_count == 0:
        if auth.is_logged_in():
            table_contents = T(
                "No editorials found! Please contribute to the community by writing an editorial if you've solved the problem."
            )
        else:
            table_contents = T(
                "No editorials found! Please login if you want to write an editorial."
            )

        return dict(name=record.name,
                    link=record.link,
                    editorial_link=record.editorial_link,
                    table=DIV(BR(), H6(table_contents)),
                    problem_id=record.id,
                    site=utilities.urltosite(record.link))

    user_id = session.user_id if auth.is_logged_in() else None
    table = utilities.render_user_editorials_table(
        user_editorials, user_id, user_id,
        "read-editorial-problem-editorials-page")

    return dict(name=record.name,
                link=record.link,
                editorial_link=record.editorial_link,
                table=table,
                problem_id=record.id,
                site=utilities.urltosite(record.link))
Example #2
0
def get_activity():

    if request.extension != "json" or \
       request.vars.user_id is None or \
       request.vars.custom is None:
        raise HTTP(400, "Bad request")
        return

    user_id = int(request.vars.user_id)
    custom = (request.vars.custom == "True")

    stable = db.submission
    uetable = db.user_editorials

    post_vars = request.post_vars
    date = post_vars["date"]
    if date is None:
        return dict(table="")
    start_time = date + " 00:00:00"
    end_time = date + " 23:59:59"

    query = (stable.time_stamp >= start_time) & \
            (stable.time_stamp <= end_time)

    ue_query = (uetable.added_on >= start_time) & \
               (uetable.added_on <= end_time)

    if custom is False and auth.is_logged_in() and session.user_id == user_id:
        ue_query &= True
    else:
        ue_query &= (uetable.verification == "accepted")

    if custom:
        query &= (stable.custom_user_id == user_id)
        ue_query &= False
    else:
        query &= (stable.user_id == user_id)
        ue_query &= (uetable.user_id == user_id)

    submissions = db(query).select(orderby=~stable.time_stamp)
    user_editorials = db(ue_query).select(orderby=~uetable.id)
    editorials_table = utilities.render_user_editorials_table(
        user_editorials, user_id,
        session.user_id if auth.is_logged_in() else None,
        "read-editorial-user-profile-page")

    if len(submissions) > 0 or len(user_editorials):
        div_element = DIV(H3(T("Activity on") + " " + date))
        if len(submissions) > 0:
            table = utilities.render_table(submissions, [], session.user_id)
            div_element.append(table)

            if len(user_editorials) > 0:
                div_element.append(BR())

        if len(user_editorials) > 0:
            div_element.append(editorials_table)
    else:
        div_element = H5(T("No activity on") + " " + date)

    return dict(table=div_element)