from utils import *
from istring import *
import traceback
-import inspect
class InvariantCollection(object):
def __init__(self):
self.ban_reason = ban_reason
self.ban_date = ban_date
self.ban_expiry = ban_expiry
- self.dirty = False
+ self._dirty = False
self.registered = self.banned = False
def unserialize(self, key, value):
e.unserialize(row2[0], row2[1])
def __get_attributes(self, obj):
- boring = dir(type('dummy', (object,), {}))
- return [item for item in inspect.getmembers(obj) if item[0] not in boring]
+ return [item for item in dir(obj) if not item.startswith('_')]
def commit(self):
try:
else: # delete options as we are aboue to re-flush them
self.cursor.execute("DELETE FROM " + self.module.name + "_" + self.name + "_options WHERE `id` = %s", (e.id,))
- for a in self.__get_attributes(e):
- attr_name = a[0]
+ for attr_name in self.__get_attributes(e):
attr = getattr(e, attr_name)
if attr:
self.cursor.execute("INSERT INTO " + self.module.name + "_" + self.name + "_options (id, name, value) VALUES (%s, %s, %s)", (e.id, attr_name, attr))
self.clear_deleted()
for e in self.list_all():
- e.dirty = False
+ e._dirty = False
except Exception, err:
traceback.print_exc()
self.module.elog.error(self.name + ' commit failed: @b%s@b' % err)
def is_dirty(self, item):
self.check(item)
- return item in self and self[item].dirty
+ return item in self and self[item]._dirty
def is_valid(self, item):
self.check(item)
if old_value != value:
setattr(entity, attribute, value)
- entity.dirty = True
+ entity._dirty = True
def add(self, item):
if not item in self:
entity = self.__type(-1, item)
- entity.dirty = True
+ entity._dirty = True
entity.registered = True
self[item] = entity
if entity.banned and entity.registered:
entity.registered = False
entity.clear()
- entity.dirty = True
+ entity._dirty = True
elif not entity.banned:
if not item.lower() in self.__deleted_items:
self.__deleted_items.append(entity)
entity.ban_reason = reason
entity.ban_date = date
entity.ban_expiry = expiry
- entity.dirty = True
+ entity._dirty = True
self.on_banned(item)
if not entity.registered:
self.remove(item)
else:
- entity.dirty = True
+ entity._dirty = True
self.on_unbanned(item)