diff --git a/addons/mass_mailing/mass_mailing.py b/addons/mass_mailing/mass_mailing.py index f37f86e385a..ba56bc57d4f 100644 --- a/addons/mass_mailing/mass_mailing.py +++ b/addons/mass_mailing/mass_mailing.py @@ -41,6 +41,8 @@ class MassMailingCampaign(osv.Model): 'opened': len([mail for mail in campaign.mail_ids if mail.opened]), 'replied': len([mail for mail in campaign.mail_ids if mail.replied]), 'bounced': len([mail for mail in campaign.mail_ids if mail.bounced]), + # delivered: shouldn't be: all mails - (failed + bounced) ? + 'delivered': len([mail for mail in campaign.mail_ids if mail.state == 'sent' and not mail.bounced]), } return results @@ -73,12 +75,18 @@ class MassMailingCampaign(osv.Model): 'mail.mail', 'mass_mailing_campaign_id', 'Sent Emails', ), + 'color': fields.integer('Color Index'), # stat fields 'sent': fields.function( _get_statistics, string='Sent Emails', type='integer', multi='_get_statistics' ), + 'delivered': fields.function( + _get_statistics, + string='Delivered', + type='integer', multi='_get_statistics', + ), 'opened': fields.function( _get_statistics, string='Opened', @@ -120,16 +128,16 @@ class MassMailingSegment(osv.Model): } ] """ - month_begin = date.today().replace(day=1) + # month_begin = date.today().replace(day=1) + date_begin = date.today() section_result = [{'value': 0, - 'tooltip': (month_begin + relativedelta.relativedelta(months=-i)).strftime('%B'), + 'tooltip': (date_begin + relativedelta.relativedelta(days=-i)).strftime('%d %B %Y'), } for i in range(self._period_number - 1, -1, -1)] group_obj = obj.read_group(cr, uid, domain, read_fields, groupby_field, context=context) - print group_obj for group in group_obj: group_begin_date = datetime.strptime(group['__domain'][0][2], tools.DEFAULT_SERVER_DATE_FORMAT) - month_delta = relativedelta.relativedelta(month_begin, group_begin_date) - section_result[self._period_number - (month_delta.months + 1)] = {'value': group.get(value_field, 0), 'tooltip': group_begin_date.strftime('%B')} + month_delta = relativedelta.relativedelta(date_begin, group_begin_date) + section_result[self._period_number - (month_delta.days + 1)] = {'value': group.get(value_field, 0), 'tooltip': group.get(groupby_field)} return section_result def _get_monthly_statistics(self, cr, uid, ids, field_name, arg, context=None): @@ -137,8 +145,20 @@ class MassMailingSegment(osv.Model): """ obj = self.pool.get('mail.mail') res = dict.fromkeys(ids, False) - month_begin = date.today().replace(day=1) - groupby_begin = (month_begin + relativedelta.relativedelta(months=-4)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT) + date_begin = date.today() + context['datetime_format'] = { + 'opened': { + 'interval': 'day', + 'groupby_format': 'yyyy-mm-dd', + 'display_format': 'dd MMMM YYYY' + }, + 'replied': { + 'interval': 'day', + 'groupby_format': 'yyyy-mm-dd', + 'display_format': 'dd MMMM YYYY' + }, + } + groupby_begin = (date_begin + relativedelta.relativedelta(days=-4)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT) for id in ids: res[id] = dict() domain = [('mass_mailing_segment_id', '=', id), ('opened', '>=', groupby_begin)] @@ -153,6 +173,7 @@ class MassMailingSegment(osv.Model): for segment in self.browse(cr, uid, ids, context=context): results[segment.id] = { 'sent': len(segment.mail_ids), + 'delivered': len([mail for mail in segment.mail_ids if mail.state == 'sent' and not mail.bounced]), 'opened': len([mail for mail in segment.mail_ids if mail.opened]), 'replied': len([mail for mail in segment.mail_ids if mail.replied]), 'bounced': len([mail for mail in segment.mail_ids if mail.bounced]), @@ -181,6 +202,11 @@ class MassMailingSegment(osv.Model): string='Sent Emails', type='integer', multi='_get_statistics' ), + 'delivered': fields.function( + _get_statistics, + string='Delivered', + type='integer', multi='_get_statistics', + ), 'opened': fields.function( _get_statistics, string='Opened', diff --git a/addons/mass_mailing/mass_mailing_demo.xml b/addons/mass_mailing/mass_mailing_demo.xml index 3e04baf7cef..9f525d61c3a 100644 --- a/addons/mass_mailing/mass_mailing_demo.xml +++ b/addons/mass_mailing/mass_mailing_demo.xml @@ -25,31 +25,31 @@ First Newsletter - + Second Newsletter - + - - + + sent - - + + sent - + sent @@ -58,18 +58,18 @@ - + sent - + sent - + sent diff --git a/addons/mass_mailing/mass_mailing_view.xml b/addons/mass_mailing/mass_mailing_view.xml index 4a3c2b5db07..8d2d003d08b 100644 --- a/addons/mass_mailing/mass_mailing_view.xml +++ b/addons/mass_mailing/mass_mailing_view.xml @@ -23,6 +23,7 @@ + @@ -41,6 +42,7 @@ +
@@ -66,16 +68,23 @@
- -
+
+
+ i +
    +
    • +
    +

- - +
diff --git a/addons/mass_mailing/static/src/css/mass_mailing.css b/addons/mass_mailing/static/src/css/mass_mailing.css index 8b217d8d588..94f8e4ed070 100644 --- a/addons/mass_mailing/static/src/css/mass_mailing.css +++ b/addons/mass_mailing/static/src/css/mass_mailing.css @@ -1,5 +1,5 @@ .openerp .oe_kanban_view .oe_kanban_mass_mailing.oe_kanban_mass_mailing_campaign { - width: 270px; + width: 540px; } .openerp .oe_kanban_view .oe_kanban_mass_mailing.oe_kanban_mass_mailing_segment {