Mercurial > libervia-web
annotate libervia.py @ 14:9bf8ed012adc
- Group microblog management, first draft
- Bad connexion issue fixed
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 07 Apr 2011 22:27:36 +0200 |
parents | 0110d4e1d816 |
children | 099c05a0dcab |
rev | line source |
---|---|
0 | 1 #!/usr/bin/python |
2 # -*- coding: utf-8 -*- | |
3 | |
4 """ | |
5 Libervia: a Salut à Toi frontend | |
6 Copyright (C) 2011 Jérôme Poisson (goffi@goffi.org) | |
7 | |
8 This program is free software: you can redistribute it and/or modify | |
9 it under the terms of the GNU Affero General Public License as published by | |
10 the Free Software Foundation, either version 3 of the License, or | |
11 (at your option) any later version. | |
12 | |
13 This program is distributed in the hope that it will be useful, | |
14 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 GNU Affero General Public License for more details. | |
17 | |
18 You should have received a copy of the GNU Affero General Public License | |
19 along with this program. If not, see <http://www.gnu.org/licenses/>. | |
20 """ | |
21 | |
22 import pyjd # this is dummy in pyjs | |
23 from pyjamas.ui.SimplePanel import SimplePanel | |
24 from pyjamas.ui.RootPanel import RootPanel | |
25 from pyjamas.ui.VerticalPanel import VerticalPanel | |
26 from pyjamas.ui.HorizontalPanel import HorizontalPanel | |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
27 from pyjamas.ui.HTMLPanel import HTMLPanel |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
28 from pyjamas.ui.Grid import Grid |
0 | 29 from pyjamas.ui.Label import Label |
30 from pyjamas.ui import HasAlignment | |
31 from pyjamas.ui.MenuBar import MenuBar | |
32 from pyjamas.ui.MenuItem import MenuItem | |
6 | 33 from pyjamas.ui.AutoComplete import AutoCompleteTextBox |
34 from pyjamas.ui.DropWidget import DropWidget | |
0 | 35 from pyjamas import Window |
36 from pyjamas.JSONService import JSONProxy | |
11
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
37 from pyjamas.ui.KeyboardListener import KEY_ENTER |
0 | 38 from register import RegisterPanel, RegisterBox |
1 | 39 from pyjamas import DOM |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
40 from contact import ContactPanel |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
41 from datetime import datetime |
0 | 42 |
43 | |
44 class LiberviaJsonProxy(JSONProxy): | |
45 def __init__(self, *args, **kwargs): | |
46 JSONProxy.__init__(self, *args, **kwargs) | |
47 self.handler=self | |
48 self.cb={} | |
49 | |
50 def call(self, method, cb, *args): | |
11
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
51 if cb: |
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
52 self.cb[method] = cb |
0 | 53 self.callMethod(method,args) |
54 | |
55 def onRemoteResponse(self, response, request_info): | |
56 if self.cb.has_key(request_info.method): | |
57 self.cb[request_info.method](response) | |
58 del self.cb[request_info.method] | |
59 | |
60 def onRemoteError(self, code, errobj, request_info): | |
61 if code != 0: | |
62 Window.alert("Internal server error") | |
63 else: | |
64 if isinstance(errobj['message'],dict): | |
65 Window.alert("Error %s: %s" % (errobj['message']['faultCode'], errobj['message']['faultString'])) | |
66 else: | |
67 Window.alert("Error: %s" % errobj['message']) | |
68 | |
69 class RegisterCall(LiberviaJsonProxy): | |
70 def __init__(self): | |
71 LiberviaJsonProxy.__init__(self, "/register_api", | |
72 ["isRegistered","isConnected","connect"]) | |
73 self.handler=self | |
74 self.cb={} | |
75 | |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
76 class BridgeCall(LiberviaJsonProxy): |
0 | 77 def __init__(self): |
78 LiberviaJsonProxy.__init__(self, "/json_api", | |
14
9bf8ed012adc
- Group microblog management, first draft
Goffi <goffi@goffi.org>
parents:
13
diff
changeset
|
79 ["getContacts", "sendMblog", "getMblogNodes"]) |
0 | 80 |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
81 class BridgeSignals(LiberviaJsonProxy): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
82 def __init__(self): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
83 LiberviaJsonProxy.__init__(self, "/json_signal_api", |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
84 ["getSignals"]) |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
85 |
0 | 86 class MenuCmd: |
87 | |
88 def __init__(self, object, handler): | |
89 self._object = object | |
90 self._handler = handler | |
91 | |
92 def execute(self): | |
93 handler = getattr(self._object, self._handler) | |
94 handler() | |
95 | |
96 class Menu(SimplePanel): | |
97 | |
98 def __init__(self): | |
99 SimplePanel.__init__(self) | |
100 | |
101 menu_general = MenuBar(vertical=True) | |
102 menu_general.addItem("Properties", MenuCmd(self, "onProperties")) | |
103 | |
104 menu_games = MenuBar(vertical=True) | |
105 menu_games.addItem("Tarot", MenuCmd(self, "onTarotGame")) | |
106 menu_games.addItem("Xiangqi", MenuCmd(self, "onXiangqiGame")) | |
107 | |
108 menubar = MenuBar(vertical=False) | |
109 menubar.addItem(MenuItem("General", menu_general)) | |
110 menubar.addItem(MenuItem("Games", True, menu_games)) | |
111 self.add(menubar) | |
112 | |
113 def onProperties(self): | |
114 Window.alert("Properties selected") | |
115 | |
116 def onTarotGame(self): | |
117 Window.alert("Tarot selected") | |
118 | |
119 def onXiangqiGame(self): | |
120 Window.alert("Xiangqi selected") | |
121 | |
122 class MagicBox(AutoCompleteTextBox): | |
123 | |
11
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
124 def __init__(self, host): |
0 | 125 AutoCompleteTextBox.__init__(self) |
11
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
126 self.host = host |
1 | 127 |
128 def addKey(self, key): | |
129 self.getCompletionItems().completions.append(key) | |
130 | |
11
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
131 def onKeyPress(self, sender, keycode, modifiers): |
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
132 if keycode == KEY_ENTER and not self.visible: |
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
133 self.host.bridge.call('sendMblog', None, self.getText()) |
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
134 self.setText('') |
1 | 135 |
11
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
136 def complete(self): |
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
137 #self.visible=False #XXX: self.visible is not unset in pyjamas when ENTER is pressed and a completion is done |
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
138 #XXX: fixed directly on pyjamas, if the patch is accepted, no need to walk around this |
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
139 return AutoCompleteTextBox.complete(self) |
0 | 140 |
6 | 141 class EmptyPanel(DropWidget, SimplePanel): |
142 """Empty dropable panel""" | |
143 | |
9 | 144 def __init__(self, host, data): |
6 | 145 SimplePanel.__init__(self) |
9 | 146 self.host = host |
147 self.data = data | |
6 | 148 _panel = HTMLPanel(" ") |
149 self.add(_panel) | |
150 self.setHeight('100%') | |
151 DropWidget.__init__(self) | |
152 | |
153 def onDragEnter(self, event): | |
154 self.addStyleName('dragover') | |
155 DOM.eventPreventDefault(event) | |
156 | |
157 def onDragLeave(self, event): | |
158 self.removeStyleName('dragover') | |
159 | |
160 def onDragOver(self, event): | |
161 DOM.eventPreventDefault(event) | |
162 | |
163 def onDrop(self, event): | |
9 | 164 print "Empty Panel: onDrop" |
6 | 165 dt = event.dataTransfer |
166 #'text', 'text/plain', and 'Text' are equivalent. | |
167 try: | |
168 item = dt.getData("text/plain") | |
13 | 169 item_type = dt.getData("type") |
6 | 170 print "message: %s" % item |
13 | 171 print "type: %s" % item_type |
6 | 172 except: |
173 print "no message found" | |
9 | 174 item=' ' |
13 | 175 item_type = None |
6 | 176 DOM.eventPreventDefault(event) |
13 | 177 _mblog = MicroblogPanel(self.host, item) |
178 if item_type=="GROUP": | |
179 _mblog.setAcceptedGroup(item) | |
180 self.host.mpanels.insert(0,_mblog) | |
9 | 181 self.host.middle_panel.changePanel(self.data,self.host.mpanels[0]) |
6 | 182 |
183 | |
184 | |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
185 class MicroblogEntry(SimplePanel): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
186 |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
187 def __init__(self, body, author, timestamp): |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
188 SimplePanel.__init__(self) |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
189 |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
190 _datetime = datetime.fromtimestamp(timestamp) |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
191 |
6 | 192 panel = HTMLPanel("<div class='mb_entry_header'><span class='mb_entry_author'>%(author)s</span> on <span class='mb_entry_timestamp'>%(timestamp)s</span></div><div class='mb_entry_body'>%(body)s</div>" % |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
193 {"author": author, |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
194 "timestamp": _datetime, |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
195 "body": body} |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
196 ) |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
197 panel.setStyleName('microblogEntry') |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
198 self.add(panel) |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
199 |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
200 |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
201 class MicroblogPanel(VerticalPanel): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
202 |
13 | 203 def __init__(self,host, title=' ', accept_all=False): |
204 self.host = host | |
205 self.accept_all = accept_all | |
9 | 206 title=title.replace('<','<').replace('>','>') |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
207 VerticalPanel.__init__(self) |
13 | 208 self.accepted_groups = [] |
9 | 209 _class = ['mb_panel_header'] |
210 if title == ' ': | |
211 _class.append('empty_header') | |
212 self.add(HTMLPanel("<div class='%s'>%s</div>" % (','.join(_class),title))) | |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
213 self.setStyleName('microblogPanel') |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
214 |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
215 def addEntry(self, text, author=None, timestamp=None): |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
216 """Add an entry to the panel |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
217 @param text: main text of the entry |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
218 @param author: who wrote the entry |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
219 @param date: when the entry was written""" |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
220 _entry = MicroblogEntry(text, author, timestamp) |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
221 self.add(_entry) |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
222 |
13 | 223 def setAcceptedGroup(self, group): |
224 """Set the group which can be displayed in this panel | |
225 @param group: string of the group, or list of string | |
226 """ | |
227 if isinstance(group, list): | |
228 self.accepted_groups.extend(group) | |
229 else: | |
230 self.accepted_groups.append(group) | |
231 | |
232 def isJidAccepted(self, jid): | |
233 """Tell if a jid is actepted and show in this panel | |
234 @param jid: jid | |
235 @return: True if the jid is accepted""" | |
236 if self.accept_all: | |
237 return True | |
238 for group in self.accepted_groups: | |
239 if self.host.contactPanel.isContactInGroup(group, jid): | |
240 return True | |
241 return False | |
242 | |
243 | |
0 | 244 class MiddlePannel(HorizontalPanel): |
245 | |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
246 def __init__(self, host): |
1 | 247 self.host=host |
0 | 248 HorizontalPanel.__init__(self) |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
249 self._left = self.host.contactPanel |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
250 self._right = Grid(1,3) |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
251 self._right.setWidth('100%') |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
252 self._right.setHeight('100%') |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
253 self.add(self._left) |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
254 self.setCellWidth(self._left, "15%") |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
255 self.add(self._right) |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
256 self.setCellWidth(self._right, "85%") |
6 | 257 self.setHeight('100%') |
0 | 258 |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
259 def changePanel(self, idx, panel): |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
260 print "panel:",panel |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
261 print "idx:",idx |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
262 self._right.setWidget(0,idx,panel) |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
263 |
0 | 264 class MainPanel(VerticalPanel): |
265 | |
1 | 266 def __init__(self, host): |
267 self.host=host | |
0 | 268 VerticalPanel.__init__(self) |
269 | |
270 self.setHorizontalAlignment(HasAlignment.ALIGN_LEFT) | |
271 self.setVerticalAlignment(HasAlignment.ALIGN_TOP) | |
272 | |
273 menu = Menu() | |
1 | 274 magic_box = host.magicBox |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
275 self.middle_panel = MiddlePannel(self.host) |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
276 self.middle_panel.setWidth('100%') |
0 | 277 |
278 self.add(menu) | |
279 self.add(magic_box) | |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
280 self.add(self.middle_panel) |
0 | 281 |
282 self.setCellHeight(menu, "5%") | |
283 self.setCellHeight(magic_box, "5%") | |
284 self.setCellVerticalAlignment(magic_box, HasAlignment.ALIGN_CENTER) | |
285 self.setCellHorizontalAlignment(magic_box, HasAlignment.ALIGN_CENTER) | |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
286 self.setCellHeight(self.middle_panel, "90%") |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
287 self.setCellWidth(self.middle_panel, "100%") |
0 | 288 |
289 self.setWidth("100%") | |
290 self.setHeight("100%") | |
291 | |
292 class SatWebFrontend: | |
293 def onModuleLoad(self): | |
11
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
294 self.bridge = BridgeCall() |
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
295 self.bridge_signals = BridgeSignals() |
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
296 self.magicBox = MagicBox(self) |
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
297 self.magicBox.addKey("@@: ") |
1 | 298 self.contactPanel = ContactPanel(self) |
299 self.panel = MainPanel(self) | |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
300 self.middle_panel = self.panel.middle_panel |
13 | 301 self.mpanels = [MicroblogPanel(self, accept_all=True)] |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
302 self.middle_panel.changePanel(1,self.mpanels[0]) |
9 | 303 self.middle_panel.changePanel(0,EmptyPanel(self, 0)) |
304 self.middle_panel.changePanel(2,EmptyPanel(self, 2)) | |
0 | 305 self._dialog = None |
306 RootPanel().add(self.panel) | |
307 self._register = RegisterCall() | |
1 | 308 self._register.call('isRegistered',self._isRegisteredCB) |
0 | 309 |
1 | 310 def _isRegisteredCB(self, registered): |
0 | 311 if not registered: |
312 self._dialog = RegisterBox(self.logged,centered=True) | |
313 self._dialog.show() | |
314 else: | |
1 | 315 self._register.call('isConnected', self._isConnectedCB) |
0 | 316 |
1 | 317 def _isConnectedCB(self, connected): |
0 | 318 if not connected: |
319 self._register.call('connect',self.logged) | |
320 else: | |
321 self.logged() | |
322 | |
323 def logged(self): | |
324 if self._dialog: | |
325 self._dialog.hide() | |
326 del self._dialog # don't work if self._dialog is None | |
1 | 327 |
328 #it's time to fill the page | |
11
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
329 self.bridge.call('getContacts', self._getContactsCB) |
331c093e4eb3
magicBox is now able to send global microblog
Goffi <goffi@goffi.org>
parents:
9
diff
changeset
|
330 self.bridge_signals.call('getSignals', self._getSignalsCB) |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
331 |
1 | 332 def _getContactsCB(self, contacts_data): |
333 for contact in contacts_data: | |
334 jid, attributes, groups = contact | |
335 self.contactPanel.addContact(jid, attributes, groups) | |
0 | 336 |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
337 def _getSignalsCB(self, signal_data): |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
338 bridge_signals = BridgeSignals() |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
339 bridge_signals.call('getSignals', self._getSignalsCB) |
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
340 print('Got signal ==> name: %s, params: %s' % (signal_data[0],signal_data[1])) |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
341 name,args = signal_data |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
342 if name == 'personalEvent': |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
343 self._personalEventCb(*args) |
2
669c531a857e
signals handling and first draft of microblogging
Goffi <goffi@goffi.org>
parents:
1
diff
changeset
|
344 |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
345 ## Signals callbacks ## |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
346 |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
347 def _personalEventCb(self, sender, event_type, data, profile): |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
348 if event_type == "MICROBLOG": |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
349 if not data.has_key('content'): |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
350 print ("WARNING: No content found in microblog data") |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
351 return |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
352 for panel in self.mpanels: |
13 | 353 if isinstance(panel,MicroblogPanel) and panel.isJidAccepted(sender): |
354 print "sender:",sender | |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
355 content = data['content'] |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
356 author = data.get('author') |
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
357 print "timestamp: %s" % data.get('timestamp') |
9 | 358 timestamp = float(data.get('timestamp',0)) #XXX: int doesn't work here |
4
7325e787c22b
personalEvent management signal first draft, microblogs are now put in a central grid
Goffi <goffi@goffi.org>
parents:
2
diff
changeset
|
359 panel.addEntry(content, author, timestamp) |
0 | 360 |
361 if __name__ == '__main__': | |
1 | 362 pyjd.setup("http://localhost:8080/libervia.html") |
0 | 363 app = SatWebFrontend() |
364 app.onModuleLoad() | |
365 pyjd.run() | |
366 |