Esempio n. 1
0
def get_themes(account):
    """
  Will return a list with all the themes for this account
  """

    all_themes = Badges.gql("WHERE creator=:1", account)
    """ Go through the list and remove redundancies """
    theme_set = []
    previous_theme = ""
    for theme in all_themes:
        if theme.theme != previous_theme:
            theme_set.append(theme.theme)
            previous_theme = theme.theme
Esempio n. 2
0
def get_themes(account):
    """
  Will return a list with all the themes for this account
  """

    all_themes = Badges.gql("WHERE creator=:1", account)

    """ Go through the list and remove redundancies """
    theme_set = []
    previous_theme = ""
    for theme in all_themes:
        if theme.theme != previous_theme:
            theme_set.append(theme.theme)
            previous_theme = theme.theme
Esempio n. 3
0
def create_badge_type(badge_key,
                      badge_name,
                      badge_des,
                      account,
                      badge_theme,
                      img_type,
                      imgbuf=None,
                      blob_info=None,
                      perm="private",
                      btype="free",
                      stype="blob",
                      is_enabled="yes"):
    """
  Storage is either using a BadgeImage or through the blobstore api for 
  faster and cheaper serving of images
  """
    blob_key = None
    storage_type = "blob"
    badge_image = None
    download_link = ""
    if imgbuf:
        storage_type = "db"
        badge_image = create_badge_image(badge_key, perm, account, imgbuf,
                                         img_type)
        download_link = get_full_link("badge/d?bk=" + badge_key)
    elif blob_info:
        storage_type = "blob"
        blob_key = blob_info.key()
        download_link = images.get_serving_url(str(blob_key))
    else:
        logging.error(
            "Create badge type error: No image to save for badge type")
        raise

    badge = Badges(key_name=badge_key,
                   name=badge_name,
                   altText=badge_des,
                   description=badge_des,
                   setType=btype,
                   isEnabled=is_enabled,
                   creator=account,
                   permissions=perm,
                   storageType=storage_type,
                   imageKey=badge_image,
                   blobKey=blob_key,
                   downloadLink=download_link,
                   theme=badge_theme)
    # Store it as a badge image
    memcache_db.save_entity(badge, badge_key)
    return badge
Esempio n. 4
0
def get_entity(key_name, ent_type):
    if ent_type not in constants.PROTECTED_DB_TYPES:
        raise Exception()
    e = memcache.get(key=key_name, namespace=ent_type)
    if e:
        try:
            e = deserialize(e)
        except:
            logging.error(
                "Memcache_db: Unable to deserialize entity of type %s" %
                ent_type)
            e = None

    if not e:
        memcache.delete(key=key_name, namespace=ent_type)
        if ent_type == "Accounts":
            e = Accounts.get_by_key_name(key_name)
        elif ent_type == "Badges":
            e = Badges.get_by_key_name(key_name)
        elif ent_type == "BadgeInstance":
            e = BadgeInstance.get_by_key_name(key_name)
        elif ent_type == "BadgeImage":
            e = BadgeImage.get_by_key_name(key_name)
        elif ent_type == "Users":
            e = Users.get_by_key_name(key_name)
        elif ent_type == "TrophyCase":
            e = TrophyCase.get_by_key_name(key_name)
        elif ent_type == "Points":
            e = Points.get_by_key_name(key_name)
        elif ent_type == "Notifier":
            e = Notifier.get_by_key_name(key_name)
        elif ent_type == "Rank":
            e = Rank.get_by_key_name(key_name)
        elif ent_type == "PassPhrase":
            e = PassPhrase.get_by_key_name(key_name)
        elif ent_type == "Milestones":
            e = Milestones.get_by_key_name(key_name)
        elif ent_type == "Leaderboard":
            e = Leaderboard.get_by_key_name(key_name)
        else:
            raise Exception()
        if e:
            memcache.add(key=key_name,
                         value=str(serialize(e)),
                         namespace=ent_type)
    return e
Esempio n. 5
0
def __batch_get_entity(key_names, ent_type):
    if ent_type not in constants.PROTECTED_DB_TYPES:
        raise Exception()
    es = memcache.get_multi(keys=key_names, namespace=ent_type)
    ents = []
    db_ents = {}
    for key in key_names:
        e = None
        if key in es:
            try:
                e = deserialize(e)
                ents.append(e)
            except Exception, ex:
                logging.error(
                    "Memcache_db: Unable to deserialize entity of type %s with %s"
                    % (ent_type, str(ex)))
                e = None
        if not e:
            # These puts are in a loop, making this function slow
            memcache.delete(key=key, namespace=ent_type)
            if ent_type == "Accounts":
                dbent = Accounts.get_by_key_name(key)
                ents.append(dbebt)
                db_ents[key] = serialize(dbent)
            elif ent_type == "Badges":
                dbent = Badges.get_by_key_name(key)
                ents.append(dbebt)
                db_ents[key] = serialize(dbent)
            elif ent_type == "BadgeInstance":
                dbent = BadgeInstance.get_by_key_name(key)
                ents.append(dbebt)
                db_ents[key] = serialize(dbent)
            elif ent_type == "BadgeImage":
                dbent = BadgeImage.get_by_key_name(key)
                ents.append(dbebt)
                db_ents[key] = serialize(dbent)
            elif ent_type == "Users":
                dbent = Users.get_by_key_name(key)
                ents.append(dbebt)
                db_ents[key] = serialize(dbent)
            elif ent_type == "TrophyCases":
                dbent = TrophyCases.get_by_key_name(key)
                ents.append(dbebt)
                db_ents[key] = serialize(dbent)
            else:
                raise Exception()
Esempio n. 6
0
def __batch_get_entity(key_names, ent_type):
  if ent_type not in constants.PROTECTED_DB_TYPES:
    raise Exception()
  es = memcache.get_multi(keys=key_names, namespace=ent_type)
  ents = []
  db_ents = {}
  for key in key_names:
    e = None
    if key in es:
      try:
        e = deserialize(e) 
        ents.append(e)
      except Exception, ex:
        logging.error("Memcache_db: Unable to deserialize entity of type %s with %s"%(ent_type, str(ex)))
        e = None
    if not e:
      # These puts are in a loop, making this function slow
      memcache.delete(key=key, namespace=ent_type)
      if ent_type == "Accounts":
        dbent = Accounts.get_by_key_name(key)
        ents.append(dbebt)
        db_ents[key] = serialize(dbent)
      elif ent_type == "Badges":
        dbent = Badges.get_by_key_name(key)
        ents.append(dbebt)
        db_ents[key] = serialize(dbent)
      elif ent_type == "BadgeInstance":
        dbent = BadgeInstance.get_by_key_name(key)
        ents.append(dbebt)
        db_ents[key] = serialize(dbent)
      elif ent_type == "BadgeImage":
        dbent = BadgeImage.get_by_key_name(key)
        ents.append(dbebt)
        db_ents[key] = serialize(dbent)
      elif ent_type == "Users":
        dbent = Users.get_by_key_name(key)
        ents.append(dbebt)
        db_ents[key] = serialize(dbent)
      elif ent_type == "TrophyCases":
        dbent = TrophyCases.get_by_key_name(key)
        ents.append(dbebt)
        db_ents[key] = serialize(dbent)
      else:
        raise Exception()
Esempio n. 7
0
def get_entity(key_name, ent_type):
  if ent_type not in constants.PROTECTED_DB_TYPES:
    raise Exception()
  e = memcache.get(key=key_name, namespace=ent_type)
  if e:
    try:
      e = deserialize(e)
    except:
      logging.error("Memcache_db: Unable to deserialize entity of type %s"%ent_type)
      e = None 

  if not e:
    memcache.delete(key=key_name, namespace=ent_type)
    if ent_type == "Accounts":
      e = Accounts.get_by_key_name(key_name)
    elif ent_type == "Badges":
      e = Badges.get_by_key_name(key_name)
    elif ent_type == "BadgeInstance":
      e = BadgeInstance.get_by_key_name(key_name)
    elif ent_type == "BadgeImage":
      e = BadgeImage.get_by_key_name(key_name)
    elif ent_type == "Users":
      e = Users.get_by_key_name(key_name)
    elif ent_type == "TrophyCase":
      e = TrophyCase.get_by_key_name(key_name)
    elif ent_type == "Points":
      e = Points.get_by_key_name(key_name)
    elif ent_type == "Notifier":
      e = Notifier.get_by_key_name(key_name)
    elif ent_type == "Rank":
      e = Rank.get_by_key_name(key_name)
    elif ent_type == "PassPhrase":
      e = PassPhrase.get_by_key_name(key_name)
    elif ent_type == "Milestones":
      e = Milestones.get_by_key_name(key_name)
    elif ent_type == "Leaderboard":
      e = Leaderboard.get_by_key_name(key_name)
    else:
      raise Exception()
    if e:
      memcache.add(key=key_name,value=str(serialize(e)),namespace=ent_type)
  return e
Esempio n. 8
0
def is_in_db(key_name, ent_type):
  if ent_type not in constants.PROTECTED_DB_TYPES:
    raise Exception()
  e = None
  if ent_type == "Accounts":
    e = Accounts.get_by_key_name(key_name)
  elif ent_type == "Badges":
    e = Badges.get_by_key_name(key_name)
  elif ent_type == "BadgeInstance":
    e = BadgeInstance.get_by_key_name(key_name)
  elif ent_type == "BadgeImage":
    e = BadgeInstance.get_by_key_name(key_name)
  elif ent_type == "Users":
    e = Users.get_by_key_name(key_name)
  elif ent_type == "TrophyCases":
    e = TrophyCase.get_by_key_name(key_name)
  else:
    raise Exception()

  if e: return True
  else: return False
Esempio n. 9
0
def is_in_db(key_name, ent_type):
    if ent_type not in constants.PROTECTED_DB_TYPES:
        raise Exception()
    e = None
    if ent_type == "Accounts":
        e = Accounts.get_by_key_name(key_name)
    elif ent_type == "Badges":
        e = Badges.get_by_key_name(key_name)
    elif ent_type == "BadgeInstance":
        e = BadgeInstance.get_by_key_name(key_name)
    elif ent_type == "BadgeImage":
        e = BadgeInstance.get_by_key_name(key_name)
    elif ent_type == "Users":
        e = Users.get_by_key_name(key_name)
    elif ent_type == "TrophyCases":
        e = TrophyCase.get_by_key_name(key_name)
    else:
        raise Exception()

    if e: return True
    else: return False
Esempio n. 10
0
def get_all_badges_for_account(account):
    """
  Will return all badges per the account, ordered by theme
  """

    return Badges.gql("WHERE creator=:1 ORDER BY theme", account)
Esempio n. 11
0
def get_all_badges_for_account(account):
    """
  Will return all badges per the account, ordered by theme
  """

    return Badges.gql("WHERE creator=:1 ORDER BY theme", account)