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 process_add(self, REQUEST, **kwargs): """ """ schema_raw_data = dict(REQUEST.form) _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None)) _releasedate = self.process_releasedate( schema_raw_data.pop('releasedate', ''), self.releasedate) _frontpicture = schema_raw_data.pop('frontpicture', '') parent = self.getParentNode() id = uniqueId(slugify(schema_raw_data.get('title', '') or 'story'), lambda x: parent._getOb(x, None) is not None) schema_raw_data['title'] = schema_raw_data['title'].replace( self.id, id) schema_raw_data['description'] = schema_raw_data[ 'description'].replace(self.id, id) schema_raw_data['body'] = schema_raw_data['body'].replace(self.id, id) #check mandatory fiels l_referer = REQUEST['HTTP_REFERER'].split('/')[-1] form_errors = self.process_submitted_form( schema_raw_data, _lang, _override_releasedate=_releasedate) submitter_errors = submitter.info_check(self.aq_parent, REQUEST, self) form_errors.update(submitter_errors) if not form_errors: parent.manage_renameObjects([self.id], [id]) if self.checkPermissionSkipApproval(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName( ) else: approved, approved_by = 0, None self.setFrontPicture(_frontpicture) self.approveThis(approved, approved_by) self.submitThis() self.recatalogNyObject(self) notify( NyContentObjectAddEvent(self, self.contributor, schema_raw_data)) self.setSession('referer', self.getParentNode().absolute_url()) return self.object_submitted_message(REQUEST) REQUEST.RESPONSE.redirect('%s/messages_html' % self.getParentNode().absolute_url()) else: l_referer = REQUEST['HTTP_REFERER'].split('/')[-1] self._prepare_error_response(REQUEST, form_errors, schema_raw_data) REQUEST.RESPONSE.redirect('%s/add_html' % self.absolute_url())
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 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 addNyPublication(self, id='', REQUEST=None, contributor=None, **kwargs): """ Create an Publication 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('locator', '') _source = schema_raw_data.pop('source', 'file') _file = schema_raw_data.pop('file', '') _url = schema_raw_data.pop('url', '') recaptcha_response = schema_raw_data.get('g-recaptcha-response', '') title = schema_raw_data.get('title', '') id = self.utSlugify(id or schema_raw_data.get('title', '') or PREFIX_OBJECT) if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _create_NyPublication_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/publication_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() ob.handleUpload(_source, _file, _url) if ob.discussion: ob.open_for_comments() self.recatalogNyObject(ob) notify(NyContentObjectAddEvent(ob, contributor, schema_raw_data)) self.notifyFolderMaintainer(self, ob) # 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 == 'publication_manage_add' or l_referer.find('publication_manage_add') != -1): return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'publication_add_html': self.setSession('referer', self.absolute_url()) REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url()) else: # undefined state (different referer, called in other context) return ob return ob.getId()
def addNyURL(self, id='', REQUEST=None, contributor=None, **kwargs): """ Create an URL 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('locator', '') id = uniqueId( slugify(id or schema_raw_data.get('title', '') or 'url', removelist=[]), lambda x: self._getOb(x, None) is not None) if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _create_NyURL_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/url_add_html' % self.absolute_url()) return # process parameters if self.checkPermissionSkipApproval(): approved, approved_by = (1, self.REQUEST.AUTHENTICATED_USER.getUserName()) else: approved, approved_by = 0, None ob.approveThis(approved, approved_by) 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 == 'url_manage_add' or l_referer.find('url_manage_add') != -1): return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'url_add_html': self.setSession('referer', self.absolute_url()) return ob.object_submitted_message(REQUEST) REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url()) else: # undefined state (different referer, called in other context) return ob 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 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 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 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 addNyFile(self, id='', REQUEST=None, contributor=None, **kwargs): """ Create a File 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', '')) _source = schema_raw_data.pop('source', 'file') _file = schema_raw_data.pop('file', '') _url = schema_raw_data.pop('url', '') _precondition = schema_raw_data.pop('precondition', '') title = schema_raw_data.get('title', '') #process parameters if _source == 'file': id = cookId(id, title, _file)[0] #upload from a file id = uniqueId(slugify(id or title or 'file', removelist=[]), lambda x: self._getOb(x, None) is not None) if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _create_NyFile_object(self, id, title, '', _precondition, contributor) form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate) if hasattr(_file, 'read') and not _file.read() and not _url: form_errors['file'] = ['File upload or URL is mandatory'] 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/file_add_html' % self.absolute_url()) return #process parameters if self.checkPermissionSkipApproval(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName( ) else: approved, approved_by = 0, None ob.submitThis() _send_notif = kwargs.get('_send_notifications', True) ob.approveThis(approved, approved_by, _send_notifications=_send_notif) ob.handleUpload(_source, _file, _url) 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 == 'file_manage_add' or l_referer.find( 'file_manage_add') != -1: return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'file_add_html': self.setSession('referer', self.absolute_url()) return ob.object_submitted_message(REQUEST) REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url()) else: # undefined state (different referer, called in other context) return ob return ob.getId()
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 addNyCaseStudy(self, id='', REQUEST=None, contributor=None, **kwargs): """ Create a `NyCaseStudy` 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', '')) id = uniqueId( slugify(id or schema_raw_data.get('title', '') or 'case_study', removelist=[]), lambda x: self._getOb(x, None) is not None) if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName() ob = _create_NyCaseStudy_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) spatial_scale = schema_raw_data.get('spatial_scale') geographical_scope = schema_raw_data.get('geographical_scope', []) if (spatial_scale == 'regional-case-study-covers-more-one-country' and len(geographical_scope) < 2): form_errors.setdefault('geographical_scope', []) form_errors['geographical_scope'].append( 'For regional case studies please select at least 2 countries') if (spatial_scale and spatial_scale != 'regional-case-study-covers-more-one-country' and len(geographical_scope) > 1): form_errors.setdefault('geographical_scope', []) form_errors['geographical_scope'].append( 'For national or sub-national case studies please select exactly ' 'one country') 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/case_study_add_html' % self.absolute_url()) return if self.checkPermissionSkipApproval(): approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName( ) else: approved, approved_by = 0, None ob.approveThis(approved, approved_by) 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 == 'case_study_manage_add' or l_referer.find( 'case_study_manage_add') != -1: return self.manage_main(self, REQUEST, update_menu=1) elif l_referer == 'case_study_add_html': self.setSession('referer', self.absolute_url()) return ob.object_submitted_message(REQUEST) REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url()) else: # undefined state (different referer, called in other context) return ob return ob.getId()
if file_has_content(_uploaded_file): ob._save_file(_uploaded_file, language=_lang, contributor=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()