def redemption_request_due_date_escalation(*args, **kwargs): time = datetime.now() """ send mail when due date is less than current date for redemption request """ brand = kwargs.get("brand", None) args = [Q(due_date__lte=time), Q(resolution_flag=False), ~Q(status="Delivered")] redemption_request_obj = get_model("RedemptionRequest", brand).objects.filter(reduce(operator.and_, args)) for redemption_request in redemption_request_obj: data = get_email_template("REDEMPTION_REQUEST_DUE_DATE_EXCEED_MAIL_TO_MANAGER", brand) data["newsubject"] = data["subject"].format(id=redemption_request.transaction_id) data["content"] = data["body"].format( transaction_id=redemption_request.transaction_id, status=redemption_request.status ) escalation_list = get_model("UserProfile", brand).objects.filter(user__groups__name=Roles.REDEEMESCALATION) escalation_list_detail = utils.get_escalation_mailing_list(escalation_list) send_email_to_redeem_escaltion_group(data, escalation_list_detail) message = templates.get_template("LOYALTY_DUE_DATE_EXCEED_ESCALATION", brand).format( transaction_id=redemption_request.transaction_id, status=redemption_request.status ) for phone_number in escalation_list_detail["sms"]: phone_number = utils.get_phone_number_format(phone_number) sms_log(brand, receiver=phone_number, action=AUDIT_ACTION, message=message) send_job_to_queue( send_loyalty_escalation_message, {"phone_number": phone_number, "message": message, "sms_client": settings.SMS_CLIENT}, ) redemption_request.resolution_flag = True redemption_request.save()
def send_reminders_for_servicedesk(*args, **kwargs): manager_obj = User.objects.get(groups__name="sdm") time = datetime.now() """ send mail when reminder_date is less than current date or when due date is less than current date """ brand = kwargs.get("brand", None) feedback_obj = get_model("Feedback", brand).objects.filter( reminder_date__lte=time, reminder_flag=False ) or get_model("Feedback", brand).objects.filter(due_date__lte=time, resolution_flag=False) for feedback in feedback_obj: if not feedback.reminder_flag: context = utils.create_context("DUE_DATE_EXCEEDED_MAIL_TO_AGENT", feedback) send_due_date_reminder(context, feedback.assignee.user_profile.user.email) context = utils.create_context("DUE_DATE_REMINDER_MAIL_TO_MANAGER", feedback) send_due_date_reminder(context, manager_obj.email) feedback.reminder_flag = False if not feedback.resolution_flag: context = utils.create_context("DUE_DATE_EXCEEDED_MAIL_TO_MANAGER", feedback) escalation_list = get_model("UserProfile", brand).objects.filter(user__groups__name=Roles.SDESCALATION) escalation_list_detail = utils.get_escalation_mailing_list(escalation_list) send_due_date_exceeded(context, escalation_list_detail["mail"]) for phone_number in escalation_list_detail["sms"]: send_sms("DUE_DATE_EXCEEDED_ESCALATION", phone_number, feedback, brand) feedback.resolution_flag = False feedback.save()