Channel creation.
[TownSquare.git] / townsquare / model / user.py
blob1bee61c446c0e87a5ffdad12c3410760b92baa3a
1 import logging, re, datetime, uuid, hashlib
2 from zlib import crc32
4 from fma import SuperDoc
5 from fma.orm import relation
7 class User(SuperDoc):
8 _collection_name = 'users'
10 idname = unicode
12 created_discussions = relation('Discussion',pk='creator_id==_id',listmode=True)
14 _opt = {
15 'req' : ['name','email','passkey']
18 @property
19 def url(self):
20 return self.idname and '/user/' + self.idname or ''
22 def save(self):
23 if not self._saved():
24 #TODO: check for existing name or email
25 self.idname = self.name.lower()
26 self.email = self.email.lower()
27 self.create_timestamp = datetime.datetime.utcnow()
28 self.salt = '%x' % (crc32(str(uuid.uuid4())) & 0xffffffffL)
29 self.passkey = hashlib.md5(self.salt + hashlib.sha1(self.passkey).hexdigest()).hexdigest()
30 #TODO: check config for activation method
31 self.active = True
32 #self.activation_key = str(uuid.uuid4())
33 self.banned = False
34 if self.admin is None:
35 self.admin = False
37 super(User, self).save()
39 def login(self, passkey):
40 return self.passkey == hashlib.md5(self.salt + hashlib.sha1(passkey).hexdigest()).hexdigest()