Skip to content

Commit 14e0edb

Browse files
committed
Fixed duplicated omail ID
1 parent fac4f31 commit 14e0edb

2 files changed

Lines changed: 25 additions & 42 deletions

File tree

imio/dms/mail/browser/templates/actions_panel_duplicate.pt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
class="overlay"
55
tal:define="dummy view/saveHasActions;">
66
<input tal:condition="not:view/useIcons" type="button" value="Duplicate" class="apButton apButtonAction apButtonAction_duplicate" i18n:attributes="value" />
7-
<img tal:condition="view/useIcons" i18n:attributes="title" title="Dupliquer" tal:attributes="src string: ${view/portal_url}/++resource++imio.dms.mail/copy.svg;"/>
7+
<img tal:condition="view/useIcons" i18n:attributes="title" title="Duplicate outgoing mail" tal:attributes="src string: ${view/portal_url}/++resource++imio.dms.mail/copy.svg;"/>
88
</a>
99
</td>
1010
<td class="noPadding">

imio/dms/mail/browser/views.py

Lines changed: 24 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22
from AccessControl import getSecurityManager
33
from collective.ckeditortemplates.cktemplate import ICKTemplate
44
from collective.dms.basecontent.dmsfile import IDmsAppendixFile
5-
from collective.dms.mailcontent.dmsmail import internalReferenceOutgoingMailDefaultValue
65
from datetime import datetime
7-
from DateTime import DateTime
86
from eea.faceted.vocabularies.autocomplete import IAutocompleteSuggest
97
from imio.dms.mail import _
108
from imio.dms.mail import _tr
@@ -23,12 +21,11 @@
2321
from imio.helpers.emailer import get_mail_host
2422
from imio.helpers.emailer import send_email
2523
from imio.helpers.fancytree.views import BaseRenderFancyTree
24+
from imio.helpers.transmogrifier import get_correct_id
2625
from imio.helpers.workflow import do_transitions
2726
from imio.helpers.xhtml import object_link
2827
from imio.pyutils.utils import safe_encode
2928
from plone import api
30-
from plone.supermodel import model
31-
from Products.CMFCore.utils import getToolByName
3229
from Products.CMFPlone.utils import safe_unicode
3330
from Products.Five import BrowserView
3431
from Products.PageTemplates.Expressions import SecureModuleImporter
@@ -132,63 +129,49 @@ def handleApply(self, action):
132129
return
133130

134131
# Duplicate the mail
135-
# duplicated_mail.creation_date = DateTime()
136-
# duplicated_mail.reindexObject(idxs=['created'])
137-
# duplicated_mail.internal_reference_no = internalReferenceOutgoingMailDefaultValue(self)
138-
# duplicated_mail.due_date = None
139-
# duplicated_mail.outgoing_date = None
140-
# duplicated_mail.mail_date = None
141132
original_mail = self.context
142-
i = 0
143-
while True:
144-
try:
145-
print(i)
146-
duplicated_mail = sub_create(
147-
api.portal.get()["outgoing-mail"],
148-
"dmsoutgoingmail",
149-
datetime.now(),
150-
"my-id-%s" % i, # TODO use a better id
151-
title=original_mail.title,
152-
description=original_mail.description,
153-
recipients=original_mail.recipients[:] if original_mail.recipients else None,
154-
treating_groups=original_mail.treating_groups[:] if original_mail.treating_groups else None,
155-
assigned_user= original_mail.assigned_user,
156-
sender=original_mail.sender,
157-
recipient_groups=original_mail.recipient_groups[:] if original_mail.recipient_groups else None,
158-
send_modes= original_mail.send_modes[:] if original_mail.send_modes else None,
159-
task_description=original_mail.task_description,
160-
)
161-
except Exception as e:
162-
i += 1
163-
if i > 1000:
164-
raise e
165-
else:
166-
break
133+
pc = api.portal.get_tool("portal_catalog")
134+
import ipdb; ipdb.set_trace()
135+
duplicated_mail = sub_create(
136+
api.portal.get()["outgoing-mail"],
137+
"dmsoutgoingmail",
138+
datetime.now(),
139+
get_correct_id([om.getId for om in pc(portal_type="dmsoutgoingmail")], original_mail.getId()),
140+
title=original_mail.title,
141+
description=original_mail.description,
142+
recipients=original_mail.recipients[:] if original_mail.recipients else None,
143+
treating_groups=original_mail.treating_groups[:] if original_mail.treating_groups else None,
144+
assigned_user=original_mail.assigned_user,
145+
sender=original_mail.sender,
146+
recipient_groups=original_mail.recipient_groups[:] if original_mail.recipient_groups else None,
147+
send_modes=original_mail.send_modes[:] if original_mail.send_modes else None,
148+
task_description=original_mail.task_description,
149+
)
167150

168-
if data['keep_category'] and hasattr(original_mail, 'classification_categories') and original_mail.classification_categories:
151+
if data.get('keep_category', False) and hasattr(original_mail, 'classification_categories') and original_mail.classification_categories:
169152
duplicated_mail.classification_categories = original_mail.classification_categories[:]
170153

171-
if data['keep_folder'] and hasattr(original_mail, 'classification_folders') and original_mail.classification_folders:
154+
if data.get('keep_folder', False) and hasattr(original_mail, 'classification_folders') and original_mail.classification_folders:
172155
duplicated_mail.classification_folders = original_mail.classification_folders[:]
173156

174-
if data['keep_linked_mails'] and hasattr(original_mail, 'reply_to') and original_mail.reply_to:
157+
if data.get('keep_linked_mails', False) and hasattr(original_mail, 'reply_to') and original_mail.reply_to:
175158
duplicated_mail.reply_to = original_mail.reply_to[:]
176159

177-
if data['keep_dms_files']:
160+
if data.get('keep_dms_files', False):
178161
# FIXME do not use clipboard
179162
dms_files = [sub_content.getId() for sub_content in original_mail.values() if IImioDmsFile.providedBy(sub_content)]
180163
import ipdb; ipdb.set_trace()
181164
if dms_files:
182165
clipboard = original_mail.manage_copyObjects(dms_files)
183166
duplicated_mail.manage_pasteObjects(clipboard)
184167

185-
if data['keep_annexes']:
168+
if data.get('keep_annexes', False):
186169
annexes = [sub_content.getId() for sub_content in original_mail.values() if IDmsAppendixFile.providedBy(sub_content)]
187170
if annexes:
188171
clipboard = original_mail.manage_copyObjects(annexes)
189172
duplicated_mail.manage_pasteObjects(clipboard)
190173

191-
if data['link_to_original']:
174+
if data.get('link_to_original', False):
192175
intids = getUtility(IIntIds)
193176
rel_id = intids.getId(original_mail)
194177
if duplicated_mail.reply_to is None:

0 commit comments

Comments
 (0)