예제 #1
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