
__author__="cesare"
__date__ ="$Jan 25, 2011 12:40:40 PM$"

if __name__ == "__main__":
    print "Hello";

import random
import string
import logging

from google.appengine.ext import db

class myEntity(db.Model):
    foobar = db.StringProperty()
    ref = db.ReferenceProperty()

class myRefEntity(db.Model):
    blabla = db.StringProperty()

from main import currentSession

def test():
    initData()
    getTheExcetion()

def initData():
    tmp = []
    for i in range(0,10):
        tmp2 = myRefEntity()
        tmp2.blabla = randomText(20)
        tmp2.put()
        tmp.append(tmp2)

    for i in range(0,100):
        tmp2 = myEntity()
        tmp2.foobar = randomText(20)
        tmp2.ref = random.choice(tmp)
        tmp2.put()


def getTheExcetion():
    refQry = myRefEntity.all()
    refList = refQry.fetch(refQry.count())
    logging.info(refList)
    refSample = random.sample(refList,3)
    keys = []
    for ref in refSample:
        keys.append(ref.key())

    gqlQry = db.GqlQuery("SELECT __key__ FROM myEntity WHERE ref IN :1",keys)
    #raise: BadQueryError: Keys only queries do not support IN or != filters.
    keyList= gqlQry.fetch(gqlQry.count())



#just a utility function
def randomText(maxLen):
    str = ""
    while len(str) < maxLen:
        wordLen = random.randint(1,10)
        if len(str) + wordLen > maxLen:
            wordLen = maxLen - len(str)
        for i in xrange(wordLen):
            str += random.choice(string.letters)
        str += " "
        str.strip()
    return str