def emailTutors(request): db = request.db lecture = request.context.lecture form = LectureEmailTutors(request) if request.method == 'POST' and form.processPostData(request.POST): tutors = lecture.tutors message = Message(subject=form['subject'], sender=request.user.email, to= [assistant.email for assistant in lecture.assistants], bcc=[t.email for t in tutors], body=form['body']) if request.POST['attachments'] not in ['', None]: message.attach(request.POST['attachments'].filename, data=request.POST['attachments'].file) try: sendMail(message,request) except: pass else: if request.permissionInfo.has_permission('edit'): routeback_url = 'lecture_edit' else: routeback_url = 'lecture_view' request.session.flash('A mail has been sent to all tutors of this lecture', queue='messages') return HTTPFound(location=request.route_url(routeback_url, lecture_id=lecture.id)) return {'lecture': lecture, 'form': form}
def emailStudents(request): db = request.db lecture = request.context.lecture form = LectureEmailStudents(request) if request.method == 'POST' and form.processPostData(request.POST): students = lecture.students bcc = [s.email for s in students] if form['copytotutors']==0: bcc.extend([t.email for t in lecture.tutors]) message = Message(subject=form['subject'], sender=request.user.email, to= [assistant.email for assistant in lecture.assistants], bcc=bcc, body=form['body']) if request.POST['attachments'] not in ['', None]: message.attach(request.POST['attachments'].filename, data=request.POST['attachments'].file) try: sendMail(message,request) except: pass else: request.session.flash('A mail has been sent to all students of this lecture', queue='messages') return HTTPFound(location=request.route_url('lecture_edit', lecture_id=lecture.id)) return {'lecture': lecture, 'form': form}
def emailTutors(request): db = request.db lecture = request.context.lecture form = LectureEmailTutors(request) if request.method == 'POST' and form.processPostData(request.POST): tutors = lecture.tutors message = Message(subject=form['subject'], sender=request.user.email, to=[t.email for t in tutors], cc=[assistant.email for assistant in lecture.assistants if form['copytoassistants'] == 0], body=form['body']) if request.POST['attachments'] not in ['', None]: message.attach(request.POST['attachments'].filename, data=request.POST['attachments'].file) try: sendMail(message,request) except: pass else: if request.permissionInfo.has_permission('edit'): routeback_url = 'lecture_edit' else: routeback_url = 'lecture_view' request.session.flash('A mail has been sent to all tutors of this lecture', queue='messages') return HTTPFound(location=request.route_url(routeback_url, lecture_id=lecture.id)) return {'lecture': lecture, 'form': form}
def emailStudents(request): db = request.db lecture = request.context.lecture form = LectureEmailStudents(request) if request.method == 'POST' and form.processPostData(request.POST): students = lecture.students bcc = [s.email for s in students] if form['copytotutors'] == 0: bcc.extend([t.email for t in lecture.tutors]) message = Message( subject=form['subject'], sender=request.user.email, to=[assistant.email for assistant in lecture.assistants], bcc=bcc, body=form['body']) if request.POST['attachments'] not in ['', None]: message.attach(request.POST['attachments'].filename, data=request.POST['attachments'].file) sendMail(message) request.session.flash( 'A mail has been sent to all students of this lecture', queue='messages') return HTTPFound( location=request.route_url('lecture_edit', lecture_id=lecture.id)) return {'lecture': lecture, 'form': form}
def emailAllUsers(request): ttype = request.params.get('type', 'inform_message') form = EmailWrongSubject(ttype, request) semesterlimit = utils.getSemesterLimit() students = request.db.query(models.User).filter(models.User.lecture_students.any(models.LectureStudent.lecture.has(models.Lecture.term >= semesterlimit))).all() headers = ['MUESLI-Information'] table = [] for s in students: table.append(s) if request.method == 'POST' and form.processPostData(request.POST): message = Message(subject=form['subject'], sender=('%s <%s>' % (request.config['contact']['name'], request.config['contact']['email'])), to= [], bcc=[s.email for s in students], body=form['body']) if request.POST['attachments'] not in ['', None]: message.attach(request.POST['attachments'].filename, data=request.POST['attachments'].file) try: sendMail(message,request) except: pass else: request.session.flash('A Mail has been send to all students', queue='messages') return {'form': form, 'type': ttype, 'table': table, 'headers': headers, 'students': students}
def resendConfirmationMail(request): user_id = request.matchdict['user_id'] confirmation = request.db.query(Confirmation).filter(Confirmation.user_id == user_id).first() user = confirmation.user body =u""" Hallo! Sie haben sich am %s bei MÜSLI mit den folgenden Daten angemeldet: Name: %s E-Mail: %s Um die Anmeldung abzuschließen, gehen Sie bitte auf die Seite %s Haben Sie sich nicht selbst angemeldet, ignorieren Sie diese Mail bitte einfach. Mit freudlichen Grüßen, Das MÜSLI-Team """ %(confirmation.created_on, user.name(), user.email, request.route_url('user_confirm', confirmation=confirmation.hash)) message = Message(subject=u'MÜSLI: Ihre Registrierung bei MÜSLI', sender=(u'%s <%s>' % (request.config['contact']['name'], request.config['contact']['email'])).encode('utf-8'), to=[user.email], body=body) sendMail(message) return {}
def resendConfirmationMail(request): user_id = request.matchdict['user_id'] confirmation = request.db.query(models.Confirmation).filter( models.Confirmation.user_id == user_id).first() user = confirmation.user body = """ Hallo! Sie haben sich am %s bei MÜSLI mit den folgenden Daten angemeldet: Name: %s E-Mail: %s Um die Anmeldung abzuschließen, gehen Sie bitte auf die Seite %s Haben Sie sich nicht selbst angemeldet, ignorieren Sie diese Mail bitte einfach. Mit freudlichen Grüßen, Das MÜSLI-Team """ % (confirmation.created_on, user.name(), user.email, request.route_url('user_confirm', confirmation=confirmation.hash)) message = Message(subject='MÜSLI: Ihre Registrierung bei MÜSLI', sender=('%s <%s>' % (request.config['contact']['name'], request.config['contact']['email'])), to=[user.email], body=body) sendMail(message) return {}
def resetPassword(request): form = UserResetPassword(request) if request.method == 'POST' and form.processPostData(request.POST): user = request.db.query(models.User).filter(models.User.email==form['email']).first() if not user: request.session.flash(u'User not found', queue='errors') else: confirmation = models.Confirmation() confirmation.user = user confirmation.source = u'user/reset_password' body =u""" Hallo! Um Ihr Passwort bei MÜSLI zurückzusetzen besuchen Sie bitte die Seite %s Haben Sie nicht selbst versucht Ihr Passwort zurückzusetzen, ignorieren Sie diese Mail bitte einfach. Mit freundlichen Grüßen, Das MÜSLI-Team """ %(request.route_url('user_reset_password3', confirmation=confirmation.hash)) message = Message(subject=u'MÜSLI: Passwort zurücksetzen', sender=(u'%s <%s>' % (request.config['contact']['name'], request.config['contact']['email'])).encode('utf-8'), to=[user.email], body=body) # As we are not using transactions, # we send the mail immediately. request.db.add(confirmation) request.db.commit() sendMail(message) return HTTPFound(location=request.route_url('user_reset_password2')) return {'form': form}
def send_confirmation_mail(request, user, confirmation): body = """ Hallo! Sie haben sich bei MÜSLI mit den folgenden Daten angemeldet: Name: %s E-Mail: %s Um die Anmeldung abzuschließen, gehen Sie bitte auf die Seite %s Haben Sie sich nicht selbst angemeldet, ignorieren Sie diese Mail bitte einfach. Mit freudlichen Grüßen, Das MÜSLI-Team """ % (user.name(), user.email, request.route_url('user_confirm', confirmation=confirmation.hash)) message = Message(subject='MÜSLI: Ihre Registrierung bei MÜSLI', sender=('%s <%s>' % (request.config['contact']['name'], request.config['contact']['email'])), to=[user.email], body=body) sendMail(message)
def emailAllUsers(request): ttype = request.params.get('type', 'inform_message') form = EmailWrongSubject(ttype, request) semesterlimit = utils.getSemesterLimit() students = request.db.query(models.User).filter( models.User.lecture_students.any( models.LectureStudent.lecture.has( models.Lecture.term >= semesterlimit))).all() headers = ['MUESLI-Information'] table = [] for s in students: table.append(s) if request.method == 'POST' and form.processPostData(request.POST): message = Message( subject=form['subject'], sender=(u'%s <%s>' % (request.config['contact']['name'], request.config['contact']['email'])).encode('utf-8'), to=[], bcc=[s.email for s in students], body=form['body']) if request.POST['attachments'] not in ['', None]: message.attach(request.POST['attachments'].filename, data=request.POST['attachments'].file) sendMail(message) request.session.flash('A Mail has been send to all students', queue='messages') return { 'form': form, 'type': ttype, 'table': table, 'headers': headers, 'students': students }
def emailUsers(request): ttype = request.params.get('type', 'wrong_subject') form = EmailWrongSubject(ttype, request) semesterlimit = utils.getSemesterLimit() students = request.db.query(models.User).filter( models.User.lecture_students.any( models.LectureStudent.lecture.has( models.Lecture.term >= semesterlimit))).all() bad_students = [] headers = [] table = [] if ttype == 'wrong_subject': headers = ['Fach', 'Beifach'] for student in students: if not student.subject: continue lsub = student.subject.lower() if 'mathematik (la)' in lsub: if not ('hauptfach' in lsub or 'beifach' in lsub): bad_students.append(student) elif not student.second_subject: bad_students.append(student) for s in bad_students: table.append((s, s.subject, s.second_subject)) elif ttype == 'unconfirmed': headers = ['Anmeldedatum'] bad_students = request.db.query( models.User).filter(models.User.password == None).all() for student in bad_students: table.append((student, student.confirmations[0].created_on)) if request.method == 'POST' and form.processPostData(request.POST): message = Message(subject=form['subject'], sender=('%s <%s>' % (request.config['contact']['name'], request.config['contact']['email'])), to=[], bcc=[s.email for s in bad_students], body=form['body']) if request.POST['attachments'] not in ['', None]: message.attach(request.POST['attachments'].filename, data=request.POST['attachments'].file) try: sendMail(message, request) except: pass else: request.session.flash( 'A Mail has been send to all students with wrong subject', queue='messages') return { 'form': form, 'type': ttype, 'table': table, 'headers': headers, 'students': bad_students }
def emailUsers(request): ttype = request.params.get('type', 'wrong_subject') form = EmailWrongSubject(ttype, request) semesterlimit = utils.getSemesterLimit() students = request.db.query(models.User).filter(models.User.lecture_students.any(models.LectureStudent.lecture.has(models.Lecture.term >= semesterlimit))).all() bad_students = [] headers = [] table = [] if ttype=='wrong_subject': headers = ['Fach', 'Beifach'] for student in students: if not student.subject: continue lsub = student.subject.lower() if 'mathematik (la)' in lsub: if not ('hauptfach' in lsub or 'beifach' in lsub): bad_students.append(student) elif not student.second_subject: bad_students.append(student) for s in bad_students: table.append((s,s.subject, s.second_subject)) elif ttype=='wrong_birthday': headers = ["Geburtstag"] validator = DateString() for student in students: try: date = validator.to_python(student.birth_date) except formencode.Invalid: bad_students.append(student) for s in bad_students: table.append((s,s.birth_date)) elif ttype == 'unconfirmed': headers = ['Anmeldedatum'] bad_students = request.db.query(models.User).filter(models.User.password == None).all() for student in bad_students: table.append((student, student.confirmations[0].created_on)) if request.method == 'POST' and form.processPostData(request.POST): message = Message(subject=form['subject'], sender=('%s <%s>' % (request.config['contact']['name'], request.config['contact']['email'])), to= [], bcc=[s.email for s in bad_students], body=form['body']) if request.POST['attachments'] not in ['', None]: message.attach(request.POST['attachments'].filename, data=request.POST['attachments'].file) try: sendMail(message,request) except: pass else: request.session.flash('A Mail has been send to all students with wrong subject', queue='messages') return {'form': form, 'type': ttype, 'table': table, 'headers': headers, 'students': bad_students}
def changeEmail(request): form = UserChangeEmail(request, request.user) if request.method == 'POST' and form.processPostData(request.POST): email = form['email'] if request.db.query( models.User).filter(models.User.email == email).count() > 0: request.session.flash( u'Die Adresse "%s" kann nicht verwendet werden' % email, queue='messages') else: confirmation = models.Confirmation() confirmation.source = u'user/change_email' confirmation.user = request.user confirmation.what = email body = u""" Hallo! Sie haben bei MÜSLI Ihre E-Mail-Adresse geändert. Neue Adresse: %s Um die Änderung zu bestätigen, gehen Sie bitte auf die Seite %s Möchten Sie die Adresse doch nicht ändern, so ignorieren Sie diese Mail bitte einfach. Mit freundlichen Grüßen, Das MÜSLI-Team """ % (email, request.route_url('user_confirm_email', confirmation=confirmation.hash)) message = Message( subject=u'MÜSLI: E-Mail-Adresse ändern', sender=(u'%s <%s>' % (request.config['contact']['name'], request.config['contact']['email'])).encode('utf-8'), to=[email], body=body) # As we are not using transactions, # we send the mail immediately. request.db.add(confirmation) request.db.commit() sendMail(message) #registerCommon(request, form) return HTTPFound(location=request.route_url( 'user_change_email_wait_for_confirmation')) return {'form': form}
def emailTutors(request): db = request.db lecture = request.context.lecture form = LectureEmailTutors(request) if request.method == "POST" and form.processPostData(request.POST): tutors = lecture.tutors message = Message( subject=form["subject"], sender=request.user.email, to=[assistant.email for assistant in lecture.assistants], bcc=[t.email for t in tutors], body=form["body"], ) if request.POST["attachments"] not in ["", None]: message.attach(request.POST["attachments"].filename, data=request.POST["attachments"].file) sendMail(message) request.session.flash("A mail has been sent to all tutors of this lecture", queue="messages") return HTTPFound(location=request.route_url("lecture_edit", lecture_id=lecture.id)) return {"lecture": lecture, "form": form}
def resetPassword(request): form = UserResetPassword(request) if request.method == 'POST' and form.processPostData(request.POST): user = request.db.query( models.User).filter(models.User.email == form['email']).first() if not user: request.session.flash(u'User not found', queue='errors') else: confirmation = models.Confirmation() confirmation.user = user confirmation.source = u'user/reset_password' body = u""" Hallo! Um Ihr Passwort bei MÜSLI zurückzusetzen besuchen Sie bitte die Seite %s Haben Sie nicht selbst versucht Ihr Passwort zurückzusetzen, ignorieren Sie diese Mail bitte einfach. Mit freundlichen Grüßen, Das MÜSLI-Team """ % (request.route_url('user_reset_password3', confirmation=confirmation.hash)) message = Message( subject=u'MÜSLI: Passwort zurücksetzen', sender=(u'%s <%s>' % (request.config['contact']['name'], request.config['contact']['email'])).encode('utf-8'), to=[user.email], body=body) # As we are not using transactions, # we send the mail immediately. request.db.add(confirmation) request.db.commit() sendMail(message) return HTTPFound( location=request.route_url('user_reset_password2')) return {'form': form}
def changeEmail(request): form = UserChangeEmail(request, request.user) if request.method == 'POST' and form.processPostData(request.POST): email = form['email'] if request.db.query(models.User).filter(models.User.email==email).count() > 0: request.session.flash(u'Die Adresse "%s" kann nicht verwendet werden' % email, queue='messages') else: confirmation = models.Confirmation() confirmation.source = u'user/change_email' confirmation.user = request.user confirmation.what = email body =u""" Hallo! Sie haben bei MÜSLI Ihre E-Mail-Adresse geändert. Neue Adresse: %s Um die Änderung zu bestätigen, gehen Sie bitte auf die Seite %s Möchten Sie die Adresse doch nicht ändern, so ignorieren Sie diese Mail bitte einfach. Mit freundlichen Grüßen, Das MÜSLI-Team """ %(email, request.route_url('user_confirm_email', confirmation=confirmation.hash)) message = Message(subject=u'MÜSLI: E-Mail-Adresse ändern', sender=(u'%s <%s>' % (request.config['contact']['name'], request.config['contact']['email'])).encode('utf-8'), to=[email], body=body) # As we are not using transactions, # we send the mail immediately. request.db.add(confirmation) request.db.commit() sendMail(message) #registerCommon(request, form) return HTTPFound(location=request.route_url('user_change_email_wait_for_confirmation')) return {'form': form}
def send_confirmation_mail(request, user, confirmation): body =u""" Hallo! Sie haben sich bei MÜSLI mit den folgenden Daten angemeldet: Name: %s E-Mail: %s Um die Anmeldung abzuschließen, gehen Sie bitte auf die Seite %s Haben Sie sich nicht selbst angemeldet, ignorieren Sie diese Mail bitte einfach. Mit freudlichen Grüßen, Das MÜSLI-Team """ %(user.name(), user.email, request.route_url('user_confirm', confirmation=confirmation.hash)) message = Message(subject=u'MÜSLI: Ihre Registrierung bei MÜSLI', sender=(u'%s <%s>' % (request.config['contact']['name'], request.config['contact']['email'])).encode('utf-8'), to=[user.email], body=body) sendMail(message)