Skip to content
Snippets Groups Projects
Commit 654e2e68 authored by markus scheller's avatar markus scheller
Browse files

Merge branch 'master' of git.fsmpi.rwth-aachen.de:protokollsystem/proto3

parents e1ae82ed 2e091a2c
No related branches found
No related tags found
1 merge request!6Lange Links zwangsumbrechen
...@@ -18,6 +18,7 @@ import os ...@@ -18,6 +18,7 @@ import os
from datetime import datetime from datetime import datetime
import math import math
import mimetypes import mimetypes
import subprocess
import config import config
from shared import db, date_filter, datetime_filter, date_filter_long, date_filter_short, time_filter, time_filter_short, user_manager, security_manager, current_user, check_login, login_required, group_required, class_filter, needs_date_test, todostate_name_filter, code_filter, indent_tab_filter from shared import db, date_filter, datetime_filter, date_filter_long, date_filter_short, time_filter, time_filter_short, user_manager, security_manager, current_user, check_login, login_required, group_required, class_filter, needs_date_test, todostate_name_filter, code_filter, indent_tab_filter
...@@ -80,6 +81,18 @@ app.jinja_env.globals.update(max=max) ...@@ -80,6 +81,18 @@ app.jinja_env.globals.update(max=max)
app.jinja_env.globals.update(dir=dir) app.jinja_env.globals.update(dir=dir)
app.jinja_env.globals.update(now=datetime.now) app.jinja_env.globals.update(now=datetime.now)
def get_git_revision():
gitlab_url = "https://git.fsmpi.rwth-aachen.de/protokollsystem/proto3"
commit_hash = subprocess.check_output(["git", "log", "-g", "-1", "--pretty=%H"]).decode("UTF-8").strip()
timestamp = int(subprocess.check_output(["git", "log", "-g", "-1", "--pretty=%at"]).strip())
commit_date = datetime.fromtimestamp(timestamp)
return {"url": gitlab_url, "hash": commit_hash, "date": commit_date}
try:
app.jinja_env.globals["git_revision"] = get_git_revision()
except:
pass
# blueprints here # blueprints here
@manager.command @manager.command
......
...@@ -213,6 +213,11 @@ ...@@ -213,6 +213,11 @@
Aus dem Protokoll können neue Sitzungen desselben Typs mit dem Tag <code>[sitzung;Datum]</code>, z.B. <code>[sitzung;24.12.2017]</code> angelegt werden. Aus dem Protokoll können neue Sitzungen desselben Typs mit dem Tag <code>[sitzung;Datum]</code>, z.B. <code>[sitzung;24.12.2017]</code> angelegt werden.
Optional kann zusätzlich eine Uhrzeit angegeben werden: <code>[sitzung;Datum;Uhrzeit]</code> (z.B. <code>[sitzung;01.01.2018;9:00]</code>). Optional kann zusätzlich eine Uhrzeit angegeben werden: <code>[sitzung;Datum;Uhrzeit]</code> (z.B. <code>[sitzung;01.01.2018;9:00]</code>).
{% endif %}
{% if git_revision %}
<h3 id="version">Version</h4>
Dieses Protokollsystem nutzt die Software <a href="{{git_revision.url}}">„Protokollsystem 3“</a> in der Version vom <a href="{{git_revision.url}}/commit/{{git_revision.hash}}">{{git_revision.date|datify}}</a>.
Alle Änderungen, die seitdem hinzugekommen sind, kannst du <a href="{{git_revision.url}}/compare/{{git_revision.hash}}...master">hier</a> sehen.
{% endif %} {% endif %}
</div> </div>
</div> </div>
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
{% endif %} {% endif %}
{% if not protocol.public %} {% if not protocol.public %}
{% if config.ETHERPAD_ACTIVE %} {% if config.ETHERPAD_ACTIVE %}
<a class="btn btn-primary" href="{{url_for("etherpush_protocol", protocol_id=protocol.id)}}"{% if large_time_diff %} onclick="return confirm('Bist du dir sicher, dass du das Template bereits in das Etherpad kopieren willst? Die Sitzung ist erst in {{time_diff.days}} Tagen.');"{% endif %}>Etherpad</a> <a class="btn btn-primary" href="{{url_for("etherpush_protocol", protocol_id=protocol.id)}}"{% if large_time_diff %} onclick="return confirm('Bist du dir sicher, dass du das Template bereits in das Etherpad kopieren willst? Die Sitzung ist erst in {{time_diff.days}} Tagen.');"{% endif %} target="_blank">Etherpad</a>
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if not protocol.is_done() %} {% if not protocol.is_done() %}
......
...@@ -99,8 +99,12 @@ class IPNetworkField(Field): ...@@ -99,8 +99,12 @@ class IPNetworkField(Field):
raise ValueError(self.gettext("Not a valid IP Network: {}".format(str(exc)))) raise ValueError(self.gettext("Not a valid IP Network: {}".format(str(exc))))
self.data = ",".join(map(str, result_parts)) self.data = ",".join(map(str, result_parts))
class FocusedStringField(StringField):
def __call__(self, **kwargs):
return super().__call__(**kwargs, autofocus=True)
class LoginForm(FlaskForm): class LoginForm(FlaskForm):
username = StringField("Benutzer", validators=[InputRequired("Bitte gib deinen Benutzernamen ein.")]) username = FocusedStringField("Benutzer", validators=[InputRequired("Bitte gib deinen Benutzernamen ein.")])
password = PasswordField("Passwort", validators=[InputRequired("Bitte gib dein Passwort ein.")]) password = PasswordField("Passwort", validators=[InputRequired("Bitte gib dein Passwort ein.")])
permanent = BooleanField("Eingeloggt bleiben?") permanent = BooleanField("Eingeloggt bleiben?")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment