def edit_metadata_portal(self): self._authorize() if request.method == 'POST': params = parse_params(request.POST) config_dict = self._read_config() languages = params.get('metadata-languages', []) if not isinstance(languages, list): languages = [languages] new_metadata_config = { 'homepage': params['metadata-homepage'].strip(), 'id': params['metadata-id'].strip(), 'launch_date': params['metadata-launch_date'], 'licence_conditions': params['metadata-licence_conditions'].strip(), 'languages': languages, 'last_updated': moment.now().isoformat(), 'license': params['metadata-license'].strip(), 'country': params['metadata-country'].strip(), 'province': params['metadata-province'].strip(), 'districts': params.get('metadata-municipio', []), } config_dict['portal-metadata'] = new_metadata_config self._set_config(config_dict) # Actualizo el data.json # Se importa 'datajson_actions' en la función para evitar dependencias circulares con 'config_controller' import ckanext.gobar_theme.lib.datajson_actions as datajson_actions datajson_actions.enqueue_update_datajson_cache_tasks() cache_actions.clear_web_cache() return base.render( template_name='config/config_12_metadata_portal.html')
def delete(self, _): ''' Implementación de ckan.plugins.interfaces.IGroupController#delete Al llamarse esta acción, se regenera la caché del data.json ''' datajson_actions.enqueue_update_datajson_cache_tasks() cache_actions.clear_web_cache()
def edit_social(self): self._authorize() if request.method == 'POST': params = parse_params(request.POST) if not re.match( r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)", params['mail'], re.IGNORECASE): c.errors = {} c.errors[ 'mail_error'] = "El mail es inválido o está incompleto" return base.render('config/config_05_social.html') config_dict = self._read_config() config_dict['social'] = { 'fb': self._url_with_protocol(params['fb'].strip()), 'tw': self._url_with_protocol(params['tw'].strip()), 'github': self._url_with_protocol(params['github'].strip()), 'inst': self._url_with_protocol(params['inst'].strip()), 'yt': self._url_with_protocol(params['yt'].strip()), 'linkedin': self._url_with_protocol(params['linkedin'].strip()), 'blog': self._url_with_protocol(params['blog'].strip()), 'mail': params['mail'].strip() } self._set_config(config_dict) import ckanext.gobar_theme.lib.datajson_actions as datajson_actions datajson_actions.enqueue_update_datajson_cache_tasks() cache_actions.clear_web_cache() return base.render('config/config_05_social.html')
def edit_title(self): self._authorize() if request.method == 'POST': # Validating the form's fields c.errors = {} params = parse_params(request.params) error_title = (len(params['site-title']) < 9 or len(params['site-title']) > 100) error_description = (len(params['site-description']) < 30 or len(params['site-description']) > 300) error_organization = (len(params['site-organization']) < 9 or len(params['site-organization']) > 100) if error_title: c.errors[ 'title_error'] = "Debe contener entre 9 y 100 caracteres!" if error_description: c.errors[ 'description_error'] = "Debe contener entre 30 y 300 caracteres!" if error_organization: c.errors[ 'organization_error'] = "Debe contener entre 9 y 100 caracteres!" if error_description or error_title or error_organization: return base.render('config/config_01_title.html') # No errors found within the form's fields --> Modifications will be done config_dict = self._read_config() new_title_config = { 'site-title': params['site-title'].strip(), 'site-description': params['site-description'].strip(), 'site-organization': params['site-organization'].strip() } if params['image-logic'] == 'new-image': new_title_config['background-image'] = self._save_img( params['background-image']) elif params['image-logic'] == 'delete-image': new_title_config['background-image'] = None else: new_title_config['background-image'] = self.get_theme_config( 'title.background-image') config_dict['title'] = new_title_config self._set_config(config_dict) # Actualizo el data.json # Se importa 'datajson_actions' en la función para evitar dependencias circulares con 'config_controller' import ckanext.gobar_theme.lib.datajson_actions as datajson_actions datajson_actions.enqueue_update_datajson_cache_tasks() cache_actions.clear_web_cache() return base.render('config/config_01_title.html')
def notify(self, entity, operation): if isinstance(entity, Package): if not (operation == 'changed' and entity.state == 'deleted') and entity.state != 'draft': datajson_actions.enqueue_update_datajson_cache_tasks() cache_actions.clear_web_cache() elif isinstance(entity, Resource): arguments_list_to_store = ['icon_url'] entity_dict = entity.as_dict() # Modificamos el id dentro de entity_dict para usarlo en el guardado de información en el archivo entity_dict['id'] = '%s_%s_%s' % ( gobar_helpers.get_package_organization(entity_dict.get('package_id')).get('id', ''), entity_dict['package_id'], entity_dict['id'] ) self._prepare_data_for_storage_outside_datajson(arguments_list_to_store, entity_dict, 'resources')