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')
Пример #2
0
 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')
Пример #5
0
 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')