Compare commits
7 commits
configSupp
...
main
Author | SHA1 | Date | |
---|---|---|---|
e3b69e8f83 | |||
46dfa2a152 | |||
4bffdb53e9 | |||
ddd08a2d00 | |||
3ce88f7e98 | |||
9b211a0dd3 | |||
51ce1e896a |
17 changed files with 119 additions and 130 deletions
|
@ -7,7 +7,8 @@ e.g. by executing `go version`.
|
|||
Initialize the database. For developing, we recommend using sqlite:
|
||||
|
||||
user@host:path/to/repo$ sqlite3 officeHours.db -init officeHoursSQLite.sql
|
||||
sqlite> .read dummydatasqlite.sql
|
||||
sqlite> .read dummydata/rooms.sql
|
||||
sqlite> .read dummydata/summerCourses.sql
|
||||
|
||||
Now start the development webserver, note that you need to manually
|
||||
restart it to code changes take effect.
|
||||
|
|
|
@ -46,7 +46,6 @@ type Config struct {
|
|||
SmtpUseAuth bool // Set whether to use authentication on the smarthosthost
|
||||
SmtpIdentity string // Smarthost username
|
||||
SmtpPassword string // Smarthost password
|
||||
SupportMail string // separate mail address for support contact
|
||||
}
|
||||
SQL struct {
|
||||
Type string // Can be "SQLite" or "Mysql"
|
||||
|
@ -144,15 +143,6 @@ func validateConfig(conf *Config) error {
|
|||
err = fmt.Errorf("Validating config: Mail FromName could not be parsed (%w)", mailFromNameErr)
|
||||
log.Println(err)
|
||||
}
|
||||
supportMail, mailSupportMailErr := mail.ParseAddress(string(conf.Mailer.SupportMail))
|
||||
if !(mailSupportMailErr == nil) {
|
||||
err = fmt.Errorf("Validating config: SupportMail could not be parsed (%w)", mailSupportMailErr)
|
||||
log.Println(err)
|
||||
}
|
||||
if !(supportMail.Name == "") {
|
||||
err = fmt.Errorf("Validating config: SupportMail must not contain a name")
|
||||
log.Println(err)
|
||||
}
|
||||
if !(conf.SQL.Type == "SQLite" || conf.SQL.Type == "Mysql") {
|
||||
err = fmt.Errorf("Validating config: SQL type must be 'SQLite' or 'Mysql', but is '%s'.", conf.SQL.Type)
|
||||
log.Println(err.Error())
|
||||
|
|
|
@ -28,8 +28,7 @@
|
|||
"smtpPort": 25,
|
||||
"smtpUseAuth": false,
|
||||
"smtpIdentity": "",
|
||||
"smtpPassword": "",
|
||||
"supportMail": "officeHoursSupport@localhost"
|
||||
"smtpPassword": ""
|
||||
},
|
||||
"SQL": {
|
||||
"type": "SQLite",
|
||||
|
|
7
dummydata/rooms.sql
Normal file
7
dummydata/rooms.sql
Normal file
|
@ -0,0 +1,7 @@
|
|||
INSERT INTO `room` (name, max_occupy) VALUES
|
||||
('S2|15-333', 1),
|
||||
('S2|15-336', 2),
|
||||
('S2|15-345', 2),
|
||||
('S2|15-415', 1),
|
||||
('S2|15-444', 1),
|
||||
('Sonstige', 1024);
|
37
dummydata/summerCourses.sql
Normal file
37
dummydata/summerCourses.sql
Normal file
|
@ -0,0 +1,37 @@
|
|||
INSERT INTO `course` (name) VALUES
|
||||
('Algorithmic Discrete Mathematics'),
|
||||
('Analysis II'),
|
||||
('Analysis II (engl.)'),
|
||||
('Aussagen- und Prädikatenlogik'),
|
||||
('Discrete Optimization'),
|
||||
('Einführung in die Algebra'),
|
||||
('Einführung in die Finanzmathematik'),
|
||||
('Einführung in die mathematische Modellierung'),
|
||||
('Einführung in die Programmierung'),
|
||||
('Einführung in die Stochastik'),
|
||||
('Elementare PDE'),
|
||||
('Elementare Zahlentheorie'),
|
||||
('Graph Theory'),
|
||||
('Höhere Mathematik II'),
|
||||
('Integrationstheorie'),
|
||||
('LA für Physik und Lehramt'),
|
||||
('Linear Algebra II (engl.)'),
|
||||
('Lineare Algebra II'),
|
||||
('Logik und Grundlagen'),
|
||||
('Mathe für Chemiker'),
|
||||
('Mathe II für Informatik'),
|
||||
('Mathe II für Bauwesen'),
|
||||
('Mathe II für ET'),
|
||||
('Mathe II für Maschinenbau'),
|
||||
('Mathe IV für Maschinenbau'),
|
||||
('Mathe IV (ET) / Mathe III (Inf) / Praktische Mathe (MEd)'),
|
||||
('Mathe für MINT'),
|
||||
('Mathe & Statistik für Biologen'),
|
||||
('Mathematik im Kontext'),
|
||||
('Model Theory'),
|
||||
('Nichtlineare Optimierung'),
|
||||
('Numerische Lineare Algebra'),
|
||||
('Riemannsche Flächen'),
|
||||
('Sobolev Spaces'),
|
||||
('Topologie'),
|
||||
('Vertrauenspersonen');
|
41
dummydata/winterCourses.sql
Normal file
41
dummydata/winterCourses.sql
Normal file
|
@ -0,0 +1,41 @@
|
|||
INSERT INTO `course` (name) VALUES
|
||||
('Algebra'),
|
||||
('Analysis I'),
|
||||
('Analysis I (engl.)'),
|
||||
('Applied Proof Theory'),
|
||||
('Automaten, Formale Sprachen und Entscheidbarkeit'),
|
||||
('Complex Analysis'),
|
||||
('Differentialgeometrie'),
|
||||
('Einführung in die Numerische Mathematik'),
|
||||
('Einführung in die Optimierung'),
|
||||
('Einführung in die Programmierung'),
|
||||
('Funktionalanalysis'),
|
||||
('Geometrie für Lehramt'),
|
||||
('Gewöhnliche Differentialgleichungen'),
|
||||
('Höhere Mathematik I'),
|
||||
('Introduction to mathematical logic'),
|
||||
('LA für Physik und Lehramt'),
|
||||
('Linear Algebra I (engl.)'),
|
||||
('Lineare Algebra I'),
|
||||
('Mathe für Chemiker'),
|
||||
('Mathe I für Informatik'),
|
||||
('Mathe I für Maschinenbau'),
|
||||
('Mathe I für Bau'),
|
||||
('Mathe I für ET'),
|
||||
('Mathe III für Maschinenbau'),
|
||||
('Mathe III für Bau'),
|
||||
('Mathe III ET'),
|
||||
('Mathe IV für Maschinenbau'),
|
||||
('Mathe IV (ET) / Mathe III (Inf) / Praktische Mathe (MEd)'),
|
||||
('Mathe für MINT'),
|
||||
('Mathe & Statistik für Biologen'),
|
||||
('Mathematik als gemeinsame Sprache der Naturwissenschaften'),
|
||||
('Numerik gewöhnlicher Differentialgleichungen'),
|
||||
('Numerische Mathe für MB (IV)'),
|
||||
('Parabolische PDEs'),
|
||||
('Partial Differential Equations'),
|
||||
('Probability Theory'),
|
||||
('Statistik I für Humanwissenschaftler'),
|
||||
('Statistik I für WI'),
|
||||
('Vertrauenspersonen'),
|
||||
('Wahrscheinlichkeitstheorie');
|
|
@ -1,91 +0,0 @@
|
|||
INSERT INTO `room` (name, max_occupy) VALUES
|
||||
('S2|15-333', 1),
|
||||
('S2|15-336', 2),
|
||||
('S2|15-345', 2),
|
||||
('S2|15-415', 1),
|
||||
('S2|15-444', 1),
|
||||
('Sonstige', 1024);
|
||||
INSERT INTO `course` (name) VALUES
|
||||
('Algebra'),
|
||||
('Algebraische Geometrie'),
|
||||
('Algebraische Kurven'),
|
||||
('Algebraische Topologie'),
|
||||
('Algorithmic Discrete Mathematics'),
|
||||
('Analysis I (engl.)'),
|
||||
('Analysis I'),
|
||||
('Analysis II (engl.)'),
|
||||
('Analysis II'),
|
||||
('Applied Proof Theory'),
|
||||
('Aussagen- und Prädikatenlogik'),
|
||||
('Automaten, Formale Sprachen und Entscheidbarkeit'),
|
||||
('Banach- und C*-Algebren'),
|
||||
('Classical and Non-Classical Model Theory'),
|
||||
('Complex Analysis'),
|
||||
('Darstellende Geometrie'),
|
||||
('Darstellungstheorie'),
|
||||
('Differentialgeometrie'),
|
||||
('Differentialgeometrie für VI'),
|
||||
('Diskrete Mathematik'),
|
||||
('Diskrete Optimierung'),
|
||||
('Einführung in die Algebra'),
|
||||
('Einführung in die Finanzmathematik'),
|
||||
('Einführung in die Numerische Mathematik'),
|
||||
('Einführung in die Optimierung'),
|
||||
('Einführung in die Programmierung'),
|
||||
('Einführung in die Stochastik'),
|
||||
('Einführung in die mathematische Modellierung'),
|
||||
('Elementare PDE'),
|
||||
('Elementare Zahlentheorie'),
|
||||
('Funktionalanalysis'),
|
||||
('Funktionalanalysis II'),
|
||||
('Geometrie für Lehramt'),
|
||||
('Gewöhnliche Differentialgleichungen'),
|
||||
('Höhere Mathematik I'),
|
||||
('Höhere Mathematik II'),
|
||||
('Integrationstheorie'),
|
||||
('Introduction to mathematical logic'),
|
||||
('Kurvenschätzung'),
|
||||
('LA für Physik und Lehramt'),
|
||||
('Lebensversicherungsmathematik'),
|
||||
('Linear Algebra I (engl.)'),
|
||||
('Lineare Algebra I'),
|
||||
('Linear Algebra II (engl.)'),
|
||||
('Lineare Algebra II'),
|
||||
('Logics of Knowledge and Information'),
|
||||
('Manifolds'),
|
||||
('Mathe für Chemiker'),
|
||||
('Mathe I für Informatik'),
|
||||
('Mathe I für Maschinenbau'),
|
||||
('Mathe I für Bau'),
|
||||
('Mathe I für ET'),
|
||||
('Mathe II für Informatik'),
|
||||
('Mathe II für Bauwesen'),
|
||||
('Mathe II für ET'),
|
||||
('Mathe II für Maschinenbau'),
|
||||
('Mathe III für Maschinenbau'),
|
||||
('Mathe III für Bau'),
|
||||
('Mathe III ET'),
|
||||
('Mathe IV für Maschinenbau'),
|
||||
('Mathe IV (ET) / Mathe III (Inf) / Praktische Mathe (MEd)'),
|
||||
('Mathe für MINT'),
|
||||
('Mathe & Statistik für Biologen'),
|
||||
('Mathematik als gemeinsame Sprache der Naturwissenschaften'),
|
||||
('Mathematik im Kontext'),
|
||||
('Mathematische Grundlagen der Quantenmechanik'),
|
||||
('Mathematische Statistik'),
|
||||
('Nichtlineare Optimierung'),
|
||||
('Numerik gewöhnlicher Differentialgleichungen'),
|
||||
('Numerische Lineare Algebra'),
|
||||
('Numerische Mathe für MB (IV)'),
|
||||
('Parabolische PDEs'),
|
||||
('Partial Differential Equations I'),
|
||||
('Probability Theory'),
|
||||
('Riemannsche Flächen'),
|
||||
('Schadenversicherungsmathematik'),
|
||||
('Sobolev Spaces'),
|
||||
('Spieltheorie'),
|
||||
('Statistik I für Humanwissenschaftler'),
|
||||
('Statistik I für WI'),
|
||||
('Stochastische Prozesse I'),
|
||||
('Topologie'),
|
||||
('Wahrscheinlichkeitstheorie');
|
6
go.mod
6
go.mod
|
@ -2,6 +2,8 @@ module officeHours
|
|||
|
||||
go 1.18
|
||||
|
||||
require github.com/mattn/go-sqlite3 v1.14.19
|
||||
require github.com/mattn/go-sqlite3 v1.14.22
|
||||
|
||||
require github.com/go-sql-driver/mysql v1.7.1
|
||||
require github.com/go-sql-driver/mysql v1.8.1
|
||||
|
||||
require filippo.io/edwards25519 v1.1.0 // indirect
|
||||
|
|
10
go.sum
10
go.sum
|
@ -1,4 +1,6 @@
|
|||
github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
|
||||
github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
|
||||
github.com/mattn/go-sqlite3 v1.14.19 h1:fhGleo2h1p8tVChob4I9HpmVFIAkKGpiukdrgQbWfGI=
|
||||
github.com/mattn/go-sqlite3 v1.14.19/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
|
||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
||||
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
||||
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
|
||||
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
|
||||
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
|
||||
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{{define "title"}}Sprechstunde anlegen – Fehler{{end}}
|
||||
|
||||
{{define "content"}}
|
||||
<div class="col-md-8 offset-md-2">
|
||||
Irgendetwas ist schief gegangen. Bitte sende folgende Daten an <a href="mailto:{{.Config.Mailer.SupportMail}}">{{.Config.Mailer.SupportMail}}</a> mit einer Beschreibung, was du tun wolltest.
|
||||
<div class="col-md-8 offset-md-2 alert alert-danger">
|
||||
Irgendetwas ist schief gegangen. Bitte sende folgende Daten an <a href="mailto:sprechstundentool@mathebau.de">sprechstundentool@mathebau.de</a> mit einer Beschreibung, was du tun wolltest.
|
||||
<br>
|
||||
{{.}}
|
||||
</div>
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<div class="form-floating mb-3">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" name="subscribeToMailinglist" id="subscribeToMailinglist" type="checkbox" value="subscribe" {{if eq .SubscribeToMailinglist true}}checked{{end}}>
|
||||
<label class="form-check-label" for="subscribeToMailinglist"><a href="https://lists.mathebau.de/postorius/lists/shk.mathebau.de/">Mailingliste für SHK</a> abbonieren</label>
|
||||
<label class="form-check-label" for="subscribeToMailinglist"><a href="https://lists.mathebau.de/postorius/lists/shk.lists.mathebau.de/">Mailingliste für SHK</a> abonnieren</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -50,7 +50,7 @@
|
|||
<label for="veranstaltung">Veranstaltung</label>
|
||||
<div class="form-text">
|
||||
Wenn du eine Veranstaltung hier vermisst, schreibe an
|
||||
<a href="mailto:{{.Config.Mailer.SupportMail}}?subject=Sprechstundentool: Neue Veranstaltung&body=Hey liebe Sprechstundentool-Admins,%0D%0A%0D%0Ameine Veranstaltung fehlt im Auswahlmenü.%0D%0AEs ist die Veranstaltung%0D%0A%0D%0AViele Grüße%0D%0A" tabindex="-1">{{.Config.Mailer.SupportMail}}</a>.
|
||||
<a href="mailto:sprechstundentool@mathebau.de?subject=Sprechstundentool: Neue Veranstaltung&body=Hey liebe Sprechstundentool-Admins,%0D%0A%0D%0Ameine Veranstaltung fehlt im Auswahlmenü.%0D%0AEs ist die Veranstaltung%0D%0A%0D%0AViele Grüße%0D%0A" tabindex="-1">sprechstundentool@mathebau.de</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
{{define "title"}}Sprechstunde anlegen{{end}}
|
||||
|
||||
{{define "content"}}
|
||||
<div class="col-md-8 offset-md-2">
|
||||
<div class="alert alert-danger">
|
||||
Die Mailzustellung an Web und GMX ist gerade gestört.
|
||||
Falls deine Mailadresse dorthin weiterleitet und du die Bestätigung nicht erhältst,
|
||||
melde dich bei <a href="mailto:{{.Config.Mailer.SupportMail}}">{{.Config.Mailer.SupportMail}}</a>.
|
||||
</div>
|
||||
<div class="col-md-8 offset-md-2 alert alert-success">
|
||||
Die Sprechstunde wurde angelegt.
|
||||
Du solltest eine Mail mit einem Aktivierungslink erhalten haben.
|
||||
Klicke auf diesen, um die Sprechstunde öffentlich anzuzeigen.
|
||||
</div>
|
||||
<div class="col-md-8 offset-md-2 alert alert-warning">
|
||||
Wir haben vermehrt erfahren, dass Mails, die an GMX oder Web.de weitergeleitet werden, nicht zugestellt werden.
|
||||
Falls du davon betroffen bist, melde dich bei <a href="mailto:sprechstundentool@mathebau.de">sprechstundentool@mathebau.de</a>.
|
||||
</div>
|
||||
|
||||
{{end}}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="col-md-8 offset-md-2 bg-secondary bg-gradient mt-3 mb-2 p-3 rounded" style="--bs-bg-opacity: .3;">
|
||||
<nav class="col-md-8 offset-md-2 bg-secondary bg-gradient mt-3 mb-2 p-3 rounded" style="--bs-bg-opacity: .3;">
|
||||
<h5 class="text-center m-1">Sprechstunden für Matheveranstaltungen an der TU Darmstadt</h5>
|
||||
<p class="text-center mb-0">
|
||||
<a href="/">Startseite</a>
|
||||
|
@ -22,19 +22,20 @@
|
|||
•
|
||||
<a href="/deleteOfficeHour">Sprechstunde löschen</a>
|
||||
</p>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div id="content">
|
||||
<main id="content">
|
||||
<h1 class="h3 m-1 mb-3 text-center">{{template "title" .}}</h1>
|
||||
{{block "content" .}}Du solltest dies nicht sehen.{{end}}
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<footer class="container">
|
||||
<div class="col-md-8 offset-md-2 bg-secondary bg-gradient my-3 p-3 rounded" style="--bs-bg-opacity: .3;">
|
||||
© <a class="text-body" href="https://mathebau.de/">Fachschaft Mathematik, TU Darmstadt</a>
|
||||
<br>
|
||||
Technische Fragen an <a href="mailto:{{.Config.Mailer.SupportMail}}">{{.Config.Mailer.SupportMail}}</a>
|
||||
<!-- NOTE: when updating this hard coded email adress, also update it in addMask.html -->
|
||||
Technische Fragen an <a href="mailto:sprechstundentool@mathebau.de">sprechstundentool@mathebau.de</a>
|
||||
<br>
|
||||
Quellcode und Featurewünsche: <a href="https://gitea.mathebau.de/Fachschaft/sprechstunden-go">Gitea-Repository</a>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{{define "title"}}Sprechstunde löschen – Fehler{{end}}
|
||||
|
||||
{{define "content"}}
|
||||
<div class="col-md-8 offset-md-2">
|
||||
<div class="col-md-8 offset-md-2 alert alert-danger">
|
||||
Das Löschen der Sprechstunde ist fehlgeschlagen: {{.Error}}
|
||||
</div>
|
||||
{{end}}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{{define "title"}}Sprechstunde löschen{{end}}
|
||||
|
||||
{{define "content"}}
|
||||
<div class="col-md-8 offset-md-2">
|
||||
<div class="col-md-8 offset-md-2 alert alert-info">
|
||||
Du solltest eine Mail mit einem Bestätigungslink erhalten haben.
|
||||
Klicke auf diesen, um die Sprechstunde endgültig zu löschen.
|
||||
</div>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{{define "title"}}Anfrage ausführen fehlgeschlagen{{end}}
|
||||
|
||||
{{define "content"}}
|
||||
<div class="col-md-8 offset-md-2">
|
||||
Irgendetwas ist schief gegangen. Bitte sende folgende Daten an <a href="mailto:{{.Config.Mailer.SupportMail}}">{{.Config.Mailer.SupportMail}}</a> mit einer Beschreibung, was du tun wolltest.
|
||||
<div class="col-md-8 offset-md-2 alert alert-danger">
|
||||
Irgendetwas ist schief gegangen. Bitte sende folgende Daten an <a href="mailto:sprechstundentool@mathebau.de">sprechstundentool@mathebau.de</a> mit einer Beschreibung, was du tun wolltest.
|
||||
<br>
|
||||
{{.}}
|
||||
</div>"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{{define "title"}}Anfrage ausgeführt{{end}}
|
||||
|
||||
{{define "content"}}
|
||||
<div class="col-md-8 offset-md-2">
|
||||
<div class="col-md-8 offset-md-2 alert alert-success">
|
||||
Deine Anfrage wurde ausgeführt.
|
||||
</div>
|
||||
{{end}}
|
||||
|
|
Loading…
Reference in a new issue