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() try: ob = _create_NyBFile_object(self, id, contributor) except BadRequest, err: self.setSessionErrorsTrans([err]) REQUEST.RESPONSE.redirect('%s/bfile_add_html' % self.absolute_url()) return
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()