[MERGE] forward port branch 9.0 up to 35aa2a977f
This commit is contained in:
@@ -165,7 +165,7 @@ class hr_timesheet_sheet_sheet_day(models.Model):
|
||||
ON r.user_id = u.id
|
||||
LEFT JOIN res_partner p
|
||||
ON u.partner_id = p.id
|
||||
WHERE check_out IS NOT NULL
|
||||
WHERE a.check_out IS NOT NULL
|
||||
group by (a.check_in AT TIME ZONE 'UTC' AT TIME ZONE coalesce(p.tz, 'UTC'))::date, s.id, timezone
|
||||
)) AS foo
|
||||
GROUP BY name, sheet_id, timezone
|
||||
|
||||
@@ -94,6 +94,7 @@ class Message(models.Model):
|
||||
tracking_value_ids = fields.One2many(
|
||||
'mail.tracking.value', 'mail_message_id',
|
||||
string='Tracking values',
|
||||
groups="base.group_no_one",
|
||||
help='Tracked values are stored in a separate model. This field allow to reconstruct '
|
||||
'the tracking and to generate statistics on the model.')
|
||||
# mail gateway
|
||||
@@ -281,7 +282,7 @@ class Message(models.Model):
|
||||
# 1. Aggregate partners (author_id and partner_ids), attachments and tracking values
|
||||
partners = self.env['res.partner'].sudo()
|
||||
attachments = self.env['ir.attachment']
|
||||
trackings = self.env['mail.tracking.value']
|
||||
message_ids = message_tree.keys()
|
||||
for key, message in message_tree.iteritems():
|
||||
if message.author_id:
|
||||
partners |= message.author_id
|
||||
@@ -293,8 +294,6 @@ class Message(models.Model):
|
||||
partners |= message.needaction_partner_ids
|
||||
if message.attachment_ids:
|
||||
attachments |= message.attachment_ids
|
||||
if message.tracking_value_ids:
|
||||
trackings |= message.tracking_value_ids
|
||||
# Read partners as SUPERUSER -> message being browsed as SUPERUSER it is already the case
|
||||
partners_names = partners.name_get()
|
||||
partner_tree = dict((partner[0], partner) for partner in partners_names)
|
||||
@@ -309,13 +308,18 @@ class Message(models.Model):
|
||||
}) for attachment in attachments_data)
|
||||
|
||||
# 3. Tracking values
|
||||
tracking_tree = dict((tracking.id, {
|
||||
'id': tracking.id,
|
||||
'changed_field': tracking.field_desc,
|
||||
'old_value': tracking.get_old_display_value()[0],
|
||||
'new_value': tracking.get_new_display_value()[0],
|
||||
'field_type': tracking.field_type,
|
||||
}) for tracking in trackings)
|
||||
tracking_values = self.env['mail.tracking.value'].sudo().search([('mail_message_id', 'in', message_ids)])
|
||||
message_to_tracking = dict()
|
||||
tracking_tree = dict.fromkeys(tracking_values.ids, False)
|
||||
for tracking in tracking_values:
|
||||
message_to_tracking.setdefault(tracking.mail_message_id.id, list()).append(tracking.id)
|
||||
tracking_tree[tracking.id] = {
|
||||
'id': tracking.id,
|
||||
'changed_field': tracking.field_desc,
|
||||
'old_value': tracking.get_old_display_value()[0],
|
||||
'new_value': tracking.get_new_display_value()[0],
|
||||
'field_type': tracking.field_type,
|
||||
}
|
||||
|
||||
# 4. Update message dictionaries
|
||||
for message_dict in messages:
|
||||
@@ -342,9 +346,9 @@ class Message(models.Model):
|
||||
if attachment.id in attachments_tree:
|
||||
attachment_ids.append(attachments_tree[attachment.id])
|
||||
tracking_value_ids = []
|
||||
for tracking_value in message.tracking_value_ids:
|
||||
if tracking_value.id in tracking_tree:
|
||||
tracking_value_ids.append(tracking_tree[tracking_value.id])
|
||||
for tracking_value_id in message_to_tracking.get(message_id, list()):
|
||||
if tracking_value_id in tracking_tree:
|
||||
tracking_value_ids.append(tracking_tree[tracking_value_id])
|
||||
|
||||
message_dict.update({
|
||||
'author_id': author,
|
||||
@@ -723,7 +727,12 @@ class Message(models.Model):
|
||||
if 'record_name' not in values and 'default_record_name' not in self.env.context:
|
||||
values['record_name'] = self._get_record_name(values)
|
||||
|
||||
# delegate creation of tracking after the create as sudo to avoid access rights issues
|
||||
tracking_values_cmd = values.pop('tracking_value_ids', False)
|
||||
message = super(Message, self).create(values)
|
||||
if tracking_values_cmd:
|
||||
message.sudo().write({'tracking_value_ids': tracking_values_cmd})
|
||||
|
||||
message._invalidate_documents()
|
||||
|
||||
if not self.env.context.get('message_create_from_mail_mail'):
|
||||
|
||||
@@ -69,7 +69,7 @@ class Partner(models.Model):
|
||||
record_name = message.record_name
|
||||
|
||||
tracking = []
|
||||
for tracking_value in message.tracking_value_ids:
|
||||
for tracking_value in self.env['mail.tracking.value'].sudo().search([('mail_message_id', '=', message.id)]):
|
||||
tracking.append((tracking_value.field_desc,
|
||||
tracking_value.get_old_display_value()[0],
|
||||
tracking_value.get_new_display_value()[0]))
|
||||
|
||||
@@ -23,9 +23,9 @@ access_mail_alias_user,mail.alias.user,model_mail_alias,base.group_user,1,1,1,1
|
||||
access_mail_alias_system,mail.alias.system,model_mail_alias,base.group_system,1,1,1,1
|
||||
access_mail_message_subtype_all,mail.message.subtype.all,model_mail_message_subtype,,1,0,0,0
|
||||
access_mail_message_subtype_user,mail.message.subtype.user,model_mail_message_subtype,,1,1,1,1
|
||||
access_mail_tracking_value_all,mail.tracking.value.all,model_mail_tracking_value,,1,0,0,0
|
||||
access_mail_tracking_value_portal,mail.tracking.value.portal,model_mail_tracking_value,base.group_portal,1,1,1,1
|
||||
access_mail_tracking_value_user,mail.tracking.value.user,model_mail_tracking_value,base.group_user,1,1,1,1
|
||||
access_mail_tracking_value_all,mail.tracking.value.all,model_mail_tracking_value,,0,0,0,0
|
||||
access_mail_tracking_value_portal,mail.tracking.value.portal,model_mail_tracking_value,base.group_portal,0,0,0,0
|
||||
access_mail_tracking_value_user,mail.tracking.value.user,model_mail_tracking_value,base.group_user,0,0,0,0
|
||||
access_mail_tracking_value_system,mail.tracking.value.system,model_mail_tracking_value,base.group_system,1,1,1,1
|
||||
access_mail_thread_all,mail.thread.all,model_mail_thread,,1,1,1,1
|
||||
access_publisher_warranty_contract_all,publisher.warranty.contract.all,model_publisher_warranty_contract,,1,1,1,1
|
||||
|
||||
|
@@ -293,9 +293,11 @@ class WebsiteSlides(http.Controller):
|
||||
|
||||
@http.route(['/slides/add_slide'], type='json', auth='user', methods=['POST'], website=True)
|
||||
def create_slide(self, *args, **post):
|
||||
file_size = len(post['datas']) * 3 / 4; # base64
|
||||
if (file_size / 1024.0 / 1024.0) > 25:
|
||||
return {'error': _('File is too big. File size cannot exceed 25MB')}
|
||||
# check the size only when we upload a file.
|
||||
if post.get('datas'):
|
||||
file_size = len(post['datas']) * 3 / 4 # base64
|
||||
if (file_size / 1024.0 / 1024.0) > 25:
|
||||
return {'error': _('File is too big. File size cannot exceed 25MB')}
|
||||
|
||||
values = dict((fname, post[fname]) for fname in [
|
||||
'name', 'url', 'tag_ids', 'slide_type', 'channel_id',
|
||||
|
||||
Reference in New Issue
Block a user