project item updated

This commit is contained in:
berkay 2024-11-20 14:12:56 +03:00
parent 0b3e0c299c
commit 73d41b8e10
8 changed files with 197 additions and 63 deletions

View File

@ -310,7 +310,6 @@ class DecisionBookDecisionBookItemsCreateEventMethods(MethodToEvent):
service_id=related_service.id,
build_living_space_id=project_leader.id,
)
project_person = BuildDecisionBookProjectPerson.find_or_create(
build_decision_book_project_id=book_project_created.id,
build_decision_book_project_uu_id=str(book_project_created.uu_id),
@ -318,8 +317,12 @@ class DecisionBookDecisionBookItemsCreateEventMethods(MethodToEvent):
living_space_uu_id=str(project_leader.uu_id),
)
project_person.save_and_confirm()
book_project_created.update(
project_response_living_space_id=project_leader.id,
project_response_living_space_uu_id=str(project_leader.uu_id),
)
book_project_created.save()
return book_project_created
elif data_info_type.key == "BDT-S":
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,

View File

@ -157,7 +157,6 @@ class ProjectDecisionBookUpdateEventMethods(MethodToEvent):
message="Living space not found",
data={},
)
occupant_type = OccupantTypes.filter_by_one(
occupant_category_type="PRJ",
occupant_code="PRJ-LDR",
@ -170,11 +169,10 @@ class ProjectDecisionBookUpdateEventMethods(MethodToEvent):
message=f"{token_dict.selected_occupant.occupant_type_uu_id} occupant type is not allowed, only PRJ-LDR occupant type is allowed",
data={},
)
decision_book_project_person = BuildDecisionBookProjectPerson.filter_one(
BuildDecisionBookProjects.build_decision_book_project_uu_id
== data.get("build_decision_book_project_uu_id"),
BuildDecisionBookProjects.living_space_id
BuildDecisionBookProjectPerson.build_decision_book_project_uu_id
== data.build_decision_book_project_uu_id,
BuildDecisionBookProjectPerson.living_space_id
== token_dict.selected_occupant.living_space_id,
).data
if not decision_book_project_person:
@ -237,6 +235,7 @@ class ProjectDecisionBookApprovalEventMethods(MethodToEvent):
data={},
)
occupant_type = OccupantTypes.filter_by_one(
system=True,
occupant_category_type="PRJ",
occupant_code="PRJ-LDR",
id=living_space.occupant_type,
@ -248,15 +247,14 @@ class ProjectDecisionBookApprovalEventMethods(MethodToEvent):
message=f"{token_dict.selected_occupant.occupant_type_uu_id} occupant type is not allowed, only PRJ-LDR occupant type is allowed",
data={},
)
decision_book_project_person = BuildDecisionBookProjectPerson.filter_one(
BuildDecisionBookProjects.build_decision_book_project_uu_id
== data.get("build_decision_book_project_uu_id"),
BuildDecisionBookProjects.living_space_id
BuildDecisionBookProjectPerson.build_decision_book_project_uu_id
== data.build_decision_book_project_uu_id,
BuildDecisionBookProjectPerson.living_space_id
== token_dict.selected_occupant.living_space_id,
).data
if not decision_book_project_person:
raise BuildDecisionBookProjects.raise_http_exception(
raise BuildDecisionBookProjectPerson.raise_http_exception(
status_code="HTTP_404_NOT_FOUND",
error_case="NOT_FOUND",
message="This project is not allowed for this occupant",
@ -275,7 +273,6 @@ class ProjectDecisionBookApprovalEventMethods(MethodToEvent):
)
data_dict = data.excluded_dump()
data_dict["is_completed"] = True
data_dict["status_id"] = 1 # is completed status
build_parts_list = BuildParts.filter_all(
BuildParts.human_livable == True,
@ -288,13 +285,12 @@ class ProjectDecisionBookApprovalEventMethods(MethodToEvent):
).data
book_payment_dict = dict(
payment_plan_time_periods=str(),
build_decision_book_item_id=decision_book_project_item.id,
build_decision_book_item_uu_id=str(decision_book_project_item.uu_id),
currency=decision_book_project.currency,
)
payment_type = ApiEnumDropdown.get_debit_search(search_debit="DT-D")
for final_price in data.final_price_list:
for final_price in data.final_price_list or []:
for build_part_single in build_parts_list:
local_date = BuildDecisionBookPayments.client_arrow.get(
str(final_price["date"])

View File

@ -14,6 +14,7 @@ from api_validations.validations_request import (
from api_events.events.abstract_class import MethodToEvent, ActionsSchema
from api_objects.auth.token_objects import EmployeeTokenObject, OccupantTokenObject
from api_validations.core_response import AlchemyJsonResponse
from databases.sql_models.building.decision_book import BuildDecisionBookProjects
class BuildDecisionBookProjectItemsListEventMethods(MethodToEvent):
@ -47,17 +48,36 @@ class BuildDecisionBookProjectItemsCreateEventMethods(MethodToEvent):
@staticmethod
def build_decision_book_project_items_create(
requester: Union[EmployeeTokenObject, OccupantTokenObject],
decision_book_project_items: InsertBuildDecisionBookProjectItems,
token_dict: Union[EmployeeTokenObject, OccupantTokenObject],
data: InsertBuildDecisionBookProjectItems,
):
response = BuildDecisionBookProjectItems.create_item(
requester=requester,
decision_book_project_items=decision_book_project_items,
)
return AlchemyJsonResponse(
message="Build Decision Book Project Items Create",
result=response,
)
if isinstance(token_dict, EmployeeTokenObject):
raise BuildDecisionBookProjectItems.raise_http_exception(
status_code="HTTP_403_FORBIDDEN",
error_case="UNAUTHORIZED",
message=f"No permission to create decision book project items",
data={},
)
elif isinstance(token_dict, OccupantTokenObject):
book_project = BuildDecisionBookProjects.filter_one(
BuildDecisionBookProjects.uu_id == data.build_decision_book_project_uu_id,
BuildDecisionBookProjects.project_response_living_space_id == token_dict.selected_occupant.living_space_id
).data
if not book_project:
raise BuildDecisionBookProjectItems.raise_http_exception(
status_code="HTTP_404_NOT_FOUND",
error_case="NOT_FOUND",
message=f"This user can not create project item for this project uu_id : {data.build_decision_book_project_uu_id}",
data={},
)
data_dict = data.excluded_dump()
data_dict["build_decision_book_project_id"] = book_project.id
created_project_item = BuildDecisionBookProjectItems.find_or_create(**data_dict)
created_project_item.save_and_confirm()
return AlchemyJsonResponse(
message="Build Decision Book Project Items Create",
result=created_project_item.get_dict(),
)
class BuildDecisionBookProjectItemsUpdateEventMethods(MethodToEvent):

View File

@ -77,8 +77,9 @@ class UpdateBuildDecisionBookProjects(PydanticBaseModel):
class ApprovalsBuildDecisionBookProjects(PydanticBaseModel):
build_decision_book_project_uu_id: str
final_price_list: list[dict] # {"date": "2021-01-01", "price": 1000}
project_stop_date: str
status_code: Optional[int] = None
final_price_list: Optional[list[dict]] = None # {"date": "2021-01-01", "price": 1000}
class InsertBuildDecisionBookProjectItemDebits(PydanticBaseModel):

View File

@ -1018,7 +1018,6 @@ class BuildDecisionBookProjects(CrudCollection):
project_start_date: Mapped[TIMESTAMP] = mapped_column(
TIMESTAMP, nullable=False, comment="Project Start Date"
)
project_stop_date: Mapped[TIMESTAMP] = mapped_column(
TIMESTAMP, server_default="2099-12-31 23:59:59"
)
@ -1031,7 +1030,7 @@ class BuildDecisionBookProjects(CrudCollection):
is_completed: Mapped[bool] = mapped_column(
Boolean, server_default="0", comment="Project is Completed"
)
status_id: Mapped[int] = mapped_column(SmallInteger, nullable=True)
status_code: Mapped[int] = mapped_column(SmallInteger, nullable=True)
resp_company_fix_wage: Mapped[float] = mapped_column(
Numeric(10, 2), server_default="0"
)
@ -1040,7 +1039,7 @@ class BuildDecisionBookProjects(CrudCollection):
meeting_date: Mapped[TIMESTAMP] = mapped_column(
TIMESTAMP, server_default="1900-01-01 00:00:00", index=True
)
currency: Mapped[float] = mapped_column(String(8), server_default="TRY")
currency: Mapped[str] = mapped_column(String(8), server_default="TRY")
bid_price: Mapped[float] = mapped_column(Numeric(16, 4), server_default="0")
approved_price: Mapped[float] = mapped_column(Numeric(16, 4), server_default="0")
final_price: Mapped[float] = mapped_column(Numeric(16, 4), server_default="0")
@ -1057,7 +1056,7 @@ class BuildDecisionBookProjects(CrudCollection):
build_decision_book_uu_id: Mapped[str] = mapped_column(
String, nullable=True, comment="Decision Book UUID"
)
build_decision_book_item_id = mapped_column(
build_decision_book_item_id: Mapped[int] = mapped_column(
ForeignKey("build_decision_book_items.id"), nullable=False
)
build_decision_book_item_uu_id: Mapped[str] = mapped_column(

View File

@ -51,7 +51,7 @@ def build_decision_book_project_people_update(
@build_decision_book_project_route.post(
path="/approval/{build_decision_book_project_id}",
path="/approval",
summary="Approval people from Build Decision Book Project People with given auth levels",
)
def build_decision_book_project_invite_approval(

View File

@ -28,8 +28,9 @@ def generate_approval_project_item(**kwargs):
"build_decision_book_project_uu_id": kwargs.get(
"build_decision_book_project_uu_id", None
),
"final_price_list": kwargs.get("final_price_list", []),
"final_price_list": kwargs.get("final_price_list", None),
"project_stop_date": kwargs.get("project_stop_date", None),
"status_code": kwargs.get("status_code", None),
}
@ -43,7 +44,7 @@ def generate_insert_project_item(**kwargs):
}
def create_decision_book_items(requester, insert_project_item):
def create_decision_book_project_items(requester, insert_project_item):
response = requester.post(
endpoint="/build/decision_book/project/items/create", data=insert_project_item
)
@ -66,3 +67,16 @@ def approve_build_decision_book_project_approval(requester, approval_project_ite
)
print("text", response.text)
print("json", response.json())
def list_decision_book_project(requester, project_no):
response = requester.post(
endpoint="/build/decision_book/project/list",
data={"query": {"project_no": project_no}},
)
print("text", response.text)
print("json", response.json())
response_json = response.json()
# project = response_json["data"][0]["uu_id"]
project = response_json["data"][0]
return project

View File

@ -1,3 +1,5 @@
import json
import arrow
from service_app_test.bases import RequestToApi
@ -30,10 +32,11 @@ from service_app_test.test_application.migrate_old_data.accounts import (
from service_app_test.test_application.migrate_old_data.decision_book_project import (
approve_build_decision_book_project_approval,
update_decision_book_project,
create_decision_book_items,
create_decision_book_project_items,
generate_insert_project_item,
generate_update_project_item,
generate_approval_project_item,
list_decision_book_project,
)
local_api = RequestToApi()
@ -42,8 +45,13 @@ local_api.overwrite_base_url(base_url=LocalAPI.base_url)
both_apis = BothAPIS()
both_apis.local_api = local_api
password_token = ""
password_token_occ = ""
def decode_as_json_indent(data):
return json.dumps(json.loads(json.dumps(data)), indent=2)
password_token = "FGS095it2IBP3gIp5glaG6u9tQy1KEPzKnBYE1fvGJSGvGUhwaGgxE-56yZAxUQnW-a_J91twOFKTWTc0ue4GZq10vY7fK2cZBsR9bUDJMCHZZZGpFYbsE6pLyaDs-1_K8v5hbggSmpXNFfafMmujuXxqvSzdLQa5hcg9qepHBOvgTbL28wGRHx9w-Fcb7bL"
password_token_occ = "kM9vHcWZVVF38IyNxMk6XMlCc8FCc_P1D-0D2u-Er5FrcQzvswSjJe9Lu9QnhJ5fJw5WqC45UYxopme_aCX6YDfZfQ3wQ9RP4Ak5YYTWBZbtwKGXTomlpYCQJghy0RC-1-Q9ATNEgcjYXqU2P9UjjdS9JNvhUawT0R38wXap-Mum6oazjqiKow41SUebnZ-H"
login_data = {
"domain": "evyos.com.tr",
"access_key": "karatay.berkay.sup@evyos.com.tr",
@ -59,15 +67,28 @@ login_creds_occupant = {
"password_token": password_token_occ,
}
selection_list = [
# "523dbcd3-fe87-4208-86c2-da45204dfafc",
# "24aed2e5-bca0-4657-a056-badf9b3aa81c",
"d9ffa716-331c-48fc-83b2-47bf31289b3e",
"afebb7f8-9f62-4703-b11c-ee8f14fe73b7",
]
manager_token = ""
people_uu_id = ""
list_of_attendees = []
manager_token = "g0Z1YYjh2WqFfoI3MdJ9wrfXAHeL6f7UatEkySzOK0dFX6CH1sXgjQ"
people_uu_id = "2c8781f6-c1bc-432d-bb0c-9f5247ecc750"
list_of_attendees = [
"_Ky6UyaoatH5CZEQHZ1gdoj_7HDxSJ2DgBwq6hSXbCKR-WG8E9DPuQ",
"KhdJF7XP6ni_qdIRXSByGHKez8oTSbmzOAZxdi2A_iy-oOW6-VbfPA",
"vn01wNh5moTiNzw2qOvT4h5eqgCQ10jmN3OK659NN-ekriFSmVju_Q",
"EMsteygK4Myingptlpi_sr7Xu0Wsrl7xpQD-ukVY4GBjv6NJakpQ4Q",
"26p4QD1CofK6-Pk_VyDOB2Xstdv_sx88kh4kResWg4TuCuAy7tAT-A",
"2FgntLgLfFM20d32-gOwaHu44Vk_fDlpOh8IvS8gahiW-V0Dv0qLWg",
"TwC_dNuT6Iln0NFinEuvxbnjmb_HwcS8qWg-097gjc8pHTQ1p0nTGA",
"Yn35HP9TJonn9PTFpsq1lH3w-x-zHjTWymBeP6v4XPcwJP_aMj8JsQ",
"C2DbYn1jcocKwjQ8gvJ_jCU0IGAmbJB3JgHj-N_OTu1jNtmhVrW7aQ",
"TT5-9a_JVSf_WBAcN1sAfUyV45J2e7J1NoVGe3BcrrlAI1GNoU2_rw",
"ED4H5zpmxpLXX5rO6eoTb7wIa2x1v0YbNwsFh-iAohWh7fDyhvq_BQ",
]
constant = "Toplantı sonucunda araştırmalar tamamlandı, katılımcılara e-posta gönderildi. Onaylayan sayısı yeterli olmadığı için karar alınamadı ve proje iptal edildi ve sonlandırıldı."
assign_people_to_create_item = -1
assign_people_to_create_item = 4
if assign_people_to_create_item == -1:
local_api.selected_object = local_api.login_via_email_and_password(
login_data=login_data, is_password_valid=False
@ -290,31 +311,111 @@ elif assign_people_to_create_item == 3:
requester=both_apis.local_api,
)
elif assign_people_to_create_item == 4:
# project_lead_creds_occupant = {
# "domain": "evyos.com.tr",
# "access_key": "",
# "password": "string",
# "remember_me": False,
# "password_token": "",
# }
local_api.selected_object = local_api.login_via_email_and_password(
login_data=login_creds_occupant,
is_password_valid=True,
selection_list=selection_list,
)
response = both_apis.local_api.post(
endpoint="/build/decision_book/project/list",
data={"query": {"project_no": "BDT-R_2024_1"}},
)
print("text", response.text)
print("json", response.json())
response_json = response.json()
project_uu_id = response_json["data"][0]["uu_id"]
print("project_uu_id", project_uu_id)
exit()
# for i in range(8):
# index = i + 1
# print("index", index)
# if index in [1, 7, 8]:
# continue
# project_no = f"BDT-R_2024_{index}"
# project = list_decision_book_project(
# requester=both_apis.local_api, project_no=project_no
# )
# print("project", decode_as_json_indent(project))
# project_uu_id = project["uu_id"]
#
# insert_project_item = generate_insert_project_item(
# **{
# "build_decision_book_project_uu_id": project_uu_id,
# "item_header": "Toplantı sonrası alınan kararlar",
# "item_comment": constant,
# }
# )
# create_decision_book_project_items(
# insert_project_item=insert_project_item, requester=both_apis.local_api
# )
# approve_project_item = {
# "build_decision_book_project_uu_id": project_uu_id,
# "project_stop_date": "2024-12-01",
# "status_code": 9
# }
# approve_build_decision_book_project_approval(
# approval_project_item=generate_approval_project_item(**approve_project_item),
# requester=both_apis.local_api,
# )
#
# project = list_decision_book_project(
# requester=both_apis.local_api, project_no=project_no
# )
# print("project", decode_as_json_indent(project))
selected_decision_book_uu_id = list_decision_books(requester=both_apis.local_api)[
"data"
][0]["uu_id"]
print("select_company_uu_id", local_api.selected_object)
project_no = f"BDT-R_2024_7"
project = list_decision_book_project(
requester=both_apis.local_api, project_no=project_no
)
print("project", decode_as_json_indent(project))
project_uu_id = project["uu_id"]
approve_project_item = lambda final_price_list : {
"build_decision_book_project_uu_id": project_uu_id,
"project_stop_date": "2024-12-01",
"final_price_list": final_price_list,
"status_code": 9
}
approve_project_dict = approve_project_item(
[{"date": "2024-11-03", "price": 585.00}]
)
insert_project_item = generate_insert_project_item(
**{
"build_decision_book_project_uu_id": project_uu_id,
"item_header": "Toplantı sonrası alınan kararlar",
"item_comment": "Bina çalışmaları sonucunda 7020 ₺ lik maliyet çıkmıştır.",
}
)
create_decision_book_project_items(
insert_project_item=insert_project_item, requester=both_apis.local_api
)
approve_build_decision_book_project_approval(
approval_project_item=generate_approval_project_item(**approve_project_dict),
requester=both_apis.local_api,
)
project = list_decision_book_project(
requester=both_apis.local_api, project_no=project_no
)
print("project", decode_as_json_indent(project))
project_no = f"BDT-R_2024_8"
project = list_decision_book_project(
requester=both_apis.local_api, project_no=project_no
)
print("project", decode_as_json_indent(project))
project_uu_id = project["uu_id"]
approve_project_dict = approve_project_item(
[{"date": "2024-12-01", "price": 600.25}, {"date": "2025-01-01", "price": 600.50}]
)
insert_project_item = generate_insert_project_item(
**{
"build_decision_book_project_uu_id": project_uu_id,
"item_header": "Toplantı sonrası alınan kararlar",
"item_comment": "Bina çalışmaları sonucunda 12500 ₺ lik maliyet çıkmıştır.",
}
)
create_decision_book_project_items(
insert_project_item=insert_project_item, requester=both_apis.local_api
)
approve_build_decision_book_project_approval(
approval_project_item=generate_approval_project_item(**approve_project_dict),
requester=both_apis.local_api,
)
project = list_decision_book_project(
requester=both_apis.local_api, project_no=project_no
)
print("project", decode_as_json_indent(project))