Beispiel #1
0
def user_ics_file(token):
    from itsdangerous.exc import BadSignature
    try:
        try:
            uid = read_token(token, "ics")
        except BadSignature:
            # old key
            uid = read_token(token, "ics", key="vVjYyCM99DtirZqMaGMrle")
        user = SeminarsUser(uid=int(uid))
        if not user.email_confirmed:
            return flask.abort(404, "The email has not yet been confirmed!")
    except NotImplementedError:
        return flask.abort(404, "Invalid link")

    talks = [t for t in user.talks if not (t.hidden or t.seminar.visibility == 0)]
    for seminar in user.seminars:
        # Organizers may have hidden seminar
        if seminar.visibility == 0:
            continue
        for talk in seminar.talks():
            talks.append(talk)
    return ics_file(
        talks=talks,
        filename="seminars.ics",
        user=user)
Beispiel #2
0
def ics_file(token):
    try:
        uid = read_token(token, "ics")
        user = SeminarsUser(uid=int(uid))
        if not user.email_confirmed:
            return flask.abort(404, "The email has not yet been confirmed!")
    except Exception:
        return flask.abort(404, "Invalid link")

    cal = Calendar()
    cal.add("VERSION", "2.0")
    cal.add("PRODID", "mathseminars.org")
    cal.add("CALSCALE", "GREGORIAN")
    cal.add("X-WR-CALNAME", "mathseminars.org")

    for talk in user.talks:
        cal.add_component(talk.event(user))
    for seminar in user.seminars:
        for talk in seminar.talks():
            cal.add_component(talk.event(user))
    bIO = BytesIO()
    bIO.write(cal.to_ical())
    bIO.seek(0)
    return send_file(bIO,
                     attachment_filename="mathseminars.ics",
                     as_attachment=True,
                     add_etags=False)
Beispiel #3
0
def user_ics_file(token):
    from itsdangerous.exc import BadSignature
    try:
        try:
            uid = read_token(token, "ics")
        except BadSignature:
            # old key
            return flask.abort(404, "Invalid link")
        user = SeminarsUser(uid=int(uid))
        if not user.email_confirmed:
            return flask.abort(404, "The email address has not yet been confirmed!")
    except Exception:
        return flask.abort(404, "Invalid link")
    return ics_file(
        talks=user.ics_talks,
        filename="seminars.ics",
        user=user)