All pastes #927361 Raw Edit

Someone

public python v1 · immutable
·published 2008-03-04 06:56 UTC
rendered paste body
class Character(object):    prop_dict = {}    def __init__(self, name, user):        self.name = name        self.user = user        Session.save(self)        Session.flush()    def __str__(self):        index = self.user.characters.index(self) + 1        return h.link_to(self.name, url=h.url('char_page', id=index, username=self.user.username))    def make_prop_dict(self, refresh = False):        if refresh or not self.prop_dict:            for property in self.charprops:                self.prop_dict[property.key] = property    def __getitem__(self, key):        self.make_prop_dict()        return self.prop_dict[key].value    def __setitem__(self, key, value):        self.make_prop_dict()        if self.prop_dict.has_key(key):            self.prop_dict[key].value = value        else:            new_prop = CharProperty(key, value, self)        self.make_prop_dict(refresh=True)    @classmethod    def find(cls, id):        return Session.query(cls).filter_by(id = id).one()charprop_table = Table('charprop', metadata,    Column('id', types.Integer, primary_key=True),    Column('key', types.Unicode(64), nullable=False),    Column('value', types.Unicode(64), nullable=False),    Column('character_id', types.Integer, ForeignKey('character.id'), nullable=False),)class CharProperty(object):    def __init__(self, key, value, character):        self.key = key        self.value = value        self.character = character        Session.save(self)        Session.flush()user_mapper = mapper(User, user_table, properties = {    'characters': relation(Character, backref='user')})character_mapper = mapper(Character, character_table, properties = {    'charprops': relation(CharProperty, backref='character')})charprop_mapper = mapper(CharProperty, charprop_table)