diff --git a/app/contributions/forms.py b/app/contributions/forms.py index b30c578e21e4b56992d418b4425003f591ca49e6..2c22f56e26254cf7faabd4f84470aa7177219a79 100644 --- a/app/contributions/forms.py +++ b/app/contributions/forms.py @@ -42,6 +42,9 @@ class ContributionBaseForm(FlaskForm): 'Publishing year', validators=[InputRequired()] ) + compatible_service_versions = SelectMultipleField( + 'Compatible service versions' + ) shared = BooleanField( 'Shared' ) @@ -53,10 +56,7 @@ class CreateTesseractOCRPipelineModelForm(ContributionBaseForm): 'File', validators=[FileRequired()] ) - compatible_service_versions = SelectMultipleField( - 'Compatible service versions' - ) - + def validate_tesseract_model_file(self, field): current_app.logger.warning(field.data.filename) if not field.data.filename.lower().endswith('.traineddata'): @@ -77,9 +77,6 @@ class CreateSpaCyNLPPipelineModelForm(ContributionBaseForm): 'File', validators=[FileRequired()] ) - compatible_service_versions = SelectMultipleField( - 'Compatible service versions' - ) pipeline_name = StringField( 'Pipeline name', validators=[InputRequired(), Length(max=64)] @@ -103,9 +100,15 @@ class CreateSpaCyNLPPipelineModelForm(ContributionBaseForm): class EditContributionBaseForm(ContributionBaseForm): pass - class EditTesseractOCRPipelineModelForm(EditContributionBaseForm): - pass + def __init__(self, *args, **kwargs): + service_manifest = SERVICES['tesseract-ocr-pipeline'] + super().__init__(*args, **kwargs) + self.compatible_service_versions.choices = [('', 'Choose your option')] + self.compatible_service_versions.choices += [ + (x, x) for x in service_manifest['versions'].keys() + ] + self.compatible_service_versions.default = '' class EditSpaCyNLPPipelineModelForm(EditContributionBaseForm): @@ -113,3 +116,11 @@ class EditSpaCyNLPPipelineModelForm(EditContributionBaseForm): 'Pipeline name', validators=[InputRequired(), Length(max=64)] ) + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + service_manifest = SERVICES['spacy-nlp-pipeline'] + self.compatible_service_versions.choices = [('', 'Choose your option')] + self.compatible_service_versions.choices += [ + (x, x) for x in service_manifest['versions'].keys() + ] + self.compatible_service_versions.default = '' diff --git a/app/contributions/routes.py b/app/contributions/routes.py index cd9cdb4b5811085d338db212ddcfd6783aee62d4..6ced5eedd4006c13ca03df4fcc0e96581305b6ea 100644 --- a/app/contributions/routes.py +++ b/app/contributions/routes.py @@ -127,7 +127,7 @@ def create_tesseract_ocr_pipeline_model(): ) @bp.route('/tesseract-ocr-pipeline-models/<hashid:tesseract_ocr_pipeline_model_id>/toggle-public-status', methods=['POST']) -def share_tesseract_ocr_pipeline_model(tesseract_ocr_pipeline_model_id): +def toggle_public_status_tesseract_ocr_pipeline_model(tesseract_ocr_pipeline_model_id): tesseract_ocr_pipeline_model = TesseractOCRPipelineModel.query.get_or_404(tesseract_ocr_pipeline_model_id) if not (tesseract_ocr_pipeline_model.user == current_user or current_user.is_administrator()): abort(403) @@ -223,7 +223,7 @@ def create_spacy_nlp_pipeline_model(): ) @bp.route('/spacy-nlp-pipeline-models/<hashid:spacy_nlp_pipeline_model_id>/toggle-public-status', methods=['POST']) -def share_spacy_nlp_pipeline_model(spacy_nlp_pipeline_model_id): +def toggle_public_status_spacy_nlp_pipeline_model(spacy_nlp_pipeline_model_id): spacy_nlp_pipeline_model = SpaCyNLPPipelineModel.query.get_or_404(spacy_nlp_pipeline_model_id) if not (spacy_nlp_pipeline_model.user == current_user or current_user.is_administrator()): abort(403) diff --git a/app/static/js/Utils.js b/app/static/js/Utils.js index 6de95033f4676d167ec6a10344fd4292114a7db8..31c890870a33ff9c5407570c6b4906cff3419df9 100644 --- a/app/static/js/Utils.js +++ b/app/static/js/Utils.js @@ -429,7 +429,7 @@ class Utils { } else { msg = `Model "${tesseractOCRPipelineModel.title}" is now private`; } - fetch(`/contributions/spacy-nlp-pipeline-models/${tesseractOCRPipelineModel.id}/toggle-public-status`, {method: 'POST', headers: {Accept: 'application/json'}}) + fetch(`/contributions/tesseract-ocr-pipeline-models/${tesseractOCRPipelineModel.id}/toggle-public-status`, {method: 'POST', headers: {Accept: 'application/json'}}) .then( (response) => { app.flash(msg, 'corpus'); diff --git a/app/templates/contributions/spacy_nlp_pipeline_model.html.j2 b/app/templates/contributions/spacy_nlp_pipeline_model.html.j2 index 951b12a63a0e1ced666ce48c50970c2e3e777101..718fe7ded527b50386dbadd70e8f3e53b74e29af 100644 --- a/app/templates/contributions/spacy_nlp_pipeline_model.html.j2 +++ b/app/templates/contributions/spacy_nlp_pipeline_model.html.j2 @@ -41,6 +41,9 @@ <div class="col s12 l10"> {{ wtf.render_field(form.version, material_icon='apps') }} </div> + <div class="col s12 l6"> + {{ wtf.render_field(form.compatible_service_versions) }} + </div> <div class="col s12 l6 right-align" style="padding-right:20px;"> <p></p> <br> diff --git a/app/templates/contributions/tesseract_ocr_pipeline_model.html.j2 b/app/templates/contributions/tesseract_ocr_pipeline_model.html.j2 index c979f3ab51191f0a95f43d15c905c556f201a5a2..ae2432dcb28b1a5adcabf8809593f12c39803050 100644 --- a/app/templates/contributions/tesseract_ocr_pipeline_model.html.j2 +++ b/app/templates/contributions/tesseract_ocr_pipeline_model.html.j2 @@ -38,6 +38,9 @@ <div class="col s12 l10"> {{ wtf.render_field(form.version, material_icon='apps') }} </div> + <div class="col s12 l6"> + {{ wtf.render_field(form.compatible_service_versions) }} + </div> <div class="col s12 l6 right-align" style="padding-right:20px;"> <p></p> <br>