コード例 #1
0
ファイル: __init__.py プロジェクト: xplodwild/GetCM
        def get_from_database():
            devices = []

            session = DBSession()
            for device in session.query(File.device).distinct():
                devices.append(device[0])

            return sorted(devices)
コード例 #2
0
ファイル: __init__.py プロジェクト: ciwrl/GetCM
 def get_from_database():
     session = DBSession()
     try:
         file = session.query(cls).filter(cls.device == device).order_by(cls.date_created.desc()).first()
     except NoResultFound:
         file = None
     
     return file
コード例 #3
0
ファイル: __init__.py プロジェクト: xplodwild/GetCM
        def get_from_database():
            session = DBSession()
            try:
                file = session.query(cls).filter(cls.md5sum == md5hash).one()
            except NoResultFound:
                file = None

            return file
コード例 #4
0
ファイル: __init__.py プロジェクト: kingfs/GetCM
        def get_from_database():
            devices = []

            session = DBSession()
            for device in session.query(File.device).distinct():
                devices.append(device[0])

            return sorted(devices)
コード例 #5
0
ファイル: __init__.py プロジェクト: kingfs/GetCM
        def get_from_database():
            session = DBSession()
            try:
                file = session.query(cls).filter(cls.full_path == filename).order_by(cls.id.desc()).first()
            except NoResultFound:
                file = None

            return file
コード例 #6
0
ファイル: __init__.py プロジェクト: kingfs/GetCM
        def get_from_database():
            session = DBSession()
            try:
                file = session.query(cls).filter(cls.id == base62_decode(base62)).one()
            except NoResultFound:
                file = None

            return file
コード例 #7
0
ファイル: __init__.py プロジェクト: kingfs/GetCM
        def get_from_database():
            session = DBSession()
            try:
                file = session.query(cls).filter(cls.md5sum == md5hash).one()
            except NoResultFound:
                file = None

            return file
コード例 #8
0
ファイル: __init__.py プロジェクト: xplodwild/GetCM
        def get_from_database():
            session = DBSession()
            try:
                file = session.query(cls).filter(
                    cls.full_path == filename).order_by(cls.id.desc()).first()
            except NoResultFound:
                file = None

            return file
コード例 #9
0
ファイル: __init__.py プロジェクト: xplodwild/GetCM
        def get_from_database():
            session = DBSession()
            try:
                file = session.query(cls).filter(
                    cls.id == base62_decode(base62)).one()
            except NoResultFound:
                file = None

            return file
コード例 #10
0
ファイル: __init__.py プロジェクト: ciwrl/GetCM
        def get_from_database():
            session = DBSession()
            query = session.query(cls)

            query = query.select_from(File).filter(cls.type == channel)
            query = query.filter(cls.device == device)
            query = query.filter(cls.date_created >= datetime.fromtimestamp(after))
            query = query.order_by(cls.date_created.desc()).first()

            return query
コード例 #11
0
        def get_from_database():
            session = DBSession()
            try:
                file = session.query(cls).filter(
                    cls.device == device).order_by(
                        cls.date_created.desc()).first()
            except NoResultFound:
                file = None

            return file
コード例 #12
0
ファイル: __init__.py プロジェクト: xplodwild/GetCM
        def get_from_database():
            session = DBSession()
            query = session.query(cls)

            query = query.select_from(File).filter(cls.type == channel)
            query = query.filter(cls.device == device)
            query = query.filter(
                cls.date_created >= datetime.fromtimestamp(after))
            query = query.order_by(cls.date_created.desc()).first()

            return query
コード例 #13
0
ファイル: __init__.py プロジェクト: kingfs/GetCM
        def get_from_database():
            session = DBSession()
            query = session.query(cls)

            if device is not None:
                query = query.select_from(File).filter(File.device == device)

            if type is not None:
                query = query.filter(cls.type == type)

            # Limit the query and order it
            query = query.order_by(cls.date_created.desc())[:limit]

            return query
コード例 #14
0
ファイル: __init__.py プロジェクト: xplodwild/GetCM
        def get_from_database():
            session = DBSession()
            query = session.query(cls)

            if device is not None:
                query = query.select_from(File).filter(File.device == device)

            if type is not None:
                query = query.filter(cls.type == type)

            # Limit the query and order it
            query = query.order_by(cls.date_created.desc())[:limit]

            return query
コード例 #15
0
ファイル: addfile.py プロジェクト: CaesarRulezzz/GetCM
def process_file(args):
    init_database(create_engine(args.db_uri))
    session = DBSession()

    ota = OTAPackage(args.file)

    md5hash = md5sum(args.file)
    new = File.get_by_md5sum(md5hash)
    if new is None:
        new = File()
        new.md5sum = md5hash

    if args.url:
        new.filename = os.path.basename(args.url)
    else:
        new.filename = os.path.basename(args.file)

    if args.full_path:
        new.full_path = args.full_path
    else:
        new.full_path = args.file.replace(args.base_path, "")

    info_hash = create_torrent(args.file,
                               "/opt/www/torrents/%s.torrent" % new.filename,
                               new.full_path)

    new.type = args.type
    new.info_hash = info_hash
    new.size = os.path.getsize(args.file)
    new.device = ota.build_prop.get('ro.cm.device', 'unknown')
    if args.timestamp is not None:
        new.date_created = datetime.fromtimestamp(args.timestamp)
    else:
        new.date_created = datetime.fromtimestamp(os.path.getmtime(args.file))

    logging.debug("Filename = %s", new.filename)
    logging.debug("Type = %s", new.type)
    logging.debug("Device = %s", new.device)
    logging.debug("MD5 = %s", new.md5sum)

    try:
        session.add(new)
        session.commit()
        logging.info("File added successfully!")
    except IntegrityError:
        session.rollback()
        logging.error("File already exists: '%s'", new.filename)

    if args.url:
        logging.info("Removing temporary file '%s'", args.file)
        os.remove(args.file)
コード例 #16
0
ファイル: addfile.py プロジェクト: shiznu/GetCM
def process_file(args):
    init_database(create_engine(args.db_uri))
    session = DBSession()
    
    ota = OTAPackage(args.file)
    
    md5hash = md5sum(args.file)
    new = File.get_by_md5sum(md5hash)
    if new is None:
        new = File()
        new.md5sum = md5hash

    if args.url:
        new.filename = os.path.basename(args.url)
    else:
        new.filename = os.path.basename(args.file)

    if args.full_path:
        new.full_path = args.full_path
    else:
        new.full_path = args.file.replace(args.base_path, "")

    info_hash = create_torrent(args.file, "/opt/www/torrents/%s.torrent" % new.filename, new.full_path)

    new.type = args.type
    new.info_hash = info_hash
    new.size = os.path.getsize(args.file)
    new.device = ota.build_prop.get('ro.cm.device', 'unknown')
    if args.timestamp is not None:
        new.date_created = datetime.fromtimestamp(args.timestamp)
    else:
        new.date_created = datetime.fromtimestamp(os.path.getmtime(args.file))

    logging.debug("Filename = %s", new.filename)
    logging.debug("Type = %s", new.type)
    logging.debug("Device = %s", new.device)
    logging.debug("MD5 = %s", new.md5sum)

    try:
        session.add(new)
        session.commit()
        logging.info("File added successfully!")
    except IntegrityError:
        session.rollback()
        logging.error("File already exists: '%s'", new.filename)

    if args.url:
        logging.info("Removing temporary file '%s'", args.file)
        os.remove(args.file)
コード例 #17
0
ファイル: cache.py プロジェクト: xplodwild/GetCM
    def get(self, key):
        value, expires = self.store.get(key, (None, None))
        if expires is not None and expires > time.time():
            logging.info("Cache Hit for '%s', expires in %s seconds" %
                         (key, expires - time.time()))
            return value
        else:
            if value is not None:
                if isinstance(value, list):
                    for obj in value:
                        try:
                            DBSession().expunge(obj)
                            logging.info("Expunged %s", obj)
                        except:
                            pass

            logging.info("Cache Miss for '%s'" % (key))
            return None
コード例 #18
0
ファイル: addfile.py プロジェクト: ciwrl/GetCM
def process_file(args):
    init_database(create_engine(args.db_uri))
    session = DBSession()
    build_prop = os.path.dirname(args.file) + "/build.prop"
    build_prop_raw = open(build_prop).read()

    device_name = None
    build_date = None
    for line in build_prop_raw.split("\n"):
        if line.startswith("ro.cm.device"):
            k, device_name = line.split("=")
        if line.startswith("ro.build.date.utc"):
            k, build_date = line.split("=")

    if device_name is None:
        device_name = "unknown"

    # Determine md5sum
    build_number = args.full_path.split("/")[1]
    zip_name = args.full_path.split("/")[-1]
    md5_url = "http://jenkins.cyanogenmod.com/job/android/%s/artifact/archive/%s.md5sum" % (build_number, zip_name)
    md5hash = urllib2.urlopen(md5_url).read().split(" ")[0]

    # Determine filesize
    file_url = "/job/android/%s/artifact/archive/%s" % (build_number, zip_name)
    conn = httplib.HTTPConnection("jenkins.cyanogenmod.com")
    conn.request("HEAD", file_url)
    res = conn.getresponse()
    file_size = res.getheader('content-length')

    new = File.get_by_md5sum(md5hash)
    if new is None:
        new = File()
        new.md5sum = md5hash

    if args.url:
        new.filename = os.path.basename(args.url)
    else:
        new.filename = os.path.basename(args.file)

    if args.full_path:
        new.full_path = args.full_path
    else:
        new.full_path = args.file.replace(args.base_path, "")

    new.type = args.type
    new.info_hash = None
    new.size = file_size
    new.device = device_name
    if args.timestamp is not None:
        new.date_created = datetime.fromtimestamp(args.timestamp)
    elif build_date is not None:
        new.date_created = datetime.fromtimestamp(int(build_date))
    else:
        new.date_created = datetime.fromtimestamp(os.path.getmtime(args.file))

    logging.debug("Filename = %s", new.filename)
    logging.debug("Type = %s", new.type)
    logging.debug("Device = %s", new.device)
    logging.debug("MD5 = %s", new.md5sum)
    logging.debug("Size = %s", new.size)

    try:
        session.add(new)
        session.commit()
        logging.info("File added successfully!")
    except IntegrityError:
        session.rollback()
        logging.error("File already exists: '%s'", new.filename)

    if args.url:
        logging.info("Removing temporary file '%s'", args.file)
        os.remove(args.file)
コード例 #19
0
def process_file(args):
    init_database(create_engine(args.db_uri))
    session = DBSession()
    build_prop = os.path.dirname(args.file) + "/build.prop"
    build_prop_raw = open(build_prop).read()

    device_name = None
    for line in build_prop_raw.split("\n"):
        if line.startswith("ro.cm.device"):
            k, device_name = line.split("=")

    if device_name is None:
        device_name = "unknown"

    # Determine md5sum
    build_number = args.full_path.split("/")[1]
    zip_name = args.full_path.split("/")[-1]
    md5_url = "http://jenkins.cyanogenmod.com/job/android/%s/artifact/archive/%s.md5sum" % (build_number, zip_name)
    md5hash = urllib2.urlopen(md5_url).read().split(" ")[0]

    # Determine filesize
    file_url = "/job/android/%s/artifact/archive/%s" % (build_number, zip_name)
    conn = httplib.HTTPConnection("jenkins.cyanogenmod.com")
    conn.request("HEAD", file_url)
    res = conn.getresponse()
    file_size = res.getheader('content-length')

    new = File.get_by_md5sum(md5hash)
    if new is None:
        new = File()
        new.md5sum = md5hash

    if args.url:
        new.filename = os.path.basename(args.url)
    else:
        new.filename = os.path.basename(args.file)

    if args.full_path:
        new.full_path = args.full_path
    else:
        new.full_path = args.file.replace(args.base_path, "")

    new.type = args.type
    new.info_hash = None
    new.size = file_size
    new.device = device_name
    if args.timestamp is not None:
        new.date_created = datetime.fromtimestamp(args.timestamp)
    else:
        new.date_created = datetime.fromtimestamp(os.path.getmtime(args.file))

    logging.debug("Filename = %s", new.filename)
    logging.debug("Type = %s", new.type)
    logging.debug("Device = %s", new.device)
    logging.debug("MD5 = %s", new.md5sum)
    logging.debug("Size = %s", new.size)

    try:
        session.add(new)
        session.commit()
        logging.info("File added successfully!")
    except IntegrityError:
        session.rollback()
        logging.error("File already exists: '%s'", new.filename)

    if args.url:
        logging.info("Removing temporary file '%s'", args.file)
        os.remove(args.file)