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

@@ -1,16 +1,12 @@
from fastapi.exceptions import HTTPException
from databases import (
Addresses,
Duties,
)
from databases.sql_models.core_mixin import CrudCollection
from sqlalchemy import String, Integer, Boolean, ForeignKey, Index, Identity
from sqlalchemy.orm import mapped_column, Mapped
from api_configs import RelationAccess
from databases.extensions import SelectAction, Explanation
from databases.extensions import SelectAction
from api_validations.validations_request import (
InsertCompany,
UpdateCompany,
@@ -64,7 +60,9 @@ class RelationshipDutyCompany(CrudCollection):
@classmethod
def match_company_to_company_commercial(cls, data: MatchCompany2Company, token):
from databases import (
Duties,
)
token_duties_id, token_company_id = token.get("duty_id"), token.get(
"company_id"
)
@@ -103,7 +101,9 @@ class RelationshipDutyCompany(CrudCollection):
@classmethod
def match_company_to_company_organization(cls, data: MatchCompany2Company, token):
from databases import (
Duties,
)
token_duties_id, token_company_id = token.get("duty_id"), token.get(
"company_id"
)
@@ -157,152 +157,6 @@ class RelationshipDutyCompany(CrudCollection):
)
class AbstractCompany:
"""
Abstract and explanation of Company class for end-user guide
"""
formal_name = Explanation(
explanation="Devletin resmi kayıtlarında bulunan şirket ünvanıdır.",
usage="Devletin resmi kayıtlarında bulunan şirket adı istendiğinde kullanılır.",
alias="Resmi Ünvan",
example=["X Şirketi LTD", "Y Şirketi A.Ş."],
)
company_type = Explanation(
explanation="Şirketin türüdür.",
usage="Şirketin türü istendiğinde kullanılır.",
alias="Şirket Türü",
example=[
"Şahıs",
"Limited",
"Anonim",
"Kolektif",
"Komandit",
"Kooperatif",
"Serbest Meslek",
"Adi Ortaklık",
],
)
commercial_type = Explanation(
explanation="Şirketin ticari türüdür.",
usage="Şirketin ticari türü istendiğinde kullanılır.",
alias="Ticari Tür",
example=["Tüzel", "Birey"],
)
tax_no = Explanation(
explanation="Şirketin vergi numarasıdır.",
usage="Şirketin vergi numarası istendiğinde kullanılır.",
alias="Vergi No",
example=["1234567890"],
)
public_name = Explanation(
explanation="Şirketin kamuoyunda bilinen adıdır.",
usage="Şirketin kamuoyunda bilinen adı istendiğinde kullanılır.",
alias="Piyasada Bilinen Adı",
example=["X Şirketi", "Y Şirketi"],
)
company_tag = Explanation(
explanation="Şirketin takma adı veya etiketidir.",
usage="Şirketin yöneticisin karar verdiği takma adı veya etiketi istendiğinde kullanılır.",
alias="Şirket Etiketi veya Takma Adı",
example=["X", "Y"],
)
default_lang_type = Explanation(
explanation="Şirketin varsayılan dil türüdür.",
usage="Şirketin varsayılan dil türü istendiğinde kullanılır.",
alias="Şirketin Dil Türü",
example=["TR", "EN"],
)
default_money_type = Explanation(
explanation="Şirketin varsayılan para birimi türüdür.",
usage="Şirketin varsayılan para birimi türü istendiğinde kullanılır.",
alias="Şirketin Para Birimi Türü",
example=["TL", "USD", "EUR"],
)
is_commercial = Explanation(
explanation="Şirketin ticari olup olmadığını belirtir.",
usage="Şirketin ticari olup olmadığını applikasyonun anlaması için kullanılır.",
condition=lambda commercial_type: True if commercial_type == "Şahıs" else False,
alias="Şirket Ticari mi?",
)
is_blacklist = Explanation(
explanation="Şirketin kara listeye alınıp alınmadığını belirtir.",
usage="Şirketin kara listeye alınıp alınmadığını applikasyonun anlaması için kullanılır.",
alias="Kara Listeye alınsın mı?",
example=[True, False],
)
parent_id = Explanation(
explanation="Şirketin sorumlu olduğu şirketin ID'sidir.",
usage="Şirketin sorumlu olduğu şirketin ID'si istendiğinde kullanılır.",
alias="Sorumlu Şirket",
example=[
"Bir şirketin sorumlu şirketi hangisi olduğunu bulmak için kullanılır.",
],
)
workplace_no = Explanation(
explanation="Şirketin iş yeri numarasıdır.",
usage="Şirketin iş yeri numarası istendiğinde kullanılır.",
alias="İş Yeri No",
example=["1234567890"],
)
official_address_id = Explanation(
explanation="Şirketin resmi adresidi.",
usage="Şirketin resmi adresinin ne olduğunu bulmak için kullanılır.",
alias="Resmi Adres",
example=[
"Bu şirketin adresi nedir sorusuna cevap vermek için kullanılır.",
],
)
top_responsible_company_id = Explanation(
explanation="Şirketin en üst sorumlu şirketin ID'sidir.",
usage="Şirketin en üst sorumlu şirketin hangisi olduğunu bulmak için kullanılır.",
alias="Ana Yetkili Şirket",
example=[
"Bölge veya ülke genelinde en üst sorumlu şirketin hangisi olduğunu belirtmek için kullanılır.",
],
)
buildings = Explanation(
explanation="Şirketin sahip olduğu binaların listesidir.",
usage="Şirketin sahip olduğu binaların listesini bulmak için kullanılır.",
alias="Sorumlu olduğu binalar Binalar",
example=[
"Şirketin sahip olduğu binaların listesini bulmak için kullanılır.",
],
)
def wag_create_company(self):
"""
Er kişiye wag_create_company fonksiyonu = fieldları manipule edebilir?
78 ile oluşturulan bir user için wag_create_company fonksiyonu = fieldları manipule edebilir?
"""
return {
"commercial_type": self.commercial_type,
"formal_name": self.formal_name,
"public_name": self.public_name,
"company_type": self.company_type,
"tax_no": self.tax_no,
"workplace_no": self.workplace_no,
"company_tag": self.company_tag,
"default_lang_type": self.default_lang_type,
"default_money_type": self.default_money_type,
"official_address_id": self.official_address_id,
}
def wag_update_company(self):
return {
"commercial_type": self.commercial_type,
"formal_name": self.formal_name,
"public_name": self.public_name,
"company_type": self.company_type,
"tax_no": self.tax_no,
"workplace_no": self.workplace_no,
"company_tag": self.company_tag,
"default_lang_type": self.default_lang_type,
"default_money_type": self.default_money_type,
"official_address_id": self.official_address_id,
}
class Companies(CrudCollection, SelectAction):
"""
Company class based on declarative_base and CrudCollection via session
@@ -316,7 +170,7 @@ class Companies(CrudCollection, SelectAction):
__exclude__fields__ = ["is_blacklist", "is_commercial"]
__access_by__ = []
__many__table__ = RelationshipDutyCompany
__explain__ = AbstractCompany()
# __explain__ = AbstractCompany()
formal_name: Mapped[str] = mapped_column(
String, nullable=False, comment="Formal Name"
@@ -423,6 +277,9 @@ class Companies(CrudCollection, SelectAction):
@classmethod
def update_action(cls, data: UpdateCompany, token):
from databases import (
Addresses,
)
data_dict = data.excluded_dump()
duty_id = token.get("duty_id")
company_id = token.get("company_id")
@@ -554,3 +411,151 @@ class Companies(CrudCollection, SelectAction):
# back_populates="related_company",
# foreign_keys="CompanyRelationship.related_company_id",
# )
#
# class AbstractCompany:
# """
# Abstract and explanation of Company class for end-user guide
# """
#
# formal_name = Explanation(
# explanation="Devletin resmi kayıtlarında bulunan şirket ünvanıdır.",
# usage="Devletin resmi kayıtlarında bulunan şirket adı istendiğinde kullanılır.",
# alias="Resmi Ünvan",
# example=["X Şirketi LTD", "Y Şirketi A.Ş."],
# )
# company_type = Explanation(
# explanation="Şirketin türüdür.",
# usage="Şirketin türü istendiğinde kullanılır.",
# alias="Şirket Türü",
# example=[
# "Şahıs",
# "Limited",
# "Anonim",
# "Kolektif",
# "Komandit",
# "Kooperatif",
# "Serbest Meslek",
# "Adi Ortaklık",
# ],
# )
# commercial_type = Explanation(
# explanation="Şirketin ticari türüdür.",
# usage="Şirketin ticari türü istendiğinde kullanılır.",
# alias="Ticari Tür",
# example=["Tüzel", "Birey"],
# )
# tax_no = Explanation(
# explanation="Şirketin vergi numarasıdır.",
# usage="Şirketin vergi numarası istendiğinde kullanılır.",
# alias="Vergi No",
# example=["1234567890"],
# )
# public_name = Explanation(
# explanation="Şirketin kamuoyunda bilinen adıdır.",
# usage="Şirketin kamuoyunda bilinen adı istendiğinde kullanılır.",
# alias="Piyasada Bilinen Adı",
# example=["X Şirketi", "Y Şirketi"],
# )
# company_tag = Explanation(
# explanation="Şirketin takma adı veya etiketidir.",
# usage="Şirketin yöneticisin karar verdiği takma adı veya etiketi istendiğinde kullanılır.",
# alias="Şirket Etiketi veya Takma Adı",
# example=["X", "Y"],
# )
# default_lang_type = Explanation(
# explanation="Şirketin varsayılan dil türüdür.",
# usage="Şirketin varsayılan dil türü istendiğinde kullanılır.",
# alias="Şirketin Dil Türü",
# example=["TR", "EN"],
# )
# default_money_type = Explanation(
# explanation="Şirketin varsayılan para birimi türüdür.",
# usage="Şirketin varsayılan para birimi türü istendiğinde kullanılır.",
# alias="Şirketin Para Birimi Türü",
# example=["TL", "USD", "EUR"],
# )
# is_commercial = Explanation(
# explanation="Şirketin ticari olup olmadığını belirtir.",
# usage="Şirketin ticari olup olmadığını applikasyonun anlaması için kullanılır.",
# condition=lambda commercial_type: True if commercial_type == "Şahıs" else False,
# alias="Şirket Ticari mi?",
# )
# is_blacklist = Explanation(
# explanation="Şirketin kara listeye alınıp alınmadığını belirtir.",
# usage="Şirketin kara listeye alınıp alınmadığını applikasyonun anlaması için kullanılır.",
# alias="Kara Listeye alınsın mı?",
# example=[True, False],
# )
# parent_id = Explanation(
# explanation="Şirketin sorumlu olduğu şirketin ID'sidir.",
# usage="Şirketin sorumlu olduğu şirketin ID'si istendiğinde kullanılır.",
# alias="Sorumlu Şirket",
# example=[
# "Bir şirketin sorumlu şirketi hangisi olduğunu bulmak için kullanılır.",
# ],
# )
# workplace_no = Explanation(
# explanation="Şirketin iş yeri numarasıdır.",
# usage="Şirketin iş yeri numarası istendiğinde kullanılır.",
# alias="İş Yeri No",
# example=["1234567890"],
# )
# official_address_id = Explanation(
# explanation="Şirketin resmi adresidi.",
# usage="Şirketin resmi adresinin ne olduğunu bulmak için kullanılır.",
# alias="Resmi Adres",
# example=[
# "Bu şirketin adresi nedir sorusuna cevap vermek için kullanılır.",
# ],
# )
# top_responsible_company_id = Explanation(
# explanation="Şirketin en üst sorumlu şirketin ID'sidir.",
# usage="Şirketin en üst sorumlu şirketin hangisi olduğunu bulmak için kullanılır.",
# alias="Ana Yetkili Şirket",
# example=[
# "Bölge veya ülke genelinde en üst sorumlu şirketin hangisi olduğunu belirtmek için kullanılır.",
# ],
# )
# buildings = Explanation(
# explanation="Şirketin sahip olduğu binaların listesidir.",
# usage="Şirketin sahip olduğu binaların listesini bulmak için kullanılır.",
# alias="Sorumlu olduğu binalar Binalar",
# example=[
# "Şirketin sahip olduğu binaların listesini bulmak için kullanılır.",
# ],
# )
#
# def wag_create_company(self):
# """
# Er kişiye wag_create_company fonksiyonu = fieldları manipule edebilir?
# 78 ile oluşturulan bir user için wag_create_company fonksiyonu = fieldları manipule edebilir?
# """
# return {
# "commercial_type": self.commercial_type,
# "formal_name": self.formal_name,
# "public_name": self.public_name,
# "company_type": self.company_type,
# "tax_no": self.tax_no,
# "workplace_no": self.workplace_no,
# "company_tag": self.company_tag,
# "default_lang_type": self.default_lang_type,
# "default_money_type": self.default_money_type,
# "official_address_id": self.official_address_id,
# }
#
# def wag_update_company(self):
# return {
# "commercial_type": self.commercial_type,
# "formal_name": self.formal_name,
# "public_name": self.public_name,
# "company_type": self.company_type,
# "tax_no": self.tax_no,
# "workplace_no": self.workplace_no,
# "company_tag": self.company_tag,
# "default_lang_type": self.default_lang_type,
# "default_money_type": self.default_money_type,
# "official_address_id": self.official_address_id,
# }