Merge lp:~openerp-dev/openobject-addons/trunk-scroll-load-chatter-2-aja into lp:openobject-addons

Proposed by ajay javiya (OpenERP)
Status: Needs review
Proposed branch: lp:~openerp-dev/openobject-addons/trunk-scroll-load-chatter-2-aja
Merge into: lp:openobject-addons
Diff against target: 241 lines (+62/-18)
4 files modified
mail/doc/mail_message.rst (+4/-0)
mail/mail_message.py (+15/-10)
mail/static/src/js/mail.js (+13/-8)
mail/tests/test_message_read.py (+30/-0)
To merge this branch: bzr merge lp:~openerp-dev/openobject-addons/trunk-scroll-load-chatter-2-aja
Reviewer Review Type Date Requested Status
OpenERP Core Team Pending
Review via email: mp+200002@code.launchpad.net

Description of the change

Hello,
ADD:
 -> load a chatter messages on scroll.
 -> Test case for chatter message on scroll.
 -> Changelog.
Thank You.

To post a comment you must log in.
9027. By ajay javiya (OpenERP)

[REM]: unwanted code

9028. By ajay javiya (OpenERP)

[MERGE]: with trunk

9029. By ajay javiya (OpenERP)

[MERGE]: with trunk

9030. By ajay javiya (OpenERP)

[MERGE] : with trunk

9031. By Mahendra Barad(OpenERP)

[IMP]display no of message limit if message is more than limit then display show more after display limited message

9032. By ajay javiya (OpenERP)

[MERGE] : with trunk

9033. By ajay javiya (OpenERP)

[FIX] : number of message display on wall wrong

9034. By Chirag Dodiya(OpenERP)

[MRG]Merge with lp:openobject-addons

9035. By Amit Vora(OpenERP)

[MERGE] merge with main branch

9036. By Chirag Dodiya(OpenERP)

[MRG]Merge with lp:openobject-addons

9037. By ajay javiya (OpenERP)

[MERGE] : with trunk

9038. By ajay javiya (OpenERP)

[MERGE] : with trunk

9039. By ajay javiya (OpenERP)

[MERGE] : withn trunk

9040. By ajay javiya (OpenERP)

[FIX] :message are misplaced in wall on scroll

9041. By ajay javiya (OpenERP)

[FIX] : In chatter 'send message' link misplaced

9042. By ajay javiya (OpenERP)

[MERGE] : with trunk

Unmerged revisions

9042. By ajay javiya (OpenERP)

[MERGE] : with trunk

9041. By ajay javiya (OpenERP)

[FIX] : In chatter 'send message' link misplaced

9040. By ajay javiya (OpenERP)

[FIX] :message are misplaced in wall on scroll

9039. By ajay javiya (OpenERP)

[MERGE] : withn trunk

9038. By ajay javiya (OpenERP)

[MERGE] : with trunk

9037. By ajay javiya (OpenERP)

[MERGE] : with trunk

9036. By Chirag Dodiya(OpenERP)

[MRG]Merge with lp:openobject-addons

9035. By Amit Vora(OpenERP)

[MERGE] merge with main branch

9034. By Chirag Dodiya(OpenERP)

[MRG]Merge with lp:openobject-addons

9033. By ajay javiya (OpenERP)

[FIX] : number of message display on wall wrong

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'mail/doc/mail_message.rst'
2--- mail/doc/mail_message.rst 2013-02-05 15:55:56 +0000
3+++ mail/doc/mail_message.rst 2014-04-25 10:31:15 +0000
4@@ -109,3 +109,7 @@
5 expandable messages. The expandable messages contain the domain to expand.
6 - ``check_access_rule`` :
7 Overwrite the initial message for this model.
8+ - ``_message_read_add_expandables`` :
9+ add paremeter max_limit ,telling we have overlimit messages.
10+ - ``_get_expandable`` :
11+ add parameters limit.
12
13=== modified file 'mail/mail_message.py'
14--- mail/mail_message.py 2014-04-15 14:49:43 +0000
15+++ mail/mail_message.py 2014-04-25 10:31:15 +0000
16@@ -69,7 +69,7 @@
17 _order = 'id desc'
18 _rec_name = 'record_name'
19
20- _message_read_limit = 30
21+ _message_read_limit = 50
22 _message_read_fields = ['id', 'parent_id', 'model', 'res_id', 'body', 'subject', 'date', 'to_read', 'email_from',
23 'type', 'vote_user_ids', 'attachment_ids', 'author_id', 'partner_ids', 'record_name']
24 _message_record_name_length = 18
25@@ -409,7 +409,7 @@
26 }
27
28 def _message_read_add_expandables(self, cr, uid, messages, message_tree, parent_tree,
29- message_unload_ids=[], thread_level=0, domain=[], parent_id=False, context=None):
30+ message_unload_ids=[], thread_level=0, domain=[], parent_id=False, max_limit=False, context=None):
31 """ Create expandables for message_read, to load new messages.
32 1. get the expandable for new threads
33 if display is flat (thread_level == 0):
34@@ -432,13 +432,14 @@
35 to load
36 :return bool: True
37 """
38- def _get_expandable(domain, message_nb, parent_id, max_limit):
39+ def _get_expandable(domain, message_nb, parent_id, limit, max_limit):
40 return {
41 'domain': domain,
42 'nb_messages': message_nb,
43 'type': 'expandable',
44 'parent_id': parent_id,
45 'max_limit': max_limit,
46+ 'limit': limit,
47 }
48
49 if not messages:
50@@ -454,10 +455,10 @@
51 if ids:
52 # inside a thread: prepend
53 if parent_id:
54- messages.insert(0, _get_expandable(exp_domain, -1, parent_id, True))
55+ messages.insert(0, _get_expandable(exp_domain, -1, parent_id, self._message_read_limit, max_limit))
56 # new threads: append
57 else:
58- messages.append(_get_expandable(exp_domain, -1, parent_id, True))
59+ messages.append(_get_expandable(exp_domain, -1, parent_id, self._message_read_limit, max_limit))
60
61 # 2. get the expandables for new messages inside threads if display is not flat
62 if thread_level == 0:
63@@ -488,7 +489,7 @@
64 exp_domain = [('id', '>=', id_min), ('id', '<=', id_max), ('id', 'child_of', message_id)]
65 idx = [msg.get('id') for msg in messages].index(child_id) + 1
66 # messages.append(_get_expandable(exp_domain, nb, message_id, False))
67- messages.insert(idx, _get_expandable(exp_domain, nb, message_id, False))
68+ messages.insert(idx, _get_expandable(exp_domain, nb, message_id, False, False))
69 id_min, id_max, nb = max(child_ids), 0, 0
70 else:
71 id_min, id_max, nb = max(child_ids), 0, 0
72@@ -496,7 +497,7 @@
73 exp_domain = [('id', '>=', id_min), ('id', '<=', id_max), ('id', 'child_of', message_id)]
74 idx = [msg.get('id') for msg in messages].index(message_id) + 1
75 # messages.append(_get_expandable(exp_domain, nb, message_id, id_min))
76- messages.insert(idx, _get_expandable(exp_domain, nb, message_id, False))
77+ messages.insert(idx, _get_expandable(exp_domain, nb, message_id, False, False))
78
79 return True
80
81@@ -534,10 +535,14 @@
82 message_tree = {}
83 message_list = []
84 parent_tree = {}
85-
86+ max_limit = False
87 # no specific IDS given: fetch messages according to the domain, add their parents if uid has access to
88 if ids is None:
89- ids = self.search(cr, uid, domain, context=context, limit=limit)
90+ ids = self.search(cr, uid, domain, context=context)
91+ if ids:
92+ if len(ids) > limit:
93+ max_limit = True
94+ ids = limit and ids[:limit] or ids
95
96 # fetch parent if threaded, sort messages
97 for message in self.browse(cr, uid, ids, context=context):
98@@ -575,7 +580,7 @@
99 # get the child expandable messages for the tree
100 self._message_read_dict_postprocess(cr, uid, message_list, message_tree, context=context)
101 self._message_read_add_expandables(cr, uid, message_list, message_tree, parent_tree,
102- thread_level=thread_level, message_unload_ids=message_unload_ids, domain=domain, parent_id=parent_id, context=context)
103+ thread_level=thread_level, message_unload_ids=message_unload_ids, domain=domain, parent_id=parent_id, max_limit=max_limit, context=context)
104 return message_list
105
106 #------------------------------------------------------
107
108=== modified file 'mail/static/src/js/mail.js'
109--- mail/static/src/js/mail.js 2014-03-25 14:25:35 +0000
110+++ mail/static/src/js/mail.js 2014-04-25 10:31:15 +0000
111@@ -694,7 +694,7 @@
112 var thread = thread.parent_message.parent_thread;
113 }
114 // create object and attach to the thread object
115- thread.message_fetch([["id", "=", message_id]], false, [message_id], function (arg, data) {
116+ thread.message_fetch([["id", "=", message_id]], false, [message_id], false, function (arg, data) {
117 var message = thread.create_message_object( data.slice(-1)[0] );
118 // insert the message on dom
119 thread.insert_message( message, root ? undefined : self.$el, root );
120@@ -835,6 +835,7 @@
121 this.type = 'expandable';
122 this.max_limit = datasets.max_limit;
123 this.nb_messages = datasets.nb_messages;
124+ this.limit = datasets.limit || datasets.nb_messages;
125 this.flag_used = false;
126 },
127
128@@ -877,8 +878,9 @@
129 var self = this;
130
131 // read messages
132- self.parent_thread.message_fetch(this.domain, this.context, false, function (arg, data) {
133+ self.parent_thread.message_fetch(this.domain, this.context, false, this.limit, function (arg, data) {
134 self.id = false;
135+ data = self.options.display_reverse ? data.reverse() : data //when display_reverse is true then show msg in last to first seq.
136 // insert the message on dom after this message
137 self.parent_thread.switch_new_message( data, self.$el );
138 self.animated_destroy(200);
139@@ -1184,7 +1186,6 @@
140 this.partner_ids = datasets.partner_ids;
141 this.messages = [];
142 this.options.flat_mode = (this.options.display_indented_thread - this.thread_level > 0);
143-
144 // object compose message
145 this.compose_message = false;
146
147@@ -1372,7 +1373,7 @@
148 * @param {Object} replace_context: added to this.context
149 * @param {Array} ids read (if the are some ids, the method don't use the domain)
150 */
151- message_fetch: function (replace_domain, replace_context, ids, callback) {
152+ message_fetch: function (replace_domain, replace_context, ids, limit, callback) {
153 return this.ds_message.call('message_read', [
154 // ids force to read
155 ids === false ? undefined : ids,
156@@ -1385,7 +1386,8 @@
157 // context + additional
158 (replace_context ? replace_context : this.context),
159 // parent_id
160- this.context.default_parent_id || undefined
161+ this.context.default_parent_id || undefined,
162+ limit=limit,
163 ]).done(callback ? _.bind(callback, this, arguments) : this.proxy('switch_new_message')
164 ).done(this.proxy('message_fetch_set_read'));
165 },
166@@ -1462,9 +1464,10 @@
167 if (dom_insert_after && dom_insert_after.parent()[0] == self.$el[0]) {
168 message.insertAfter(dom_insert_after);
169 } else if (prepend) {
170- message.prependTo(self.$el);
171+ message.prependTo(self.options.view_mailbox ? self.$el.parent() : self.$el);
172 } else {
173- message.appendTo(self.$el);
174+ //in wall thread must be add to parent thread
175+ message.appendTo(self.options.view_mailbox ? self.$el.parent() : self.$el);
176 }
177 message.$el.hide().fadeIn(500);
178
179@@ -1702,7 +1705,7 @@
180 this.thread.compose_message.do_show_compact();
181 }
182
183- this.thread.message_fetch(null, null, this.action.params.message_ids);
184+ this.thread.message_fetch(null, null, this.action.params.message_ids, false);
185
186 },
187
188@@ -1741,6 +1744,7 @@
189 'show_record_name': false,
190 'show_compact_message': 1,
191 'display_log_button' : true,
192+ 'display_reverse' : true,
193 }, this.node.params);
194 if (this.node.attrs.placeholder) {
195 this.node.params.compose_placeholder = this.node.attrs.placeholder;
196@@ -1865,6 +1869,7 @@
197 'show_compact_message': this.action.params.view_mailbox ? false : 1,
198 'view_inbox': false,
199 'emails_from_on_composer': false,
200+ 'display_reverse' : false,
201 }, this.action.params);
202 },
203
204
205=== modified file 'mail/tests/test_message_read.py'
206--- mail/tests/test_message_read.py 2013-10-27 12:31:04 +0000
207+++ mail/tests/test_message_read.py 2014-04-25 10:31:15 +0000
208@@ -187,3 +187,33 @@
209 self.assertEqual(len(read_msg_list), 9, 'message_read on Pigs should return 9 messages and 0 expandable')
210 self.assertEqual([msg_id8, msg_id7, msg_id6, msg_id5, msg_id4, msg_id3, msg_id2, msg_id1, msg_id0], read_msg_ids,
211 'message_read, More on flat, should return all remaning messages')
212+
213+ def test_10_message_read(self):
214+ """ Tests for message_read onscroll. """
215+ cr, uid, user_admin, user_raoul, group_pigs = self.cr, self.uid, self.user_admin, self.user_raoul, self.group_pigs
216+ msg_ids = []
217+ pigs_domain = [('model', '=', 'mail.group'), ('res_id', '=', self.group_pigs_id)]
218+ # Post 27 msg
219+ for msg in range(0,27):
220+ msg_ids.append(self.group_pigs.message_post(body='test %s' % msg, subtype='mt_comment'))
221+ # Test : message_read with limit 10
222+ read_msg_list = self.mail_message.message_read(cr, uid,domain=pigs_domain, limit=10)
223+ read_msg_ids = [msg.get('id') for msg in read_msg_list if msg.get('type') != 'expandable']
224+ self.assertEqual(len(read_msg_list), 11, 'message_read on Pigs should return 10 messages and 1 expandable')
225+ new_threads_exp, new_msg_exp = None, None
226+ for msg in read_msg_list:
227+ if msg.get('type') == 'expandable' and msg.get('nb_messages') == -1 and msg.get('max_limit'):
228+ new_threads_exp = msg
229+ # Read 10 msg in second thread
230+ read_msg_list = self.mail_message.message_read(cr, uid, domain=new_threads_exp['domain'], limit=10)
231+ read_msg_ids = [msg.get('id') for msg in read_msg_list if msg.get('type') != 'expandable']
232+ self.assertEqual(len(read_msg_list), 11, 'message_read on Pigs should return 10 messages and 1 expandable')
233+ new_threads_exp, new_msg_exp = None, None
234+ for msg in read_msg_list:
235+ if msg.get('type') == 'expandable' and msg.get('nb_messages') == -1 and msg.get('max_limit'):
236+ new_threads_exp = msg
237+ # Read all remaining 7 msg in third thread
238+ read_msg_list = self.mail_message.message_read(cr, uid, domain=new_threads_exp['domain'], limit=10)
239+ read_msg_ids = [msg.get('id') for msg in read_msg_list if msg.get('type') != 'expandable']
240+ self.assertEqual(len(read_msg_list), 7, 'message_read on Pigs should return 7 messages and 0 expandable')
241+

Subscribers

People subscribed via source and target branches

to all changes: