예제 #1
0
  def config(self):
    data = request.POST
    if 'save' in data:
      # update config from form
      for item in s3_option_items:
        if item in data:
          app_globals.set_global(item, data[item])
      app_globals.reset()
      h.redirect_to(controller='ckanext.cloud_connector.s3.controller:S3Controller', action='config')

    data = {}
    for item in s3_option_items:
      data[item] = config.get(item)

    vars = {'data': data, 'errors': {}, 'form_items': s3_option_items}
    return base.render('admin/cloud_connector_config.html',
                           extra_vars = vars)
예제 #2
0
파일: admin.py 프로젝트: opendatatw/ckan
    def config(self):

        items = self._get_config_form_items()
        data = request.POST
        if "save" in data:
            # update config from form
            for item in items:
                name = item["name"]
                if name in data:
                    app_globals.set_global(name, data[name])
            app_globals.reset()
            h.redirect_to(controller="admin", action="config")

        data = {}
        for item in items:
            name = item["name"]
            data[name] = config.get(name)

        vars = {"data": data, "errors": {}, "form_items": items}
        return base.render("admin/config.html", extra_vars=vars)
예제 #3
0
    def config(self):

        items = self._get_config_form_items()
        data = request.POST
        if 'save' in data:
            # update config from form
            for item in items:
                name = item['name']
                if name in data:
                    app_globals.set_global(name, data[name])
            app_globals.reset()
            h.redirect_to(controller='admin', action='config')

        data = {}
        for item in items:
            name = item['name']
            data[name] = config.get(name)

        vars = {'data': data, 'errors': {}, 'form_items': items}
        return base.render('admin/config.html', extra_vars=vars)
예제 #4
0
    def config(self):

        items = self._get_config_form_items()
        data = request.POST
        if 'save' in data:
            # update config from form
            for item in items:
                name = item['name']
                if name in data:
                    app_globals.set_global(name, data[name])
            app_globals.reset()
            h.redirect_to(controller='admin', action='config')

        data = {}
        for item in items:
            name = item['name']
            data[name] = config.get(name)

        vars = {'data': data, 'errors': {}, 'form_items': items}
        return base.render('admin/config.html',
                           extra_vars = vars)
예제 #5
0
    def config(self, items):
        """
        If this method gets called from the vanilla admin page for custom UI
        settings, then we update the ckan.* config variables through the
        'app_globals' module and CKAN stores that information in the
        'system_info' table so that custom configs will persist through a server
        failure.  If this method gets called from the NGDS admin page for data
        settings, then the 'app_globals' module gets updated in memory but
        we write the configs to a custom 'ngds_system_info' table.

        @param items: pylons global config options
        @return: dictionary
        """
        data = request.POST

        if 'data-config' in data:
            if db.ngds_system_info is None:
                db.init(model)

            update_db = db.SysadminConfig.get(active_config=True)

            if data.get('data-config') == 'save':
                class Featured:
                    def __init__(self, config, description):
                        self.config = config
                        self.description = description

                posted_data = tuple([Featured(key, value) for (key, value)
                    in data.iteritems() for item in items if key == item['name']])

                if posted_data:
                    posted_key = posted_data[0].config

                    featured_data = []
                    for post in posted_data:
                        featured_data.append({post.config: post.description})

                    featured_json = json.dumps(featured_data)

                    app_globals.set_global(posted_key, featured_json)
                    setattr(update_db, posted_key, featured_json)

                    app_globals.reset()
                    update_db.last_edited = datetime.datetime.utcnow()
                    update_db.save()
                    session = model.Session
                    session.add(update_db)
                    session.commit()
                    h.redirect_to(controller=self.controller,
                                  action='data_config')

            if data.get('data-config') == 'reset':
                app_globals.set_global('ngds.featured_data', None)
                setattr(update_db, 'ngds.featured_data', None)

                app_globals.reset()
                update_db.last_edited = datetime.datetime.utcnow()
                update_db.save()
                session = model.Session
                session.add(update_db)
                session.commit()
                h.redirect_to(controller=self.controller,
                              action='data_config')


        if 'save-operating-config' in data:
            # Set up ORM if it's not already set
            if db.ngds_system_info is None:
                db.init(model)
            # Get db data to update
            update_db = db.SysadminConfig.get(active_config=True)
            for item in items:
                name = item['name']
                if name in data:
                    # Update app_globals in memory
                    app_globals.set_global(name, data[name])
                    # Update database
                    setattr(update_db, name, data.get(name))
            app_globals.reset()
            update_db.last_edited = datetime.datetime.utcnow()
            update_db.save()
            session = model.Session
            session.add(update_db)
            session.commit()
            h.redirect_to(controller=self.controller,
                          action='operating_config')

        if 'save-style-config' in data:
            for item in items:
                name = item['name']
                if name in data:
                    app_globals.set_global(name, data[name])
            app_globals.reset()
            h.redirect_to(controller=self.controller,
                          action='style_config')

        data = {}
        for item in items:
            name = item['name']
            data[name] = config.get(name)

        try:
            data = json.loads(data)
        except:
            pass

        return {'data': data, 'errors': {}, 'form_items': items}
예제 #6
0
import ckan.lib.app_globals as app_globals

s3_option_items = [
  'ckan.cloud_storage_enable',
  'ckan.s3_aws_key',
  'ckan.s3_secret_key',
  'ckan.cloud_failover',
]

def _get_config_value(key, default=''):
  if cmodel.meta.engine.has_table('system_info'):
      return cmodel.get_system_info(key)

for key in s3_option_items:
  app_globals.set_global(key, _get_config_value(key))

def resource_update(context, data_dict):
    if not config.get('ckan.cloud_storage_enable') or data_dict.get('url'):
        return origin.resource_update(context, data_dict)

    model = context['model']
    user = context['user']
    id = _get_or_bust(data_dict, "id")

    resource = model.Resource.get(id)
    context["resource"] = resource

    if not resource:
        log.error('Could not find resource ' + id)
        raise NotFound(_('Resource was not found.'))
예제 #7
0
파일: admin.py 프로젝트: ngds/ckanext-ngds
    def config(self, items):
        """
        If this method gets called from the vanilla admin page for custom UI
        settings, then we update the ckan.* config variables through the
        'app_globals' module and CKAN stores that information in the
        'system_info' table so that custom configs will persist through a server
        failure.  If this method gets called from the NGDS admin page for data
        settings, then the 'app_globals' module gets updated in memory but
        we write the configs to a custom 'ngds_system_info' table.

        @param items: pylons global config options
        @return: dictionary
        """
        data = request.POST

        if 'data-config' in data:
            if db.ngds_system_info is None:
                db.init(model)

            update_db = db.SysadminConfig.get(active_config=True)

            if data.get('data-config') == 'save':

                class Featured:
                    def __init__(self, config, description):
                        self.config = config
                        self.description = description

                posted_data = tuple([
                    Featured(key, value) for (key, value) in data.iteritems()
                    for item in items if key == item['name']
                ])

                if posted_data:
                    posted_key = posted_data[0].config

                    featured_data = []
                    for post in posted_data:
                        featured_data.append({post.config: post.description})

                    featured_json = json.dumps(featured_data)

                    app_globals.set_global(posted_key, featured_json)
                    setattr(update_db, posted_key, featured_json)

                    app_globals.reset()
                    update_db.last_edited = datetime.datetime.utcnow()
                    update_db.save()
                    session = model.Session
                    session.add(update_db)
                    session.commit()
                    h.redirect_to(controller=self.controller,
                                  action='data_config')

            if data.get('data-config') == 'reset':
                app_globals.set_global('ngds.featured_data', None)
                setattr(update_db, 'ngds.featured_data', None)

                app_globals.reset()
                update_db.last_edited = datetime.datetime.utcnow()
                update_db.save()
                session = model.Session
                session.add(update_db)
                session.commit()
                h.redirect_to(controller=self.controller, action='data_config')

        if 'save-operating-config' in data:
            # Set up ORM if it's not already set
            if db.ngds_system_info is None:
                db.init(model)
            # Get db data to update
            update_db = db.SysadminConfig.get(active_config=True)
            for item in items:
                name = item['name']
                if name in data:
                    # Update app_globals in memory
                    app_globals.set_global(name, data[name])
                    # Update database
                    setattr(update_db, name, data.get(name))
            app_globals.reset()
            update_db.last_edited = datetime.datetime.utcnow()
            update_db.save()
            session = model.Session
            session.add(update_db)
            session.commit()
            h.redirect_to(controller=self.controller,
                          action='operating_config')

        if 'save-style-config' in data:
            for item in items:
                name = item['name']
                if name in data:
                    app_globals.set_global(name, data[name])
            app_globals.reset()
            h.redirect_to(controller=self.controller, action='style_config')

        data = {}
        for item in items:
            name = item['name']
            data[name] = config.get(name)

        try:
            data = json.loads(data)
        except:
            pass

        return {'data': data, 'errors': {}, 'form_items': items}