Example #1
0
 def sendGcmToUser(self, irssiuser_key, message):
     logging.debug("Sending gcm message to user %s" % irssiuser_key)
     if GCM.authkey is None:
         logging.error("No auth key for GCM!")
         return
         
     tokens = GcmToken.all()
     tokens.ancestor(irssiuser_key)
     tokens.filter("enabled =", True)
     tokensList = tokens.fetch(10)
     self.sendGcm(tokensList, message)
Example #2
0
    def get(self):
        logging.debug("WebController.get()")
        user = Login().getIrssiUser(self.request.params)
        
        tokens = []
        irssi_script_version = 0
        registration_date = 'Aeons ago'
        last_notification_time = 'Never'
        notification_count = 0

        if user is not None:
            tokens = GcmToken.all()
            tokens.ancestor(user.key())
            tokens = tokens.fetch(10)
            for token in tokens:
                if token.registration_date is not None:
                    token.registration_date_string = token.registration_date
                else:
                    token.registration_date_string = 'Yesterday?'

            irssi_script_version = user.irssi_script_version
            if irssi_script_version == None:
                irssi_script_version = 0
                
            if user.registration_date is not None:
                registration_date = user.registration_date

            if user.last_notification_time is not None:
                last_notification_time = user.last_notification_time

            if user.notification_count is not None:
                notification_count = user.notification_count

        template_values = {
             'user': user,
             'tokens': tokens,
             'token_count': len(tokens),
             'logged_in': user is not None,
             'login_url': users.create_login_url("#profile").replace("&", "&"),
             'logout_url': users.create_logout_url("").replace("&", "&"),
             'irssi_working': last_notification_time != 'Never',
             'irssi_latest': irssi_script_version >= 13,
             'registration_date': registration_date,
             'last_notification_time': last_notification_time,
             'notification_count': notification_count
        }

        template = jinja_environment.get_template('html/index.html')
        self.response.out.write(template.render(template_values))
Example #3
0
    def handle(self, user):
        logging.info("Wiping everything for user %s" % user.user_id)
        
        query = GcmToken.all()
        query.ancestor(user)
        db.delete(query)

        query = Message.all()
        query.ancestor(user)
        db.delete(query)

        query = AuthKey.all()
        query.ancestor(user)
        db.delete(query)

        user.delete()
Example #4
0
    def handle(self, user, array):
        logging.info("SettingsHandler.handle()")
        newToken = array["RegistrationId"]

        tokens = GcmToken.all()
        tokens.ancestor(user.key())
        tokens.filter("gcm_token =", newToken)
        t = tokens.get()
        
        if not t:
            logging.debug("Adding new token: " + newToken)
            tokenToAdd = GcmToken(parent = user.key())
            tokenToAdd.gcm_token = newToken
            tokenToAdd.enabled = bool(int(array["Enabled"]))
            tokenToAdd.name = array["Name"]
            tokenToAdd.registration_date = int(time.time())
            tokenToAdd.put()
        else:
            logging.debug("Updating token: " + newToken)
            t.enabled = bool(int(array["Enabled"]))
            t.name = array["Name"]
            t.put()
Example #5
0
def _sendGcmToToken(token_key, message):
    logging.info("executing deferred task: _sendGcmToToken, %s, %s" % (token_key, message))
    gcm = GCM()
    
    token = GcmToken.get(token_key)
    gcm.sendGcm([token], message)
Example #6
0
    def test_canonical_ids(self):
        logging.root.setLevel(logging.DEBUG)

        mock_dao = MockDao()
        mock_helper = MockGcmHelper()
        gcm = GCM(mock_dao, mock_helper)
        gcm.tokens = [
            GcmToken(gcm_token='0'),
            GcmToken(gcm_token='1'),
            GcmToken(gcm_token='2'),
            GcmToken(gcm_token='3'),
            GcmToken(gcm_token='4'),
            GcmToken(gcm_token='5'),
            GcmToken(gcm_token='6'),
            GcmToken(gcm_token='7')
        ]

        message = 'testing testing 1 2 3'

        response = {
            'multicast_id':
            666,
            'success':
            4,
            'canonical_ids':
            2,
            'results': [
                {
                    'error': 'something else'
                },
                {
                    'message_id': '11'
                },  # success
                {
                    'message_id': '22',
                    'registration_id': '3'
                },  # message with already existing canonical id
                {
                    'message_id': '33'
                },  # canonical id for previous
                {
                    'message_id': '44',
                    'registration_id': '123'
                },  # totally new canonical id
                {
                    'error': 'NotRegistered'
                },  # not registered
                {
                    'error': 'Unavailable'
                },
                {
                    'error': 'something else'
                }
            ]
        }

        js = json.dumps(response)

        response_json = json.loads(js)
        results = response_json["results"]
        index = -1
        for result in results:
            index += 1
            token = gcm.tokens[index]
            gcm.handle_gcm_result(result, token, message)

        self.assertEqual(2, len(mock_dao.removed_tokens))
        self.assertEqual('2', mock_dao.removed_tokens[0].gcm_token)
        self.assertEqual('5', mock_dao.removed_tokens[1].gcm_token)

        self.assertEqual(1, len(mock_dao.updated_tokens))
        self.assertEqual('4', mock_dao.updated_tokens[0][0].gcm_token)
        self.assertEqual('123', mock_dao.updated_tokens[0][1])

        self.assertEqual(1, len(mock_helper.sent_tokens))
        self.assertEqual('6', mock_helper.sent_tokens[0][0].gcm_token)
        self.assertEqual(message, mock_helper.sent_tokens[0][1])