def saveProperties(self, REQUEST=None, **kwargs): """ """ if not self.checkPermissionEditObject(): raise EXCEPTION_NOTAUTHORIZED, EXCEPTION_NOTAUTHORIZED_MSG if REQUEST is not None: schema_raw_data = dict(REQUEST.form) else: schema_raw_data = kwargs _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None)) _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', ''), self.releasedate) _uploaded_file = schema_raw_data.pop('uploaded_file', None) versions_to_remove = schema_raw_data.pop('versions_to_remove', []) form_errors = self.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) if form_errors: if REQUEST is not None: self._prepare_error_response(REQUEST, form_errors, schema_raw_data) REQUEST.RESPONSE.redirect('%s/edit_html?lang=%s' % (self.absolute_url(), _lang)) return else: raise ValueError(form_errors.popitem()[1]) # pick a random error contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() for ver_id in versions_to_remove: self.remove_version(int(ver_id) - 1, contributor) self._p_changed = 1 self.recatalogNyObject(self) #log date auth_tool = self.getAuthenticationTool() auth_tool.changeLastPost(contributor) if file_has_content(_uploaded_file): self._save_file(_uploaded_file, contributor) notify(NyContentObjectEditEvent(self, contributor)) if REQUEST: self.setSessionInfoTrans(MESSAGE_SAVEDCHANGES, date=self.utGetTodayDate()) REQUEST.RESPONSE.redirect('%s/edit_html?lang=%s' % (self.absolute_url(), _lang))
def addNyBFile(self, id='', REQUEST=None, contributor=None, **kwargs): """ Create a BFile type of object. """ if REQUEST is not None: schema_raw_data = dict(REQUEST.form) else: schema_raw_data = kwargs _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None)) _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', '')) _uploaded_file = schema_raw_data.pop('uploaded_file', None) title = schema_raw_data.get('title', '') if not title: filename = trim_filename(getattr(_uploaded_file, 'filename', '')) base_filename = filename.rsplit('.', 1)[0] # strip extension if base_filename: schema_raw_data['title'] = title = base_filename.decode('utf-8') id = toAscii(id) id = make_id(self, id=id, title=title, prefix='file') if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _create_NyBFile_object(self, id, contributor) form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) if REQUEST is not None: submitter_errors = submitter.info_check(self, REQUEST, ob) form_errors.update(submitter_errors) if form_errors: if REQUEST is None: raise ValueError(form_errors.popitem()[1]) # pick a random error else: abort_transaction_keep_session(REQUEST) ob._prepare_error_response(REQUEST, form_errors, schema_raw_data) REQUEST.RESPONSE.redirect('%s/bfile_add_html' % self.absolute_url()) return if file_has_content(_uploaded_file): ob._save_file(_uploaded_file, contributor) #process parameters if self.checkPermissionSkipApproval(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName() else: approved, approved_by = 0, None _send_notif = kwargs.get('_send_notifications', True) ob.approveThis(approved, approved_by, _send_notifications=_send_notif) ob.submitThis() self.recatalogNyObject(ob) notify(NyContentObjectAddEvent(ob, contributor, schema_raw_data)) #log post date auth_tool = self.getAuthenticationTool() auth_tool.changeLastPost(contributor) #redirect if case if REQUEST is not None: l_referer = REQUEST['HTTP_REFERER'].split('/')[-1] if l_referer == 'bfile_manage_add' or l_referer.find('bfile_manage_add') != -1: return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'bfile_add_html': self.setSession('referer', self.absolute_url()) return ob.object_submitted_message(REQUEST) return ob.getId()