From 2fcca859668a4d3f86377bd9d74787e23021321c Mon Sep 17 00:00:00 2001 From: Eevee Date: Sun, 15 Aug 2010 00:26:51 -0700 Subject: [PATCH 1/1] Added a per-user stash. --- migration/versions/004_Add_user_stash.py | 29 +++++++++++++++++++++++++++++ splinext/users/model/__init__.py | 5 ++++- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 migration/versions/004_Add_user_stash.py diff --git a/migration/versions/004_Add_user_stash.py b/migration/versions/004_Add_user_stash.py new file mode 100644 index 0000000..67da19f --- /dev/null +++ b/migration/versions/004_Add_user_stash.py @@ -0,0 +1,29 @@ +from sqlalchemy import * +from migrate import * +import migrate.changeset # monkeypatches Column + +import json + +from sqlalchemy import orm +from sqlalchemy.ext.declarative import declarative_base +TableBase = declarative_base() + + +class User(TableBase): + __tablename__ = 'users' + id = Column(Integer, primary_key=True) + name = Column(Unicode(length=20), nullable=False) + unique_identifier = Column(Unicode(length=32), nullable=False) + stash = Column(PickleType(pickler=json), nullable=True, default={}) + + +def upgrade(migrate_engine): + TableBase.metadata.bind = migrate_engine + + User.__table__.c.stash.create(table=User.__table__) + User.__table__.c.stash.alter(nullable=False) + +def downgrade(migrate_engine): + TableBase.metadata.bind = migrate_engine + + User.__table__.c.stash.drop() diff --git a/splinext/users/model/__init__.py b/splinext/users/model/__init__.py index 4ad49aa..b5ea63c 100644 --- a/splinext/users/model/__init__.py +++ b/splinext/users/model/__init__.py @@ -1,5 +1,6 @@ # encoding: utf8 import colorsys +import json from math import sin, pi import random @@ -7,7 +8,7 @@ from sqlalchemy import Column, ForeignKey, or_ from sqlalchemy.ext.associationproxy import association_proxy from sqlalchemy.orm import relation from sqlalchemy.orm.session import Session -from sqlalchemy.types import Integer, Unicode +from sqlalchemy.types import Integer, PickleType, Unicode from spline.model.meta import TableBase @@ -16,6 +17,7 @@ class AnonymousUser(object): Tests as false and tries to respond to method calls the expected way. """ + stash = {} def __nonzero__(self): return False @@ -32,6 +34,7 @@ class User(TableBase): id = Column(Integer, primary_key=True) name = Column(Unicode(length=20), nullable=False) unique_identifier = Column(Unicode(length=32), nullable=False) + stash = Column(PickleType(pickler=json), nullable=False, default=dict()) def __init__(self, *args, **kwargs): # Generate a unique hash if one isn't provided (which it shouldn't be) -- 2.7.4