|
32 | 32 |
|
33 | 33 | from ckanext.recombinant.errors import ( |
34 | 34 | RecombinantException, |
| 35 | + RecombinantFieldError, |
35 | 36 | BadExcelData, |
36 | 37 | format_trigger_error |
37 | 38 | ) |
@@ -106,13 +107,15 @@ def upload(id: str) -> Union[Response, str]: |
106 | 107 | return h.redirect_to('recombinant.preview_table', |
107 | 108 | resource_name=resource_name, |
108 | 109 | owner_org=org['name']) |
109 | | - except KeyError as e: |
110 | | - return render( |
111 | | - 'recombinant/force_update.html', |
112 | | - extra_vars={'key_errors': str(e).replace("'", ''), |
113 | | - 'dataset_id': dataset['id'], |
114 | | - 'res_name': resource_name, |
115 | | - 'owner_org': dataset['owner_org']}) |
| 110 | + except RecombinantFieldError as e: |
| 111 | + h.flash_error(render('recombinant/snippets/outdated_error.html', |
| 112 | + extra_vars={'key_errors': str(e).replace("'", ''), |
| 113 | + 'dataset_id': dataset['id'], |
| 114 | + 'res_name': resource_name, |
| 115 | + 'owner_org': dataset['owner_org']})) |
| 116 | + return h.redirect_to('recombinant.preview_table', |
| 117 | + resource_name=resource_name, |
| 118 | + owner_org=org['name']) |
116 | 119 | except BadExcelData as e: |
117 | 120 | h.flash_error(_(e.message)) |
118 | 121 | return h.redirect_to('recombinant.preview_table', |
@@ -331,13 +334,15 @@ def template(dataset_type: str, lang: str, owner_org: str) -> Union[Response, st |
331 | 334 |
|
332 | 335 | try: |
333 | 336 | append_data(book, record_data, chromo) |
334 | | - except KeyError as e: |
335 | | - return render( |
336 | | - 'recombinant/force_update.html', |
337 | | - extra_vars={'key_errors': str(e).replace("'", ''), |
338 | | - 'dataset_id': dataset['id'], |
339 | | - 'res_name': resource['name'], |
340 | | - 'owner_org': dataset['owner_org']}) |
| 337 | + except RecombinantFieldError as e: |
| 338 | + h.flash_error(render('recombinant/snippets/outdated_error.html', |
| 339 | + extra_vars={'key_errors': str(e).replace("'", ''), |
| 340 | + 'dataset_id': dataset['id'], |
| 341 | + 'res_name': resource_name, |
| 342 | + 'owner_org': dataset['owner_org']})) |
| 343 | + return h.redirect_to('recombinant.preview_table', |
| 344 | + resource_name=resource_name, |
| 345 | + owner_org=org['name']) |
341 | 346 |
|
342 | 347 | resource_names = dict((r['id'], r['name']) for r in dataset['resources']) |
343 | 348 | ds_info = lc.action.datastore_info(id=resource['id']) |
@@ -665,13 +670,15 @@ def preview_table(resource_name: str, |
665 | 670 | @recombinant.route('/recombinant/refresh/<resource_name>/<owner_org>', |
666 | 671 | methods=['GET', 'POST']) |
667 | 672 | def refresh_dataset(resource_name: str, owner_org: str): |
| 673 | + if not is_sysadmin(g.user): |
| 674 | + return abort(403) |
668 | 675 | if request.method != 'POST': |
669 | 676 | # handle page refreshes |
670 | 677 | h.flash_notice(_('Form not submitted, please try again.')) |
671 | 678 | return h.redirect_to('recombinant.preview_table', |
672 | 679 | resource_name=resource_name, |
673 | 680 | owner_org=owner_org) |
674 | | - if 'confirm' in request.form: |
| 681 | + if 'refresh' in request.form: |
675 | 682 | dataset_id = request.form['dataset_id'] |
676 | 683 | if not dataset_id: |
677 | 684 | h.flash_error(_('Could not determine dataset to update.')) |
@@ -832,7 +839,7 @@ def _process_upload_file(lc: LocalCKAN, |
832 | 839 | key = key.group(1) |
833 | 840 | else: |
834 | 841 | key = _('unknown') |
835 | | - raise KeyError(key) |
| 842 | + raise RecombinantFieldError(key) |
836 | 843 | else: |
837 | 844 | # type_ignore_reason: incomplete typing |
838 | 845 | pgerror = e.error_dict['records'][0] # type: ignore |
|
0 commit comments