summaryrefslogtreecommitdiff
path: root/pgcommitfest/userprofile/util.py
blob: af50cafb76da35d56744e0ffd8c1cf5191c24665 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from Crypto.Hash import SHA256
from Crypto import Random

from models import UserProfile

def generate_random_token():
	"""
	Generate a random token of 64 characters. This token will be
	generated using a strong random number, and then hex encoded to make
	sure all characters are safe to put in emails and URLs.
	"""
	s = SHA256.new()
	r = Random.new()
	s.update(r.read(250))
	return s.hexdigest()


class UserWrapper(object):
	def __init__(self, user):
		self.user = user

	@property
	def email(self):
		try:
			up = UserProfile.objects.get(user=self.user)
			if up.selectedemail and up.selectedemail.confirmed:
				return up.selectedemail.email
			else:
				return self.user.email
		except UserProfile.DoesNotExist:
			return self.user.email