Feat: Dogs page.

This commit is contained in:
2025-08-09 10:44:33 +01:00
parent d5e5e1a111
commit 77393d2057
46 changed files with 1718 additions and 640 deletions

View File

@@ -12,6 +12,7 @@ from business_objects.base import Base
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
import lib.argument_validation as av
from extensions import db
from forms.dog.company import Filters_Company
from helpers.helper_app import Helper_App
# external
from dataclasses import dataclass
@@ -154,10 +155,9 @@ class Parameters_Company(Get_Many_Parameters_Base):
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
)
"""
@classmethod
def from_form_filters_company(cls, form):
av.val_instance(form, 'form', 'Parameters_Company.from_form_filters_company', Filters_Company)
av.val_instance(form, 'form', f'{cls.__qualname__}.from_form_filters_company', Filters_Company)
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
active_only = av.input_bool(form.active_only.data, "active", "Parameters_Company.from_form_filters_company")
filters = cls.get_default()
@@ -165,9 +165,8 @@ class Parameters_Company(Get_Many_Parameters_Base):
filters.get_inactive_company = not active_only
filters.ids_company = ''
filters.names_company = form.search.data if has_filter_search_text else ''
filters.notes_company = form.search.data if has_filter_search_text else ''
filters.websites_company = form.search.data if has_filter_search_text else ''
return filters
"""
def to_json(self):
return {

View File

@@ -10,6 +10,7 @@ Feature: Dog Business Object
# internal
from business_objects.base import Base
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
from forms.dog.dog import Filters_Dog
import lib.argument_validation as av
from extensions import db
from helpers.helper_app import Helper_App
@@ -175,21 +176,18 @@ class Parameters_Dog(Get_Many_Parameters_Base):
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
)
"""
@classmethod
def from_form_filters_dog(cls, form):
av.val_instance(form, 'form', 'Parameters_Dog.from_form_filters_dog', Filters_Dog)
has_filter_id = not (form.id_dog.data == '0' or form.id_dog.data == '' or form.id_dog.data is None)
has_filter_name = not (form.name_dog.data == '0' or form.name_dog.data == '' or form.name_dog.data is None)
has_filter_dog = has_filter_id or has_filter_name
active_only = av.input_bool(form.active.data, "active", "Parameters_Dog.from_form_filters_dog")
return cls(
get_all_dog = not has_filter_dog
, get_inactive_dog = not active_only
, ids_dog = form.id_dog.data if has_filter_id else ''
, names_dog = form.name_dog.data if has_filter_name else ''
)
"""
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
has_filter_dog = has_filter_search_text # has_filter_id or has_filter_name
active_only = av.input_bool(form.active_only.data, "active_only", "Parameters_Dog.from_form_filters_dog")
filter_parameters = cls.get_default()
filter_parameters.get_all_dog = not has_filter_dog
filter_parameters.get_inactive_dog = not active_only
filter_parameters.ids_dog = '' # form.id_dog.data if has_filter_id else ''
filter_parameters.names_dog = form.search.data if has_filter_search_text else ''
return filter_parameters
def to_json(self):
return {

View File

@@ -25,6 +25,7 @@ class User(SQLAlchemy_ABC, Base):
ATTR_ID_USER_AUTH0: ClassVar[str] = 'id_user_auth0'
FLAG_CAN_ADMIN_DOG: ClassVar[str] = 'can_admin_dog'
FLAG_CAN_ADMIN_USER: ClassVar[str] = 'can_admin_user'
FLAG_CAN_EDIT_COMPANY: ClassVar[str] = 'can_edit_company'
FLAG_IS_EMAIL_VERIFIED: ClassVar[str] = 'is_email_verified'
FLAG_IS_SUPER_USER: ClassVar[str] = 'is_super_user'
FLAG_PRIORITY_ACCESS_LEVEL: ClassVar[str] = 'priority_access_level'
@@ -44,6 +45,7 @@ class User(SQLAlchemy_ABC, Base):
priority_access_level = db.Column(db.Integer)
can_admin_dog = db.Column(db.Boolean)
can_admin_user = db.Column(db.Boolean)
can_edit_company = db.Column(db.Boolean)
is_new = db.Column(db.Boolean)
active = db.Column(db.Boolean)
@@ -52,6 +54,7 @@ class User(SQLAlchemy_ABC, Base):
self.is_new = False
self.can_admin_dog = False
self.can_admin_user = False
self.can_edit_company = False
self.id_company = None
self.company = None
self.id_role = None
@@ -75,6 +78,7 @@ class User(SQLAlchemy_ABC, Base):
user.priority_access_level = query_row[12]
user.can_admin_dog = av.input_bool(query_row[13], cls.FLAG_CAN_ADMIN_DOG, _m)
user.can_admin_user = av.input_bool(query_row[14], cls.FLAG_CAN_ADMIN_USER, _m)
user.can_edit_company = av.input_bool(query_row[15], cls.FLAG_CAN_ADMIN_USER, _m)
# user.is_new = av.input_bool(query_row[9], 'is_new', _m)
user.role = Role.from_db_user(query_row)
user.company = Company.from_db_user(query_row)
@@ -106,6 +110,7 @@ class User(SQLAlchemy_ABC, Base):
user.is_super_user = av.input_bool(json[cls.FLAG_IS_SUPER_USER], cls.FLAG_IS_SUPER_USER, _m)
user.can_admin_dog = user.is_super_user or json[cls.FLAG_CAN_ADMIN_DOG]
user.can_admin_user = user.is_super_user or json[cls.FLAG_CAN_ADMIN_USER]
user.can_edit_company = user.is_super_user or json.get(cls.FLAG_CAN_EDIT_COMPANY, False)
user.role = Role.from_json(json[Role.FLAG_ROLE])
user.company = Company.from_json(json[Company.FLAG_COMPANY])
return user
@@ -126,7 +131,7 @@ class User(SQLAlchemy_ABC, Base):
user.can_admin_dog = user.is_super_user
user.can_admin_user = user.is_super_user
user.can_edit_company = user.is_super_user
return user
def to_json(self):
@@ -143,10 +148,11 @@ class User(SQLAlchemy_ABC, Base):
, self.FLAG_PRIORITY_ACCESS_LEVEL: self.priority_access_level
, self.FLAG_CAN_ADMIN_DOG: self.can_admin_dog
, self.FLAG_CAN_ADMIN_USER: self.can_admin_user
, self.FLAG_CAN_EDIT_COMPANY: self.can_edit_company
, Company.ATTR_ID_COMPANY: self.id_company
, Company.FLAG_COMPANY: self.company.to_json()
, Company.FLAG_COMPANY: None if self.company is None else self.company.to_json()
, Role.ATTR_ID_ROLE: self.id_role
, Role.FLAG_ROLE: self.role.to_json()
, Role.FLAG_ROLE: None if self.role is None else self.role.to_json()
}
return as_json
@@ -164,6 +170,7 @@ User (
, {self.FLAG_PRIORITY_ACCESS_LEVEL}: {self.priority_access_level}
, {self.FLAG_CAN_ADMIN_DOG}: {self.can_admin_dog}
, {self.FLAG_CAN_ADMIN_USER}: {self.can_admin_user}
, {self.FLAG_CAN_EDIT_COMPANY}: {self.can_edit_company}
, {Role.ATTR_ID_ROLE}: {self.id_role}
, {Role.FLAG_ROLE}: {self.role}
, {Company.ATTR_ID_COMPANY}: {self.id_company}