diff --git a/server.py b/server.py index 1b33be5b064341dbf037ce5200b44e9202219cb6..98bd9391c3d1719e6972ce01601464cb3759e789 100755 --- a/server.py +++ b/server.py @@ -1328,7 +1328,7 @@ def create_protocols_feed(protocoltype): abort(403) protocols = [protocol for protocol in protocoltype.protocols - if protocol.done + if protocol.is_done() ] feed = feedgen.feed.FeedGenerator() feed.description(protocoltype.name) @@ -1357,6 +1357,43 @@ def create_protocols_feed(protocoltype): entry.published(aware_date) return feed + +def create_appointments_feed(protocoltype): + if not protocoltype.has_public_anonymous_view_right(): + abort(403) + protocols = [protocol + for protocol in protocoltype.protocols + if not protocol.is_done() + ] + feed = feedgen.feed.FeedGenerator() + feed.description(protocoltype.name) + feed.generator("Protokollsystem 3", + uri="https://git.fsmpi.rwth-aachen.de/protokollsystem/proto3") + feed.id(url_for("show_type", protocoltype_id=protocoltype.id, _external=True)) + feed.link(href=url_for("list_protocols", protocoltype_id=protocoltype.id, + state_open=True, _external=True), rel="alternate") + feed.title("{}-Termine".format(protocoltype.short_name)) + for protocol in protocols: + entry = feed.add_entry() + entry.id(url_for("show_protocol", + protocol_id=protocol.id, _external=True)) + entry.link(href=url_for("show_protocol", protocol_id=protocol.id, + _external=True), rel="alternate") + entry.title(protocol.get_title()) + entry.summary("\n".join( + [",\n".join( + "{}: {}".format(meta.name, meta.value) + for meta in protocol.metas + if not meta.internal + ), + "Tagesordnung:", + ",\n".join( + "TOP {}".format(top.name) + for top in protocol.get_tops() + )])) + return feed + + @app.route("/feed/protocols/rss/<int:protocoltype_id>") @db_lookup(ProtocolType) def feed_protocols_rss(protocoltype): @@ -1369,6 +1406,19 @@ def feed_protocols_atom(protocoltype): return Response(create_protocols_feed(protocoltype).atom_str(), mimetype="application/atom+xml") +@app.route("/feed/appointments/rss/<int:protocoltype_id>") +@db_lookup(ProtocolType) +def feed_appointments_rss(protocoltype): + return Response(create_appointments_feed(protocoltype).rss_str(), + mimetype="application/rss+xml") + +@app.route("/feed/appointments/atom/<int:protocoltype_id>") +@db_lookup(ProtocolType) +def feed_appointments_atom(protocoltype): + return Response(create_appointments_feed(protocoltype).atom_str(), + mimetype="application/atom+xml") + + @app.route("/like/new") @login_required def new_like():