def test_encoder(self):
        """Ensure encoder produces expected encoded output."""
        from sosbeacon.utils import number_encode

        number = 123
        encoded = number_encode(number)
        self.assertEqual(encoded, 'b6')
    def test_encoder(self):
        """Ensure encoder produces expected encoded output."""
        from sosbeacon.utils import number_encode

        number = 123
        encoded = number_encode(number)
        self.assertEqual(encoded, 'b6')
    def test_inverse(self):
        """Ensure decode(encode(number)) == number over a range of numbers."""
        from sosbeacon.utils import number_decode
        from sosbeacon.utils import number_encode

        for number in range(0, 500000, 339):
            encoded = number_encode(number)
            decoded = number_decode(encoded)
            self.assertEqual(number, decoded)
    def test_inverse(self):
        """Ensure decode(encode(number)) == number over a range of numbers."""
        from sosbeacon.utils import number_decode
        from sosbeacon.utils import number_encode

        for number in range(0, 500000, 339):
            encoded = number_encode(number)
            decoded = number_decode(encoded)
            self.assertEqual(number, decoded)
def broadcast_to_method(event_key, message_key, short_id, method):
    """Send the message to the given contact method."""
    import os

    from sosbeacon import utils
    from sosbeacon.event.contact_marker import ContactMarker
    from sosbeacon.event.student_marker import StudentMarker
    from sosbeacon.responde_sms import create_responder_student_sms
    from sosbeacon.responde_sms import create_responder_user_sms
    from sosbeacon.log import create_log
    from sosbeacon.user import User

    message = message_key.get()
    event = event_key.get()

    encoded_event = utils.number_encode(event_key.id())
    encoded_method = utils.number_encode(short_id)

    host = os.environ["HTTP_HOST"]

    url = "http://%s/e/%s/%s" % (host, encoded_event, encoded_method)

    message_log = message.to_dict()
    log_sms = message_log["message"]["sms"]
    log_email = message_log["message"]["email"]

    froms = message.user.get().email
    phones = message.user.get().phone
    user = message.user
    school = event.school

    if "@" not in method:
        if message.message_type == "ec":
            string_date = "%s %s, %s at %s:%s %s" % (
                message.added.strftime("%B"),
                message.added.strftime("%d"),
                message.added.strftime("%Y"),
                message.added.strftime("%I"),
                message.added.strftime("%M"),
                message.added.strftime("%p"),
            )
            #            text_message = "Message " + message.message['email']
            text_message = (
                "from "
                + event.school.get().name
                + " by "
                + message.user.get().first_name
                + " "
                + message.user.get().last_name
                + " at "
                + string_date
                + ". Message "
                + message.message["email"]
            )
            broadcast_call(method, text_message, message.link_audio)
            return

        if message.message_type == "eo":
            return

        broadcast_sms(method, message, url, user.get().first_name + " " + user.get().last_name, school.get().name)
        create_log(
            phones, method, "s", log_sms, user.get().first_name + " " + user.get().last_name, school.get().name, url
        )

        if short_id == user.id():
            create_responder_user_sms(
                user.get().phone, user.get().first_name + " " + user.get().last_name, url, event_key
            )
        else:
            create_responder_student_sms(method, short_id, url, event_key)

        return

    broadcast_email(method, message, url, user, school)
    create_log(
        froms, method, "e", log_email, user.get().first_name + " " + user.get().last_name, school.get().name, url
    )
def broadcast_to_method(event_key, message_key, short_id, method):
    """Send the message to the given contact method."""
    import os

    from sosbeacon import utils
    from sosbeacon.event.contact_marker import ContactMarker
    from sosbeacon.event.student_marker import StudentMarker
    from sosbeacon.responde_sms import create_responder_student_sms
    from sosbeacon.responde_sms import create_responder_user_sms
    from sosbeacon.log import create_log
    from sosbeacon.user import User

    message = message_key.get()
    event = event_key.get()

    encoded_event = utils.number_encode(event_key.id())
    encoded_method = utils.number_encode(short_id)

    host = os.environ['HTTP_HOST']

    url = "http://%s/e/%s/%s" % (host, encoded_event, encoded_method)

    message_log = message.to_dict()
    log_sms = message_log['message']['sms']
    log_email = message_log['message']['email']

    froms = message.user.get().email
    phones = message.user.get().phone
    user = message.user
    school = event.school

    if '@' not in method:
        if message.message_type == 'ec':
            string_date = "%s %s, %s at %s:%s %s" % (
                message.added.strftime("%B"), message.added.strftime("%d"),
                message.added.strftime("%Y"), message.added.strftime("%I"),
                message.added.strftime("%M"), message.added.strftime("%p"))
            #            text_message = "Message " + message.message['email']
            text_message = "from " + event.school.get(
            ).name + " by " + message.user.get(
            ).first_name + " " + message.user.get(
            ).last_name + " at " + string_date + ". Message " + message.message[
                'email']
            broadcast_call(method, text_message, message.link_audio)
            return

        if message.message_type == 'eo':
            return

        broadcast_sms(method, message, url,
                      user.get().first_name + " " + user.get().last_name,
                      school.get().name)
        create_log(phones, method, 's', log_sms,
                   user.get().first_name + " " + user.get().last_name,
                   school.get().name, url)

        if short_id == user.id():
            create_responder_user_sms(
                user.get().phone,
                user.get().first_name + " " + user.get().last_name, url,
                event_key)
        else:
            create_responder_student_sms(method, short_id, url, event_key)

        return

    broadcast_email(method, message, url, user, school)
    create_log(froms, method, 'e', log_email,
               user.get().first_name + " " + user.get().last_name,
               school.get().name, url)