コード例 #1
0
ファイル: waitinglist.py プロジェクト: enfold/ploud.frontend
def enableUser():
    email = sys.argv[1]
    ploud_config.initializeConfig()
    dsn = PLOUD.dsn
    models.initialize_sql(dsn)
    config = Configurator()
    config.manager.push({'registry': config.registry, 'request': None})

    conn = ploud_config.PLOUD_POOL.getconn()
    cursor = conn.cursor()

    cursor.execute("SELECT email FROM waitinglist "
                   "WHERE completed = %s and email=%s",(False,email))

    row = cursor.fetchone()
    if row is None:
        print "Can't find email: %s"%email
        return

    transaction.begin()
    password = ''.join(
        [random.choice(ALLOWED_SITE_NAME_CHARS) for i in range(8)])
    user = models.User(email, password)
    user.type = 0
    token = user.token
    ptah.get_session().add(user)
    print email, token
    signup.send_activation(email, token)

    cursor.execute("UPDATE waitinglist SET completed = %s WHERE email=%s",
                   (True, email))
    cursor.close()
    conn.commit()
    transaction.commit()
コード例 #2
0
ファイル: usersmng.py プロジェクト: enfold/ploud.utils
def waitingList():
    ploud_config.initializeConfig()

    try:
        srch = sys.argv[1]
    except:
        srch = ""

    conn = ploud_config.PLOUD_POOL.getconn()
    cursor = conn.cursor()

    if not srch:
        cursor.execute("SELECT email, requested FROM waitinglist WHERE completed = FALSE ORDER BY id")
    else:
        cursor.execute(
            "SELECT email, requested FROM waitinglist " "WHERE email LIKE %s and completed = FALSE ORDER by id ",
            (srch,),
        )

    rows = cursor.fetchall()
    for row in rows:
        print "%s: %s" % row

    print "Total found: %s" % len(rows)
    cursor.close()
    ploud_config.PLOUD_POOL.putconn(conn)
コード例 #3
0
ファイル: maintenance.py プロジェクト: enfold/ploud.utils
def maintenanceAction():
    action = sys.argv[1]
    try:
        sid = int(sys.argv[2])
    except:
        sid = None

    ploud_config.initializeConfig()
    conn = ploud_config.PLOUD_POOL.getconn()
    cursor = conn.cursor()

    if sid:
        cursor.execute("SELECT host FROM vhost WHERE id = %s", (sid,))
    else:
        cursor.execute("SELECT host FROM vhost ORDER BY id")

    hosts = cursor.fetchall()
    if not hosts:
        print "No hosts found."
        return

    host = APACHE.host
    mn = Maintenance(host)

    for row in hosts:
        mn.execute(row[0], action)

    while not mn.stopThreads(True):
        pass

    print "Done"
コード例 #4
0
ファイル: managesites.py プロジェクト: enfold/ploud.utils
def cleanupRemoved():
    ploud_config.initializeConfig()

    conn = ploud_config.PLOUD_POOL.getconn()
    cursor = conn.cursor()
    

    cursor.execute('SELECT id, site_name FROM sites WHERE removed = TRUE ORDER by id')
    for sid, site_name in cursor.fetchall():
        print 'Removeing %s(%s)...'%(sid, site_name),
        
        clients = ploud_config.CLIENTS_POOL.getconn()
        c = clients.cursor()
        for tb in ('blob_chunk', 'commit_lock', 'object_state'):
            try:
                c.execute('DROP TABLE ploud%s_%s CASCADE'%(sid, tb))
            except:
                pass
        
        try:
            c.execute('DROP SEQUENCE ploud%s_zoid_seq'%sid)
        except:
            pass
        c.close()
        clients.commit()
        ploud_config.CLIENTS_POOL.putconn(clients)
        
        cursor.execute("DELETE FROM sites WHERE id = %s",(sid,))
        print ' removed'

    cursor.close()
    conn.commit()
    ploud_config.PLOUD_POOL.putconn(conn)
コード例 #5
0
ファイル: usersmng.py プロジェクト: enfold/ploud.utils
def userInfo():
    ploud_config.initializeConfig()

    id = sys.argv[1]

    conn = ploud_config.PLOUD_POOL.getconn()
    cursor = conn.cursor()

    cursor.execute("SELECT * FROM users WHERE id = %s", (id,))
    rec = cursor.fetchone()
    if rec is None:
        print "User id is not found."
        return

    print "User:"******"Email:", rec[1]
    print "Joined:", rec[3]
    print "Policy:", rec[-1]

    policy = POLICIES[rec[-1]]

    cursor.execute(
        "SELECT id,site_name,typeof,size,bwin+bwout,disabled,last_accessed FROM sites "
        "WHERE user_id = %s and removed = FALSE order by site_name",
        (id,),
    )
    data = cursor.fetchall()

    print "Number of sites:", len(data)

    size = 0
    bandwidth = 0
    for site in data:
        size += site[3]
        bandwidth += site[4]

    print "Database size: %0.2fMb (%0.1f%%)" % (size / 1048576.0, size / (policy.dbsize / 100.0))
    print "Bandwidth: %0.2fMb (%0.1f%%)" % (bandwidth / 1048576.0, bandwidth / (policy.bandwidth / 100.0))
    print "--------------------------------------------------"

    for site in data:
        print "Site id/type: %s/%s" % (site[0], site[2])
        print "Site name:", site[1]
        print "Last accessed:", site[6]
        print "Disabled:", site[5]
        print "Database size: %0.2fMb (%0.1f%%)" % (site[3] / 1048576.0, site[3] / (size / 100.0))
        print "Bandwidth: %0.2fMb (%0.1f%%)" % (site[4] / 1048576.0, site[4] / (bandwidth / 100.0))

        print "================================================="

    cursor.close()
    ploud_config.PLOUD_POOL.putconn(conn)
コード例 #6
0
ファイル: managesites.py プロジェクト: enfold/ploud.utils
def listSites():
    ploud_config.initializeConfig()

    try:
        srch = sys.argv[1]
    except:
        srch = ''

    conn = ploud_config.PLOUD_POOL.getconn()
    cursor = conn.cursor()

    cursor.execute("SELECT id, email FROM users")
    users = dict([(id, email) for id, email in cursor.fetchall()])

    if not srch:
        cursor.execute("SELECT id, site_name, user_id, bwin+bwout, size, last_accessed "
                       "FROM sites ORDER BY id")
    else:
        cursor.execute("SELECT id, site_name, user_id, bwin+bwout, size, last_accessed "
                       "FROM sites WHERE site_name LIKE %s ORDER BY id",(srch,))

    bwsize = 0
    dbsize = 0
    total = 0

    for id, site_name, user_id, bw, size, last_accessed in cursor.fetchall():
        total += 1
        bwsize += bw
        dbsize += size

        cursor.execute("SELECT host FROM vhost WHERE id = %s",(id,))
        vhosts = [row[0] for row in cursor.fetchall()]

        print '%0.5d: '%id,
        print 'db: %3.2f Mb | '%(size/1048576.0),
        print 'bw: %0.2f Mb | '%(bw/1048576.0),
        try:
            print ' %s | '%last_accessed.strftime("%d/%m/%y %H:%M"),
        except:
            print ' date is not set | ',
        print '%s | %s | '%(users[user_id], site_name),
        print ', '.join(vhosts)

    print "Total: %s"%total
    print 'Bandwidth:', '%0.2f Mb'%(bwsize/1048576.0)
    print 'Database size:', '%0.2f Mb'%(dbsize/1048576.0)
    cursor.close()
    ploud_config.PLOUD_POOL.putconn(conn)
コード例 #7
0
ファイル: usersmng.py プロジェクト: enfold/ploud.utils
def enableUser():
    email = sys.argv[1]
    ploud_config.initializeConfig()

    conn = ploud_config.PLOUD_POOL.getconn()
    cursor = conn.cursor()

    cursor.execute("SELECT email FROM waitinglist " "WHERE completed = %s and email=%s", (False, email))

    row = cursor.fetchone()
    if row is None:
        print "Can't find email: %s" % email
        return

    print row

    cursor.close()
    conn.commit()
コード例 #8
0
ファイル: tests.py プロジェクト: nerdfiles/ploud-prod
def setUp(test):
    config.loadPackage('ploud.frontend')

    testing.setUpConfig(test)
    testing.setUpTestAsModule(test, 'ploud.TESTS')
    ploud.TESTS = sys.modules['ploud.TESTS']

    initialize_sql('sqlite://')

    smtplib.SMTP = SMTP

    global configFile
    hnd, configFile = tempfile.mkstemp()
    f = open(configFile, 'wb')
    f.write("""[frontend]\nregistration=true""")
    f.close()
    ploud_config.initializeConfig(configFile, True)

    pyramid_config = Configurator()
    pyramid_config.begin()
コード例 #9
0
ファイル: usersmng.py プロジェクト: enfold/ploud.utils
def listUsers():
    ploud_config.initializeConfig()

    try:
        srch = sys.argv[1]
    except:
        srch = ""

    conn = ploud_config.PLOUD_POOL.getconn()
    cursor = conn.cursor()

    if not srch:
        cursor.execute("SELECT id, email FROM users ORDER BY id")
    else:
        cursor.execute("SELECT id, email FROM users WHERE email LIKE %s ORDER BY id", (srch,))

    rows = cursor.fetchall()
    for row in rows:
        print "%s: %s" % row

    print "Total found: %s" % len(rows)
    cursor.close()
    ploud_config.PLOUD_POOL.putconn(conn)
コード例 #10
0
ファイル: packer.py プロジェクト: enfold/ploud.utils
def pack():
    import ZODB
    from relstorage.options import Options
    from relstorage.storage import RelStorage
    from ploud.relstorage import local, PostgreSQLAdapter

    ploud_config.initializeConfig()

    conn = ploud_config.PLOUD_POOL.getconn()
    cursor = conn.cursor()

    clients_conn = ploud_config.CLIENTS_POOL.getconn()
    clients_cursor = clients_conn.cursor()

    options = Options(
        keep_history = False,
        blob_dir = '/tmp/ploud_pack_blobs',
        shared_blob_dir = False)
    dsn = "dbname=%(database)s user=%(user)s password=%(password)s "\
                "host=%(host)s "%ploud_config.CLIENTS_DSN

    try:
        shutil.rmtree('/tmp/ploud_pack_blobs')
    except:
        pass

    ids = []
    if (sys.argv) > 1:
        for id in sys.argv[1:]:
            try:
                ids.append(int(id))
            except:
                pass
    if ids:
        force = 1
        cursor.execute("SELECT id,site_name,packed,packed_size,size FROM sites WHERE id in (%s) ORDER BY id"%(str(ids)[1:-1]))
    else:
        force = 0
        cursor.execute("SELECT id,site_name,packed,packed_size,size FROM sites ORDER BY id")

    for row in cursor.fetchall():
        uid, name, packed, packed_size, size = row

        local.prefix = 'ploud%s_'%uid

        # pack if db size is more than 115% of packed db size
        if not force and packed_size and (size/(packed_size/100.0) < 115):
            print "Skiping '%s' %s"%(name, uid)
            continue

        clients_cursor.execute("DELETE FROM object_ref")
        clients_cursor.execute("DELETE FROM object_refs_added")
        clients_cursor.execute("DELETE FROM pack_object")
        clients_cursor.execute("COMMIT")

        print "Packing '%s' %s:"%(name, uid),
        t1 = datetime.now()
        pgadapter = PostgreSQLAdapter(
            ploud_config.CLIENTS_POOL, ploud_config.CLIENTS_POOL, dsn, options=options)
        storage = RelStorage(pgadapter, options=options)
        db = ZODB.DB(storage, database_name='main',
                     cache_size=15000, cache_byte_size=10485760)
        db.pack()
        db.close()
        storage.release()
        del storage
        del db
        del pgadapter
        psize = dbsize.dbsize(clients_cursor, uid)
        print "size: %0.2fmb was %0.2fmb %s"%(
            psize/(1024*1024.0), size/(1024*1024.0), str(datetime.now()-t1)[:-5])
        cursor.execute("UPDATE sites SET packed=%s, packed_size=%s, size=%s WHERE id=%s",
                       (datetime.now(), psize, psize, uid))
        cursor.execute('commit')
        try:
            shutil.rmtree('/tmp/ploud_pack_blobs')
        except:
            pass

    clients_cursor.close()
    ploud_config.CLIENTS_POOL.putconn(clients_conn)

    cursor.close()
    ploud_config.PLOUD_POOL.putconn(conn)