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)
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)
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)
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)
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}
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.'))
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}