--- a/iro/controller/database.py Sun Jan 22 02:38:25 2012 +0100
+++ b/iro/controller/database.py Sun Jan 22 12:26:00 2012 +0100
@@ -5,7 +5,7 @@
from twisted.internet import threads
-from ..model import Base
+from ..model.schema import Base
engine = create_engine('sqlite:///:memory:', echo=True)
--- a/iro/controller/user.py Sun Jan 22 02:38:25 2012 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-import re
-
-from ..model import User
-
-from ..error import UserNotFound, InterfaceException, ValidateException
-
-
-def rehash(hash):
- if not re.match(r'^[a-f0-9]{15,}$', hash.lower()):
- raise ValidateException()
- return True
-
-def validate(**kargs):
- def v(f):
- def new_f(*a,**k):
- for i in kargs:
- kargs[i](k[i])
- return f(*a,**k)
- new_f.__name__ = f.__name__
- return new_f
- return v
-
-
-@validate(userhash=rehash)
-def getuser(userhash, session):
- user = session.query(User).filter_by(apikey=userhash).first()
- if user is None:
- raise UserNotFound()
- else:
- return user
-
-def with_user(f):
- def new_f(*args,**kargs):
- args=list(args)
- try:
- userhash = kargs["apikey"]
- del kargs["apikey"]
- except KeyError:
- try:
- userhash = args[1]
- del args[1]
- except IndexError:
- raise InterfaceException()
-
- def _gotResult(_user):
- kargs["user"]=_user
- return f(*args,**kargs)
- return getuser(userhash=userhash).addCallback(_gotResult)
-
- new_f.__name__ = f.__name__
- return new_f
-
-
--- a/iro/controller/viewinterface.py Sun Jan 22 02:38:25 2012 +0100
+++ b/iro/controller/viewinterface.py Sun Jan 22 12:26:00 2012 +0100
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-from .user import with_user
+from ..model.user import with_user
class Interface(object):
'''class for a xmlrpc user
--- a/iro/model/__init__.py Sun Jan 22 02:38:25 2012 +0100
+++ b/iro/model/__init__.py Sun Jan 22 12:26:00 2012 +0100
@@ -1,2 +1,2 @@
-from schema import Offer, Message, Job, User
-from schema import Base
+import schema
+import user
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/model/user.py Sun Jan 22 12:26:00 2012 +0100
@@ -0,0 +1,31 @@
+from inspect import getcallargs
+
+from .schema import User
+from ..validate import vuserhash, validate
+from ..error import UserNotFound, InterfaceException
+
+@validate(userhash=vuserhash)
+def getuser(userhash, session):
+ user = session.query(User).filter_by(apikey=userhash).first()
+ if user is None:
+ raise UserNotFound()
+ else:
+ return user
+
+def with_user(f):
+ def new_f(*args,**kargs):
+ kp=getcallargs(f,*args,**kargs)
+ try:
+ userhash = kp["user"]
+ except KeyError:
+ raise InterfaceException()
+
+ def _gotResult(_user):
+ kp["user"]=_user
+ return f(**kp)
+ return getuser(userhash).addCallback(_gotResult)
+
+ new_f.__name__ = f.__name__
+ return new_f
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/validate.py Sun Jan 22 12:26:00 2012 +0100
@@ -0,0 +1,27 @@
+import re
+from inspect import getcallargs
+from .error import ValidateException
+
+def vuserhash(hash):
+ '''vailidate function for userhash'''
+ if not re.match(r'^[a-f0-9]{15,}$', hash.lower()):
+ raise ValidateException()
+ return True
+
+def validate(**kargs):
+ '''validate decorator
+ use it like this:
+ @validate(userhash=vuserhash)
+ f(userhash)
+ that will validate usrhah with the function vuserhash.
+ Every validate function should raise an Exception, if the the value is not valide'''
+ def v(f):
+ def new_f(*a,**k):
+ kp=getcallargs(f,*a,**k)
+ for i in kargs:
+ kargs[i](kp[i])
+ return f(*a,**k)
+ new_f.__name__ = f.__name__
+ return new_f
+ return v
+
--- a/tests/xmlrpc.py Sun Jan 22 02:38:25 2012 +0100
+++ b/tests/xmlrpc.py Sun Jan 22 12:26:00 2012 +0100
@@ -5,10 +5,10 @@
import shutil
from iro.controller.database import createDatabase,WithSession, DBDefer
-import iro.controller.user as imuser
+import iro.model.user as imuser
import iro.controller.database as db
-from iro.model import User
+from iro.model.schema import User
from ngdatabase.mysql import Server,createConfig,Database