def test_all(self): sdp = ServiceDeliveryPoint(name="Test SDP") self.assertEqual(sdp.name, "Test SDP") sdp.save() self.assertFalse( sdp.received_reminder_after( "r_and_r_reminder_sent_facility", datetime(datetime.now().year, datetime.now().month, 1) - timedelta(seconds=1))) #create a reminder st = ServiceDeliveryPointStatusType.objects.filter( short_name="r_and_r_reminder_sent_facility")[0:1].get() ns = ServiceDeliveryPointStatus(service_delivery_point=sdp, status_type=st, status_date=datetime.now()) ns.save() #check reminder self.assertTrue( sdp.received_reminder_after( "r_and_r_reminder_sent_facility", datetime(datetime.now().year, datetime.now().month, 1) - timedelta(seconds=1)))
def help(self): service_delivery_point = self.msg.contact.contactdetail.service_delivery_point if service_delivery_point.service_delivery_point_type.name == "DISTRICT": self.respond( _("How many R&R forms have you submitted to MSD for group %(group)s? Reply with 'submitted A <number of R&Rs submitted for group A> B <number of R&Rs submitted for group B>...'" )) elif service_delivery_point.service_delivery_point_type.name == "FACILITY": st = ServiceDeliveryPointStatusType.objects.filter( short_name="r_and_r_submitted_facility_to_district")[0:1].get( ) ns = ServiceDeliveryPointStatus( service_delivery_point=service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() kwargs = { 'contact_name': self.msg.contact.name, 'sdp_name': self.msg.contact.contactdetail.service_delivery_point.name } self.respond( _('Thank you %(contact_name)s for submitting your R and R form for %(sdp_name)s' ), **kwargs) return
def help(self): service_delivery_point=self.msg.contact.contactdetail.service_delivery_point if service_delivery_point.service_delivery_point_type.name == "DISTRICT": self.respond(_("How many R&R forms have you submitted to MSD for group %(group)s? Reply with 'submitted A <number of R&Rs submitted for group A> B <number of R&Rs submitted for group B>...'")) elif service_delivery_point.service_delivery_point_type.name == "FACILITY": st = ServiceDeliveryPointStatusType.objects.filter(short_name="r_and_r_submitted_facility_to_district")[0:1].get() ns = ServiceDeliveryPointStatus(service_delivery_point=service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() kwargs = {'contact_name': self.msg.contact.name, 'sdp_name': self.msg.contact.contactdetail.service_delivery_point.name} self.respond(_('Thank you %(contact_name)s for submitting your R and R form for %(sdp_name)s'), **kwargs) return
def test_all(self): sdp = ServiceDeliveryPoint(name="Test SDP") self.assertEqual(sdp.name, "Test SDP") sdp.save() self.assertFalse(sdp.received_reminder_after("r_and_r_reminder_sent_facility", datetime(datetime.now().year, datetime.now().month, 1) - timedelta(seconds=1))) #create a reminder st = ServiceDeliveryPointStatusType.objects.filter(short_name="r_and_r_reminder_sent_facility")[0:1].get() ns = ServiceDeliveryPointStatus(service_delivery_point=sdp, status_type=st, status_date=datetime.now()) ns.save() #check reminder self.assertTrue(sdp.received_reminder_after("r_and_r_reminder_sent_facility", datetime(datetime.now().year, datetime.now().month, 1) - timedelta(seconds=1)))
def handle(self, text): service_delivery_point=self.msg.contact.contactdetail.service_delivery_point if service_delivery_point.service_delivery_point_type.name == "DISTRICT": st = ServiceDeliveryPointStatusType.objects.filter(short_name="r_and_r_submitted_district_to_msd")[0:1].get() ns = ServiceDeliveryPointStatus(service_delivery_point=service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() delivery_groups_list = text.split() if len(delivery_groups_list) > 0 and len(delivery_groups_list) % 2 != 0: self.respond(_("Sorry, invalid format. The message should be in the format 'submitted A <quantity of R&R forms for group A> B <quantity of R&R forms for group B>...'")) return else: sdp = self.msg.contact.contactdetail.service_delivery_point while len(delivery_groups_list) >= 2: quantity = delivery_groups_list.pop(0) delivery_group_name = delivery_groups_list.pop(0) if not is_number(quantity): if is_number(delivery_group_name): temp = delivery_group_name delivery_group_name = quantity quantity = temp else: self.respond(_("Sorry, invalid format. The message should be in the format 'submitted A <quantity of R&R forms for group A> B <quantity of R&R forms for group B>...'")) return try: delivery_group = DeliveryGroup.objects.filter(name__iexact=delivery_group_name)[0:1].get() except DeliveryGroup.DoesNotExist: kwargs = {'delivery_group_name': delivery_group_name.upper()} self.respond(_("Sorry, invalid Delivery Group %(delivery_group_name)s. Please try again"), **kwargs) return if float(quantity) > service_delivery_point.child_sdps().filter(delivery_group__name__iexact=delivery_group_name).count(): kwargs = {'quantity': quantity, 'delivery_group_name': delivery_group_name.upper()} self.respond(_("You reported %(quantity)s forms submitted for group %(delivery_group_name)s, which is more than the number of facilities in group %(delivery_group_name)s. Please try again."), **kwargs) return sdp.report_delivery_group_status(delivery_group=delivery_group,quantity=quantity, message=self.msg.logger_msg) kwargs = {'contact_name': self.msg.contact.name, 'sdp_name': self.msg.contact.contactdetail.service_delivery_point.name} self.respond(_('Thank you %(contact_name)s for reporting your R&R form submissions for %(sdp_name)s'), **kwargs) self._send_randr_alert_to_facilities(service_delivery_point) return elif service_delivery_point.service_delivery_point_type.name == "FACILITY": st = ServiceDeliveryPointStatusType.objects.filter(short_name="r_and_r_submitted_facility_to_district")[0:1].get() ns = ServiceDeliveryPointStatus(service_delivery_point=service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() kwargs = {'contact_name': self.msg.contact.name, 'sdp_name': self.msg.contact.contactdetail.service_delivery_point.name} self.respond(_('Thank you %(contact_name)s for submitting your R and R form for %(sdp_name)s'), **kwargs) return else: self.respond(_("Sorry, you need to register."))
def help(self): service_delivery_point=self.msg.contact.contactdetail.service_delivery_point if service_delivery_point.service_delivery_point_type.name == "DISTRICT": st = ServiceDeliveryPointStatusType.objects.filter(short_name="delivery_received_district")[0:1].get() ns = ServiceDeliveryPointStatus(service_delivery_point=service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() kwargs={'contact_name': self.msg.contact.name, 'facility_name': service_delivery_point.name} self.respond(_('Thank you %(contact_name)s for reporting your delivery for %(facility_name)s'), **kwargs) self._send_delivery_alert_to_facilities(service_delivery_point) elif service_delivery_point.service_delivery_point_type.name == "FACILITY": st = ServiceDeliveryPointStatusType.objects.filter(short_name="delivery_received_facility")[0:1].get() ns = ServiceDeliveryPointStatus(service_delivery_point=service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() self.respond(_("To record a delivery, respond with \"delivered product amount product amount...\""))
def handle(self, text): service_delivery_point=self.msg.contact.contactdetail.service_delivery_point if service_delivery_point.service_delivery_point_type.name == "DISTRICT": st = ServiceDeliveryPointStatusType.objects.filter(short_name="delivery_received_district")[0:1].get() ns = ServiceDeliveryPointStatus(service_delivery_point=service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() kwargs={'contact_name': self.msg.contact.name, 'facility_name': service_delivery_point.name} self.respond(_('Thank you %(contact_name)s for reporting your delivery for %(facility_name)s'), **kwargs) self._send_delivery_alert_to_facilities(service_delivery_point) elif service_delivery_point.service_delivery_point_type.name == "FACILITY": product_list = text.split() if len(product_list) > 0 and len(product_list) % 2 != 0: self.respond(_("Sorry, invalid format. The message should be in the format 'delivered product amount product amount'")) return else: reply_list = [] while len(product_list) >= 2: product_code = product_list.pop(0) quantity = product_list.pop(0) if not is_number(quantity): if is_number(product_code): temp = product_code product_code = quantity quantity = temp else: self.respond(_("Sorry, invalid format. The message should be in the format 'delivered product amount product amount'")) return report_type = ProductReportType.objects.filter(sms_code='dlvd')[0:1].get() try: product = Product.get_product(product_code) except Product.DoesNotExist: self.respond(_('Sorry, invalid product code %(code)s'), code=product_code) return reply_list.append('%s %s' % (product.sms_code, quantity) ) service_delivery_point.report_product_status(product=product,report_type=report_type,quantity=quantity, message=self.msg.logger_msg) st = ServiceDeliveryPointStatusType.objects.filter(short_name="delivery_quantities_reported")[0:1].get() ns = ServiceDeliveryPointStatus(service_delivery_point=service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() self.respond(_('Thank you, you reported a delivery of %(reply_list)s. If incorrect, please resend.'), reply_list=','.join(reply_list))
def handle(self, text): service_delivery_point = self.msg.contact.contactdetail.service_delivery_point if service_delivery_point.service_delivery_point_type.name == "DISTRICT": st = ServiceDeliveryPointStatusType.objects.filter( short_name="r_and_r_submitted_district_to_msd")[0:1].get() ns = ServiceDeliveryPointStatus( service_delivery_point=service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() delivery_groups_list = text.split() if len(delivery_groups_list ) > 0 and len(delivery_groups_list) % 2 != 0: self.respond( _("Sorry, invalid format. The message should be in the format 'submitted A <quantity of R&R forms for group A> B <quantity of R&R forms for group B>...'" )) return else: sdp = self.msg.contact.contactdetail.service_delivery_point while len(delivery_groups_list) >= 2: quantity = delivery_groups_list.pop(0) delivery_group_name = delivery_groups_list.pop(0) if not is_number(quantity): if is_number(delivery_group_name): temp = delivery_group_name delivery_group_name = quantity quantity = temp else: self.respond( _("Sorry, invalid format. The message should be in the format 'submitted A <quantity of R&R forms for group A> B <quantity of R&R forms for group B>...'" )) return try: delivery_group = DeliveryGroup.objects.filter( name__iexact=delivery_group_name)[0:1].get() except DeliveryGroup.DoesNotExist: kwargs = { 'delivery_group_name': delivery_group_name.upper() } self.respond( _("Sorry, invalid Delivery Group %(delivery_group_name)s. Please try again" ), **kwargs) return if float(quantity) > service_delivery_point.child_sdps( ).filter(delivery_group__name__iexact=delivery_group_name ).count(): kwargs = { 'quantity': quantity, 'delivery_group_name': delivery_group_name.upper() } self.respond( _("You reported %(quantity)s forms submitted for group %(delivery_group_name)s, which is more than the number of facilities in group %(delivery_group_name)s. Please try again." ), **kwargs) return sdp.report_delivery_group_status( delivery_group=delivery_group, quantity=quantity, message=self.msg.logger_msg) kwargs = { 'contact_name': self.msg.contact.name, 'sdp_name': self.msg.contact.contactdetail.service_delivery_point.name } self.respond( _('Thank you %(contact_name)s for reporting your R&R form submissions for %(sdp_name)s' ), **kwargs) self._send_randr_alert_to_facilities(service_delivery_point) return elif service_delivery_point.service_delivery_point_type.name == "FACILITY": st = ServiceDeliveryPointStatusType.objects.filter( short_name="r_and_r_submitted_facility_to_district")[0:1].get( ) ns = ServiceDeliveryPointStatus( service_delivery_point=service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() kwargs = { 'contact_name': self.msg.contact.name, 'sdp_name': self.msg.contact.contactdetail.service_delivery_point.name } self.respond( _('Thank you %(contact_name)s for submitting your R and R form for %(sdp_name)s' ), **kwargs) return else: self.respond(_("Sorry, you need to register."))
def handle(self, text): result = text.lower().split() command = result.pop(0) msd_code = result.pop(0) extra = '' while len(result) > 0: extra = extra + ' ' + result.pop(0) if command != 'send_inquiry_message': try: sdp = ServiceDeliveryPoint.objects.get(msd_code=msd_code.upper()) except: self.respond("Invalid msd code %s" % msd_code) return contact_details_to_remind = ContactDetail.objects.filter(service_delivery_point=sdp) if command in ['la']: for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage(default_connection, _("Please send in your adjustments in the format 'la <product> +-<amount> +-<product> +-<amount>...'")) m.send() st = ServiceDeliveryPointStatusType.objects.filter(short_name="lost_adjusted_reminder_sent_facility")[0:1].get() ns = ServiceDeliveryPointStatus(service_delivery_point=contact_detail.service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() self.respond("Sent") if command in ['fw']: for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage(default_connection, _(extra)) m.send() self.respond("Sent '%s'" % _(extra)) if command in ['supervision']: for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage(default_connection, _("Have you received supervision this month? Please reply 'supervision yes' or 'supervision no'")) m.send() st = ServiceDeliveryPointStatusType.objects.filter(short_name="supervision_reminder_sent_facility")[0:1].get() ns = ServiceDeliveryPointStatus(service_delivery_point=contact_detail.service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() self.respond("Sent") if command in ['soh','hmk']: for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage(default_connection, _("Please send in your stock on hand information in the format 'soh <product> <amount> <product> <amount>...'")) m.send() st = ServiceDeliveryPointStatusType.objects.filter(short_name="soh_reminder_sent_facility")[0:1].get() ns = ServiceDeliveryPointStatus(service_delivery_point=contact_detail.service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() self.respond("Sent") elif command in ['si']: product = Product.objects.get(product_code=addl_parameter) if not product: self.respond("Invalid product code %s" % addl_parameter) return if sdp.service_delivery_point_type.name == "FACILITY": contact_details_to_remind = ContactDetail.objects.filter(service_delivery_point=sdp) for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage(default_connection, _("How much %s (msd code %s) do you have in stock? Please respond 'si %s <amount>'" % (product.name, addl_parameter, addl_parameter) )) m.send() self.respond("Sent") else: self.respond("Can only initiate product inquiry for a single facility via SMS - %s is a %s" % (sdp.name, sdp.service_delivery_point_type.name) ) return elif command in ['send_inquiry_message']: product = Product.objects.get(product_code=addl_parameter) if not product: self.respond("Invalid product code %s" % addl_parameter) return try: sdp = ServiceDeliveryPoint.objects.get(id=msd_code) except: self.respond("Invalid ID %s" % msd_code) return if sdp.service_delivery_point_type.name == "FACILITY": contact_details_to_remind = ContactDetail.objects.filter(service_delivery_point=sdp) for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage(default_connection, _("How much %s (msd code %s) do you have in stock? Please respond 'si %s <amount>'" % (product.name, addl_parameter, addl_parameter) )) m.send() elif sdp.service_delivery_point_type.name == "DISTRICT": for facility_sdp in sdp.child_sdps(): contact_details_to_remind = ContactDetail.objects.filter(service_delivery_point=facility_sdp) for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage(default_connection, _("How much %s (msd code %s) do you have in stock? Please respond 'si %s <amount>'" % (product.name, addl_parameter, addl_parameter) )) m.send() elif sdp.service_delivery_point_type.name == "REGION": for district_sdp in sdp.child_sdps(): for facility_sdp in district_sdp.child_sdps: contact_details_to_remind = ContactDetail.objects.filter(service_delivery_point=facility_sdp) for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage(default_connection, _("How much %s (msd code %s) do you have in stock? Please respond 'si %s <amount>'" % (product.name, addl_parameter, addl_parameter) )) m.send() elif command in ['randr']: for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: if sdp.service_delivery_point_type.name == "DISTRICT": m = OutgoingMessage(default_connection, _("How many R&R forms have you submitted to MSD? Reply with 'submitted A <number of R&Rs submitted for group A> B <number of R&Rs submitted for group B>'")) m.send() elif sdp.service_delivery_point_type.name == "FACILITY": m = OutgoingMessage(default_connection, _("Have you sent in your R&R form yet for this quarter? Please reply \"submitted\" or \"not submitted\"")) m.send() st = ServiceDeliveryPointStatusType.objects.filter(short_name="r_and_r_reminder_sent_facility")[0:1].get() ns = ServiceDeliveryPointStatus(service_delivery_point=contact_detail.service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() self.respond("Sent") elif command in ['delivery']: for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: if contact_detail.service_delivery_point.service_delivery_point_type.name == "FACILITY": m = OutgoingMessage(default_connection, _("Did you receive your delivery yet? Please reply 'delivered <product> <amount> <product> <amount>...'")) m.send() st = ServiceDeliveryPointStatusType.objects.filter(short_name="delivery_received_reminder_sent_facility")[0:1].get() ns = ServiceDeliveryPointStatus(service_delivery_point=contact_detail.service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() elif contact_detail.service_delivery_point.service_delivery_point_type.name == "DISTRICT": m = OutgoingMessage(default_connection, _("Did you receive your delivery yet? Please reply 'delivered' or 'not delivered'")) m.send() st = ServiceDeliveryPointStatusType.objects.filter(short_name="r_and_r_reminder_sent_district")[0:1].get() ns = ServiceDeliveryPointStatus(service_delivery_point=contact_detail.service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() else: self.respond("Sorry there was a problem with your service delivery point setup. Please check via the admin.") self.respond("Sent") elif command in ['latedelivery']: for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: service_delivery_point = contact_detail.service_delivery_point kwargs = {"group_name": current_delivering_group(), "group_total": service_delivery_point.child_sdps().filter(delivery_group__name=current_delivering_group()).count(), "not_responded_count": service_delivery_point.child_sdps_not_responded_delivery_this_month(), "not_received_count": service_delivery_point.child_sdps_not_received_delivery_this_month()} m = OutgoingMessage(default_connection, _("Facility deliveries for group %(group_name)s (out of %(group_total)d): %(not_responded_count)d haven't responded and %(not_received_count)d have reported not receiving. See ilsgateway.com"), **kwargs) m.send() self.respond("Sent")
def handle(self, text): result = text.lower().split() command = result.pop(0) msd_code = result.pop(0) extra = '' while len(result) > 0: extra = extra + ' ' + result.pop(0) if command != 'send_inquiry_message': try: sdp = ServiceDeliveryPoint.objects.get( msd_code=msd_code.upper()) except: self.respond("Invalid msd code %s" % msd_code) return contact_details_to_remind = ContactDetail.objects.filter( service_delivery_point=sdp) if command in ['la']: for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage( default_connection, _("Please send in your adjustments in the format 'la <product> +-<amount> +-<product> +-<amount>...'" )) m.send() st = ServiceDeliveryPointStatusType.objects.filter( short_name="lost_adjusted_reminder_sent_facility" )[0:1].get() ns = ServiceDeliveryPointStatus( service_delivery_point=contact_detail. service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() self.respond("Sent") if command in ['fw']: for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage(default_connection, _(extra)) m.send() self.respond("Sent '%s'" % _(extra)) if command in ['supervision']: for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage( default_connection, _("Have you received supervision this month? Please reply 'supervision yes' or 'supervision no'" )) m.send() st = ServiceDeliveryPointStatusType.objects.filter( short_name="supervision_reminder_sent_facility" )[0:1].get() ns = ServiceDeliveryPointStatus( service_delivery_point=contact_detail. service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() self.respond("Sent") if command in ['soh', 'hmk']: for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage( default_connection, _("Please send in your stock on hand information in the format 'soh <product> <amount> <product> <amount>...'" )) m.send() st = ServiceDeliveryPointStatusType.objects.filter( short_name="soh_reminder_sent_facility")[0:1].get() ns = ServiceDeliveryPointStatus( service_delivery_point=contact_detail. service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() self.respond("Sent") elif command in ['si']: product = Product.objects.get(product_code=addl_parameter) if not product: self.respond("Invalid product code %s" % addl_parameter) return if sdp.service_delivery_point_type.name == "FACILITY": contact_details_to_remind = ContactDetail.objects.filter( service_delivery_point=sdp) for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage( default_connection, _("How much %s (msd code %s) do you have in stock? Please respond 'si %s <amount>'" % (product.name, addl_parameter, addl_parameter))) m.send() self.respond("Sent") else: self.respond( "Can only initiate product inquiry for a single facility via SMS - %s is a %s" % (sdp.name, sdp.service_delivery_point_type.name)) return elif command in ['send_inquiry_message']: product = Product.objects.get(product_code=addl_parameter) if not product: self.respond("Invalid product code %s" % addl_parameter) return try: sdp = ServiceDeliveryPoint.objects.get(id=msd_code) except: self.respond("Invalid ID %s" % msd_code) return if sdp.service_delivery_point_type.name == "FACILITY": contact_details_to_remind = ContactDetail.objects.filter( service_delivery_point=sdp) for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage( default_connection, _("How much %s (msd code %s) do you have in stock? Please respond 'si %s <amount>'" % (product.name, addl_parameter, addl_parameter))) m.send() elif sdp.service_delivery_point_type.name == "DISTRICT": for facility_sdp in sdp.child_sdps(): contact_details_to_remind = ContactDetail.objects.filter( service_delivery_point=facility_sdp) for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage( default_connection, _("How much %s (msd code %s) do you have in stock? Please respond 'si %s <amount>'" % (product.name, addl_parameter, addl_parameter))) m.send() elif sdp.service_delivery_point_type.name == "REGION": for district_sdp in sdp.child_sdps(): for facility_sdp in district_sdp.child_sdps: contact_details_to_remind = ContactDetail.objects.filter( service_delivery_point=facility_sdp) for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: m = OutgoingMessage( default_connection, _("How much %s (msd code %s) do you have in stock? Please respond 'si %s <amount>'" % (product.name, addl_parameter, addl_parameter))) m.send() elif command in ['randr']: for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: if sdp.service_delivery_point_type.name == "DISTRICT": m = OutgoingMessage( default_connection, _("How many R&R forms have you submitted to MSD? Reply with 'submitted A <number of R&Rs submitted for group A> B <number of R&Rs submitted for group B>'" )) m.send() elif sdp.service_delivery_point_type.name == "FACILITY": m = OutgoingMessage( default_connection, _("Have you sent in your R&R form yet for this quarter? Please reply \"submitted\" or \"not submitted\"" )) m.send() st = ServiceDeliveryPointStatusType.objects.filter( short_name="r_and_r_reminder_sent_facility" )[0:1].get() ns = ServiceDeliveryPointStatus( service_delivery_point=contact_detail. service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() self.respond("Sent") elif command in ['delivery']: for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: if contact_detail.service_delivery_point.service_delivery_point_type.name == "FACILITY": m = OutgoingMessage( default_connection, _("Did you receive your delivery yet? Please reply 'delivered <product> <amount> <product> <amount>...'" )) m.send() st = ServiceDeliveryPointStatusType.objects.filter( short_name="delivery_received_reminder_sent_facility" )[0:1].get() ns = ServiceDeliveryPointStatus( service_delivery_point=contact_detail. service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() elif contact_detail.service_delivery_point.service_delivery_point_type.name == "DISTRICT": m = OutgoingMessage( default_connection, _("Did you receive your delivery yet? Please reply 'delivered' or 'not delivered'" )) m.send() st = ServiceDeliveryPointStatusType.objects.filter( short_name="r_and_r_reminder_sent_district" )[0:1].get() ns = ServiceDeliveryPointStatus( service_delivery_point=contact_detail. service_delivery_point, status_type=st, status_date=datetime.now()) ns.save() else: self.respond( "Sorry there was a problem with your service delivery point setup. Please check via the admin." ) self.respond("Sent") elif command in ['latedelivery']: for contact_detail in contact_details_to_remind: default_connection = contact_detail.default_connection if default_connection: service_delivery_point = contact_detail.service_delivery_point kwargs = { "group_name": current_delivering_group(), "group_total": service_delivery_point.child_sdps().filter( delivery_group__name=current_delivering_group( )).count(), "not_responded_count": service_delivery_point. child_sdps_not_responded_delivery_this_month(), "not_received_count": service_delivery_point. child_sdps_not_received_delivery_this_month() } m = OutgoingMessage( default_connection, _("Facility deliveries for group %(group_name)s (out of %(group_total)d): %(not_responded_count)d haven't responded and %(not_received_count)d have reported not receiving. See ilsgateway.com" ), **kwargs) m.send() self.respond("Sent")