コード例 #1
0
ファイル: main.py プロジェクト: akhayoon/seminars
def show_talk(semid, talkid):
    token = request.args.get(
        "token", "")  # save the token so user can toggle between view and edit
    talk = talks_lucky({"seminar_id": semid, "seminar_ctr": talkid})
    if talk is None:
        return not_found_404("Talk not found")
    kwds = dict(title="View talk",
                talk=talk,
                seminar=talk.seminar,
                subsection="viewtalk",
                token=token)
    if token:
        kwds["section"] = "Manage"
        # Also want to override top menu
        from seminars.utils import top_menu

        menu = top_menu()
        menu[2] = (url_for("create.index"), "", "Manage")
        kwds["top_menu"] = menu
    elif (current_user.is_subject_admin(talk)
          or current_user.email_confirmed and
          (current_user.email in talk.seminar.editors()
           or current_user.email == talk.speaker_email)):
        kwds["section"] = "Manage"
    return render_template("talk.html", **kwds)
コード例 #2
0
ファイル: main.py プロジェクト: akhayoon/seminars
def show_institution(shortname):
    institution = db.institutions.lookup(shortname)
    if institution is None:
        return not_found_404("Institution not found")
    institution = WebInstitution(shortname, data=institution)
    section = "Manage" if current_user.is_creator else None
    query = {"institutions": {"$contains": shortname}}
    if not current_user.is_admin:
        query["display"] = True
    events = list(
        seminars_search(
            query,
            sort=["weekday", "start_time", "name"],
            organizer_dict=all_organizers(),
        ))
    seminars = [S for S in events if not S.is_conference]
    conferences = [S for S in events if S.is_conference]
    conferences.sort(key=lambda S: (S.start_date, S.name))
    return render_template(
        "institution.html",
        seminars=seminars,
        conferences=conferences,
        title="View institution",
        institution=institution,
        section=section,
        subsection="viewinst",
    )
コード例 #3
0
ファイル: main.py プロジェクト: akhayoon/seminars
def show_seminar_json(shortname):
    seminar = seminars_lucky({"shortname": shortname})
    if seminar is None or not seminar.visible():
        return not_found_404("Seminar not found")
    # FIXME
    cols = [
        "start_time",
        "end_time",
        "speaker",
        "title",
        "abstract",
        "speaker_affiliation",
        "speaker_homepage",
    ]
    talks = [{
        c: getattr(elt, c)
        for c in cols
    } for elt in talks_search_api(shortname, projection=["seminar_id"] + cols)]
    callback = request.args.get("callback", False)
    if callback:
        return Response(
            "{}({})".format(str(callback), json.dumps(talks, default=str)),
            mimetype="application/javascript",
        )
    else:
        return Response(json.dumps(talks, default=str),
                        mimetype="application/json")
コード例 #4
0
ファイル: main.py プロジェクト: akhayoon/seminars
def ics_talk_file(semid, talkid):
    talk = talks_lucky({"seminar_id": semid, "seminar_ctr": talkid})
    if talk is None:
        return not_found_404("Talk not found")
    return ics_file([talk],
                    filename="{}_{}.ics".format(semid, talkid),
                    user=current_user)
コード例 #5
0
ファイル: main.py プロジェクト: akhayoon/seminars
def show_seminar(shortname):
    seminar = seminars_lucky({"shortname": shortname})
    if seminar is None:
        return not_found_404("Seminar not found")
    if not seminar.visible():
        flash_error("You do not have permission to view %s", seminar.name)
        return redirect(url_for("search_seminars"), 302)
    talks = seminar.talks(projection=3)
    now = get_now()
    future = []
    past = []
    for talk in talks:
        if talk.end_time >= now:
            future.append(talk)
        else:
            past.append(talk)
    future.sort(key=lambda talk: talk.start_time)
    past.sort(key=lambda talk: talk.start_time, reverse=True)
    if current_user.email in seminar.editors(
    ) or current_user.is_subject_admin(seminar):
        section = "Manage"
    else:
        section = None
    return render_template(
        "seminar.html",
        title="View series",
        future=future,
        past=past,
        seminar=seminar,
        section=section,
        subsection="view",
        bread=None,
    )
コード例 #6
0
ファイル: main.py プロジェクト: akhayoon/seminars
def ics_seminar_file(shortname):
    seminar = seminars_lucky({"shortname": shortname})
    if seminar is None or not seminar.visible():
        return not_found_404("Seminar not found")

    return ics_file(seminar.talks(),
                    filename="{}.ics".format(shortname),
                    user=current_user)
コード例 #7
0
ファイル: main.py プロジェクト: akhayoon/seminars
def show_seminar_raw(shortname):
    seminar = seminars_lucky({"shortname": shortname})
    if seminar is None or not seminar.visible():
        return not_found_404("Seminar not found")
    talks = talks_search_api(shortname)
    return render_template("seminar_raw.html",
                           title=seminar.name,
                           talks=talks,
                           seminar=seminar)
コード例 #8
0
ファイル: main.py プロジェクト: akhayoon/seminars
def show_seminar_bare(shortname):
    seminar = seminars_lucky({"shortname": shortname})
    if seminar is None or not seminar.visible():
        return not_found_404("Seminar not found")
    talks = talks_search_api(shortname)
    resp = make_response(
        render_template(
            "seminar_bare.html",
            title=seminar.name,
            talks=talks,
            seminar=seminar,
            _external=('_external' in request.args),
            site_footer=('site_footer' in request.args),
        ))
    resp.headers['Access-Control-Allow-Origin'] = '*'
    return resp
コード例 #9
0
ファイル: main.py プロジェクト: akhayoon/seminars
def by_subject(subject):
    subject = subject.lower()
    if subject not in subject_dict():
        return not_found_404("Subject %s not found" % subject)
    return lambda: _talks_index({"subjects": {"$contains": subject}})