Source code for ResearchNotes.form.documents

from flask import g

from flask_wtf import FlaskForm
from wtforms import (
    StringField,
    SubmitField,
    TextAreaField,
    validators,
)

# from dataclasses import dataclass

from ResearchNotes.database import db, Documents


# =============================================================================
# Forms related to the documentation
# =============================================================================


[docs]class DocCreateForm(FlaskForm): """Create or update a Documentation page.""" label = StringField( "Label", [validators.DataRequired(), validators.Length(min=1, max=70)], ) #: :meta hide-value: title = StringField( "Title", [validators.DataRequired(), validators.Length(min=1, max=70)] ) #: :meta hide-value: body = TextAreaField("Long Description", [validators.DataRequired()]) #: :meta hide-value: submit = SubmitField("Submit Document") #: :meta hide-value: def __init__(self, original_label, *args, **kwargs): super().__init__(*args, **kwargs) self.original_label = original_label # self.label.default = original_label
[docs] def validate_label(self, label): """Validate that label is unique and not use the name index.""" # print(label.data, self.original_label) if label.data != self.original_label: if self.original_label.endswith("_index"): raise validators.ValidationError("Document label 'index' cannot be changed") doc = db.session.execute( db.select(Documents).filter_by(label=label.data, group_id=g.user.group_id) ).scalar() if doc is not None: raise validators.ValidationError( "Document label already used. Please use a different document label." )