mirror of
https://github.com/NaN-tic/trytond-electronic_mail_template-old.git
synced 2023-12-14 02:42:56 +01:00
Change Party Event to Activity to register events related to party
This commit is contained in:
parent
212454932a
commit
5af52eacbd
81
template.py
81
template.py
|
@ -74,6 +74,9 @@ class Template(ModelSQL, ModelView):
|
|||
help='HTML CSS style')
|
||||
custom_style = fields.Text('Custom Style',
|
||||
help='Custom HTML CSS style')
|
||||
activity = fields.Char('Activity',
|
||||
help='Generate a new activity record related a party:\n' \
|
||||
'${record.party.id}')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
|
@ -314,13 +317,13 @@ class Template(ModelSQL, ModelView):
|
|||
def render_and_send(self, records):
|
||||
"""
|
||||
Render the template and send
|
||||
:param template_id: Template
|
||||
:param records: List Object of the records
|
||||
"""
|
||||
pool = Pool()
|
||||
ElectronicMail = pool.get('electronic.mail')
|
||||
EmailConfiguration = pool.get('electronic.mail.configuration')
|
||||
|
||||
activities = []
|
||||
for record in records:
|
||||
email_message = self.render(record)
|
||||
|
||||
|
@ -345,7 +348,14 @@ class Template(ModelSQL, ModelView):
|
|||
electronic_email.send_email()
|
||||
logger.info('Send email: %s' %
|
||||
(electronic_email.rec_name))
|
||||
self.add_event(record, electronic_email) # add event
|
||||
activities.append({
|
||||
'record': record,
|
||||
'template': self,
|
||||
'mail': electronic_email,
|
||||
})
|
||||
|
||||
if activities:
|
||||
self.add_activities(activities) # add activities
|
||||
return
|
||||
|
||||
@classmethod
|
||||
|
@ -363,28 +373,63 @@ class Template(ModelSQL, ModelView):
|
|||
trigger = Trigger(trigger_id)
|
||||
return trigger.email_template.render_and_send(records)
|
||||
|
||||
def add_event(self, record, electronic_email):
|
||||
@classmethod
|
||||
def add_activities(cls, records):
|
||||
"""
|
||||
Add event if party_event is installed
|
||||
:param template: Browse Record of the template
|
||||
:param record: Browse record of the record
|
||||
:param electronic_email: Browse record email to send
|
||||
Add activities related to party
|
||||
:param records: {'record', 'template', 'mail'}
|
||||
"""
|
||||
cursor = Transaction().cursor
|
||||
cursor.execute(
|
||||
"SELECT state "
|
||||
"from ir_module "
|
||||
"where state='installed' and name = 'party_event'")
|
||||
party_event = cursor.fetchall()
|
||||
if party_event and self.party:
|
||||
party = self.eval(self.party, record)
|
||||
resource = 'electronic.mail,%s' % electronic_email.id
|
||||
values = {
|
||||
'subject': electronic_email.subject,
|
||||
'description': electronic_email.body_plain,
|
||||
}
|
||||
Pool().get('party.event').create_event(party, resource, values)
|
||||
return True
|
||||
"where state='installed' and name = 'activity'")
|
||||
activity_installed = cursor.fetchall()
|
||||
if not activity_installed:
|
||||
return
|
||||
|
||||
pool = Pool()
|
||||
Activity = pool.get('activity.activity')
|
||||
ActivityType = pool.get('activity.type')
|
||||
ActivityReference = pool.get('activity.reference')
|
||||
ModelData = pool.get('ir.model.data')
|
||||
Party = pool.get('party.party')
|
||||
|
||||
type_id = ActivityType(ModelData.get_id(
|
||||
'activity', 'outgoing_email_type'))
|
||||
|
||||
activities = []
|
||||
for r in records:
|
||||
record = r['record']
|
||||
template = r['template']
|
||||
mail = r['mail']
|
||||
|
||||
if template.activity:
|
||||
activity = Activity()
|
||||
activity.activity_type = type_id
|
||||
activity.subject = mail.subject
|
||||
activity.activity_type
|
||||
activity.resource = 'electronic.mail,%s' % mail.id
|
||||
activity.state = 'held'
|
||||
activity.description = mail.body_plain
|
||||
|
||||
party = template.eval(template.activity, record)
|
||||
if party:
|
||||
activity.party = Party(party)
|
||||
|
||||
resources = ActivityReference.search([
|
||||
('model', '=', template.model)
|
||||
])
|
||||
if resources:
|
||||
resource, = resources
|
||||
activity.resource = '%s,%s' % (
|
||||
resource.model.model,
|
||||
record.id)
|
||||
|
||||
activities.append(activity)
|
||||
|
||||
if activities:
|
||||
Activity.save(activities)
|
||||
|
||||
def get_attachments(self, records):
|
||||
record_ids = [r.id for r in records]
|
||||
|
|
|
@ -46,4 +46,12 @@ The COPYRIGHT file at the top level of this repository contains the full copyrig
|
|||
<field name="group" ref="electronic_mail.group_email_admin"/>
|
||||
</record>
|
||||
</data>
|
||||
|
||||
<data depends="activity">
|
||||
<record model="ir.ui.view" id="activity_template_view_form">
|
||||
<field name="model">electronic.mail.template</field>
|
||||
<field name="inherit" ref="electronic_mail_template.template_view_form"/>
|
||||
<field name="name">activity_electronic_mail_template_form</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
|
|
|
@ -5,6 +5,8 @@ depends:
|
|||
res
|
||||
smtp
|
||||
electronic_mail
|
||||
extra-depends:
|
||||
activity
|
||||
xml:
|
||||
template.xml
|
||||
trigger.xml
|
||||
|
|
12
view/activity_electronic_mail_template_form.xml
Normal file
12
view/activity_electronic_mail_template_form.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- This file is part of electronic_mail_template module for Tryton.
|
||||
The COPYRIGHT file at the top level of this repository contains the full
|
||||
copyright notices and license terms. -->
|
||||
<data>
|
||||
<xpath
|
||||
expr="/form/notebook/page[@id='general']/group[@id='addresses']/field[@name='bcc']"
|
||||
position="after">
|
||||
<label name="activity"/>
|
||||
<field name="activity"/>
|
||||
</xpath>
|
||||
</data>
|
Loading…
Reference in a new issue