Example #1
0
def view(coursesid=None):
	''' Default course view '''
	roles = g.current_course.getUserRoles()
	course_users = {
		'own':[user.getUserByID(key) for key,value in roles if value=='own'],
		'edit':[user.getUserByID(key) for key,value in roles if value=='edit'],
		'view':[user.getUserByID(key) for key,value in roles if value=='view']
	}
	return render_template('course/view.html', course_users=course_users)
Example #2
0
def forgot():
	''' Forgot my password dialogue '''
	form = ForgottenPasswordForm(request.form)
	if request.method == 'POST' and form.validate():
		email = form.email.data,
		usersid = user.getUsersidByEmail(email)
		if usersid:
			u = user.getUserByID(usersid)
			reset_key = u.generatePasswordResetKey()
			queueEmail(
				usersid = usersid,
				subject = 'BubbleCK Password Reset',
				body = '''
Dear %s,
	You, or someone pretending to be you, has requested that your password for bubbleck.com be reset.  If you did not make this request, ignore this email.  Everything is fine.  If you did make this request, please visit %s%s to reset your password.
	Cheers,
		Taylor
					''' % (u.teachername, request.url_root[:-1], url_for('routes_user.passwordreset',reset_key=reset_key)),
				show_as_web_msg = False
			)
			flash('success|An email with instructions on how to reset your password has been sent to %s.' % email)
			return redirect(url_for('index'))
		else:
			flash('danger|No user is registered under email address (%s)' % email)
			return render_template('user/forgot.html', form=form)
	else:
		return render_template('user/forgot.html', form=form)
Example #3
0
def send_emails():
	query = 'SELECT * FROM email_users WHERE sent_at IS NULL'
	emails = db.queryDictList(query)
	for email in emails:
		message = "From: {0}\r\n".format(bckconfig.smtp_username)
		to  = ['']
		cc  = ['']
		bcc = ['']
		if email['usersid']:
			u = user.getUserByID(email['usersid'])
			to = [u.email]
		if email['additional_to']:	
			to  = to + email['additional_to'].split(',')
		if to:
			message = message + "To: {0}\r\n".format(','.join(to))
		if email['additional_cc']:
			cc  = email['additional_cc'].split(',')
			message = message + "CC: {0}\r\n".format(','.join(cc))
		if email['additional_bcc']:
			bcc  = email['additional_bcc'].split(',')
		if email['subject']:
			message = message + "Subject: {0}\r\n\r\n".format(email['subject'])
		if email['body']:
			message = message + email['body']
		server = smtplib.SMTP('{0}:{1}'.format(bckconfig.smtp_server, bckconfig.smtp_port))
		if bckconfig.smtp_use_tls:
			server.starttls()
		server.login(bckconfig.smtp_username, bckconfig.smtp_password)
		server.sendmail(bckconfig.smtp_username, to + cc + bcc, message)
		server.quit()
		print('Sent email (id={0}) successfully'.format(email['emailsid']))
		query = 'UPDATE email_users SET sent_at=NOW() WHERE emailsid={0}'.format(emailsid)
		db.queryNoResults(query,(email['emailsid'],))
Example #4
0
def settings(coursesid=None):
	''' Edit course settings '''
	courseform = CourseForm(request.form)
	if request.method == 'POST' and courseform.validate():
		try:
			g.current_course.name = courseform.name.data
			g.current_course.save()
			i = 0
			for section in g.current_course.getSections():
				if section.name != courseform.sections[i].data:
					section.name = courseform.sections[i].data
					section.save()
				i = i + 1
		except:
			return "An error occured while updating this course.  Please contact Taylor ([email protected]) for details."
		flash('info|Course Updated')
	else:
		courseform.name.data = g.current_course.name
	roles = g.current_course.getUserRoles()
	users_roles = []
	for r in roles:
		users_roles.append({
				'user' : user.getUserByID(r['usersid']),
				'role' : r['role']
		})
	num_sections = 0
	for section in g.current_course.getSections():
		courseform.sections[num_sections].data = section.name
		num_sections = num_sections + 1
	return render_template('course/settings.html', users_roles=users_roles, courseform = courseform, default_num_sections=num_sections)
db.query_no_results('DELETE FROM courses_users')
db.query_no_results('DELETE FROM courses')
db.query_no_results('DELETE FROM users')

# Create some users
u1 = user.User(email='*****@*****.**',name='First1 Last',teachername='Mr. First1',password_plaintext='1234', is_admin=True)
u2 = user.User(email='*****@*****.**',name='First2 Last',teachername='Mr. First2',password_plaintext='1234')
u3 = user.User(email='*****@*****.**',name='First3 Last',teachername='Mr. First3',password_plaintext='1234')
u4 = user.User(email='*****@*****.**',name='First4 Last',teachername='Mr. First4',password_plaintext='1234')
u1.save()
u2.save()
u3.save()
u4.save()
u4.save() # Yes, twice: should run an update the second time.
assert hashlib.md5(('1234' + bckconfig.password_salt).encode('utf-8')).hexdigest() == u1.password
assert user.getUserByID(u1.usersid).teachername == 'Mr. First1'

# Create some courses
c1 = course.Course(name='Math 1')
c2 = course.Course(name='Math 2')
c3 = course.Course(name='Math 3')
c4 = course.Course(name='Math 4')
c1.save()
c2.save()
c3.save()
c4.save()
c4.save() # Yes, twice; should run an update the second time.
assert c1.coursesid
assert course.getCourseByID(c1.coursesid).name == 'Math 1'

# Tie users to courses: