mirror of
https://github.com/i701/sarlink-portal-api.git
synced 2025-06-27 22:03:58 +00:00
Enhance environment variable handling, add Celery configuration, and implement device expiration notification tasks
Some checks failed
Build and Push Docker Images / Build and Push Docker Images (push) Failing after 13m45s
Some checks failed
Build and Push Docker Images / Build and Push Docker Images (push) Failing after 13m45s
This commit is contained in:
59
api/tasks.py
59
api/tasks.py
@ -1,16 +1,57 @@
|
||||
from django.shortcuts import get_object_or_404
|
||||
from api.models import User
|
||||
from devices.models import Device
|
||||
from api.sms import send_sms
|
||||
import requests
|
||||
from apibase.env import env, BASE_DIR
|
||||
import os
|
||||
import logging
|
||||
from celery import shared_task
|
||||
from django.utils import timezone
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
env.read_env(os.path.join(BASE_DIR, ".env"))
|
||||
PEOPLE_API_URL = env.str("PEOPLE_API_URL", "")
|
||||
PERSON_VERIFY_BASE_URL = env.str("PERSON_VERIFY_BASE_URL")
|
||||
|
||||
|
||||
@shared_task
|
||||
def add(x, y):
|
||||
print(f"Adding {x} and {y}")
|
||||
return x + y
|
||||
|
||||
|
||||
@shared_task
|
||||
def deactivate_expired_devices():
|
||||
expired_devices = Device.objects.filter(
|
||||
expiry_date__lte=timezone.localtime(timezone.now()), is_active=True
|
||||
).select_related("user")
|
||||
print("Expired Devices: ", expired_devices)
|
||||
count = expired_devices.count()
|
||||
user_devices_map = {}
|
||||
for device in expired_devices:
|
||||
if device.user and device.user.mobile:
|
||||
if device.user.mobile not in user_devices_map:
|
||||
user_devices_map[device.user.mobile] = []
|
||||
user_devices_map[device.user.mobile].append(device.name)
|
||||
|
||||
for mobile, device_names in user_devices_map.items():
|
||||
if not mobile:
|
||||
continue
|
||||
device_list = "\n".join(
|
||||
[f"{i + 1}. {name}" for i, name in enumerate(device_names)]
|
||||
)
|
||||
print("device list: ", device_list)
|
||||
send_sms(
|
||||
mobile,
|
||||
f"Dear {mobile}, \n\nThe following devices have expired: \n{device_list}. \n\nPlease make a payment to keep your devices active. \n\n- SAR Link",
|
||||
)
|
||||
# expired_devices.update(is_active=False)
|
||||
print(f"Total {count} expired devices.")
|
||||
return {
|
||||
"total_expired_devices": count,
|
||||
}
|
||||
|
||||
|
||||
def verify_user_with_person_api_task(user_id: int):
|
||||
@ -21,9 +62,11 @@ def verify_user_with_person_api_task(user_id: int):
|
||||
|
||||
user = get_object_or_404(User, id=user_id)
|
||||
# Call the Person API to verify the user
|
||||
if not PEOPLE_API_URL:
|
||||
raise ValueError("PEOPLE_API_URL is not set in the environment variables.")
|
||||
response = requests.get(f"{PEOPLE_API_URL}/api/person/{user.id_card}")
|
||||
if not PERSON_VERIFY_BASE_URL:
|
||||
raise ValueError(
|
||||
"PERSON_VERIFY_BASE_URL is not set in the environment variables."
|
||||
)
|
||||
response = requests.get(f"{PERSON_VERIFY_BASE_URL}/api/person/{user.id_card}")
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
api_nic = data.get("nic")
|
||||
@ -33,6 +76,13 @@ def verify_user_with_person_api_task(user_id: int):
|
||||
api_atoll = data.get("atoll_en")
|
||||
api_island_name = data.get("island_name_en")
|
||||
|
||||
if not user.mobile or user.dob is None:
|
||||
logger.error("User mobile or date of birth is not set.")
|
||||
return None
|
||||
if not user.island or user.atoll is None:
|
||||
logger.error("User island or atoll is not set.")
|
||||
return None
|
||||
|
||||
logger.info(f"API nic: {api_nic}")
|
||||
logger.info(f"API name: {api_name}")
|
||||
logger.info(f"API house name: {api_house_name}")
|
||||
@ -77,6 +127,7 @@ def verify_user_with_person_api_task(user_id: int):
|
||||
else:
|
||||
user.verified = False
|
||||
user.save()
|
||||
|
||||
send_sms(
|
||||
user.mobile,
|
||||
f"Dear {user.first_name} {user.last_name}, \n\nYour account registration is being processed. \n\nWe will notify you once verification is complete. \n\n - SAR Link",
|
||||
|
Reference in New Issue
Block a user