|
a/mail/app/handlers/react.py |
|
b/mail/app/handlers/react.py |
|
... |
|
... |
6 |
|
6 |
|
7 |
import os
|
7 |
import os
|
8 |
|
8 |
|
9 |
import ming
|
9 |
import ming
|
10 |
import pylons
|
10 |
import pylons
|
|
|
11 |
from pylons import c
|
11 |
from paste.deploy import appconfig
|
12 |
from paste.deploy import appconfig
|
12 |
|
13 |
|
13 |
from pyforge.config.environment import load_environment
|
14 |
from pyforge.config.environment import load_environment
|
14 |
|
15 |
|
15 |
from pyforge import model as M
|
16 |
from pyforge import model as M
|
16 |
from pyforge.model import Project
|
17 |
from pyforge.model import Project
|
|
|
18 |
from pyforge.lib.app_globals import Globals
|
17 |
|
19 |
|
18 |
logging.config.fileConfig("config/react_logging.conf")
|
20 |
logging.config.fileConfig("config/react_logging.conf")
|
19 |
|
21 |
|
20 |
class EmptyClass(object): pass
|
22 |
class EmptyClass(object): pass
|
21 |
|
23 |
|
|
|
24 |
class ProjectContents:
|
|
|
25 |
def __init__(self,indict):
|
|
|
26 |
self.contents = indict
|
|
|
27 |
def __getattr__(self,which):
|
|
|
28 |
return self.contents.get(which,None)
|
|
|
29 |
|
22 |
@route("(loc)@(proj)\\.(host)", loc=".*", proj=".*")
|
30 |
@route("(appmount)\\.(apploc)@(proj)\\.(host)", appmount=".*", apploc=".*", proj=".*")
|
23 |
@stateless
|
31 |
@stateless
|
24 |
def REACTING(message, post_name=None, loc=None, proj=None, host=None):
|
32 |
def REACTING(message, post_name=None, appmount=None, apploc=None, proj=None, host=None):
|
25 |
conf = appconfig('config:%s' % 'development.ini',relative_to=os.getcwd())
|
33 |
conf = appconfig('config:%s' % 'development.ini',relative_to=os.getcwd())
|
26 |
load_environment(conf.global_conf, conf.local_conf)
|
34 |
load_environment(conf.global_conf, conf.local_conf)
|
27 |
pylons.c._push_object(EmptyClass())
|
35 |
pylons.c._push_object(EmptyClass())
|
28 |
from pyforge.lib.app_globals import Globals
|
|
|
29 |
pylons.g._push_object(Globals())
|
36 |
pylons.g._push_object(Globals())
|
30 |
ming.configure(**conf)
|
37 |
ming.configure(**conf)
|
31 |
|
38 |
|
32 |
try:
|
39 |
try:
|
33 |
valid = Project.m.find({"name":proj, "database":"projects:"+proj}).one()
|
40 |
valid = ProjectContents(Project.m.find({"name":proj, "database":"projects:"+proj}).one())
|
34 |
except:
|
41 |
except:
|
35 |
try:
|
42 |
try:
|
36 |
valid = Project.m.find({"name":proj, "database":"users:"+proj}).one()
|
43 |
valid = ProjectContents(Project.m.find({"name":proj, "database":"users:"+proj}).one())
|
37 |
except:
|
44 |
except:
|
38 |
logging.debug('REACT: project "' + proj + '" does not exist as project or user')
|
45 |
logging.debug('REACT: project "' + proj + '" does not exist as project or user')
|
39 |
else:
|
46 |
else:
|
40 |
relay.deliver(message)
|
47 |
# relay.deliver(message)
|
41 |
logging.debug('REACT: project "' + proj + '" exists as user!')
|
48 |
logging.debug('REACT: project "' + proj + '" exists as user with _id:' + valid._id)
|
42 |
else:
|
49 |
else:
|
43 |
relay.deliver(message)
|
50 |
# relay.deliver(message)
|
44 |
logging.debug('REACT: project "' + proj + '" exists as project!')
|
51 |
logging.debug('REACT: project "' + proj + '" exists as project with _id:' + valid._id)
|
45 |
|
52 |
try:
|
|
|
53 |
c.project = Project.m.get(_id=valid._id)
|
|
|
54 |
except:
|
|
|
55 |
logging.debug('REACT: cannot initialize valid project')
|
|
|
56 |
else:
|
|
|
57 |
logging.debug('REACT: retrieved valid project')
|
|
|
58 |
try:
|
|
|
59 |
c.project.app_config(appmount)
|
|
|
60 |
c.app = c.project.app_instance(appmount)
|
|
|
61 |
except:
|
|
|
62 |
logging.debug('REACT: invalid app mount point')
|
|
|
63 |
else:
|
|
|
64 |
# plugin_name="dummy"
|
|
|
65 |
# plugin_name=c.project.plugin_name
|
|
|
66 |
plugin_name=c.app.config.plugin_name
|
|
|
67 |
logging.debug('REACT: valid app mount point with plugin_name:' + plugin_name)
|
46 |
|
68 |
|
47 |
# conn = BrokerConnection(hostname="localhost", port=5672,
|
69 |
# conn = BrokerConnection(hostname="localhost", port=5672,
|
48 |
# userid="celeryuser", password="celerypw",
|
70 |
# userid="celeryuser", password="celerypw",
|
49 |
# virtual_host="celeryvhost")
|
71 |
# virtual_host="celeryvhost")
|
50 |
#
|
72 |
#
|
51 |
# publisher = Publisher(connection=conn,
|
73 |
# publisher = Publisher(connection=conn,
|
52 |
# exchange="forge", routing_key="mail")
|
74 |
# exchange="forge", routing_key="mail")
|
53 |
# publisher.send({"message": message}, serializer="pickle")
|
75 |
# publisher.send({"message": message}, serializer="pickle")
|
54 |
# publisher.close()
|
76 |
# publisher.close()
|
55 |
#
|
|
|
56 |
# #index_q = queue.Queue("run/posts")
|
|
|
57 |
# #index_q.push(message)
|
|
|
58 |
|
77 |
|
59 |
return REACTING
|
78 |
return REACTING
|
60 |
|
79 |
|