Skip to content
This repository has been archived by the owner on Jun 18, 2020. It is now read-only.

Commit

Permalink
Merge branch 'hotfix/1.0.3'
Browse files Browse the repository at this point in the history
  • Loading branch information
moschlar committed Nov 2, 2012
2 parents 805ec0f + b3c4229 commit 2f3d3e3
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 23 deletions.
59 changes: 36 additions & 23 deletions sauce/scripts/add_users.py
Expand Up @@ -14,15 +14,16 @@
from tg import config
from sauce.config.environment import load_environment
from sauce import model
from sauce.model import DBSession as Session
from sauce.lib.mail import sendmail

import transaction


def load_config(filename):
conf = appconfig('config:' + os.path.abspath(filename))
load_environment(conf.global_conf, conf.local_conf)


def parse_args():
parser = ArgumentParser(description=__doc__)
parser.add_argument("conf_file", help="configuration to use")
Expand All @@ -37,7 +38,12 @@ def parse_args():
DOCS_URL = URL + 'docs/deutsch'
PASSWORD_LENGTH = 8

def send_registration_mail(d, event):

def send_registration_mail(s, d, event):
if s._lessons:
lessons = ', '.join(l.name for l in s._lessons)
else:
lessons = u'Keine Übungsgruppe'
mail_text = u'''
Hallo %s,
Expand All @@ -49,47 +55,53 @@ def send_registration_mail(d, event):
(Du kannst und solltest dein Passwort in deinen Profileinstellungen
ändern.)
Du bist registriert für: %s
Du erreichst SAUCE unter: %s
Eine (deutschsprachige) Kurzeinführung in das System findest du
unter: %s
Falls du Fehler in den Aufgaben oder im System feststellst, Schwierigkeiten
bei der Bedienung hast, oder Verbesserungsvorschläge, melde
diese bitte per eMail an ___.
diese bitte per eMail an moschlar@students.uni-mainz.de.
Mit freundlichen Grüßen
''' % (d['display_name'].decode('utf-8'), event.name, d['user_name'], d['password'], URL, DOCS_URL)
''' % (s.display_name, event.name, s.user_name, d['password'], lessons, URL, DOCS_URL)

print mail_text

sendmail(d['email_address'], u'[%s] Dein Passwort für SAUCE' % (event._url), mail_text)
#sendmail('testaddress', u'[%s] Dein Passwort für SAUCE' % (event._url), mail_text)

#sendmail(s.email_address, u'[%s] Dein Passwort für SAUCE' % (event._url), mail_text)
sendmail('test@localhost', u'[%s] Dein Passwort für SAUCE' % (event._url), mail_text)


def main():
args = parse_args()
load_config(args.conf_file)

#event = model.Event.by_url(args.event_url)

if args.csv_fields == 'firstrow':
fields = None
else:
fields = args.csv_fields

with open(args.csv_file) as f:
reader = csv.DictReader(f, fieldnames=fields, delimiter=';')
dicts = list(reader)

errors = []

for d in dicts:
event = model.Event.by_url(args.event_url)
print d
s = model.Student(user_name=d['user_name'], display_name=d['display_name'].decode('utf-8'),
email_address=d['email_address'])
s = model.User(user_name=d['user_name'],
last_name=d['last_name'].decode('utf-8'),
first_name=d['first_name'].decode('utf-8'),
email_address=d['email_address'])
try:
s._lessons.append(model.Lesson.by_lesson_id(d['lesson_id'], event))
l = model.Lesson.by_lesson_id(d['lesson_id'], event)
s._lessons.append(l)
except Exception as e:
print e.message
errors.append((e, d))
Expand All @@ -107,25 +119,26 @@ def main():
errors.append((e, s))
#raise e
else:
send_registration_mail(d, event)
time.sleep(30)

s = model.DBSession.merge(s)
send_registration_mail(s, d, event)
#time.sleep(30)

# try:
# transaction.commit()
# except SQLAlchemyError as e:
# transaction.abort()
# raise e

csv_out_file = args.csv_file.replace('.csv', '', 1) + '_out.csv'

with open(csv_out_file, 'w') as f:
if fields:
fields.append('password')
w = csv.DictWriter(f, fieldnames=dicts[0].keys(), delimiter=';', extrasaction='ignore')
w.writeheader()
w.writerows(dicts)

print errors

if __name__ == '__main__':
sys.exit(main())
sys.exit(main())
58 changes: 58 additions & 0 deletions sauce/scripts/compile.py
@@ -0,0 +1,58 @@
#!/usr/bin/env python
'''
This script can be used to compile user and lesson/group data
from various sources in various formats into one single files
with columns suitable for the use by add_users.py.
You have, of course, to modify this file to suit your needs.
'''

import csv
from pprint import pprint

d = csv.DictReader(open('DSEA Teilnehmer.csv'), ['id', 'matrnr', 'nachname', 'vorname', 'x1', 'x2', 'email', 'x3', 'x4', 'sem', 'stat'], delimiter=';')

users_ = list(d)
users = dict()

for row in users_:
for k in row:
row[k] = row[k].decode('utf-8')
users[row['nachname'], row['vorname']] = row
pprint(row)

groups = dict()

f = open('dsea-Gruppen.txt')

i = 0
for line in f:
line = line.strip().decode('utf-8')
if line:
if line.startswith(u'GRUPPE'):
i += 1
else:
nachname, vorname = line.split(', ', 1)
groups[nachname, vorname] = i
pprint(groups)

print "Inconsistencies: "

userset = set(users.iterkeys())
groupset = set(groups.iterkeys())

print "Only in users file: %s" % sorted(userset - groupset)
print "Only in groups file: %s" % sorted(groupset - userset)

d = csv.DictWriter(open('dsea_compiled.csv', 'w'), ['user_name', 'last_name', 'first_name', 'email_address', 'lesson_id'], delimiter=';')
d.writeheader()

for n, v in userset & groupset:
d.writerow(dict(
user_name=users[n, v]['email'].split('@', 1)[0].encode('utf-8'),
last_name=users[n, v]['nachname'].encode('utf-8'),
first_name=users[n, v]['vorname'].encode('utf-8'),
email_address=users[n, v]['email'].encode('utf-8'),
lesson_id=groups[n, v]
))

0 comments on commit 2f3d3e3

Please sign in to comment.