示例#1
0
    def test_decoder(self):
        """Ensure decoded correctly decodes a known encoded number."""
        from sosbeacon.utils import number_decode

        encoded = 'b6'
        number = number_decode(encoded)
        self.assertEqual(number, 123)
示例#2
0
    def test_decoder(self):
        """Ensure decoded correctly decodes a known encoded number."""
        from sosbeacon.utils import number_decode

        encoded = 'b6'
        number = number_decode(encoded)
        self.assertEqual(number, 123)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    def get(self, event_id, method_id):
        from google.appengine.ext import ndb
        from sosbeacon import utils
        from sosbeacon.event.event import EVENT_STATUS_CLOSED

        event_id = utils.number_decode(event_id)
        method_id = str(utils.number_decode(method_id))
        event_key = ndb.Key(Event, int(event_id), namespace='_x_')

        session_store = sessions.get_store()
        session = session_store.get_session()

        event_mc_key = 'Event:%s' % (int(event_id),)
        event_html = memcache.get(event_mc_key)
        if not event_html:
            event = event_key.get()
            if not event:
                memcache.set(event_mc_key, EVENT_DOES_NOT_EXIST)
                self.error(404)
                return

            event_html = self.render('event.mako', event=event)
            memcache.set(event_mc_key, event_html)

        if event_html == EVENT_DOES_NOT_EXIST:
            # Some one might be exploring.  Lets not give them anything.
            self.error(404)
            return

        event = event_key.get()

        if event.status == EVENT_STATUS_CLOSED:
            if 'u' in session:
                self.redirect("/#eventcenter/view/%s" % event_key.get().key.urlsafe())
                return
            else:
                event_html = self.render('event_closed.mako')
                self.response.out.write(event_html)
                return

        marker_key = ndb.Key(
            ContactMarker, "%s:%s" % (event_id, method_id),
            namespace='_x_')

        marker = marker_key.get()
        if not marker:
            if 'u' in session:
                self.redirect("/#eventcenter/view/%s" % event_key.get().key.urlsafe())
                return
            else:
                logging.info("1")
                event_html = self.render('event.mako', event=event, contact_marker = False, contact_name="", timezone = "America/Los_Angeles")
                self.response.out.write(event_html)
                return

        if 'u' in session:
            self.redirect("/#eventcenter/view/%s" % event_key.get().key.urlsafe())
            try:
                acknowledge_event(event_key, marker_key)
            except:
                # This is (relatively) non-critical, so log and ignore exceptions.
                logging.exception('Ack failed for marker %s.', marker_key)
                pass
            return

        if marker.place_holder:
            marker_key = marker.place_holder

        self.setup_session_marker(marker_key, event)

        event_html = self.render('event.mako', event=event, contact_marker = True, contact_name = marker.first_name + " " + marker.last_name, timezone = self.session.get('tz'))
        self.response.out.write(event_html)

        # Try to mark this event as acknowledged.
        try:
            acknowledge_event(event_key, marker_key)
        except:
            # This is (relatively) non-critical, so log and ignore exceptions.
            logging.exception('Ack failed for marker %s.', marker_key)
            pass
示例#6
0
    def get(self, event_id, method_id):
        from google.appengine.ext import ndb
        from sosbeacon import utils
        from sosbeacon.event.event import EVENT_STATUS_CLOSED

        event_id = utils.number_decode(event_id)
        method_id = str(utils.number_decode(method_id))
        event_key = ndb.Key(Event, int(event_id), namespace='_x_')

        session_store = sessions.get_store()
        session = session_store.get_session()

        event_mc_key = 'Event:%s' % (int(event_id), )
        event_html = memcache.get(event_mc_key)
        if not event_html:
            event = event_key.get()
            if not event:
                memcache.set(event_mc_key, EVENT_DOES_NOT_EXIST)
                self.error(404)
                return

            event_html = self.render('event.mako', event=event)
            memcache.set(event_mc_key, event_html)

        if event_html == EVENT_DOES_NOT_EXIST:
            # Some one might be exploring.  Lets not give them anything.
            self.error(404)
            return

        event = event_key.get()

        if event.status == EVENT_STATUS_CLOSED:
            if 'u' in session:
                self.redirect("/#eventcenter/view/%s" %
                              event_key.get().key.urlsafe())
                return
            else:
                event_html = self.render('event_closed.mako')
                self.response.out.write(event_html)
                return

        marker_key = ndb.Key(ContactMarker,
                             "%s:%s" % (event_id, method_id),
                             namespace='_x_')

        marker = marker_key.get()
        if not marker:
            if 'u' in session:
                self.redirect("/#eventcenter/view/%s" %
                              event_key.get().key.urlsafe())
                return
            else:
                logging.info("1")
                event_html = self.render('event.mako',
                                         event=event,
                                         contact_marker=False,
                                         contact_name="",
                                         timezone="America/Los_Angeles")
                self.response.out.write(event_html)
                return

        if 'u' in session:
            self.redirect("/#eventcenter/view/%s" %
                          event_key.get().key.urlsafe())
            try:
                acknowledge_event(event_key, marker_key)
            except:
                # This is (relatively) non-critical, so log and ignore exceptions.
                logging.exception('Ack failed for marker %s.', marker_key)
                pass
            return

        if marker.place_holder:
            marker_key = marker.place_holder

        self.setup_session_marker(marker_key, event)

        event_html = self.render('event.mako',
                                 event=event,
                                 contact_marker=True,
                                 contact_name=marker.first_name + " " +
                                 marker.last_name,
                                 timezone=self.session.get('tz'))
        self.response.out.write(event_html)

        # Try to mark this event as acknowledged.
        try:
            acknowledge_event(event_key, marker_key)
        except:
            # This is (relatively) non-critical, so log and ignore exceptions.
            logging.exception('Ack failed for marker %s.', marker_key)
            pass