コード例 #1
0
    def test_contacts_with_no_contacts(self):
        """Ensure merging contacts with no contacts."""
        from sosbeacon.event.student_marker import StudentMarker
        from sosbeacon.event.student_marker import _build_contact_map

        contacts = _build_contact_map([{
            'name':
            'Sam Smith',
            'methods': [{
                'value': '123432'
            }, {
                'value': '*****@*****.**'
            }]
        }, {
            'name':
            'Josh Jones',
            'methods': [{
                'value': '443241'
            }, {
                'value': '*****@*****.**'
            }]
        }, {
            'name':
            'Betty Boop',
            'methods': [{
                'value': '321133'
            }, {
                'value': '*****@*****.**'
            }]
        }])

        left = StudentMarker(contacts=copy.deepcopy(contacts))
        right = StudentMarker()
        left.merge(right)
        self.assertEqual(contacts, left.contacts)
コード例 #2
0
    def test_merge_overlapping_contacts(self):
        """Ensure merging overlapping contacts."""
        from sosbeacon.event.student_marker import StudentMarker
        from sosbeacon.event.student_marker import _build_contact_map

        contacts = _build_contact_map([
            {
                'name': 'Sam Smith',
                'methods': [{'value': '123432'}, {'value': '*****@*****.**'}]
            },
            {
                'name': 'Josh Jones',
                'methods': [{'value': '443241'}, {'value': '*****@*****.**'}]
            },
            {
                'name': 'Betty Boop',
                'methods': [{'value': '321133'}, {'value': '*****@*****.**'}]
            }
        ])

        left = StudentMarker(contacts=copy.deepcopy(contacts))
        right = StudentMarker(contacts=copy.deepcopy(contacts))
        left.merge(right)

        for contact in contacts.values():
            contact['acked'] = None
            contact['acked_at'] = None
            contact['sent'] = None

        self.assertEqual(contacts, left.contacts)
コード例 #3
0
    def test_merge_no_contacts_with_contacts(self):
        """Ensure merging no contacts with contacts."""
        from sosbeacon.event.student_marker import StudentMarker
        from sosbeacon.event.student_marker import _build_contact_map

        contacts = _build_contact_map([
            {
                'name': 'Sam Smith',
                'methods': [{'value': '123432'}, {'value': '*****@*****.**'}],
                'acked': True
            },
            {
                'name': 'Josh Jones',
                'methods': [{'value': '443241'}, {'value': '*****@*****.**'}],
                'acked_at': 123432
            },
            {
                'name': 'Betty Boop',
                'methods': [{'value': '321133'}, {'value': '*****@*****.**'}],
                'sent': 23423
            }
        ])

        left = StudentMarker()
        right = StudentMarker(contacts=copy.deepcopy(contacts))
        left.merge(right)
        self.assertEqual(contacts, left.contacts)
コード例 #4
0
    def test_merge_no_name(self):
        """Ensure merging without name."""
        from sosbeacon.event.student_marker import StudentMarker

        left = StudentMarker()
        right = StudentMarker()
        left.merge(right)
        self.assertFalse(left.name)
コード例 #5
0
    def test_merge_non_broadcasts(self):
        """Ensure merging two non-broadcast."""
        from sosbeacon.event.student_marker import StudentMarker

        left = StudentMarker(last_broadcast=None)
        right = StudentMarker(last_broadcast=None)
        left.merge(right)
        self.assertFalse(left.last_broadcast)
コード例 #6
0
    def test_merge_non_broadcasts(self):
        """Ensure merging two non-broadcast."""
        from sosbeacon.event.student_marker import StudentMarker

        left = StudentMarker(last_broadcast=None)
        right = StudentMarker(last_broadcast=None)
        left.merge(right)
        self.assertFalse(left.last_broadcast)
コード例 #7
0
    def test_merge_different_names(self):
        """Ensure merging with different name."""
        from sosbeacon.event.student_marker import StudentMarker

        left = StudentMarker(name="billy")
        right = StudentMarker(name="joe")
        left.merge(right)
        self.assertEqual("billy", left.name)
コード例 #8
0
    def test_merge_name_with_no_name(self):
        """Ensure merging name with missing name."""
        from sosbeacon.event.student_marker import StudentMarker

        left = StudentMarker(name="joe")
        right = StudentMarker()
        left.merge(right)
        self.assertEqual("joe", left.name)
コード例 #9
0
    def test_merge_name_with_no_name(self):
        """Ensure merging name with missing name."""
        from sosbeacon.event.student_marker import StudentMarker

        left = StudentMarker(name="joe")
        right = StudentMarker()
        left.merge(right)
        self.assertEqual("joe", left.name)
コード例 #10
0
    def test_merge_no_name(self):
        """Ensure merging without name."""
        from sosbeacon.event.student_marker import StudentMarker

        left = StudentMarker()
        right = StudentMarker()
        left.merge(right)
        self.assertFalse(left.name)
コード例 #11
0
    def test_merge_different_names(self):
        """Ensure merging with different name."""
        from sosbeacon.event.student_marker import StudentMarker

        left = StudentMarker(name="billy")
        right = StudentMarker(name="joe")
        left.merge(right)
        self.assertEqual("billy", left.name)
コード例 #12
0
    def test_merge_contacts_into_ack_info(self):
        """Ensure merging contact list into ack info works."""
        from sosbeacon.event.student_marker import StudentMarker
        from sosbeacon.event.student_marker import _build_contact_map

        contacts = _build_contact_map([{
            'name':
            'Sam Smith',
            'methods': [{
                'value': '123432'
            }, {
                'value': '*****@*****.**'
            }]
        }, {
            'name':
            'Josh Jones',
            'methods': [{
                'value': '443241'
            }, {
                'value': '*****@*****.**'
            }]
        }, {
            'name':
            'Betty Boop',
            'methods': [{
                'value': '321133'
            }, {
                'value': '*****@*****.**'
            }]
        }])

        acked_contact = _build_contact_map([{
            'name':
            'Sam Smith',
            'methods': [{
                'value': '123432'
            }, {
                'value': '*****@*****.**'
            }],
            'acked':
            True,
            'acked_at':
            1234231,
            'sent':
            232311,
        }])

        left = StudentMarker(contacts=copy.deepcopy(acked_contact))
        right = StudentMarker(contacts=copy.deepcopy(contacts))
        left.merge(right)

        contacts.update(acked_contact)

        self.assertEqual(contacts, left.contacts)
        self.assertEqual(True, left.acknowledged)
        self.assertEqual(1234231, left.acknowledged_at)
コード例 #13
0
    def test_merge_broadcast(self):
        """Ensure merging broadcast markers."""
        from datetime import datetime

        from sosbeacon.event.student_marker import StudentMarker

        broadcasted = datetime.now()

        left = StudentMarker(last_broadcast=broadcasted)
        right = StudentMarker(last_broadcast=broadcasted)
        left.merge(right)
        self.assertEqual(broadcasted, left.last_broadcast)
コード例 #14
0
    def test_merge_broadcast(self):
        """Ensure merging broadcast markers."""
        from datetime import datetime

        from sosbeacon.event.student_marker import StudentMarker

        broadcasted = datetime.now()

        left = StudentMarker(last_broadcast=broadcasted)
        right = StudentMarker(last_broadcast=broadcasted)
        left.merge(right)
        self.assertEqual(broadcasted, left.last_broadcast)
コード例 #15
0
    def test_merge_broadcast_with_older(self):
        """Ensure merging more recently broadcast marker with older marker."""
        from datetime import datetime, timedelta

        from sosbeacon.event.student_marker import StudentMarker

        broadcasted = datetime.now()
        prior_broadcasted = datetime.now() + timedelta(minutes=-5)

        left = StudentMarker(last_broadcast=broadcasted)
        right = StudentMarker(last_broadcast=prior_broadcasted)
        left.merge(right)
        self.assertEqual(broadcasted, left.last_broadcast)
コード例 #16
0
    def test_merge_broadcast_with_older(self):
        """Ensure merging more recently broadcast marker with older marker."""
        from datetime import datetime, timedelta

        from sosbeacon.event.student_marker import StudentMarker

        broadcasted = datetime.now()
        prior_broadcasted = datetime.now() + timedelta(minutes=-5)

        left = StudentMarker(last_broadcast=broadcasted)
        right = StudentMarker(last_broadcast=prior_broadcasted)
        left.merge(right)
        self.assertEqual(broadcasted, left.last_broadcast)
コード例 #17
0
    def test_merge_overlapping_contacts(self):
        """Ensure merging overlapping contacts."""
        from sosbeacon.event.student_marker import StudentMarker
        from sosbeacon.event.student_marker import _build_contact_map

        contacts = _build_contact_map([{
            'name':
            'Sam Smith',
            'methods': [{
                'value': '123432'
            }, {
                'value': '*****@*****.**'
            }]
        }, {
            'name':
            'Josh Jones',
            'methods': [{
                'value': '443241'
            }, {
                'value': '*****@*****.**'
            }]
        }, {
            'name':
            'Betty Boop',
            'methods': [{
                'value': '321133'
            }, {
                'value': '*****@*****.**'
            }]
        }])

        left = StudentMarker(contacts=copy.deepcopy(contacts))
        right = StudentMarker(contacts=copy.deepcopy(contacts))
        left.merge(right)

        for contact in contacts.values():
            contact['acked'] = None
            contact['acked_at'] = None
            contact['sent'] = None

        self.assertEqual(contacts, left.contacts)
コード例 #18
0
    def test_merge_contacts_into_ack_info(self):
        """Ensure merging contact list into ack info works."""
        from sosbeacon.event.student_marker import StudentMarker
        from sosbeacon.event.student_marker import _build_contact_map

        contacts = _build_contact_map([
            {
                'name': 'Sam Smith',
                'methods': [{'value': '123432'}, {'value': '*****@*****.**'}]
            },
            {
                'name': 'Josh Jones',
                'methods': [{'value': '443241'}, {'value': '*****@*****.**'}]
            },
            {
                'name': 'Betty Boop',
                'methods': [{'value': '321133'}, {'value': '*****@*****.**'}]
            }
        ])

        acked_contact = _build_contact_map([
            {
                'name': 'Sam Smith',
                'methods': [{'value': '123432'}, {'value': '*****@*****.**'}],
                'acked': True,
                'acked_at': 1234231,
                'sent': 232311,
            }
        ])

        left = StudentMarker(contacts=copy.deepcopy(acked_contact))
        right = StudentMarker(contacts=copy.deepcopy(contacts))
        left.merge(right)

        contacts.update(acked_contact)

        self.assertEqual(contacts, left.contacts)
        self.assertEqual(True, left.acknowledged)
        self.assertEqual(1234231, left.acknowledged_at)
コード例 #19
0
    def get(self, event_id, number, *args, **kwargs):
        import sendgrid
        import settings
        from datetime import datetime
        from sosbeacon.event.message import Message
        from sosbeacon.event.student_marker import StudentMarker

        session_store = sessions.get_store()
        session = session_store.get_session()
        user_urlsafe = session.get('u')

        user_key = ndb.Key(urlsafe = user_urlsafe).get()
        event_key = ndb.Key(urlsafe = event_id)
        query_messages = Message.query(Message.event == event_key).fetch()

        body = ""

        for i in number:
        #           list comment message
            if i == "1":
                list_comment = Message.query(Message.event == event_key,
                    Message.message_type == 'c')
                title       = "Responder messages"
                body += str(self.responder_messages(user_key, title, list_comment))

            #           list student marker Responders
            if i == "2":
                query_response = StudentMarker.query(StudentMarker.event == event_key,
                    StudentMarker.is_direct == True,
                    StudentMarker.acknowledged == True)
                student_markers = query_response.fetch()
                title = "Responder List"
                body += str(self.email_student_marker(student_markers, title))

            #           list student marker Non Responders
            if i == "3":
                query_response = StudentMarker.query(StudentMarker.event == event_key,
                    StudentMarker.acknowledged == False, StudentMarker.is_direct == True)
                student_markers = query_response.fetch()
                title = "No Responder List"
                body += str(self.email_student_marker(student_markers, title))

            #           list message email
            if i == "4":
                title = "Alert Messages"
                body += str(self.email_broadcast_message(user_key, title, query_messages))

        today       = datetime.today()
        today       = today.strftime('%Y-%m-%d %H:%M')
        subject     = "Download data sent from SOSbeacon Message Center %s" % today
        email       = user_key.email

        s = sendgrid.Sendgrid(settings.SENDGRID_ACCOUNT,
            settings.SENDGRID_PASSWORD,
            secure=True)

        message = sendgrid.Message(
            settings.SENDGRID_SENDER,
            subject,
            body, body)

        message.add_to(str(email))
        try:
            s.web.send(message)
        except:
            error = "Can not download email."
            create_error_log(error, 'ERR')
コード例 #20
0
    def get(self, event_id, number, *args, **kwargs):
        import sendgrid
        import settings
        from datetime import datetime
        from sosbeacon.event.message import Message
        from sosbeacon.event.student_marker import StudentMarker

        session_store = sessions.get_store()
        session = session_store.get_session()
        user_urlsafe = session.get('u')

        user_key = ndb.Key(urlsafe=user_urlsafe).get()
        event_key = ndb.Key(urlsafe=event_id)
        query_messages = Message.query(Message.event == event_key).fetch()

        body = ""

        for i in number:
            #           list comment message
            if i == "1":
                list_comment = Message.query(Message.event == event_key,
                                             Message.message_type == 'c')
                title = "Responder messages"
                body += str(
                    self.responder_messages(user_key, title, list_comment))

            #           list student marker Responders
            if i == "2":
                query_response = StudentMarker.query(
                    StudentMarker.event == event_key,
                    StudentMarker.is_direct == True,
                    StudentMarker.acknowledged == True)
                student_markers = query_response.fetch()
                title = "Responder List"
                body += str(self.email_student_marker(student_markers, title))

            #           list student marker Non Responders
            if i == "3":
                query_response = StudentMarker.query(
                    StudentMarker.event == event_key,
                    StudentMarker.acknowledged == False,
                    StudentMarker.is_direct == True)
                student_markers = query_response.fetch()
                title = "No Responder List"
                body += str(self.email_student_marker(student_markers, title))

            #           list message email
            if i == "4":
                title = "Alert Messages"
                body += str(
                    self.email_broadcast_message(user_key, title,
                                                 query_messages))

        today = datetime.today()
        today = today.strftime('%Y-%m-%d %H:%M')
        subject = "Download data sent from SOSbeacon Message Center %s" % today
        email = user_key.email

        s = sendgrid.Sendgrid(settings.SENDGRID_ACCOUNT,
                              settings.SENDGRID_PASSWORD,
                              secure=True)

        message = sendgrid.Message(settings.SENDGRID_SENDER, subject, body,
                                   body)

        message.add_to(str(email))
        try:
            s.web.send(message)
        except:
            error = "Can not download email."
            create_error_log(error, 'ERR')