def after_update(self, context, data_dict): # FIXME: flash_success makes no sense if this was an API call # consider moving this to an overridden controller method instead if context.get('allow_state_change') and data_dict.get( 'state') == 'active': h.flash_success( _("Your record %s has been saved.") % data_dict['id']) return data_dict
def package_undelete(self, pkg_id): h.flash_success( _('<strong>Note</strong><br> The record has been restored.'), allow_html=True) lc = LocalCKAN(username=c.user) lc.action.package_patch(id=pkg_id, state='active') return h.redirect_to(controller='package', action='read', id=pkg_id)
def resource_edit(self, id, resource_id, data=None, errors=None, error_summary=None): try: return super(CanadaDatasetController, self).resource_edit( id, resource_id, data, errors, error_summary) except HTTPFound: h.flash_success(_(u'Resource updated.')) # resource read page is unfinished, return to dataset page h.redirect_to(controller='package', action='read', id=id)
def after_update(self, context, data_dict): # FIXME: flash_success makes no sense if this was an API call # consider moving this to an overridden controller method instead if context.get('allow_state_change') and data_dict.get( 'state') == 'active': h.flash_success( _("Your record %s has been saved.") % data_dict['id'] ) return data_dict
def edit(self, id, data=None, errors=None, error_summary=None): try: return super(CanadaDatasetController, self).edit(id, data, errors, error_summary) except HTTPFound: if c.pkg_dict['type'] == 'prop': h.flash_success( _(u'The status has been added / updated for this suggested dataset. This update will be reflected on open.canada.ca shortly.' )) raise
def package_delete(self, pkg_id): h.flash_success(_( '<strong>Note</strong><br> The dataset has been removed from' ' the Open Government Portal. <br/> The record may re-appear' ' if it is re-harvested or updated. Please ensure that the' ' record is deleted and purged from the source catalogue in' ' order to prevent it from reappearing.'), allow_html=True) lc = LocalCKAN(username=c.user) lc.action.package_delete(id=pkg_id) return h.redirect_to(controller='package', action='search')
def package_undelete(self, pkg_id): h.flash_success(_( '<strong>Note</strong><br> The record has been restored.'), allow_html=True ) lc = LocalCKAN(username=c.user) lc.action.package_patch( id=pkg_id, state='active' ) return h.redirect_to( controller='package', action='read', id=pkg_id )
def package_delete(self, pkg_id): h.flash_success(_( '<strong>Note</strong><br> The dataset has been removed from' ' the Open Government Portal. <br/> The record may re-appear' ' if it is re-harvested or updated. Please ensure that the' ' record is deleted and purged from the source catalogue in' ' order to prevent it from reappearing.' ), allow_html=True ) lc = LocalCKAN(username=c.user) lc.action.package_delete(id=pkg_id) return h.redirect_to( controller='package', action='search' )
def logged_in(self): # we need to set the language via a redirect # Lang is not being retrieved properly by the Babel i18n lib in # this redirect, so using this clunky workaround for now. lang = session.pop('lang', None) if lang is None: came_from = request.params.get('came_from', '') if came_from.startswith('/fr'): lang = 'fr' else: lang = 'en' session.save() # we need to set the language explicitly here or the flash # messages will not be translated. i18n.set_lang(lang) if c.user: context = None data_dict = {'id': c.user} user_dict = get_action('user_show')(context, data_dict) h.flash_success( _('<strong>Note</strong><br>{0} is now logged in').format( user_dict['display_name'] ), allow_html=True ) notice_no_access() return h.redirect_to( controller='ckanext.canada.controller:CanadaController', action='home', locale=lang) else: h.flash_error(_('Login failed. Bad username or password.')) return h.redirect_to( controller='user', action='login', locale=lang )
def create_travela(self, id, resource_id): lc = LocalCKAN(username=c.user) pkg = lc.action.package_show(id=id) res = lc.action.resource_show(id=resource_id) org = lc.action.organization_show(id=pkg['owner_org']) dataset = lc.action.recombinant_show( dataset_type='travela', owner_org=org['name']) chromo = h.recombinant_get_chromo('travela') data = {} data_prev = {} form_data = {} for f in chromo['fields']: dirty = request.params.getone(f['datastore_id']) data[f['datastore_id']] = canonicalize(dirty, f['datastore_type'], False) if f['datastore_id'] + '_prev' in request.params: data_prev[f['datastore_id']] = request.params.getone(f['datastore_id'] + '_prev') form_data[f['datastore_id'] + '_prev'] = data_prev[f['datastore_id']] form_data.update(data) def error(errors): return render('recombinant/resource_edit.html', extra_vars={ 'create_errors': errors, 'create_data': form_data, 'delete_errors': [], 'dataset': dataset, 'resource': res, 'organization': org, 'filters': {}, 'action': 'edit'}) try: year = int_validator(data['year'], None) except Invalid: year = None if not year: return error({'year': [_(u'Invalid year')]}) response = lc.action.datastore_search(resource_id=resource_id, filters={'year': data['year']}) if response['records']: return error({'year': [_(u'Data for this year has already been entered')]}) response = lc.action.datastore_search(resource_id=resource_id, filters={'year': year - 1}) if response['records']: prev = response['records'][0] errors = {} for p in data_prev: if prev[p] != data_prev[p] and prev[p]: errors[p + '_prev'] = [_(u'Does not match previous data "%s"') % prev[p]] if errors: return error(errors) else: lc.action.datastore_upsert(resource_id=resource_id, method='insert', records=[dict(data_prev, year=year - 1)]) h.flash_success(_("Record for %d added.") % (year - 1)) lc.action.datastore_upsert(resource_id=resource_id, method='insert', records=[data]) h.flash_success(_("Record for %d added.") % year) redirect(h.url_for( controller='ckanext.recombinant.controller:UploadController', action='preview_table', resource_name=res['name'], owner_org=org['name'], ))
def create_travela(self, id, resource_id): lc = LocalCKAN(username=c.user) pkg = lc.action.package_show(id=id) res = lc.action.resource_show(id=resource_id) org = lc.action.organization_show(id=pkg['owner_org']) dataset = lc.action.recombinant_show(dataset_type='travela', owner_org=org['name']) chromo = h.recombinant_get_chromo('travela') data = {} data_prev = {} form_data = {} for f in chromo['fields']: dirty = request.params.getone(f['datastore_id']) data[f['datastore_id']] = canonicalize(dirty, f['datastore_type'], False) if f['datastore_id'] + '_prev' in request.params: data_prev[f['datastore_id']] = request.params.getone( f['datastore_id'] + '_prev') form_data[f['datastore_id'] + '_prev'] = data_prev[f['datastore_id']] form_data.update(data) def error(errors): return render('recombinant/resource_edit.html', extra_vars={ 'create_errors': errors, 'create_data': form_data, 'delete_errors': [], 'dataset': dataset, 'resource': res, 'organization': org, 'filters': {}, 'action': 'edit' }) try: year = int_validator(data['year'], None) except Invalid: year = None if not year: return error({'year': [_(u'Invalid year')]}) response = lc.action.datastore_search(resource_id=resource_id, filters={'year': data['year']}) if response['records']: return error( {'year': [_(u'Data for this year has already been entered')]}) response = lc.action.datastore_search(resource_id=resource_id, filters={'year': year - 1}) if response['records']: prev = response['records'][0] errors = {} for p in data_prev: if prev[p] != data_prev[p]: errors[p + '_prev'] = [ _(u'Does not match previous data "%s"') % prev[p] ] if errors: return error(errors) else: lc.action.datastore_upsert( resource_id=resource_id, method='insert', records=[dict(data_prev, year=year - 1)]) h.flash_success(_("Record for %d added.") % (year - 1)) lc.action.datastore_upsert(resource_id=resource_id, method='insert', records=[data]) h.flash_success(_("Record for %d added.") % year) redirect( h.url_for( controller='ckanext.recombinant.controller:UploadController', action='preview_table', resource_name=res['name'], owner_org=org['name'], ))