|
1 # |
|
2 # Copyright (c) 2008-2018 Thierry Florac <tflorac AT ulthar.net> |
|
3 # All Rights Reserved. |
|
4 # |
|
5 # This software is subject to the provisions of the Zope Public License, |
|
6 # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. |
|
7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
|
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
|
10 # FOR A PARTICULAR PURPOSE. |
|
11 # |
|
12 |
|
13 __docformat__ = 'restructuredtext' |
|
14 |
|
15 from zope.dublincore.interfaces import IZopeDublinCore |
|
16 |
|
17 from pyams_utils.interfaces import ICacheKeyValue |
|
18 from pyams_utils.url import absolute_url |
|
19 |
|
20 |
|
21 def get_json_refresh_event(object_id, content): |
|
22 """Get JSON response for basic refresh event""" |
|
23 return { |
|
24 'event': 'myams.refresh', |
|
25 'options': { |
|
26 'handler': 'MyAMS.skin.refreshContent', |
|
27 'object_id': object_id, |
|
28 'content': content |
|
29 } |
|
30 } |
|
31 |
|
32 |
|
33 def get_json_image_refresh_event(image, request, source=None): |
|
34 """Get JSON response for image refresh event""" |
|
35 dc = IZopeDublinCore(image) |
|
36 src = absolute_url(image if source is None else source, request) |
|
37 target = absolute_url(image, request) |
|
38 return { |
|
39 'event': 'myams.refresh', |
|
40 'options': { |
|
41 'handler': 'MyAMS.skin.refreshImage', |
|
42 'src': src, |
|
43 'target': '{0}?_={1}'.format(target, dc.modified.timestamp()) |
|
44 } |
|
45 } |
|
46 |
|
47 |
|
48 def get_json_form_refresh_event(context, request, form_factory): |
|
49 """Get JSON response for form refresh event""" |
|
50 form = form_factory(context, request) |
|
51 form.ignoreRequest = True |
|
52 form.update() |
|
53 return { |
|
54 'event': 'myams.refresh', |
|
55 'options': { |
|
56 'handler': 'MyAMS.skin.refreshContent', |
|
57 'object_id': form.id, |
|
58 'content': form.render() |
|
59 } |
|
60 } |
|
61 |
|
62 |
|
63 def get_json_widget_refresh_event(context, request, form_factory, widget): |
|
64 """Get JSON response for form widget refresh event""" |
|
65 form = form_factory(context, request) |
|
66 form.ignoreRequest = True |
|
67 form.update() |
|
68 widget = form.widgets[widget] |
|
69 return { |
|
70 'event': 'myams.refresh', |
|
71 'options': { |
|
72 'handler': 'MyAMS.skin.refreshWidget', |
|
73 'parent_id': form.id, |
|
74 'widget_name': widget.name, |
|
75 'content': widget.render() |
|
76 } |
|
77 } |
|
78 |
|
79 |
|
80 def get_json_table_refresh_event(context, request, table_factory): |
|
81 """Get JSON response for table refresh event""" |
|
82 table = table_factory(context, request) |
|
83 table.update() |
|
84 return { |
|
85 'event': 'myams.refresh', |
|
86 'options': { |
|
87 'handler': 'MyAMS.skin.refreshTable', |
|
88 'object_id': table.id, |
|
89 'table': table.render() |
|
90 } |
|
91 } |
|
92 |
|
93 |
|
94 def get_json_switched_table_refresh_event(context, request, table_factory): |
|
95 """Get JSON response for switched table refresh event""" |
|
96 table = table_factory(context, request) |
|
97 table.update() |
|
98 return { |
|
99 'event': 'myams.refresh', |
|
100 'options': { |
|
101 'handler': 'MyAMS.skin.refreshSwitchedTable', |
|
102 'object_id': table.id, |
|
103 'table': table.render() |
|
104 } |
|
105 } |
|
106 |
|
107 |
|
108 def get_json_table_row_refresh_event(context, request, table_factory, table_item): |
|
109 """Get JSON response for table row refresh event""" |
|
110 table = table_factory(context, request) |
|
111 table.update() |
|
112 row = table.setUpRow(table_item) |
|
113 return { |
|
114 'event': 'myams.refresh', |
|
115 'options': { |
|
116 'handler': 'MyAMS.skin.refreshRow', |
|
117 'object_id': '{0}::{1}'.format(table.id, ICacheKeyValue(table_item)), |
|
118 'row': table.renderRow(row) |
|
119 } |
|
120 } |
|
121 |
|
122 |
|
123 def get_json_table_cell_refresh_event(context, request, object_id, col_name, cell_content=None, column_factory=None): |
|
124 """Get JSON response for table cell refresh event""" |
|
125 if cell_content is None: |
|
126 column = column_factory(context, request, None) |
|
127 cell_content = column.renderCell(context) |
|
128 return { |
|
129 'event': 'myams.refresh', |
|
130 'options': { |
|
131 'handler': 'MyAMS.skin.refreshRowCell', |
|
132 'object_id': object_id, |
|
133 'col_name': col_name, |
|
134 'cell': cell_content |
|
135 } |
|
136 } |