Exemple #1
0
def totals():
    whale = Whale()
    params = default_params()
    params['periods'] = g('periods', None)
    if type(params['metrics']) == dict:
        params['metrics'] = params['metrics'].keys()
    return whale.totals(**params)
Exemple #2
0
def reset():
    whale = Whale()
    try:
        whale.reset(**default_params())
    except Exception as e:
        return str(e)
    return 'OK'
Exemple #3
0
def plotpoints():
    whale = Whale()
    params = default_params()
    params['depth'] = g('depth', 0)
    params['period'] = g('period', None)
    params['sort'] = g('sort', None)
    params['limit'] = g('limit', 10)
    params['tzoffset'] = g('tzoffset', 0.0)
    params['flot_time'] = True
    return whale.plotpoints(**params)
Exemple #4
0
def tracker():
    from periods import Period
    import random
    params = default_params()
    # LOLOL THIS SHOULD REALLY CHANGE
    key = hashlib.sha256('hailwhale_weak_key').digest()
    if 'pk' not in req.GET and 'pixel' in req.GET:
        from Crypto.Cipher import AES
        from base64 import b64encode, b64decode
        from urllib import quote_plus

        mode = AES.MODE_CBC
        encryptor = AES.new(key, mode)
        text = g('pixel')
        INTERRUPT = u'\u0001'
        PAD = u'\u0000'

        # Since you need to pad your data before encryption,
        # create a padding function as well
        # Similarly, create a function to strip off the padding after decryption
        def AddPadding(data, interrupt, pad, block_size):
            new_data = ''.join([data, interrupt])
            new_data_len = len(new_data)
            remaining_len = block_size - new_data_len
            to_pad_len = remaining_len % block_size
            pad_string = pad * to_pad_len
            return ''.join([new_data, pad_string])

        def StripPadding(data, interrupt, pad):
            return data.rstrip(pad).rstrip(interrupt)

        def hw_encoded(t):
            return quote_plus(
                b64encode(encryptor.encrypt(AddPadding(t, INTERRUPT, PAD,
                                                       32))))

        def hw_decoded(t):
            return StripPadding(encryptor.decrypt(b64decode(t)), INTERRUPT,
                                PAD)

        params['pk'] = hw_decoded(text)
    pk = params['pk']
    whale = Whale()
    hail = Hail()
    val = whale.count_now(at=times.now(), **params)
    #val = whale.count_now(**params)
    uid = g('uid')
    if not uid or uid == '_new':
        default = random.randrange(10**6, 10**9)
        uid = str(req.get_cookie('uid', str(default), key))
    hail.spy_log(uid, params)
    response.set_cookie('uid', uid, key)
    return str(uid)
Exemple #5
0
def plotpointsGraph():
    whale = Whale()
    params = default_params()
    params['depth'] = g('depth', 0)
    params['period'] = g('period', None)
    params['sort'] = g('sort', None)
    params['limit'] = g('limit', 10)
    params['tzoffset'] = g('tzoffset', 0.0)
    params['flot_time'] = True
    #print whale.plotpointsGraph(**params)
    ret = whale.plotpointsGraph(**params)
    return json.dumps(ret)
Exemple #6
0
def update_count_to():
    whale = Whale()
    at = g('at', False)
    tzoffset = None
    if not at:
        at = times.now()
    else:
        from dateutil.parser import parse
        at = parse(g('at'))
        at = at.replace(tzinfo=None)
    params = dict(at=at, period=g('period', None), **default_params())

    val = whale.update_count_to(**params)
    return 'OK'
Exemple #7
0
def count_now():
    whale = Whale()
    vals = default_params()
    at = vals.get("at")  #g('at', False)
    tzoffset = None
    if not at:
        at = times.now()
    else:
        from dateutil.parser import parse
        at = parse(at)
    val = whale.count_now(at=at,
                          pk=vals.get("pk"),
                          metrics=vals.get("metrics"),
                          dimensions=vals.get("dimensions"))
    return 'OK'
    def fill_tank(self, screen):
        """Add fish and plants to the tank"""

        width, height = screen.get_size()

        for _ in range(1, 3):
            self.__fish.append(Fish("Clownfish", 20, randint(1, 5), randint(1, 5), randint(
                100, width-100), randint(height-300, height-100)))

        for _ in range(1, 3):
            self.__fish.append(Whale(
                "Humpback", 40, 3, 3, randint(100, width-100), randint(height-300, height-100)))

        for _ in range(1, 3):
            self.__plants.append(Coral("Coral", 20,
                                       5, randint(0, width), height))

        for _ in range(1, 3):
            self.__plants.append(
                Algae("Seaweed", 20, 5, randint(0, width), height))
Exemple #9
0
 def setUp(self):
     from hail import Hail
     from whale import Whale
     self.hail = Hail()
     self.whale = Whale()