Mercurial > party-buddy-server
changeset 6:59ab5090d9ac
models
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sat, 01 Jun 2013 22:33:39 +0200 |
| parents | a7c071fbec7f |
| children | 0bdb36afda8a |
| files | runserver.py server/models.py |
| diffstat | 1 files changed, 52 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/server/models.py Sat Jun 01 20:29:32 2013 +0200 +++ b/server/models.py Sat Jun 01 22:33:39 2013 +0200 @@ -1,6 +1,6 @@ from sqlalchemy import (Column, Integer, BigInteger, String, DateTime, Boolean, Sequence, ForeignKey, - Table, desc, Numeric) + Table, desc, Numeric, Float) from sqlalchemy.orm import relationship, backref from .database import Base from .helpers import gen_filename @@ -10,7 +10,7 @@ from hashlib import sha256 -class Boilerplate(Object): +class Boilerplate(object): string_id = Column(String(12), unique=True) timestamp = Column(DateTime()) edition_timestamp = Column(DateTime()) @@ -22,8 +22,6 @@ self.edition_timestamp = self.timestamp self.disabled = False - # Add checking for exisence of that string_id - def __setattr__(self, name, value): self.__dict__['edition_timestamp'] = datetime.now() Base.__setattr__(self, name, value) @@ -32,6 +30,7 @@ def edited(self): self.edition_timestamp = datetime.now() + class User(Boilerplate, Base): __tablename__ = 'users' id = Column(Integer, Sequence('user_id_seq'), primary_key=True) @@ -58,25 +57,61 @@ return '<User %r, %r>' % (self.email, self.admin) def set_pass(self, password): - self.password = sha256(password+self.salt+app.config['SALT']).\ - hexdigest() - self.password_swapped = sha256(password.swapcase()+self.salt+app.config['SALT']).\ - hexdigest() - - self.edited() + self.password = sha256( + password + self.salt + app.config['SALT'] + ).hexdigest() def check_pass(self, password): - if sha256(password+self.salt+app.config['SALT']).hexdigest()\ - == self.password or\ - sha256(password.swapcase()+self.salt+app.config['SALT']).hexdigest()\ - == self.password_swapped: - return True - return False + return ( + sha256( + password + self.salt + app.config['SALT'] + ).hexdigest() == self.password + or + sha256( + password.swapcase() + self.salt + app.config['SALT'] + ).hexdigest() == self.password_swapped + ) def update_pass(self, old_pass, new_pass): if old_pass == new_pass: - return -1 + raise ValueError("New password is the same as old password") if self.check_pass(old_pass): self.set_pass(new_pass) return True return False + + +class UserNumber(Boilerplate, Base): + __tablename__ = 'user_number' + number = Column(String(20), primary_key=True) + owner = ForeignKey(User) + + +class Mac(Boilerplate, Base): + __tablename__ = 'mac' + mac = Column(String(16), primary_key=True) + owner = ForeignKey(User) + + +class PanicContact(Boilerplate, Base): + __tablename__ = 'panic_contact' + id = Column(Integer, Sequence('panic_contact_id_seq'), primary_key=True) + name = Column(String()) + number = Column(String(20)) + comment = Column(String()) + + +class Checkin(Boilerplate, Base): + __tablename__ = 'checkin' + id = Column(Integer, Sequence('checkin_id_seq'), primary_key=True) + time = Column(DateTime()) + lat = Column(Float) + long = Column(Float) + accuracy = Column(Float) + + +checkin_user = Table('checkin_user', Base.metadata, + Column('checkin_id', Integer, ForeignKey('checkin.id'), primary_key=True), + Column('user_id', Integer, ForeignKey('user.id'), primary_key=True), +) +
