def send_ms_alert(self, previous_stockouts, transactions, ms_type): stockouts = { SQLProduct.objects.get(product_id=transaction.product_id).name for transaction in transactions if transaction.quantity == 0 and transaction.action == 'stockonhand' } with_stock = { SQLProduct.objects.get(product_id=transaction.product_id).name for transaction in transactions if transaction.quantity != 0 and transaction.action == 'stockonhand' } resolved_stockouts = previous_stockouts.intersection(with_stock) locations = self.sql_location.parent.get_descendants(include_self=True)\ .filter(location_type__administrative=True) for sql_location in locations: for user in get_all_users_by_location(self.domain, sql_location.location_id): phone_number = get_preferred_phone_number_for_recipient(user) if not phone_number: continue stockouts_and_resolved = [ (MS_RESOLVED_STOCKOUTS, resolved_stockouts), (MS_STOCKOUT, stockouts) ] for message, data in stockouts_and_resolved: if data: message = message % {'products_names': ', '.join(data), 'ms_type': ms_type} send_sms(self.domain, user, phone_number, message)
def respond(self, message, **kwargs): phone_number = get_preferred_phone_number_for_recipient(self.user) if not phone_number: return send_sms(self.domain, self.user, phone_number, six.text_type(message % kwargs))
def send_ms_alert(self, previous_stockouts, transactions, ms_type): stockouts = { SQLProduct.objects.get(product_id=transaction.product_id).name for transaction in transactions if transaction.quantity == 0 and transaction.action == 'stockonhand' } with_stock = { SQLProduct.objects.get(product_id=transaction.product_id).name for transaction in transactions if transaction.quantity != 0 and transaction.action == 'stockonhand' } resolved_stockouts = previous_stockouts.intersection(with_stock) locations = self.sql_location.parent.get_descendants(include_self=True)\ .filter(location_type__administrative=True) for sql_location in locations: for user in get_all_users_by_location(self.domain, sql_location.location_id): phone_number = get_preferred_phone_number_for_recipient(user) if not phone_number: continue stockouts_and_resolved = [(MS_RESOLVED_STOCKOUTS, resolved_stockouts), (MS_STOCKOUT, stockouts)] for message, data in stockouts_and_resolved: if data: message = message % { 'products_names': ', '.join(data), 'ms_type': ms_type } send_sms(self.domain, user, phone_number, message)
def send_message_to_admins(self, message): in_charge_users = map(CommCareUser.wrap, iter_docs( CommCareUser.get_db(), [in_charge.user_id for in_charge in self.sql_location.facilityincharge_set.all()] )) for in_charge_user in in_charge_users: phone_number = get_preferred_phone_number_for_recipient(in_charge_user) if not phone_number: continue send_sms(self.sql_location.domain, in_charge_user, phone_number, message % {'name': in_charge_user.full_name, 'location': self.sql_location.name})
def send_message_to_admins(self, message): in_charge_users = map( CommCareUser.wrap, iter_docs(CommCareUser.get_db(), [ in_charge.user_id for in_charge in self.sql_location.facilityincharge_set.all() ])) for in_charge_user in in_charge_users: phone_number = get_preferred_phone_number_for_recipient( in_charge_user) if not phone_number: continue send_sms( self.sql_location.domain, in_charge_user, phone_number, message % { 'name': in_charge_user.full_name, 'location': self.sql_location.name })
def send(self): for user, phone_number, message in self.get_users_messages(): send_sms(self.domain, user, phone_number, message)
def send(self): for recipient, message in self.get_users_messages(): phone_number = get_preferred_phone_number_for_recipient(recipient) if phone_number and has_notifications_enabled(self.domain, recipient): send_sms(self.domain, recipient, phone_number, message)
def send(self): phone_number = get_preferred_phone_number_for_recipient(self.user) if phone_number and has_notifications_enabled(self.domain, self.user): send_sms(self.domain, self.user, phone_number, self.message)