-
Notifications
You must be signed in to change notification settings - Fork 3
/
run.py
100 lines (92 loc) · 3.69 KB
/
run.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import cherrypy
import modules.base
import os.path
import collections
import configparser
import modules.external.couch as couch
class Root (modules.base.Root):
config = configparser.ConfigParser()
config.read(os.path.join(os.path.split(
os.path.realpath(__file__))[0], "config.ini"))
couchdb_prefix = config["database"]["prefix"]
couchdb_server = config["database"]["host"]
couchdb_username = config["database"]["username"]
couchdb_password = config["database"]["password"]
base_url = config["global"]["host"]
def __init__(self):
self.active_users = collections.defaultdict(collections.defaultdict)
self.db = couch.Database(self.couchdb_username, self.couchdb_password,
self.couchdb_server)
# set up the databases in case they aren't there:
self.db.request("PUT", "/%s_users" % self.couchdb_prefix)
self.db.request("PUT", "/%s_users/_design/by_num_id/" % (
self.couchdb_prefix), body={
'_id': "_design/by_num_id",
'language': 'javascript',
"views": {
"by_num_id": {
"map": "function (doc) { emit(doc[\"num_id\"], null); }"
}
}
})
self.db.request("PUT", "/%s_users/_design/by_email/" % (
self.couchdb_prefix), body={
'_id': "_design/by_email",
'language': 'javascript',
"views": {
"by_email": {
"map": "function (doc) { emit(doc[\"email\"], doc[\"identity\"]); }"
}
}
})
self.db.request("PUT", "/%s_users/_design/by_name/" % (
self.couchdb_prefix), body={
'_id': "_design/by_name",
'language': 'javascript',
"views": {
"by_name": {
"map": "function (doc) { emit(doc[\"name\"], doc[\"num_id\"]); }"
}
}
})
self.db.request("PUT", "/%s_users/_design/by_msg_count/" % (
self.couchdb_prefix), body={
'_id': "_design/by_msg_count",
'language': 'javascript',
"views": {
"by_msg_count": {
"map": "function (doc) { emit(doc[\"num_id\"], doc[\"messages\"].length); }"
}
}
})
self.db.request("PUT", "/%s_rooms" % self.couchdb_prefix)
self.db.request("PUT", "/%s_rooms/_design/by_num_id/" % (
self.couchdb_prefix), body={
'_id': "_design/by_num_id",
'language': 'javascript',
"views": {
"by_num_id": {
"map": "function (doc) { emit(doc[\"num_id\"], null); }"
}
}
})
self.db.request("PUT", "/%s_rooms/_design/by_msg_count/" % (
self.couchdb_prefix), body={
'_id': "_design/by_msg_count",
'language': 'javascript',
"views": {
"by_msg_count": {
"map": "function (doc) { emit(doc[\"num_id\"], doc[\"n_messages\"]); }"
}
}
})
modules.base.Root.__init__(self)
if __name__ == '__main__':
config = configparser.ConfigParser()
config.read(os.path.join(os.path.split(
os.path.realpath(__file__))[0], "config.ini"))
cherrypy.quickstart(Root(), config={'global': {
'tools.encode.encoding': 'utf8',
'server.socket_host': config["httpd"]["host"],
'server.socket_port': int(config["httpd"]["port"]),
}})