Switch to unified view

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