62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
"""
|
|
Project: PARTS Website
|
|
Author: Edward Middleton-Smith
|
|
Precision And Research Technology Systems Limited
|
|
|
|
Technology: Backend
|
|
Feature: Calendar Entry Form
|
|
|
|
Description:
|
|
Defines Flask-WTF form for handling user input on Calendar Entries page.
|
|
"""
|
|
|
|
# IMPORTS
|
|
# internal
|
|
from business_objects.base import Base
|
|
from business_objects.dog.calendar_entry_type import Calendar_Entry_Type
|
|
# from business_objects.dog.calendar_entry import Calendar_Entry # Circular
|
|
from helpers.helper_app import Helper_App
|
|
# from models.model_view_store import Model_View_Store # circular
|
|
# from models.model_view_base import Model_View_Base
|
|
from forms.base import Form_Base
|
|
import lib.argument_validation as av
|
|
# external
|
|
from flask import Flask, render_template, request, flash, redirect, url_for, current_app
|
|
from flask_wtf import FlaskForm
|
|
from wtforms import SelectField, BooleanField, StringField, SubmitField
|
|
from wtforms.validators import DataRequired, Email, ValidationError
|
|
import markupsafe
|
|
from flask_wtf.recaptcha import RecaptchaField
|
|
from abc import ABCMeta, abstractmethod
|
|
import json
|
|
|
|
class Filters_Calendar_Entry(Form_Base):
|
|
search = StringField(
|
|
'Search'
|
|
)
|
|
id_calendar_entry_type = SelectField(
|
|
'Type'
|
|
, choices = [Form_Base.get_select_option_all()]
|
|
, default = Form_Base.get_select_valid_option_default_value()
|
|
)
|
|
active_only = BooleanField(
|
|
'Active'
|
|
, default = True
|
|
)
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
_m = f'{cls.__qualname__}.from_json'
|
|
Helper_App.console_log(f'{_m}\njson: {json}')
|
|
filters = cls()
|
|
filters.search.data = json[Base.FLAG_SEARCH]
|
|
filters.id_calendar_entry_type = json[Calendar_Entry_Type.ATTR_ID_CALENDAR_ENTRY_TYPE]
|
|
filters.active_only.data = av.input_bool(json[Base.FLAG_ACTIVE_ONLY], Base.FLAG_ACTIVE_ONLY, f'{cls.__name__}.from_json')
|
|
return filters
|
|
|
|
def to_json(self):
|
|
return {
|
|
Base.FLAG_SEARCH: self.search.data
|
|
, Base.FLAG_ACTIVE_ONLY: self.active_only.data
|
|
}
|