Пример #1
0
    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)
Пример #2
0
    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))
Пример #3
0
    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)
Пример #4
0
 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})
Пример #5
0
 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
             })
Пример #6
0
 def send(self):
     for user, phone_number, message in self.get_users_messages():
         send_sms(self.domain, user, phone_number, message)
Пример #7
0
 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)
Пример #8
0
 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)
Пример #9
0
 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)
Пример #10
0
 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)
Пример #11
0
    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))