Commit cfd1b1a8 authored by Markus Ühlein's avatar Markus Ühlein

Merge branch 'master' of treatle.fs.physik.uni-kl.de:protokollskript

parents 886e3b6c 8ba70285
emacs ../2018/fsr_physik_sitzung_2018-01-25/fsr_physik_protokoll_2018-01-25.tex
......@@ -10,32 +10,23 @@ Von normalen Usern koennen folgende Dinge festgelegt werden:
- Anzahl der Spalten in der Anwesenheitsliste
- Leute in der Anwesenheitsliste
Fuer die ersten drei Punkte muss die Datei "mkfile" in beliebigem Texteditor
geoeffnet und die entsprechenden Variablen (im markierten Bereich) geaendert
werden. Fuer den vierten Punkt muss die Datei fsr bearbeitet werden. In dieser
muss in jeder Zeile genau ein Name stehen (am besten: Datei "tmp" anlegen, da
die Namen rein und dann mit "sort tmp>fsr" die Liste sortieren).
Fuer die ersten drei Punkte muss die Datei "protskript_test.py" in beliebigem Texteditor
geöffnet und die entsprechenden Variablen (im markierten Bereich) geaendert
werden. Fuer den vierten Punkt müssen die Dateien fsr und fsr_extern bearbeitet werden. In diesen
muss in jeder Zeile genau ein Name stehen. Diese Dateien werden automatisch sortiert.
2. Bedienung
============
- ins Verzeichnis wo das Skript liegt wechseln
- "make" eingeben
- Sitzungsleiter/Protokollant/Datum eingeben bzw. Standardwerte uebernehmen
- wenn beim Uebersetzen etwas schief ging: Den Fehler beheben und zweimal(!)
"pdflatex <datei>" (natuerlich mit passendem Wert fuer <datei>) eingeben. Wenn
pdflatex nur einmal laeuft wird die Seitenzahl falsch ausgegeben.
- "./protskript_test.py" eingeben
- Sitzungsleiter/Protokollant/Datum eingeben bzw. Standardwerte übernehmen
- wenn beim Übersetzen etwas schief ging: Den Fehler beheben und zweimal(!)
"pdflatex <datei>" (natürlich mit passendem Wert für <datei>) eingeben. Wenn
pdflatex nur einmal läuft wird die Seitenzahl falsch ausgegeben.
- Protokoll drucken, rumschicken und aushaengen
- einigermassen regelmaessig unnoetige Dateien (*.aux, *.log) loeschen
3. Eintragen ins Web
====================
- add_db.pl <name> aufrufen, wobei <name> der Pfad zum PDF sein muss (wenn das PDF im
selben Verzeichnis wie das Skript ist reicht der Dateiname)
- ueberpruefen, ob die Daten stimmen und wenn ja Enter druecken. Sonst Strg-C oder "n"
und dann Enter
4. Bugs
3. Bugs
=======
- momentan keine bekannt
- Meldungen an lsteinert@fs.physik.uni-kl.de
- Meldungen an protokoll@fs.physik.uni-kl.de
......@@ -11,7 +11,7 @@
\\acro{gdm}[GDM]{Gesellschaft für Didaktik der Mathematik}
\\acro{mnu}[MNU]{Deutscher Verein zur Förderung des mathematischen und naturwissenschaftlichen Unterrichts}
\\acro{asta}[AStA]{Allgemeiner Studierendenausschuss}
\\acro{stupa}[STuPa]{Studierendenparlament}
\\acro{stupa}[StuPa]{Studierendenparlament}
\\acro{fips}[FiPS]{Früheinstieg ins Physik-Studium}
\\acro{fsk}[\\textsc FSK]{Fachschaftenkonferenz}
\\acro{dpa}[\\textsc DPA]{Diplomprüfungsausschuss}
......
File mode changed from 100644 to 100755
......@@ -3,17 +3,17 @@ Julius Bohm
Kai Hawerkamp
Silvia Hiebel
Malte Koster
Sahra Kova\\\\v{c}
Ruthger Kuwertz
Sarah Anna Kova\\\\v{c}
Rutger Kuwertz
Felix Lang
Annika Lesch
Nikolas Longen
Patrick Mischke
Tarek Moussa
Diana Remmel
Hauke Schäfer
Klemens Schmitt
Fritz Schnur
Julian Schulz
Hauke Schäfer
Lorenz Steinert
Markus Ühlein
......@@ -2,6 +2,7 @@ Tamara Azevedo
Ellen Bold
Pascale Klaeger
Agnes Koerfer
Kevin Mours
Daniel Muschol
Lukas Neusius
Marco Tummeley
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Nov 24 15:35:04 2017
@author: lorico
"""
import re
import os
import sys
import shutil
import time
import ldap3 as ldap
import codecs
class fetch():
def __init__(self):
self.server = ldap.Server("rincewind.fs.physik.uni-kl.de")
self.reg_a = re.compile('\"a')
self.reg_o = re.compile('\"o')
self.reg_u = re.compile('\"u')
self.reg_A = re.compile('\"A')
self.reg_O = re.compile('\"O')
self.reg_U = re.compile('\"U')
self.reg_Kovac = re.compile('Kovac')
self.base = "dc=fs,dc=physik,dc=uni-kl,dc=de"
def clean_string(self, data):
"""remove "A, "O, "U, "a, "o, "u from input"""
data = self.reg_Kovac.sub("Kova"+r"\v"+"{c}", data)
data = self.reg_A.sub('Ä', data)
data = self.reg_O.sub('Ö', data)
data = self.reg_U.sub('Ü', data)
data = self.reg_a.sub('ä', data)
data = self.reg_o.sub('ö', data)
data = self.reg_u.sub('ü', data)
return data
def get_fsr_ldap(self, fsr):
"""get fsr from LDAP"""
print("Fetching FSR from LDAP ...")
try:
conn = ldap.Connection(self.server)
conn.bind()
fil = '(cn=intern)'
fsr_ = []
if conn.search('ou=group,'+self.base, fil,
attributes=['memberUid']):
for i in conn.entries[0]['memberUid']:
if conn.search('ou=people,' + self.base,
'(uid='+i+')', attributes=['gecos']):
fsr_ += [self.clean_string(str(conn.entries[0]['gecos']))]
fsr_.sort()
fsr_ = [" ".join(i.split(', ')[::-1]) for i in fsr_]
return fsr_
return fsr
except ldap.core.exceptions.LDAPException as error_message:
print("Couldn't Connect to ldap.\nUsing fallback File.\n %s " % error_message)
return fsr
def get_fsr_extern_ldap(self, fsr_extern):
"""get the EFSR from LDAP"""
print("Fetching EFSR from LDAP ...")
try:
conn = ldap.Connection(self.server)
conn.bind()
fil = '(cn=extern)'
fsr_extern_ = []
if conn.search('ou=group,'+self.base, fil,
attributes=['memberUid']):
for i in conn.entries[0]['memberUid']:
if conn.search('ou=people,' + self.base,
'(uid='+i+')', attributes=['gecos']):
fsr_extern_ += [self.clean_string(str(conn.entries[0]['gecos']))]
fsr_extern_.sort()
fsr_extern_ = [" ".join(i.split(', ')[::-1]) for i in fsr_extern_]
return fsr_extern_
return fsr_extern
except ldap.core.exceptions.LDAPException as error_message:
print("Couldn't Connect to ldap.\nUsing fallback File.\n %s " % error_message)
return fsr_extern
def main(self):
fsr = self.get_fsr_ldap([])
fsr_extern = self.get_fsr_extern_ldap([])
fsr_out = ""
fsr_extern_out = ""
for i in fsr:
if "Sarah" in i:
fsr_out += r"Sarah Anna Kova\\\\v{c}"+"\n"
else:
fsr_out += i + "\n"
for i in fsr_extern:
if "Sarah" in i:
fsr_extern_out += r"Sarah Anna Kova\\\\v{c}"+"\n"
else:
fsr_extern_out += i + "\n"
with codecs.open('fsr', 'w', 'utf-8') as fobj_fsr_out:
fobj_fsr_out.write(fsr_out)
with codecs.open('fsr_extern', 'w', 'utf-8') as fobj_fsr_extern_out:
fobj_fsr_extern_out.write(fsr_extern_out)
if __name__=="__main__":
fetch().main()
......@@ -60,6 +60,7 @@
\\newcommand{\\nfink}{Nico Fink\\xspace}
\\newcommand{\\fink}{Nico Fink\\xspace}
\\newcommand{\\nico}{Nico Fink\\xspace}
\\newcommand{\\jbohm}{Julius Bohm\\xspace}
\\newcommand{\ich}{%%PROTOKOLLANT\\xspace}
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment