|
2 | 2 | from AccessControl import getSecurityManager |
3 | 3 | from collective.ckeditortemplates.cktemplate import ICKTemplate |
4 | 4 | from collective.dms.basecontent.dmsfile import IDmsAppendixFile |
5 | | -from collective.dms.mailcontent.dmsmail import internalReferenceOutgoingMailDefaultValue |
6 | 5 | from datetime import datetime |
7 | | -from DateTime import DateTime |
8 | 6 | from eea.faceted.vocabularies.autocomplete import IAutocompleteSuggest |
9 | 7 | from imio.dms.mail import _ |
10 | 8 | from imio.dms.mail import _tr |
|
23 | 21 | from imio.helpers.emailer import get_mail_host |
24 | 22 | from imio.helpers.emailer import send_email |
25 | 23 | from imio.helpers.fancytree.views import BaseRenderFancyTree |
| 24 | +from imio.helpers.transmogrifier import get_correct_id |
26 | 25 | from imio.helpers.workflow import do_transitions |
27 | 26 | from imio.helpers.xhtml import object_link |
28 | 27 | from imio.pyutils.utils import safe_encode |
29 | 28 | from plone import api |
30 | | -from plone.supermodel import model |
31 | | -from Products.CMFCore.utils import getToolByName |
32 | 29 | from Products.CMFPlone.utils import safe_unicode |
33 | 30 | from Products.Five import BrowserView |
34 | 31 | from Products.PageTemplates.Expressions import SecureModuleImporter |
@@ -132,63 +129,49 @@ def handleApply(self, action): |
132 | 129 | return |
133 | 130 |
|
134 | 131 | # 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 |
141 | 132 | 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 | + ) |
167 | 150 |
|
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: |
169 | 152 | duplicated_mail.classification_categories = original_mail.classification_categories[:] |
170 | 153 |
|
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: |
172 | 155 | duplicated_mail.classification_folders = original_mail.classification_folders[:] |
173 | 156 |
|
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: |
175 | 158 | duplicated_mail.reply_to = original_mail.reply_to[:] |
176 | 159 |
|
177 | | - if data['keep_dms_files']: |
| 160 | + if data.get('keep_dms_files', False): |
178 | 161 | # FIXME do not use clipboard |
179 | 162 | dms_files = [sub_content.getId() for sub_content in original_mail.values() if IImioDmsFile.providedBy(sub_content)] |
180 | 163 | import ipdb; ipdb.set_trace() |
181 | 164 | if dms_files: |
182 | 165 | clipboard = original_mail.manage_copyObjects(dms_files) |
183 | 166 | duplicated_mail.manage_pasteObjects(clipboard) |
184 | 167 |
|
185 | | - if data['keep_annexes']: |
| 168 | + if data.get('keep_annexes', False): |
186 | 169 | annexes = [sub_content.getId() for sub_content in original_mail.values() if IDmsAppendixFile.providedBy(sub_content)] |
187 | 170 | if annexes: |
188 | 171 | clipboard = original_mail.manage_copyObjects(annexes) |
189 | 172 | duplicated_mail.manage_pasteObjects(clipboard) |
190 | 173 |
|
191 | | - if data['link_to_original']: |
| 174 | + if data.get('link_to_original', False): |
192 | 175 | intids = getUtility(IIntIds) |
193 | 176 | rel_id = intids.getId(original_mail) |
194 | 177 | if duplicated_mail.reply_to is None: |
|
0 commit comments