def uploadImage(self, file, REQUEST=None): """ Upload image to the collection and then return to the referring URL. """ sha1_hash = sha_hexdigest(file) for image in self.storage.objectValues('Image'): if not hasattr(image, 'sha1_hash'): image.sha1_hash = sha_hexdigest(image) if sha1_hash == image.sha1_hash: return image id, title = cookId(None, None, file) # first, determine if this is a utf-8 text and not ascii try: id.decode('ascii') except UnicodeError: id = id.decode('utf-8') orig_id = id id = make_id(self.storage, title=title) id = manage_addImage(self.storage, id, file, title) if REQUEST: return REQUEST.RESPONSE.redirect(REQUEST['HTTP_REFERER']) ob = self.storage._getOb(id) return ob
def addNyPhoto(self, id='', REQUEST=None, _klass=None, **kwargs): """ Create a Photo type of object. """ if self.is_full(): return None if REQUEST is not None: schema_raw_data = dict(REQUEST.form) else: schema_raw_data = kwargs if _klass is None: _klass = NyPhoto _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None)) if schema_raw_data.get('sortorder', '') == '': schema_raw_data['sortorder'] = DEFAULT_SORTORDER _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', '')) _content_type = schema_raw_data.pop('content_type', '') schema_raw_data.setdefault('discussion', getattr(self, 'discussion', 0)) # Fallback from album _title = schema_raw_data.pop('title','') _file = schema_raw_data.pop('file', '') if _file != '' and getattr(_file, 'filename', None) == '': _file = '' #process parameters id, _title = cookId(id, _title, _file) id = make_id(self, id=id, title=_title, prefix=PREFIX_NYPHOTO) schema_raw_data['title'] = _title ob = _klass(id, content_type=_content_type, displays=self.displays.copy()) self.gl_add_languages(ob) self._setObject(id, ob) ob = self._getOb(id) form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) if form_errors: raise ValueError(form_errors.popitem()[1]) # pick a random error if self.glCheckPermissionPublishObjects(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName() else: approved, approved_by = 1, None ob.approveThis(approved, approved_by) #extra settings ob.update_data(_file) ob.submitThis() if ob.discussion: ob.open_for_comments() else: ob.close_for_comments() self.recatalogNyObject(ob) #redirect if case if REQUEST is not None: REQUEST.RESPONSE.redirect(self.absolute_url()) return ob.getId()
def uploadImage(self, file, REQUEST=None): """ Upload image to the collection and then return to the referring URL. """ sha1_hash = sha_hexdigest(file) for image in self.storage.objectValues('Image'): if not hasattr(image, 'sha1_hash'): image.sha1_hash = sha_hexdigest(image) if sha1_hash == image.sha1_hash: return image id, title = cookId(None, None, file) # first, determine if this is a utf-8 text and not ascii try: id.decode('ascii') except UnicodeError: id = id.decode('utf-8') orig_id = id id = make_id(self.storage, title=title) id = manage_addImage(self.storage, id, file, title) if REQUEST: return REQUEST.RESPONSE.redirect(REQUEST['HTTP_REFERER']) ob = self.storage._getOb(id) return ob
def addNySimpleConsultation(self, id='', title='', description='', sortorder='', start_date='', end_date='', public_registration='', allow_file='', contributor=None, releasedate='', lang=None, REQUEST=None, **kwargs): """ Create a Naaya Simple Consultation type of object. """ #process parameters id = make_id(self, id=id, title=title, prefix='simpleconsultation') try: sortorder = abs(int(sortorder)) except: sortorder = DEFAULT_SORTORDER #check mandatory fiels l_referer = '' if REQUEST is not None: l_referer = REQUEST['HTTP_REFERER'].split('/')[-1] if not(l_referer == 'simpleconsultation_manage_add' or l_referer.find('simpleconsultation_manage_add') != -1) and REQUEST: r = self.getSite().check_pluggable_item_properties(METATYPE_OBJECT, id=id, title=title, sortorder=sortorder, \ start_date=start_date, end_date=end_date, public_registration=public_registration) else: r = [] if not len(r): #process parameters if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() if self.glCheckPermissionPublishObjects(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName() else: approved, approved_by = 0, None releasedate = self.process_releasedate(releasedate) if lang is None: lang = self.gl_get_selected_language() #create object ob = NySimpleConsultation(id, title, description, sortorder, start_date, end_date, public_registration, allow_file, contributor, releasedate, lang) self.gl_add_languages(ob) ob.createDynamicProperties(self.processDynamicProperties(METATYPE_OBJECT, REQUEST, kwargs), lang) self._setObject(id, ob) #extra settings ob = self._getOb(id) ob.submitThis() ob.approveThis(approved, approved_by) ob.updateRequestRoleStatus(public_registration, lang) ob.checkReviewerRole() self.recatalogNyObject(ob) self.notifyFolderMaintainer(self, ob) #log post date auth_tool = self.getAuthenticationTool() auth_tool.changeLastPost(contributor) #redirect if case if REQUEST is not None: if l_referer == 'simpleconsultation_manage_add' or l_referer.find('simpleconsultation_manage_add') != -1: return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'simpleconsultation_add_html': self.setSession('referer', self.absolute_url()) REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url()) else: if REQUEST is not None: self.setSessionErrors(r) self.set_pluggable_item_session(METATYPE_OBJECT, id=id, title=title, description=description, \ sortorder=sortorder, releasedate=releasedate, start_date=start_date, end_date=end_date, allow_file=allow_file, public_registration=public_registration, lang=lang) REQUEST.RESPONSE.redirect('%s/simpleconsultation_add_html' % self.absolute_url()) else: raise Exception, '%s' % ', '.join(r)
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() 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 addNyContact(self, id='', REQUEST=None, contributor=None, **kwargs): """ Create an Contact type of object. """ #process parameters 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', '')) schema_raw_data.setdefault('details', '') schema_raw_data.setdefault('resourceurl', '') schema_raw_data.setdefault('source', '') schema_raw_data.setdefault('topitem', '') id = make_id(self, id=id, title=schema_raw_data.get('title', ''), prefix='contact') if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _create_NyContact_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) return REQUEST.RESPONSE.redirect('%s/contact_add_html' % self.absolute_url()) return if self.glCheckPermissionPublishObjects(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName() else: approved, approved_by = 0, None ob.approveThis(approved, approved_by) ob.submitThis() if ob.discussion: ob.open_for_comments() 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 == 'contact_manage_add' or l_referer.find('contact_manage_add') != -1: return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'contact_add_html': self.setSession('referer', self.absolute_url()) return ob.object_submitted_message(REQUEST) REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url()) return ob.getId()
def manage_addNyPhotoFolder(self, id='', REQUEST=None, _klass=None, **kwargs): """ Create a PhotoFolder type of object. """ if REQUEST is not None: schema_raw_data = dict(REQUEST.form) else: schema_raw_data = kwargs if _klass is None: _klass = NyPhotoFolder _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None)) _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', '')) _cover = schema_raw_data.pop('cover', '') _file = schema_raw_data.pop('file', None) folder_id = make_id(self, id=id, title=schema_raw_data['title'], prefix=PREFIX_NYPHOTOFOLDER) ob = _klass(folder_id) self.gl_add_languages(ob) self._setObject(folder_id, ob) ob = self._getOb(folder_id) if getattr(_file, 'filename', None): kwargs_ = {} for k, v in schema_raw_data.iteritems(): if k in ob.inherit_fields: kwargs_[k] = v elif '.' in k and k.split('.')[0] in ob.inherit_fields: kwargs_[k] = v ob.uploadPhotoOrZip(_file, **kwargs_) form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) if form_errors: if REQUEST is None: raise ValueError(form_errors.popitem()[1]) # pick a random error else: import transaction; transaction.abort() # because we already called _crete_NyZzz_object ob._prepare_error_response(REQUEST, form_errors, schema_raw_data) REQUEST.RESPONSE.redirect('%s/photofolder_add_html' % self.absolute_url()) return if self.glCheckPermissionPublishObjects(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName() else: approved, approved_by = 1, None ob._setPropValue('cover', _cover) ob.approveThis(approved, approved_by) ob.submitThis() if ob.discussion: ob.open_for_comments() else: ob.close_for_comments() self.recatalogNyObject(ob) #redirect if case if REQUEST is not None: return REQUEST.RESPONSE.redirect(self.absolute_url()) return ob.getId()
def addNyEduProduct(self, id='', REQUEST=None, contributor=None, **kwargs): """ Create an Educational Product 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', '')) _contact_word = schema_raw_data.get('contact_word', '') id = make_id(self, id=id, title=schema_raw_data.get('title', ''), prefix='ep') if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _create_NyEduProduct_object(self, id, contributor) form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) #check Captcha/reCaptcha if not self.checkPermissionSkipCaptcha(): captcha_validator = self.validateCaptcha(_contact_word, REQUEST) if captcha_validator: form_errors['captcha'] = captcha_validator if form_errors: if REQUEST is None: raise ValueError(form_errors.popitem()[1]) # pick a random error else: import transaction; transaction.abort() # because we already called _crete_NyZzz_object ob._prepare_error_response(REQUEST, form_errors, schema_raw_data) REQUEST.RESPONSE.redirect('%s/eduproduct_add_html' % self.absolute_url()) return #process parameters if self.glCheckPermissionPublishObjects(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName() else: approved, approved_by = 0, None ob.approveThis(approved, approved_by) ob.submitThis() if ob.discussion: ob.open_for_comments() 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 == 'eduproduct_manage_add' or l_referer.find('eduproduct_manage_add') != -1: return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'eduproduct_add_html': self.setSession('referer', self.absolute_url()) return ob.object_submitted_message(REQUEST) REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url()) return ob.getId()
def _create_NyMeeting_object(parent, id, contributor): id = make_id(parent, id=id, prefix="meeting") ob = NyMeeting(id, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def _create_NyPointer_object(parent, id, contributor): id = make_id(parent, id=id, prefix='pointer') ob = NyPointer(id, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def _create_NySemNews_object(parent, id, contributor): id = make_id(parent, id=id, prefix=PREFIX_OBJECT) ob = NySemNews(id, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def _create_NyBestPractice_object(parent, id, contributor): id = make_id(parent, id=id, prefix='bestpractice') ob = NyBestPractice(id, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def _create_LocalizedNyBFile_object(parent, id, contributor): id = make_id(parent, id=id, prefix='localizedfile') ob = NyLocalizedBFile(id, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def _create_NyOrganisation_object(parent, id, contributor): id = make_id(parent, id=id, prefix='organisation') ob = NyOrganisation(id, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def _create_LocalizedNyBFile_object(parent, id, contributor): id = make_id(parent, id=id, prefix='localizedfile') ob = NyLocalizedBFile(id, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def _create_NyOrganisation_object(parent, id, contributor): id = make_id(parent, id=id, prefix='organisation') ob = NyOrganisation(id, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def _create_NySemEvent_object(parent, id, contributor): id = make_id(parent, id=id, prefix=PREFIX_OBJECT) ob = NySemEvent(id, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def _create_NyDocument_object(parent, id, contributor): id = make_id(parent, id=id) ob = NyDocument(id, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def _create_NyBestPractice_object(parent, id, contributor): id = make_id(parent, id=id, prefix='bestpractice') ob = NyBestPractice(id, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def _create_NyAPNCBPhoto_object(parent, id, contributor): id = make_id(parent, id=id, prefix='apncbphoto') ob = NyAPNCBPhoto(id, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def _create_NyFile_object(parent, id, title, file, precondition, contributor): id = make_id(parent, id=id, title=title, prefix='file') ob = NyFile_extfile(id, title, file, precondition, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def _create_NyExFile_object(parent, id, contributor): id = make_id(parent, id=id, prefix='exfile') ob = NyExFile_extfile(id, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def _create_NyEduProduct_object(parent, id, contributor): id = make_id(parent, id=id, prefix='eduproduct') ob = NyEduProduct(id, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def _create_NyProject_object(parent, id, contributor): id = make_id(parent, id=id, prefix='project') ob = NyProject(id, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.after_setObject() return ob
def test_by_nothing_with_temp(self): self.parent = Parent('contact', 'contact-1', 'contact-3') self.temp_parent = Parent('contact-2', 'contact-4', 'contact-6') id = make_id(self.parent, temp_parent=self.temp_parent, id='', title='', prefix='') self.assertEqual(len(id), 5)
def test_by_prefix_with_temp(self): self.parent = Parent('contact', 'contact-1', 'contact-3') self.temp_parent = Parent('contact-2', 'contact-4', 'contact-6') id = make_id(self.parent, temp_parent=self.temp_parent, id='', title='', prefix='contact') self.assertEqual(id[:-5], 'contact')
def _create_NyMunicipality_object(parent, id, title, contributor): id = make_id(parent, id=id, title=title, prefix='municipality') ob = NyMunicipality(id, title, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.species = [] ob.after_setObject() return ob
def addNySemTextLaws(self, id='', contributor=None, REQUEST=None, **kwargs): """ """ if REQUEST is not None: schema_raw_data = dict(REQUEST.form) else: schema_raw_data = kwargs #process parameters id = make_id(self, id=id, title=schema_raw_data.get('title', ''), prefix=PREFIX_OBJECT) if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None)) _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', '')) ob = _create_NySemTextLaws_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: import transaction; transaction.abort() # because we already called _crete_NyZzz_object ob._prepare_error_response(REQUEST, form_errors, schema_raw_data) return REQUEST.RESPONSE.redirect('%s/semtextlaws_add_html' % self.absolute_url()) if 'file' in schema_raw_data: ob.handleUpload(schema_raw_data['file']) if self.glCheckPermissionPublishObjects(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName() else: approved, approved_by = 0, None ob.approveThis(approved, approved_by) ob.submitThis() ob.updatePropertiesFromGlossary(_lang) if ob.discussion: ob.open_for_comments() self.recatalogNyObject(ob) zope.event.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 == 'semtextlaws_manage_add' or l_referer.find('semtextlaws_manage_add') != -1: return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'semtextlaws_add_html': self.setSession('referer', self.absolute_url()) return ob.object_submitted_message(REQUEST) REQUEST.RESPONSE.redirect('%s/semtextlaws_add_html' % self.absolute_url()) return ob.getId()
def manage_addRefTree(self, id='', title='', description='', lang=None, REQUEST=None): """ """ id = make_id(self, id=id, title=title, prefix=PREFIX_SUFIX_REFTREE) if lang is None: lang = self.gl_get_selected_language() ob = RefTree(id, title, description, lang) self.gl_add_languages(ob) self._setObject(id, ob) if REQUEST is not None: return self.manage_main(self, REQUEST, update_menu=1) return id
def _create_NyExpert_object(parent, id, title, contributor): id = make_id(parent, id=id, title=title, prefix='expert') ob = NyExpert(id, title, contributor) parent.gl_add_languages(ob) parent._setObject(id, ob) ob = parent._getOb(id) ob.picture = None ob.cv = None ob.after_setObject() return ob
def addNySemFunding(self, id='', contributor=None, REQUEST=None, **kwargs): """ """ if REQUEST is not None: schema_raw_data = dict(REQUEST.form) else: schema_raw_data = kwargs #process parameters id = make_id(self, id=id, title=schema_raw_data.get('title', ''), prefix=PREFIX_OBJECT) if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None)) _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', '')) ob = _create_NySemFunding_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: import transaction; transaction.abort() # because we already called _crete_NyZzz_object ob._prepare_error_response(REQUEST, form_errors, schema_raw_data) return REQUEST.RESPONSE.redirect('%s/semfunding_add_html' % self.absolute_url()) if self.glCheckPermissionPublishObjects(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName() else: approved, approved_by = 0, None ob.approveThis(approved, approved_by) ob.submitThis() ob.updatePropertiesFromGlossary(_lang) if ob.discussion: ob.open_for_comments() self.recatalogNyObject(ob) zope.event.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 == 'semfunding_manage_add' or l_referer.find('semfunding_manage_add') != -1: return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'semfunding_add_html': self.setSession('referer', self.absolute_url()) return ob.object_submitted_message(REQUEST) REQUEST.RESPONSE.redirect('%s/semfunding_add_html' % self.absolute_url()) return ob.getId()
def addNyPhotoGallery(self, id="", REQUEST=None, contributor=None, _klass=None, **kwargs): """ Create a Photo Gallery. """ if REQUEST is not None: schema_raw_data = dict(REQUEST.form) else: schema_raw_data = kwargs if _klass is None: _klass = NyPhotoGallery _lang = schema_raw_data.pop("_lang", schema_raw_data.pop("lang", None)) _releasedate = self.process_releasedate(schema_raw_data.pop("releasedate", "")) gallery_id = make_id(self, id=id, title=schema_raw_data["title"], prefix=PREFIX_NYPHOTOGALLERY) if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _klass(gallery_id, contributor) self.gl_add_languages(ob) self._setObject(gallery_id, ob) ob = self._getOb(gallery_id) form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) if form_errors: if REQUEST is None: raise ValueError(form_errors.popitem()[1]) # pick a random error else: import transaction transaction.abort() # because we already called _crete_NyZzz_object ob._prepare_error_response(REQUEST, form_errors, schema_raw_data) REQUEST.RESPONSE.redirect("%s/gallery_add_html" % self.absolute_url()) return if self.glCheckPermissionPublishObjects(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName() else: approved, approved_by = 1, None ob.approveThis(approved, approved_by) ob.submitThis() if ob.discussion: ob.open_for_comments() else: ob.close_for_comments() self.recatalogNyObject(ob) # redirect if case if REQUEST is not None: return REQUEST.RESPONSE.redirect(self.absolute_url()) return ob.getId()
def manage_addMegaSurvey(context, id='', title='', lang=None, REQUEST=None, **kwargs): """ """ title = title or 'Survey' id = make_id(context, id=id, title=title) # Get selected language lang = REQUEST and REQUEST.form.get('lang', None) lang = lang or kwargs.get('lang', context.gl_get_selected_language()) if REQUEST: kwargs.update(REQUEST.form) kwargs['releasedate'] = context.process_releasedate( kwargs.get('releasedate', DateTime())) kwargs['expirationdate'] = context.process_releasedate( kwargs.get('expirationdate', DateTime())) contributor = context.REQUEST.AUTHENTICATED_USER.getUserName() # log post date auth_tool = context.getAuthenticationTool() auth_tool.changeLastPost(contributor) kwargs.setdefault('id', id) kwargs.setdefault('title', title) kwargs.setdefault('lang', lang) kwargs.setdefault('contributor', contributor) ob = MegaSurvey(**kwargs) context.gl_add_languages(ob) context._setObject(id, ob) ob = context._getOb(id) ob.updatePropertiesFromGlossary(lang) ob.submitThis() context.recatalogNyObject(ob) # Return if not REQUEST: return id # redirect if case if 'submitted' in REQUEST: ob.submitThis() l_referer = REQUEST['HTTP_REFERER'].split('/')[-1] if (l_referer == 'megasurvey_manage_add' or l_referer.find('megasurvey_manage_add') != -1): return context.manage_main(context, REQUEST, update_menu=1) elif l_referer == 'megasurvey_add_html': context.setSession('referer', context.absolute_url()) REQUEST.RESPONSE.redirect(context.absolute_url())
def addNyForum(self, id='', title='', description='', categories='', file_max_size=0, REQUEST=None): """ """ id = make_id(self, id=id, title=title, prefix=PREFIX_NYFORUM) categories = self.utConvertLinesToList(categories) file_max_size = abs(int(file_max_size)) ob = NyForum(id, title, description, categories, file_max_size) self._setObject(id, ob) if not REQUEST: return id # Redirect if not REQUEST.form.get('redirect_url', None): return self.manage_main(self, REQUEST, update_menu=1) REQUEST.RESPONSE.redirect('%s/index_html' % self.absolute_url())
def upload_file(self, REQUEST): """ """ temp_folder = self.getSite().temp_folder file = REQUEST.form.get('upload_file', None) if file is None: return None try: image = Image.open(file) except: # Python Imaging Library doesn't recognize it as an image return None x, y = image.size filename = file.filename image_format = image.format if not image_format: _, ext = os.path.splitext(filename) image_format = ext # can't leave empty because image.save will crash if not image_format: image_format = 'JPEG' MAX_SIZE = 400 if x >= MAX_SIZE and x >= y: x, y = MAX_SIZE, y * MAX_SIZE / x resize = True elif y >= MAX_SIZE and y >= x: x, y = x * MAX_SIZE / y, MAX_SIZE resize = True else: resize = False if resize: try: image = image.resize((x, y), Image.ANTIALIAS) except AttributeError: image = image.resize((x, y)) image_io = StringIO() image.save(image_io, image_format, quality=85) id = make_id(temp_folder, id=filename) manage_addImage(temp_folder, id, file=image_io.getvalue()) ob = getattr(temp_folder, id) ob.filename = filename ob.p_changed = 1 if x > y: return (ob.absolute_url(), (x-y)/2, 0, y + (x-y)/2, y, resize) else: return (ob.absolute_url(), 0, (y-x)/2, x, x + (y-x)/2, resize)
def manage_addRefTreeNode(self, id='', title='', parent=None, pickable='', lang=None, REQUEST=None): """ """ id = make_id(self, id=id, title=title, prefix=PREFIX_SUFIX_REFTREE) if parent == '': parent = None if pickable: pickable = 1 else: pickable = 0 if lang is None: lang = self.gl_get_selected_language() ob = RefTreeNode(id, title, parent, pickable, lang) self.gl_add_languages(ob) self._setObject(id, ob) if REQUEST is not None: return self.manage_main(self, REQUEST, update_menu=1) return id
def manage_addRefTree(self, id='', title='', description='', lang=None, REQUEST=None): """ """ id = make_id(self, id=id, title=title, prefix=PREFIX_SUFIX_REFTREE) if lang is None: lang = self.gl_get_selected_language() ob = RefTree(id, title, description, lang) self.gl_add_languages(ob) self._setObject(id, ob) if REQUEST is not None: return self.manage_main(self, REQUEST, update_menu=1) return id
def manage_addMegaSurvey(context, id='', title='', lang=None, REQUEST=None, **kwargs): """ """ title = title or 'Survey' id = make_id(context, id=id, title=title) # Get selected language lang = REQUEST and REQUEST.form.get('lang', None) lang = lang or kwargs.get('lang', context.gl_get_selected_language()) if REQUEST: kwargs.update(REQUEST.form) kwargs['releasedate'] = context.process_releasedate( kwargs.get('releasedate', DateTime())) kwargs['expirationdate'] = context.process_releasedate( kwargs.get('expirationdate', DateTime())) contributor = context.REQUEST.AUTHENTICATED_USER.getUserName() # log post date auth_tool = context.getAuthenticationTool() auth_tool.changeLastPost(contributor) kwargs.setdefault('id', id) kwargs.setdefault('title', title) kwargs.setdefault('lang', lang) kwargs.setdefault('contributor', contributor) ob = MegaSurvey(**kwargs) context.gl_add_languages(ob) context._setObject(id, ob) ob = context._getOb(id) ob.updatePropertiesFromGlossary(lang) ob.submitThis() context.recatalogNyObject(ob) # Return if not REQUEST: return id # redirect if case if 'submitted' in REQUEST: ob.submitThis() l_referer = REQUEST['HTTP_REFERER'].split('/')[-1] if (l_referer == 'megasurvey_manage_add' or l_referer.find('megasurvey_manage_add') != -1): return context.manage_main(context, REQUEST, update_menu=1) elif l_referer == 'megasurvey_add_html': context.setSession('referer', context.absolute_url()) REQUEST.RESPONSE.redirect(context.absolute_url())
def addNyForum(self, id='', title='', description='', categories='', file_max_size=0, REQUEST=None): """ """ id = make_id(self, id=id, title=title, prefix=PREFIX_NYFORUM) categories = self.utConvertLinesToList(categories) file_max_size = abs(int(file_max_size)) contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = NyForum(id, title, description, categories, file_max_size, contributor) ob.releasedate = self.process_releasedate() self._setObject(id, ob) self[id].loadDefaultData() if not REQUEST: return id # Redirect if not REQUEST.form.get('redirect_url', None): return self.manage_main(self, REQUEST, update_menu=1) REQUEST.RESPONSE.redirect('%s/index_html' % self.absolute_url())
def addNyStory(self, id='', REQUEST=None, contributor=None, **kwargs): """ Create a Story 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', '')) schema_raw_data.setdefault('body', '') schema_raw_data.setdefault('resourceurl', '') schema_raw_data.setdefault('source', '') schema_raw_data.setdefault('topitem', '') _frontpicture = schema_raw_data.pop('frontpicture', '') id = make_id(self, id=id, title=schema_raw_data.get('title', ''), prefix='story') if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _create_NyStory_object(self, id, contributor) ob._setLocalPropValue('title', _lang, '') sortorder_widget = ob._get_schema().getWidget('sortorder') schema_raw_data.setdefault('sortorder', sortorder_widget.default) form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate, _all_values=False) if form_errors: raise ValueError(form_errors.popitem()[1]) # pick a random error ob.setFrontPicture(_frontpicture) if kwargs.has_key('submitted'): ob.submitThis() if self.discussion: ob.open_for_comments() self.recatalogNyObject(ob) #log post date auth_tool = self.getAuthenticationTool() auth_tool.changeLastPost(contributor) #redirect if case if REQUEST is not None: if REQUEST.has_key('submitted'): ob.submitThis() l_referer = REQUEST['HTTP_REFERER'].split('/')[-1] if l_referer == 'story_manage_add' or l_referer.find('story_manage_add') != -1: return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'story_add_html': self.setSession('referer', self.absolute_url()) REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url()) return ob.getId()
def upload_maintopic_temp_image(self, REQUEST): """ """ temp_folder = self.getSite().temp_folder file = REQUEST.form.get("upload_file", None) if file is None: return json_response({'error': "no file"}, REQUEST.RESPONSE) id = make_id(temp_folder) manage_addImage(temp_folder, id, file=file) ob = getattr(temp_folder, id) skin = self.getLayoutTool().getCurrentSkin() image_size = map(int, skin.main_section_image_size.split("x")) try: data = crop_image(ob, image_size) except AssertionError, e: data = {"error": str(e)}
def manage_addRefTreeNode(self, id='', title='', parent=None, pickable='', lang=None, REQUEST=None): """ """ id = make_id(self, id=id, title=title, prefix=PREFIX_SUFIX_REFTREE) if parent == '': parent = None if pickable: pickable = 1 else: pickable = 0 if lang is None: lang = self.gl_get_selected_language() ob = RefTreeNode(id, title, parent, pickable, lang) self.gl_add_languages(ob) self._setObject(id, ob) if REQUEST is not None: return self.manage_main(self, REQUEST, update_menu=1) return id
def upload_maintopic_temp_image(self, REQUEST): """ """ temp_folder = self.getSite().temp_folder file = REQUEST.form.get("upload_file", None) if file is None: return json_response({'error': "no file"}, REQUEST.RESPONSE) filename = file.filename id = make_id(temp_folder, id=filename) manage_addImage(temp_folder, id, file=file) ob = getattr(temp_folder, id) skin = self.getLayoutTool().getCurrentSkin() image_size = map(int, skin.main_section_image_size.split("x")) try: data = crop_image(ob, image_size) except AssertionError, e: data = {"error": str(e)}
def addNyForum(self, id='', title='', description='', categories='', file_max_size=0, REQUEST=None): """ """ id = make_id(self, id=id, title=title, prefix=PREFIX_NYFORUM) categories = self.utConvertLinesToList(categories) file_max_size = abs(int(file_max_size)) contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = NyForum(id, title, description, categories, file_max_size, contributor) ob.releasedate = self.process_releasedate() self._setObject(id, ob) self[id].loadDefaultData() if not REQUEST: return id # Redirect if not REQUEST.form.get('redirect_url', None): return self.manage_main(self, REQUEST, update_menu=1) REQUEST.RESPONSE.redirect('%s/index_html' % self.absolute_url())
def addNyPhotoGallery(self, id='', REQUEST=None, contributor=None, _klass=None, **kwargs): """ Create a Photo Gallery. """ if REQUEST is not None: schema_raw_data = dict(REQUEST.form) else: schema_raw_data = kwargs if _klass is None: _klass = NyPhotoGallery _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None)) _releasedate = self.process_releasedate( schema_raw_data.pop('releasedate', '')) gallery_id = make_id(self, id=id, title=schema_raw_data['title'], prefix=PREFIX_NYPHOTOGALLERY) if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _klass(gallery_id, contributor) self.gl_add_languages(ob) self._setObject(gallery_id, ob) ob = self._getOb(gallery_id) form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) if form_errors: if REQUEST is None: raise ValueError(form_errors.popitem()[1]) # pick a random error else: import transaction transaction.abort( ) # because we already called _crete_NyZzz_object ob._prepare_error_response(REQUEST, form_errors, schema_raw_data) REQUEST.RESPONSE.redirect('%s/gallery_add_html' % self.absolute_url()) return if self.glCheckPermissionPublishObjects(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName( ) else: approved, approved_by = 1, None ob.approveThis(approved, approved_by) ob.submitThis() if ob.discussion: ob.open_for_comments() else: ob.close_for_comments() self.recatalogNyObject(ob) #redirect if case if REQUEST is not None: return REQUEST.RESPONSE.redirect(self.absolute_url()) return ob.getId()
def addNyNetwork(self, id='', REQUEST=None, contributor=None, **kwargs): """ Create a Info 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', '')) _send_notifications = schema_raw_data.pop('_send_notifications', True) _title = schema_raw_data['title'] _contact_word = schema_raw_data.get('contact_word', '') #process parameters id = make_id(self, id=id, title=_title, prefix=PREFIX_OBJECT) if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _create_object(self, id, _title, contributor) ob.last_modification = time.localtime() _city = schema_raw_data.get('organisation_city', None) _country = schema_raw_data.get('organisation_country', None) if _city or _country: #remove the empty geo_location string (default when the geo_location widget is hidden) if schema_raw_data.get('geo_location', None) == '': schema_raw_data.pop('geo_location') _address = _city + ', ' + _country schema_raw_data['geo_location.lat'], schema_raw_data['geo_location.lon'] = ob.do_geocoding(_address) schema_raw_data['geo_location.address'] = _address form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) #ON IMPORT: if REQUEST is None: #Overwrite the values of properties attached to single select lists #if the import data contains several values... for k, v in DEFAULT_SCHEMA.items(): if DEFAULT_SCHEMA[k].has_key('property_type') and\ DEFAULT_SCHEMA[k]['property_type'] in ['Sdo category', 'Sdo extra property']: if v['widget_type'] == 'Select': if len(schema_raw_data[k]) == 1: setattr(ob, k, schema_raw_data[k][0]) else: setattr(ob, k, schema_raw_data[k]) #check Captcha/reCaptcha if not self.checkPermissionSkipCaptcha(): captcha_validator = self.validateCaptcha(_contact_word, REQUEST) if captcha_validator: form_errors['captcha'] = captcha_validator if form_errors: if REQUEST is None: raise ValueError(form_errors.popitem()[1]) # pick a random error else: transaction.abort() # because we already called _crete_NyZzz_object ob._prepare_error_response(REQUEST, form_errors, schema_raw_data) REQUEST.RESPONSE.redirect('%s/network_add_html' % self.absolute_url()) return #process parameters if self.glCheckPermissionPublishObjects(): if REQUEST is None: approved = schema_raw_data.get('approved', 0) approved_by = schema_raw_data.get('approved_by', None) else: approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName() else: approved, approved_by = 0, None ob.approveThis(approved, approved_by) ob.submitThis() if ob.discussion: ob.open_for_comments() 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: REQUEST.RESPONSE.redirect('%s/%s' % (self.absolute_url(), ob.id)) transaction.commit() return ob.getId()
def addNyProject(self, id='', REQUEST=None, contributor=None, **kwargs): """ Create an Project type of object. """ #process parameters 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', '')) schema_raw_data.setdefault('details', '') schema_raw_data.setdefault('resourceurl', '') schema_raw_data.setdefault('source', '') schema_raw_data.setdefault('topitem', '') _project_word = schema_raw_data.get('project_word', '') id = make_id(self, id=id, title=schema_raw_data.get('title', ''), prefix='project') if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _create_NyProject_object(self, id, contributor) form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) #check Captcha/reCaptcha if not self.checkPermissionSkipCaptcha(): captcha_validator = self.validateCaptcha(_project_word, REQUEST) if captcha_validator: form_errors['captcha'] = captcha_validator if form_errors: if REQUEST is None: raise ValueError(form_errors.popitem()[1]) # pick a random error else: import transaction; transaction.abort() # because we already called _crete_NyZzz_object ob._prepare_error_response(REQUEST, form_errors, schema_raw_data) return REQUEST.RESPONSE.redirect('%s/project_add_html' % self.absolute_url()) return if self.glCheckPermissionPublishObjects(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName() else: approved, approved_by = 0, None ob.approveThis(approved, approved_by) ob.submitThis() #Organisation data (list of OrganisationRecord objects) ob.organisations = [] if ob.discussion: ob.open_for_comments() 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 == 'project_manage_add' or l_referer.find('project_manage_add') != -1: return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'project_add_html': self.setSession('referer', self.absolute_url()) return ob.object_submitted_message(REQUEST) REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url()) return ob.getId()
def addNyPhotoFolder(self, id='', REQUEST=None, contributor=None, _klass=None, **kwargs): """ Create a PhotoFolder type of object. """ if REQUEST is not None: schema_raw_data = dict(REQUEST.form) else: schema_raw_data = kwargs if _klass is None: _klass = NyPhotoFolder _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None)) _releasedate = self.process_releasedate( schema_raw_data.pop('releasedate', '')) _cover = schema_raw_data.pop('cover', '') _file = schema_raw_data.pop('file', None) folder_id = make_id(self, id=id, title=schema_raw_data['title'], prefix=PREFIX_NYPHOTOFOLDER) if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _klass(folder_id, contributor) self.gl_add_languages(ob) self._setObject(folder_id, ob) ob = self._getOb(folder_id) if getattr(_file, 'filename', None): kwargs_ = {} for k, v in schema_raw_data.iteritems(): if k in ob.inherit_fields: kwargs_[k] = v elif '.' in k and k.split('.')[0] in ob.inherit_fields: kwargs_[k] = v ob.uploadPhotoOrZip(_file, **kwargs_) form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) if form_errors: if REQUEST is None: raise ValueError(form_errors.popitem()[1]) # pick a random error else: import transaction transaction.abort( ) # because we already called _crete_NyZzz_object ob._prepare_error_response(REQUEST, form_errors, schema_raw_data) REQUEST.RESPONSE.redirect('%s/photofolder_add_html' % self.absolute_url()) return if self.glCheckPermissionPublishObjects(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName( ) else: approved, approved_by = 1, None ob._setPropValue('cover', _cover) ob.approveThis(approved, approved_by) ob.submitThis() if ob.discussion: ob.open_for_comments() else: ob.close_for_comments() self.recatalogNyObject(ob) #redirect if case if REQUEST is not None: return REQUEST.RESPONSE.redirect(self.absolute_url()) return ob.getId()
def addNyInfoFolder(self, id='', REQUEST=None, contributor=None, **kwargs): """ Create an infofolder type of object. """ #process parameters 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)) _folder_meta_types = schema_raw_data.pop('folder_meta_types', '') id = make_id(self, id=id, title=schema_raw_data.get('title', ''), prefix='infofolder') if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _create_NyInfoFolder_object(self, id, contributor) ob.info_type = 'enterprises' ob.set_categories() _releasedate = DateTime() form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) if form_errors: if REQUEST is None: raise ValueError(form_errors.popitem()[1]) # pick a random error else: import transaction transaction.abort( ) # because we already called _crete_NyZzz_object ob._prepare_error_response(REQUEST, form_errors, schema_raw_data) return REQUEST.RESPONSE.redirect('%s/infofolder_add_html' % self.absolute_url()) return site = self.getSite() #extra settings ob_meta_types = FolderMetaTypes(ob) parent_meta_types = FolderMetaTypes(self) if _folder_meta_types == '': #inherit allowd meta types from the parent if self.meta_type == site.meta_type: ob_meta_types.set_values(site.adt_meta_types) else: if not parent_meta_types.has_custom_value: # if parent uses defaults, so should `ob` ob_meta_types.set_values(None) else: ob_meta_types.set_values(parent_meta_types.get_values()) else: ob_meta_types.set_values(self.utConvertToList(_folder_meta_types)) if self.glCheckPermissionPublishObjects(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName( ) else: approved, approved_by = 0, None ob.approveThis(approved, approved_by) ob.submitThis() #Process extra fields (categories, extra_properties) if ob.discussion: ob.open_for_comments() 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 == 'infofolder_manage_add' or l_referer.find('infofolder_manage_add') != -1: #return self.manage_main(self, REQUEST, update_menu=1) #elif l_referer == 'infofolder_add_html': #self.setSession('referer', self.absolute_url()) #return ob.object_submitted_message(REQUEST) #REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url()) REQUEST.RESPONSE.redirect('%s/%s/edit_html' % (self.absolute_url(), id)) return ob.getId()
def test_by_nothing(self): self.parent = Parent('contact', 'contact-1', 'contact-3') id = make_id(self.parent, id='', title='', prefix='') self.assertEqual(len(id), 5)
def addNyExpert(self, id='', REQUEST=None, contributor=None, **kwargs): """ Create a Expert 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', '')) schema_raw_data.pop('_send_notifications', True) _title = '%s %s' % (schema_raw_data.get('name', ''), schema_raw_data.get('surname', '')) schema_raw_data['title'] = _title recaptcha_response = schema_raw_data.get('g-recaptcha-response', '') # process parameters id = make_id(self, id=id, title=_title, prefix='expert') if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _create_NyExpert_object(self, id, _title, contributor) form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) # check Captcha/reCaptcha if not self.checkPermissionSkipCaptcha(): captcha_validator = self.validateCaptcha(recaptcha_response, REQUEST) if captcha_validator: form_errors['captcha'] = captcha_validator if form_errors: if REQUEST is None: raise ValueError(form_errors.popitem()[1]) # pick a random error else: import transaction transaction.abort() # because we already called _crete_NyZzz_object ob._prepare_error_response(REQUEST, form_errors, schema_raw_data) REQUEST.RESPONSE.redirect('%s/expert_add_html' % self.absolute_url()) return # process parameters if self.glCheckPermissionPublishObjects(): approved, approved_by = ( 1, self.REQUEST.AUTHENTICATED_USER.getUserName()) else: approved, approved_by = 0, None ob.approveThis(approved, approved_by) ob.submitThis() # Process uploaded files ob.save_file(schema_raw_data, 'picture', 'expert_picture') ob.save_file(schema_raw_data, 'cv', 'expert_cv') # Employment history data (list of EmploymentRecord objects) ob.employment_history = [] if ob.discussion: ob.open_for_comments() 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 == 'expert_manage_add' or l_referer.find('expert_manage_add') != -1): return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'expert_add_html': self.setSession('referer', self.absolute_url()) return ob.object_submitted_message(REQUEST) return ob.getId()
def addNyYoutube(self, id='', REQUEST=None, contributor=None, **kwargs): """ Create a Youtube embeded video. """ 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', '')) recaptcha_response = schema_raw_data.get('g-recaptcha-response', '') id = make_id(self, id=id, title=schema_raw_data.get('title', ''), prefix='ep') if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _create_NyYoutube_object(self, id, contributor) if schema_raw_data['iframe_width'] in ['', '0']: schema_raw_data['iframe_width'] = 640 if schema_raw_data['iframe_height'] in ['', '0']: schema_raw_data['iframe_height'] = 360 if len(schema_raw_data['youtube_id']) > 11: try: schema_raw_data['youtube_id'] = schema_raw_data[ 'youtube_id'].split('watch?v=')[1][:11] except IndexError: schema_raw_data['youtube_id'] = schema_raw_data[ 'youtube_id'].split('&v=')[1][:11] form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) try: schema_raw_data['iframe_width'] = int(schema_raw_data['iframe_width']) except ValueError: form_errors['iframe_width'] = ['Integer value required.'] try: schema_raw_data['iframe_height'] = int( schema_raw_data['iframe_height']) except ValueError: form_errors['iframe_height'] = ['Integer value required.'] if not schema_raw_data['youtube_id']: form_errors['youtube_id'] = ['Youtube Id is mandatory'] if schema_raw_data['youtube_id']: yt_service = YouTubeService() try: yt_service.GetYouTubeVideoEntry( video_id=schema_raw_data['youtube_id']) except RequestError: form_errors['youtube_id'] = [ 'Invalid Youtube ID (inexisting video)' ] # check Captcha/reCaptcha if not self.checkPermissionSkipCaptcha(): captcha_validator = self.validateCaptcha(recaptcha_response, REQUEST) if captcha_validator: form_errors['captcha'] = captcha_validator if form_errors: if REQUEST is None: raise ValueError(form_errors.popitem()[1]) # pick a random error else: import transaction transaction.abort() # because we already called _crete_NyZzz_object ob._prepare_error_response(REQUEST, form_errors, schema_raw_data) REQUEST.RESPONSE.redirect('%s/youtube_add_html' % self.absolute_url()) return # process parameters if self.glCheckPermissionPublishObjects(): approved, approved_by = (1, self.REQUEST.AUTHENTICATED_USER.getUserName()) else: approved, approved_by = 0, None ob.approveThis(approved, approved_by) ob.submitThis() if ob.discussion: ob.open_for_comments() 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 == 'youtube_manage_add' or l_referer.find('youtube_manage_add') != -1): return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'youtube_add_html': self.setSession('referer', self.absolute_url()) return ob.object_submitted_message(REQUEST) REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url()) return ob.getId()
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()
def addNyMunicipality(self, id='', REQUEST=None, contributor=None, **kwargs): """ Create a Municipality 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', '')) schema_raw_data.pop('_send_notifications') _title = '%s, %s' % ( schema_raw_data.get('municipality', ''), self.get_node_title('provinces', schema_raw_data.get('province', ''))) schema_raw_data['title'] = _title recaptcha_response = schema_raw_data.get('g-recaptcha-response', '') # process parameters id = make_id(self, id=id, title=_title, prefix='municipality') if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _create_NyMunicipality_object(self, id, _title, contributor) ambassador_species = schema_raw_data.pop('ambassador_species', '') ambassador_species_description = schema_raw_data.pop( 'ambassador_species_description', '') # picture processing upload_picture_url = schema_raw_data.pop('upload_picture_url', None) if upload_picture_url: temp_folder = self.getSite().temp_folder picture_id = upload_picture_url.split('/')[-1] ambassador_species_picture = getattr(temp_folder, picture_id) else: ambassador_species_picture = None x1 = schema_raw_data.pop('x1') y1 = schema_raw_data.pop('y1') x2 = schema_raw_data.pop('x2') y2 = schema_raw_data.pop('y2') crop_coordinates = (x1, y1, x2, y2) form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) ob.process_species( None, None, ambassador_species, ambassador_species_description, ambassador_species_picture, crop_coordinates, form_errors) # check Captcha/reCaptcha if not self.checkPermissionSkipCaptcha(): captcha_validator = self.validateCaptcha(recaptcha_response, REQUEST) if captcha_validator: form_errors['captcha'] = captcha_validator if form_errors: if REQUEST is None: raise ValueError(form_errors.popitem()[1]) # pick a random error else: import transaction # because we already called _crete_NyZzz_object transaction.abort() schema_raw_data['ambassador_species'] = ambassador_species schema_raw_data['ambassador_species_description'] = \ ambassador_species_description ob._prepare_error_response(REQUEST, form_errors, schema_raw_data) REQUEST.RESPONSE.redirect('%s/municipality_add_html' % self.absolute_url()) return # process parameters if self.glCheckPermissionPublishObjects(): approved, approved_by = (1, self.REQUEST.AUTHENTICATED_USER.getUserName()) else: approved, approved_by = 0, None ob.approveThis(approved, approved_by) ob.submitThis() # Overwrite any inconsistent values in the choice property if not ob.species and ob.choice == u'3': ob.choice = u'1' ob._p_changed = True if ob.species: ob.choice = u'3' ob._p_changed = True if ob.discussion: ob.open_for_comments() 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 == 'municipality_manage_add' or l_referer.find('municipality_manage_add') != -1): return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'municipality_add_html': self.setSession('referer', self.absolute_url()) return ob.object_submitted_message(REQUEST) return ob.getId()
def addNyConsultation(self, id='', title='', description='', sortorder='', start_date='', end_date='', public_registration='', allow_file='', line_comments='', contributor=None, releasedate='', lang=None, REQUEST=None, **kwargs): """ Create a Naaya Consultation type of object. """ #process parameters id = make_id(self, id=id, title=title, prefix='consultation') try: sortorder = abs(int(sortorder)) except: sortorder = DEFAULT_SORTORDER #check mandatory fiels l_referer = '' if REQUEST is not None: l_referer = REQUEST['HTTP_REFERER'].split('/')[-1] if not (l_referer == 'consultation_manage_add' or l_referer.find('consultation_manage_add') != -1) and REQUEST: r = self.getSite().check_pluggable_item_properties(METATYPE_OBJECT, id=id, title=title, sortorder=sortorder, \ start_date=start_date, end_date=end_date, public_registration=public_registration, line_comments=line_comments) else: r = [] if not len(r): #process parameters if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() if self.glCheckPermissionPublishObjects(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName( ) else: approved, approved_by = 0, None releasedate = self.process_releasedate(releasedate) if lang is None: lang = self.gl_get_selected_language() #create object ob = NyConsultation(id, title, description, sortorder, start_date, end_date, public_registration, allow_file, line_comments, contributor, releasedate, lang) self.gl_add_languages(ob) ob.createDynamicProperties( self.processDynamicProperties(METATYPE_OBJECT, REQUEST, kwargs), lang) self._setObject(id, ob) #extra settings ob = self._getOb(id) ob.submitThis() ob.default_rating() ob.updateRequestRoleStatus(public_registration, lang) ob.checkReviewerRole() self.recatalogNyObject(ob) self.notifyFolderMaintainer(self, ob) #log post date auth_tool = self.getAuthenticationTool() auth_tool.changeLastPost(contributor) #redirect if case if REQUEST is not None: if l_referer == 'consultation_manage_add' or l_referer.find( 'consultation_manage_add') != -1: return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'consultation_add_html': self.setSession('referer', self.absolute_url()) REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url()) else: if REQUEST is not None: self.setSessionErrors(r) self.set_pluggable_item_session(METATYPE_OBJECT, id=id, title=title, description=description, \ sortorder=sortorder, releasedate=releasedate, start_date=start_date, end_date=end_date, allow_file=allow_file, line_comments=line_comments, public_registration=public_registration, lang=lang) REQUEST.RESPONSE.redirect('%s/consultation_add_html' % self.absolute_url()) else: raise Exception, '%s' % ', '.join(r)
def addNyPhoto(self, id='', REQUEST=None, contributor=None, _klass=None, **kwargs): """ Create a Photo type of object. """ if self.is_full(): return None if REQUEST is not None: schema_raw_data = dict(REQUEST.form) else: schema_raw_data = kwargs if _klass is None: _klass = NyPhoto _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None)) if schema_raw_data.get('sortorder', '') == '': schema_raw_data['sortorder'] = DEFAULT_SORTORDER _releasedate = self.process_releasedate( schema_raw_data.pop('releasedate', '')) _content_type = schema_raw_data.pop('content_type', '') schema_raw_data.setdefault('discussion', getattr(self, 'discussion', 0)) # Fallback from album _title = schema_raw_data.pop('title', '') _file = schema_raw_data.pop('file', '') if _file != '' and getattr(_file, 'filename', None) == '': _file = '' #process parameters if id: id = clean_display_id(id) id = make_id(self, id=id, title=(_title or _file), prefix=PREFIX_NYPHOTO) if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() schema_raw_data['title'] = _title ob = _klass(id, contributor=contributor, content_type=_content_type, displays=self.displays.copy()) self.gl_add_languages(ob) self._setObject(id, ob) ob = self._getOb(id) form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) if form_errors: raise ValueError(form_errors.popitem()[1]) # pick a random error if self.glCheckPermissionPublishObjects(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName( ) else: approved, approved_by = 1, None ob.approveThis(approved, approved_by) #extra settings ob.update_data(_file) ob.submitThis() if ob.discussion: ob.open_for_comments() else: ob.close_for_comments() self.recatalogNyObject(ob) #redirect if case if REQUEST is not None: REQUEST.RESPONSE.redirect(self.absolute_url()) return ob.getId()