Skip to content

Commit

Permalink
fix(Lease Contract): enable/disable lease contracts every day (#269)
Browse files Browse the repository at this point in the history
  • Loading branch information
barredterra authored Jan 9, 2025
1 parent f9e973c commit 7889333
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

class MemberFunction(Document):
def before_validate(self):
self.update_is_active()
self.status = self.get_status()

def validate(self):
if self.start_date and self.end_date and date_diff(self.start_date, self.end_date) > 0:
Expand Down Expand Up @@ -87,13 +87,13 @@ def update_user_roles(self):
self.member, disabled_member_function=self.name
)

def update_is_active(self):
def get_status(self):
if self.is_planned():
self.status = "Planned"
return "Planned"
elif self.is_inactive():
self.status = "Inactive"
return "Inactive"
else:
self.status = "Active"
return "Active"

def is_planned(self):
return self.start_date and date_diff(today(), self.start_date) < 0
Expand Down
6 changes: 5 additions & 1 deletion landa/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ def daily():
queue="long",
)
enqueue(
"landa.water_body_management.doctype.lease_contract.lease_contract.disable_expired_lease_contracts",
"landa.water_body_management.doctype.lease_contract.lease_contract.deactivate_lease_contracts",
queue="long",
)
enqueue(
"landa.water_body_management.doctype.lease_contract.lease_contract.activate_lease_contracts",
queue="long",
)
enqueue(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

class LeaseContract(Document):
def before_validate(self):
self.update_is_active()
self.status = self.get_status()

def validate(self):
if self.start_date and self.end_date and date_diff(self.start_date, self.end_date) > 0:
Expand All @@ -21,16 +21,13 @@ def validate(self):
_("Lease Contract must belong to the same regional Organization as the Water Body.")
)

def on_trash(self):
self.status = "Inactive"

def update_is_active(self):
def get_status(self):
if self.is_planned():
self.status = "Planned"
return "Planned"
elif self.is_inactive():
self.status = "Inactive"
return "Inactive"
else:
self.status = "Active"
return "Active"

def is_planned(self):
return self.start_date and date_diff(today(), self.start_date) < 0
Expand All @@ -39,32 +36,35 @@ def is_inactive(self):
return self.end_date and date_diff(today(), self.end_date) > 0


def disable_expired_lease_contracts():
for lease_contract in get_expired_lease_contracts():
doc = frappe.get_doc("Lease Contract", lease_contract.name)
doc.save()
def deactivate_lease_contracts():
for lease_contract in get_lease_contracts_to_deactivate():
frappe.db.set_value("Lease Contract", lease_contract, "status", "Inactive")


def apply_active_lease_contracts(filters):
for lease_contract in get_active_lease_contracts(filters=filters, pluck="name"):
doc = frappe.get_doc("Lease Contract", lease_contract)
doc.save()
def activate_lease_contracts():
for lease_contract in get_lease_contracts_to_activate():
frappe.db.set_value("Lease Contract", lease_contract, "status", "Active")


def get_expired_lease_contracts():
def get_lease_contracts_to_deactivate():
return frappe.get_all(
"Lease Contract",
filters=[
["end_date", "<", today()],
["end_date", "is", "set"],
["status", "!=", "Inactive"],
],
pluck="name",
)


def get_active_lease_contracts(filters: dict = None, pluck: str = None):
def get_lease_contracts_to_activate():
return frappe.get_all(
"Lease Contract",
filters=filters,
filters=[
["start_date", "<=", today()],
["status", "!=", "Active"],
],
or_filters=[["end_date", "is", "not set"], ["end_date", ">=", today()]],
pluck=pluck,
pluck="name",
)

0 comments on commit 7889333

Please sign in to comment.