alchemy functions updated

This commit is contained in:
2024-11-10 14:13:38 +03:00
parent a28d4c22d1
commit aeda315119
12 changed files with 305 additions and 279 deletions

View File

@@ -19,9 +19,8 @@ from sqlalchemy import (
)
from databases.sql_models.core_mixin import CrudCollection
from databases import ApiEnumDropdown
from databases.extensions.selector_classes import SelectActionWithEmployee, Explanation
from databases.extensions.selector_classes import SelectActionWithEmployee
from api_validations.validations_request import (
InsertBuildParts,
InsertBuild,
@@ -29,84 +28,84 @@ from api_validations.validations_request import (
)
from api_objects.auth.token_objects import EmployeeTokenObject, OccupantTokenObject
class AbstractBuild:
"""
Abstract and explanation of Build class for end-user guide
"""
gov_address_code = Explanation(
explanation="Devletin resmi adres kodudur.",
usage="Devletin resmi adres kodu istendiğinde kullanılır.",
alias="Devlet Adres Kodu",
example=["1234567890"],
)
build_name = Explanation(
explanation="Bina adıdır.",
usage="Bina adı istendiğinde kullanılır.",
alias="Bina Adı",
example=["X Binası", "Y Binası"],
)
build_no = Explanation(
explanation="Bina numarasıdır.",
usage="Bina numarası istendiğinde kullanılır.",
alias="Bina No",
example=["1234567890"],
)
build_types = Explanation(
explanation="Bina türüdür.",
usage="Bina türü istendiğinde kullanılır.",
alias="Bina Türü",
example=["Ofis", "Konut", "Depo"],
)
max_floor = Explanation(
explanation="Bina kat sayısıdır.",
usage="Bina kat sayısı istendiğinde kullanılır.",
alias="Kat Sayısı",
example=["1", "2", "3"],
)
underground_floor = Explanation(
explanation="Bina bodrum kat sayısıdır.",
usage="Bina bodrum kat sayısı istendiğinde kullanılır.",
alias="Bodrum Kat Sayısı",
example=["1", "2", "3"],
)
build_date = Explanation(
explanation="Bina yapım tarihidir.",
usage="Bina yapım tarihi istendiğinde kullanılır.",
alias="Yapım Tarihi",
example=["2021-01-01"],
)
tax_no = Explanation(
explanation="Bina vergi numarasıdır.",
usage="Bina vergi numarası istendiğinde kullanılır.",
alias="Vergi No",
example=["1234567890"],
)
lift_count = Explanation(
explanation="Bina asansör sayısıdır.",
usage="Bina asansör sayısı istendiğinde kullanılır.",
alias="Asansör Sayısı",
example=["1", "2", "3"],
)
heating_system = Explanation(
explanation="Bina ısıtma sistemi var mı?",
usage="Bina ısıtma sistemi var mı istendiğinde kullanılır.",
alias="Isıtma Sistemi",
example=[True, False],
)
cooling_system = Explanation(
explanation="Bina soğutma sistemi var mı?",
usage="Bina soğutma sistemi var mı istendiğinde kullanılır.",
alias="Soğutma Sistemi",
example=[True, False],
)
hot_water_system = Explanation(
explanation="Bina sıcak su sistemi var mı?",
usage="Bina sıcak su sistemi var mı istendiğinde kullanılır.",
alias="Sıcak Su Sistemi",
example=[True, False],
)
#
# class AbstractBuild:
# """
# Abstract and explanation of Build class for end-user guide
# """
#
# gov_address_code = Explanation(
# explanation="Devletin resmi adres kodudur.",
# usage="Devletin resmi adres kodu istendiğinde kullanılır.",
# alias="Devlet Adres Kodu",
# example=["1234567890"],
# )
# build_name = Explanation(
# explanation="Bina adıdır.",
# usage="Bina adı istendiğinde kullanılır.",
# alias="Bina Adı",
# example=["X Binası", "Y Binası"],
# )
# build_no = Explanation(
# explanation="Bina numarasıdır.",
# usage="Bina numarası istendiğinde kullanılır.",
# alias="Bina No",
# example=["1234567890"],
# )
# build_types = Explanation(
# explanation="Bina türüdür.",
# usage="Bina türü istendiğinde kullanılır.",
# alias="Bina Türü",
# example=["Ofis", "Konut", "Depo"],
# )
# max_floor = Explanation(
# explanation="Bina kat sayısıdır.",
# usage="Bina kat sayısı istendiğinde kullanılır.",
# alias="Kat Sayısı",
# example=["1", "2", "3"],
# )
# underground_floor = Explanation(
# explanation="Bina bodrum kat sayısıdır.",
# usage="Bina bodrum kat sayısı istendiğinde kullanılır.",
# alias="Bodrum Kat Sayısı",
# example=["1", "2", "3"],
# )
# build_date = Explanation(
# explanation="Bina yapım tarihidir.",
# usage="Bina yapım tarihi istendiğinde kullanılır.",
# alias="Yapım Tarihi",
# example=["2021-01-01"],
# )
# tax_no = Explanation(
# explanation="Bina vergi numarasıdır.",
# usage="Bina vergi numarası istendiğinde kullanılır.",
# alias="Vergi No",
# example=["1234567890"],
# )
# lift_count = Explanation(
# explanation="Bina asansör sayısıdır.",
# usage="Bina asansör sayısı istendiğinde kullanılır.",
# alias="Asansör Sayısı",
# example=["1", "2", "3"],
# )
# heating_system = Explanation(
# explanation="Bina ısıtma sistemi var mı?",
# usage="Bina ısıtma sistemi var mı istendiğinde kullanılır.",
# alias="Isıtma Sistemi",
# example=[True, False],
# )
# cooling_system = Explanation(
# explanation="Bina soğutma sistemi var mı?",
# usage="Bina soğutma sistemi var mı istendiğinde kullanılır.",
# alias="Soğutma Sistemi",
# example=[True, False],
# )
# hot_water_system = Explanation(
# explanation="Bina sıcak su sistemi var mı?",
# usage="Bina sıcak su sistemi var mı istendiğinde kullanılır.",
# alias="Sıcak Su Sistemi",
# example=[True, False],
# )
class BuildTypes(CrudCollection):
@@ -210,7 +209,7 @@ class Build(CrudCollection, SelectActionWithEmployee):
__include__fields__ = []
__access_by__ = []
__many__table__ = RelationshipEmployee2Build
__explain__ = AbstractBuild()
# __explain__ = AbstractBuild()
gov_address_code: Mapped[str] = mapped_column(
String, server_default="", unique=True
@@ -478,6 +477,7 @@ class BuildParts(CrudCollection):
@classmethod
def create_action(cls, data: InsertBuildParts, token):
from databases import ApiEnumDropdown
data_dict = data.dump()
build_from_duty = Build.select_action(
employee_id=token.selected_company.employee_id,

View File

@@ -4,16 +4,6 @@ from decimal import Decimal
from typing import List
from fastapi import HTTPException, status
from databases.sql_models.core_mixin import CrudCollection
from databases import (
Build,
BuildLivingSpace,
BuildIbans,
People,
Companies,
OccupantTypes,
Services,
)
from api_library.date_time_actions.date_functions import system_arrow, client_arrow
from sqlalchemy import (
@@ -35,6 +25,8 @@ from api_validations.validations_request import (
InsertBuildDecisionBookItemDebits,
InsertBuildDecisionBookProjects,
)
from databases.sql_models.core_mixin import CrudCollection
class BuildDecisionBook(CrudCollection):
@@ -104,6 +96,9 @@ class BuildDecisionBook(CrudCollection):
@classmethod
def retrieve_active_rbm(cls):
from databases import (
Build,
)
related_build = Build.find_one(id=cls.build_id)
related_date = system_arrow.get(related_build.build_date)
date_processed = related_date.replace(
@@ -131,7 +126,10 @@ class BuildDecisionBook(CrudCollection):
@classmethod
def select_action(cls, duty_id, token=None):
from databases import (
Build,
Companies,
)
related_companies = Companies.select_action(duty_id_list=[int(duty_id)])
related_companies_ids = list(
related_.id for related_ in related_companies.all()
@@ -145,7 +143,10 @@ class BuildDecisionBook(CrudCollection):
@classmethod
def create_action(cls, data: InsertDecisionBook, token=None):
from databases import (
Build,
Companies,
)
data_dict = data.model_dump()
if building := Build.find_one(uu_id=data.build_uu_id):
data_dict["build_id"] = building.id
@@ -213,6 +214,9 @@ class BuildDecisionBook(CrudCollection):
@classmethod
def retrieve_valid_book(cls, bank_date, iban):
from databases import (
BuildIbans,
)
if all(
[True if letter in str(bank_date) else False for letter in ["-", " ", ":"]]
):
@@ -401,6 +405,11 @@ class BuildDecisionBookPerson(CrudCollection):
return BuildDecisionBookPersonOccupants.filter_active(filter_records=False)
def add_occupant_type(self, occupant_type, build_living_space_id: int = None):
from databases import (
Build,
BuildLivingSpace,
Services,
)
from api_events.events.events.events_bind_services import (
ServiceBindOccupantEventMethods,
)
@@ -593,7 +602,10 @@ class BuildDecisionBookItems(CrudCollection):
@classmethod
def select_action(cls, duty_id, token=None):
from databases import (
Build,
Companies,
)
related_companies = Companies.select_action(duty_id=duty_id)
related_companies_ids = list(
related_.id for related_ in related_companies.all()
@@ -635,7 +647,10 @@ class BuildDecisionBookItems(CrudCollection):
@classmethod
def check_meeting_is_valid_to_start_add_attendance(cls, decision_book, token_dict):
from databases import (
People,
OccupantTypes,
)
active_invite = (
BuildDecisionBookInvitations.check_invites_are_ready_for_meeting(
selected_decision_book=decision_book,
@@ -1040,7 +1055,10 @@ class BuildDecisionBookProjects(CrudCollection):
@classmethod
def select_action(cls, duty_id, token=None):
from databases import (
Build,
Companies,
)
related_companies = Companies.select_action(duty_id_list=[duty_id])
related_companies_ids = list(
related_.id for related_ in related_companies.all()
@@ -1073,11 +1091,15 @@ class BuildDecisionBookProjects(CrudCollection):
@classmethod
def create_action(cls, data: InsertBuildDecisionBookProjects, token=None):
from databases import (
People,
Companies,
)
data_dict = data.dump()
BuildDecisionBookItems.pre_query = BuildDecisionBookItems.select_action(
duty_id=token.duty_list["duty_id"]
)
People.pre_query = People.select_action(duty_id=token.duty_list["duty_id"])
People.pre_query = People.select_action(duty_id_list=[token.duty_list["duty_id"]])
decision_book_project_item = BuildDecisionBookItems.find_one_or_abort(
uu_id=data_dict.get("build_decision_book_item_uu_id")
)