@db.table.add_method.name, thanks Vinicius
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.4.6-stable+timestamp.2013.05.03.21.47.09
|
Version 2.4.6-stable+timestamp.2013.05.03.22.14.19
|
||||||
|
|||||||
@@ -8091,6 +8091,22 @@ def Reference_pickler(data):
|
|||||||
|
|
||||||
copyreg.pickle(Reference, Reference_pickler, Reference_unpickler)
|
copyreg.pickle(Reference, Reference_pickler, Reference_unpickler)
|
||||||
|
|
||||||
|
class MethodAdder(object):
|
||||||
|
def __init__(self,table):
|
||||||
|
self.table = table
|
||||||
|
def __call__(self):
|
||||||
|
return self.register()
|
||||||
|
def __getattr__(self,method_name):
|
||||||
|
return self.register(method_name)
|
||||||
|
def register(self,method_name=None):
|
||||||
|
def _decorated(f):
|
||||||
|
instance = self.table
|
||||||
|
import types
|
||||||
|
method = types.MethodType(f, instance, instance.__class__)
|
||||||
|
name = method_name or f.func_name
|
||||||
|
setattr(instance, name, method)
|
||||||
|
return f
|
||||||
|
return _decorated
|
||||||
|
|
||||||
class Table(object):
|
class Table(object):
|
||||||
|
|
||||||
@@ -8145,6 +8161,8 @@ class Table(object):
|
|||||||
self._after_update = []
|
self._after_update = []
|
||||||
self._after_delete = []
|
self._after_delete = []
|
||||||
|
|
||||||
|
self.add_method = MethodAdder(self)
|
||||||
|
|
||||||
fieldnames,newfields=set(),[]
|
fieldnames,newfields=set(),[]
|
||||||
if hasattr(self,'_primarykey'):
|
if hasattr(self,'_primarykey'):
|
||||||
if not isinstance(self._primarykey,list):
|
if not isinstance(self._primarykey,list):
|
||||||
|
|||||||
@@ -275,6 +275,20 @@ class TestSelect(unittest.TestCase):
|
|||||||
self.assertEqual(db(~(db.tt.aa > '1') & (db.tt.aa > '2')).count(), 0)
|
self.assertEqual(db(~(db.tt.aa > '1') & (db.tt.aa > '2')).count(), 0)
|
||||||
db.tt.drop()
|
db.tt.drop()
|
||||||
|
|
||||||
|
class TestAddMethod(unittest.TestCase):
|
||||||
|
|
||||||
|
def testRun(self):
|
||||||
|
db = DAL(DEFAULT_URI, check_reserved=['all'])
|
||||||
|
db.define_table('tt', Field('aa'))
|
||||||
|
@db.tt.add_method.all
|
||||||
|
def select_all(table,orderby=None):
|
||||||
|
return table._db(table).select(orderby=orderby)
|
||||||
|
self.assertEqual(db.tt.insert(aa='1'), 1)
|
||||||
|
self.assertEqual(db.tt.insert(aa='2'), 2)
|
||||||
|
self.assertEqual(db.tt.insert(aa='3'), 3)
|
||||||
|
self.assertEqual(len(db.tt.all()), 3)
|
||||||
|
db.tt.drop()
|
||||||
|
|
||||||
|
|
||||||
class TestBelongs(unittest.TestCase):
|
class TestBelongs(unittest.TestCase):
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user