first push

This commit is contained in:
2026-01-18 11:45:53 +03:30
commit 6bcd71d9ec
702 changed files with 272997 additions and 0 deletions

View File

View File

View File

@@ -0,0 +1,215 @@
from django.core.management.base import BaseCommand, CommandError
from notification.models import (
NotificationToken,
NotificationType,
)
from notification.najva.send_notif_to_segments import send_notification_to_specific_segment
from authentication.models import UserMessageType
from authentication.sahandsms.sms import sms_reminder
from panel.models import OperatorLastTimeEnter
from panel.models import FunctionExecutor
from panel.models import *
import schedule
import time
import datetime
from panel.poultry.views import Check_Poultry_Auction_request
TITLE = ""
BODY = ""
CONTENT = ""
LINK_TEXT = ""
LINK = ""
def send_request_notification_to_city_operator():
if CheckState.objects.filter(state__exact=True):
for item in CheckState.objects.filter(state__exact=True):
city_operator_user = UserProfile.objects.get(role__name__exact="CityOperator")
city_user_token = NotificationToken.objects.get(user__exact=city_operator_user).token
send_notification_to_specific_segment(
title=TITLE,
body=BODY,
content=CONTENT,
icon=None,
image=None,
subscriber_tokens=[city_user_token],
)
notification = Notification(
title=TITLE,
content=CONTENT
)
notification.notif_type = NotificationType.objects.get(name='poultry')
notification.notification_user = city_operator_user
notification.save()
item.notification = notification
item.state = False
item.city_state_notification = True
item.main_check = "pending"
item.save()
if CheckState.objects.filter(state__exact=False):
for item in CheckState.objects.filter(state__exact=False):
if item.city_state_notification is True and item.main_check == "pending":
city_operator_user = UserProfile.objects.get(role__name__exact="CityOperator")
last_enter_obj = OperatorLastTimeEnter.objects.get(operator__exact=city_operator_user)
if item.notification.create_date < last_enter_obj.city_operator_last_time_check < item.notification.create_date + datetime.timedelta(
hours=5):
item.notification.status = "read"
item.main_check = "city_end"
item.notification.save()
else:
user_message = UserMessage(
heading=TITLE,
message=CONTENT,
link_text=LINK_TEXT,
link=LINK,
)
user_message.message_type = UserMessageType.objects.get(name="modal")
user_message.save()
user_message.users.add(city_operator_user)
item.user_message = user_message
item.city_state_notification = False
item.city_state_modal = True
item.main_check = 'pending'
item.save()
if CheckState.objects.filter(city_state_modal=True, main_check="pending"):
for item in CheckState.objects.filter(city_state_modal=True, main_check="pending"):
city_operator_user = UserProfile.objects.get(role__name__exact="CityOperator")
last_enter_obj = OperatorLastTimeEnter.objects.get(operator__exact=city_operator_user)
if item.user_message.create_date < last_enter_obj.city_operator_last_time_check < item.user_message.create_date + datetime.timedelta(
hours=5):
item.user_message.state = "read"
item.main_check = "city_end"
item.notification.save()
else:
sms_reminder(
receptor=city_operator_user.mobile,
title=TITLE,
content=CONTENT,
link_text=LINK_TEXT,
link=LINK,
time=datetime.datetime.now()
)
user_message = UserMessage(
heading=TITLE,
message=CONTENT,
link_text=LINK_TEXT,
link=LINK,
)
user_message.message_type = UserMessageType.objects.get(name="sms")
user_message.save()
user_message.users.add(city_operator_user)
item.user_message = user_message
item.city_state_modal = False
item.city_state_sms = True
item.city_state = True
item.main_check = "city_end"
item.save()
def send_request_notification_to_province_operator():
if CheckState.objects.filter(city_state=True):
for item in CheckState.objects.filter(city_state=True):
province_operator_user = UserProfile.objects.get(role__name__exact="ProvinceOperator")
province_user_token = NotificationToken.objects.get(user__exact=province_operator_user).token
send_notification_to_specific_segment(
title=TITLE,
body=BODY,
content=CONTENT,
icon=None,
image=None,
subscriber_tokens=[province_user_token],
)
notification = Notification(
title=TITLE,
content=CONTENT
)
notification.notif_type = NotificationType.objects.get(name='poultry')
notification.notification_user = province_operator_user
notification.save()
item.notification = notification
item.province_state_notification = True
item.main_check = "pending"
item.save()
if CheckState.objects.filter(city_state=True):
for item in CheckState.objects.filter(city_state=True):
if item.province_state_notification is True and item.main_check == "pending":
province_operator_user = UserProfile.objects.get(role__name__exact="ProvinceOperator")
last_enter_obj = OperatorLastTimeEnter.objects.get(operator__exact=province_operator_user)
if item.notification.create_date < last_enter_obj.province_operator_last_time_check < item.notification.create_date + datetime.timedelta(
hours=5):
item.notification.status = "read"
item.main_check = "province_end"
item.notification.save()
else:
user_message = UserMessage(
heading=TITLE,
message=CONTENT,
link_text=LINK_TEXT,
link=LINK,
)
user_message.message_type = UserMessageType.objects.get(name="modal")
user_message.save()
user_message.users.add(province_operator_user)
item.user_message = user_message
item.province_state_notification = False
item.province_state_modal = True
item.main_check = 'pending'
item.save()
if CheckState.objects.filter(province_state_modal=True, main_check="pending"):
for item in CheckState.objects.filter(province_state_modal=True, main_check="pending"):
province_operator_user = UserProfile.objects.get(role__name__exact="ProvinceOperator")
last_enter_obj = OperatorLastTimeEnter.objects.get(operator__exact=province_operator_user)
if item.user_message.create_date < last_enter_obj.province_operator_last_time_check < item.user_message.create_date + datetime.timedelta(
hours=5):
item.user_message.state = "read"
item.main_check = "province_end"
item.notification.save()
else:
sms_reminder(
receptor=province_operator_user.mobile,
title=TITLE,
content=CONTENT,
link_text=LINK_TEXT,
link=LINK,
time=datetime.datetime.now()
)
user_message = UserMessage(
heading=TITLE,
message=CONTENT,
link_text=LINK_TEXT,
link=LINK,
)
user_message.message_type = UserMessageType.objects.get(name="sms")
user_message.save()
user_message.users.add(province_operator_user)
item.user_message = user_message
item.province_state_modal = False
item.province_state_sms = True
item.province_state = True
item.main_check = "province_end"
item.save()
def send_request_notification_to_poultry_from_killhouse():
pass
class Command(BaseCommand):
help = 'Closes the specified poll for voting'
def add_arguments(self, parser):
pass
def handle(self, *args, **options):
# schedule.every(2).hours.do()
# schedule.every(5).hours.do()
# schedule.every(10).minutes.do(job)
# schedule.every().hour.do(job)
# schedule.every().day.at("10:30").do(job)
# schedule.every().monday.do(job)
# schedule.every().wednesday.at("13:15").do(job)
while (True):
schedule.every(1).minutes.do(Check_Poultry_Auction_request)
schedule.run_pending()
print("function run !!!")

View File

@@ -0,0 +1,26 @@
from panel.models import FunctionExecutor
from datetime import timezone
import datetime
import jdatetime
import schedule
def timing_function(function_name):
func_obj = FunctionExecutor.objects.get(
function_name=function_name
)
func_dict = {
}
if func_obj.time_type == "year":
func_dict['']()
elif func_obj.time_type == "month":
func_dict['']()
elif func_obj.time_type == "day":
func_dict['']()
elif func_obj.time_type == "hour":
func_dict['']()
elif func_obj.time_type == "minute":
func_dict['']()
elif func_obj.time_type == "second":
func_dict['']()