示例#1
0
def add_items_to_database(items, verbose):
    db = DB()
#     db.query("SET NAMES utf8;")
    for item in items:
        url_path = urlparse.urlparse(item.url).path[1:]
        url_path_groups = url_path.split('/')
        github_repo_path = '/'.join(url_path_groups[:2])
        cmd = """
                INSERT INTO hacker_news(id, 
                                        added_at,
                                        submission_time,
                                        title,
                                        url,
                                        github_repo_name) 
                VALUES (%d, '%s', '%s', '%s', '%s', '%s')
              """ % (
                item.item_id,
                date_for_mysql(datetime.now()),
                date_for_mysql(item.submission_time),
                str_for_mysql(item.title),
                str_for_mysql(item.url),
                str_for_mysql(github_repo_path)
                )
        if verbose:
            print cmd
#        db.query(cmd)
        try:
            db.query(cmd)
        except MySQLError as err:
            print "ERROR:", err
            db.conn.rollback()
        else:
            db.commit() 
    return True
示例#2
0
 def __init__(self, id):
     self.db = DB("emmet", "brown", "vmweb")
     sql = "select * from vmachine where id={}".format(id)
     query = self.db.run(sql)
     self.id = id
     self.name = query[0]["name"]
     self.ram = query[0]["ram"]
     self.cpu = query[0]["cpu"]
     self.hdd = query[0]["hdd"]
     self.os = query[0]["os"]
示例#3
0
文件: vm.py 项目: omaherpad/imw
    def __init__(self, id):
        self.db = DB("emmet", "78636756dD.", "vmweb")
        sql = f"select * from vmachine where id={id}"
        query = self.db.query(sql)

        self.name = query[0]["name"]
        self.ram = query[0]["ram"]
        self.cpu = query[0]["cpu"]
        self.hdd = query[0]["hdd"]
        self.os = query[0]["os"]
        self.id = id
 def __init__(self, id):
     self.db = DB("abraham", "79072387cC$", "db_web")
     sql = f"select * from vmachine where id={id}"
     run = self.db.query(sql)
     self.id = run[0]["id"]
     self.name = run[0]["name"]
     self.ram = run[0]["ram"]
     self.cpu = run[0]["cpu"]
     self.hdd = run[0]["hdd"]
     self.os = run[0]["os"]
     self.status = 0
示例#5
0
文件: vm.py 项目: NoeClariNista/imw
 def __init__(self, id):
     self.db = DB("noeclarinista", "78646393-dD", "vmweb")
     sql = f"select * from vmachine where id={id}"
     query = self.db.query(sql)
     self.id = query[0]["id"]
     self.name = query[0]["name"]
     self.ram = query[0]["ram"]
     self.cpu = query[0]["cpu"]
     self.hdd = query[0]["hdd"]
     self.os = query[0]["os"]
     self.status = 0
示例#6
0
文件: vm.py 项目: AleDP92/imw
 def __init__(self, id):
     self.db = DB("emmet", "78648819c", "vmweb")
     sql = f"select * from vmachine where id={1}"
     query = self.db.query(sql)
     self.id = query[0]["id"]
     self.name = query[0]["name"]
     self.ram = query[0]["ram"]
     self.cpu = query[0]["cpu"]
     self.hdd = query[0]["hdd"]
     self.os = query[0]["os"]
     self.status = query[0]["status"]
示例#7
0
 def __init__(self, id):
     self.db = DB("emmet", "brown", "vmweb")
     sql = f"select * from vmachine where id={id}"
     results = self.db.query(sql)
     self.id = results[0]["id"]
     self.name = results[0]["name"]
     self.ram = results[0]["ram"]
     self.cpu = results[0]["cpu"]
     self.hdd = results[0]["hdd"]
     self.os = results[0]["os"]
     self.status = 0
示例#8
0
 def __init__(self, id):
     self.db = DB("roberto", "78619841Ee.", "vmweb")
     sql = f"select * from vmachine where id={id}"
     print(sql)
     query = self.db.query(sql)
     self.id = query[0]["id"]
     self.name = query[0]["name"]
     self.ram = query[0]["ram"]
     self.cpu = query[0]["cpu"]
     self.hdd = query[0]["hdd"]
     self.os = query[0]["os"]
     self.status = query[0]["status"]
示例#9
0
文件: vm.py 项目: omorest/ASIR
 def __init__(self, id):
     self.db = DB("oscar", "123456", "vmweb")
     sql = f"select * from vmachine where id={id}"
     results = self.db.query(sql)
     self.id = results[0]["id"]
     self.name = results[0]["name"]
     self.ram = results[0]["ram"]
     self.cpu = results[0]["cpu"]
     self.hdd = results[0]["hdd"]
     self.os = results[0]["os"]
     self.status = results[0]["status"]
     self.proc = list()
def add_users_who_starred_repo(repo):
    db = DB()
    stargazers = repo.get_stargazers_with_dates()
    for i, s in enumerate(stargazers): 
        print "\tAdding user {0}: {1}".format(i, s.user.login)
        insert_user_repo_relationship(db, repo, s.user, s.starred_at)
        insert_user(db, s.user)
        add_users_other_stars(db, s.user)
        if i > git_details.MAX_USERS:
            print "**WARNING: More than %d users" % git_details.MAX_REPOS
            break
    print "\t\tAdded {0} starred repos".format(i)
    db.close()
示例#11
0
class User:
    def __init__(self, name, email, password):
        self.name = name
        self.email = email
        self.password = password
        self.db = DB("cineAdmin", "p@ssw0rd", "prueba")

    def add_user(self):
        sql = "insert into users (name, email, password) \
        values ('%s', '%s', '%s')" % (self.name, self.email, self.password)
        #print(sql)
        write_log(sql)
        self.db.run(sql)
示例#12
0
class Film:
    def __init__(self):
        self.db = DB("cineAdmin", "p@ssw0rd", "prueba")

    def films(self):
        sql = f"select nombre, img, autor, descripcion, clasificacion, estreno, video from peliculas;"
        peliculas = self.db.run(sql)
        return peliculas

    def search(self, search):
        sql = f"select nombre, img, autor, descripcion, clasificacion, estreno, video from peliculas where nombre like '%{search}%';"
        write_log(sql)
        return self.db.run(sql)
示例#13
0
class EditProfile:
    def __init__(self, name, email, password, session):
        self.name = name
        self.email = email
        self.password = password
        self.session = session
        self.db = DB("cineAdmin", "p@ssw0rd", "prueba")

    def edit(self):
        sql = f"update users set name = '{self.name}', email = '{self.email}', password = '******' \
        where name = '{self.session}'"

        write_log(sql)
        self.db.run(sql)
示例#14
0
def get_details_for_repos(repo_names, from_hacker_news=False):
    g = git_details.g
    db = DB()
    for r in repo_names:
        repo = g.get_repo(r)
        try: 
            name = repo.name
        except Exception as err:
            print "ERROR: ", err
        else:
            if repo.id:
                print "\tAdding details for", repo.name
                print "\t\t", repo.description
                print
                add_repo_to_db(db, repo, from_hacker_news) 
    db.close() 
def repos_to_update():
    db = DB()
    last_job_time = db.query("""
                            SELECT max(added_at) 
                            from github_user_starred_repos
                            """
                     ).fetchone()[0]  
    last_job_time = '2016-02-21'
    repos_raw = db.query("""
                            SELECT id 
                            from github_repos   
                            where added_at > '%s' 
                            """ % last_job_time 
                            ).fetchall() 
    repos = list(zip(*repos_raw)[0]) if repos_raw else []
    db.close()
    return repos
示例#16
0
def get_hn_repos():
    db = DB()
    last_job_time = db.query("""
                            SELECT max(added_at) 
                            from github_repos 
                            where from_hacker_news=1
                            """
                     ).fetchone()[0]  
    if not last_job_time:
        last_job_time = '1970-01-01' 

    hn_repos_raw = db.query("""
                            SELECT github_repo_name 
                            from hacker_news   
                            where added_at > '%s' 
                            """ % last_job_time
                            ).fetchall()   
    if hn_repos_raw:
        hn_repos = list(zip(*hn_repos_raw)[0])
    else:
        hn_repos = []
    db.close()
    return hn_repos
示例#17
0
def chaxun():
    qyxq = ''
    if request.method == 'POST':
        qymc = request.form['qymc']
        with DB(host='127.0.0.1', user='******', passwd='aisino2017',
                db='xpf') as db:
            db.execute("select * from clientinfo where qymc like '%%%s%%'" %
                       (qymc))
            #print(db)cd
            qyxq = []
            j = 0
            for i in db:
                qyxq.append(i)
                j = j + 1
                print(qyxq)
    return render_template('chaxun.html', qyxq=qyxq)
示例#18
0
class Login:
    def __init__(self, email, password):
        self.email = email
        self.password = password
        self.db = DB("cineAdmin", "p@ssw0rd", "prueba")

    def login(self):
        sql = f'select password, email, name from users where password = "******" \
        and email = "{self.email}"'

        result = self.db.run(sql)
        try:
            return result[0]["name"]
        except IndexError:
            return None
        write_log(sql)
示例#19
0
    def __init__(self, parent=None):
        super().__init__(parent)
        self.database = DB()  # DB객체 생성
        # 기본창 띄우기
        mainLayout = QHBoxLayout()  # 왼쪽과 오른쪽으로 구획을 나눔
        self.loginList = []

        #left.................................. 카테고리, 좌석배치도실시간 리스트, 고객조회, 회원정보, 로그인된 인원수
        self.left_layout = QVBoxLayout()

        # ▶실시간 현황
        self.customerBox1 = QGroupBox("▶실시간 현황")
        self.customerLayout1 = QGridLayout()
        self.totalNum = QLabel(str(len(self.loginList)) + "/71석")
        self.totalNum.setStyleSheet('font: bold 18px')
        self.customerLayout1.addWidget(self.totalNum, 0, 0)
        self.customerLayout1.addWidget(QTextEdit(), 1, 0)  # 여기에 리스트 반환
        select = '발생일시, ID,  회원명 , 카드번호, PC번호,  결제요금,  PC로그항목, 결제방식'  # DB 에서 전체말고 부분만
        select = '*'
        profile2 = self.database.bringDB('log', 'status', select, '')
        print(profile2)  # data from DB
        loglist = MyGrid(select, profile2)
        self.mychargelst = loglist.makeListOfStatus()  # Q리스트를 돌려준다
        self.customerLayout1.addWidget(self.mychargelst, 1, 0)

        self.customerBox1.setLayout(self.customerLayout1)

        # ▶회원정보
        customerBox3 = QGroupBox("▶회원정보")  # 클릭한 회원정보
        customerLayout = QGridLayout()
        self.pcNum = QLabel("       ")
        self.pcNum.setStyleSheet('font: bold 18px')
        customerLayout.addWidget(self.pcNum, 0, 0)
        self.customerprofile = QLabel("  ⚬ Name(ID):  \n\n  ⚬ 카드번호:  \n\n"
                                      "  ⚬ 시작일시:  \n\n  ⚬ 남은시간:  \n")
        customerLayout.addWidget(self.customerprofile, 1, 0)
        customerBox3.setLayout(customerLayout)

        self.left_layout.addWidget(self.customerBox1)
        self.left_layout.addWidget(customerBox3)

        # Right.................................. 카테고리(탭으로 표시하기), 좌석배치도
        rigthLayout = QVBoxLayout()

        # 1. 카테고리 QComboBox (맨상위)
        # Initialize tab screen
        self.tabs = QTabWidget()  # 모든 텝들을 커버하는 탭윈도우창
        self.tab1 = QWidget()  # 각 탭마다의 윈도우창을 설정
        self.tab2 = QWidget()
        self.tab3 = QWidget()
        self.tab4 = QWidget()
        self.tab5 = QWidget()
        self.tabs.addTab(self.tab1, "죄석배치")  # Add tabs
        self.tabs.addTab(self.tab2, "회원조회")
        self.tabs.addTab(self.tab3, "매출확인")  # Add tabs
        self.tabs.addTab(self.tab4, "매장관리")
        self.tabs.addTab(self.tab5, "취소/환불")
        self.tab1SubLayout = QGridLayout()
        self.tab2SubLayout = QGridLayout()
        self.tab3SubLayout = QGridLayout()
        self.tab4SubLayout = QVBoxLayout()
        self.tab5SubLayout = QGridLayout()
        self.tab1.setLayout(self.tab1SubLayout)
        self.tab2.setLayout(self.tab2SubLayout)
        self.tab3.setLayout(self.tab3SubLayout)
        self.tab4.setLayout(self.tab4SubLayout)
        self.tab5.setLayout(self.tab5SubLayout)

        rigthLayout.addWidget(self.tabs)

        # tab1. 좌석 배치도
        self.seatBox = QGroupBox('▶좌석배치도')
        self.seatBox.setStyleSheet('background:lightgray')
        self.seatLayout = QGridLayout()
        self.seatBox.setLayout(self.seatLayout)
        cal = 0
        row = 0
        for num in range(1, 72):
            seat_num = Button(str(num), self.showResult)
            state = QLabel()
            if num in self.loginList:  # 로그인된 자리
                state = QLabel("☜")
                seat_num.setStyleSheet('color:white; background: lightblue')
            cal += 1
            self.seatLayout.addWidget(state, row, (2 * cal) + 1)  # 비어있는지 check
            self.seatLayout.addWidget(seat_num, row, (2 * cal))  # 좌석넘버
            if cal == 9:
                cal = 0
                row += 1
        self.tab1SubLayout.addWidget(self.seatBox, 0, 0)  # tab에 Group Box배치

        # tab2. 회원조회
        self.findResult = QLabel('\n▶ \" ID를 입력한 뒤 \'조회하기\'버튼을 눌러주세요.\n')
        self.findResult.setStyleSheet('font: bold 18px')
        self.tab2SubLayout.addWidget(self.findResult, 0, 0, 1, 2)
        self.tab2SubLayout.addWidget(QLabel("아이디(ID) : "), 1, 0)  # ID로 조회
        self.insertID = QLineEdit()
        self.tab2SubLayout.addWidget(self.insertID, 1, 1)
        self.tab2SubLayout.addWidget(QLabel("이   름 : "), 2, 0)  # 이름으로 조회
        self.insertName = QLineEdit()
        self.tab2SubLayout.addWidget(self.insertName, 2, 1)
        enterBtn = Button("조회하기", self.showResult)  # 조회하기 button
        self.tab2SubLayout.addWidget(enterBtn, 3, 1, 1, 2)
        resetBtn = Button("초기화", self.showResult)  # 초기화 button
        self.tab2SubLayout.addWidget(resetBtn, 4, 1, 1, 2)
        self.tab2SubLayout.addWidget(QLabel('▼ 회원 정보 '), 5, 0)
        self.tab2SubLayout.addWidget(QTextEdit(), 6, 0, 1, 2)
        self.tab2SubLayout.addWidget(QLabel('▼ 회원 기록 '), 7, 0)
        self.tab2SubLayout.addWidget(QTextEdit(), 8, 0, 1, 2)

        # tab3. 매출확인
        self.calculate = QComboBox()

        self.calculate.addItems(['일간', '주간', '월간'])
        self.tab3SubLayout.addWidget(self.calculate, 0, 0)
        enterBtn = Button("매출조회", self.showResult)  # 조회하기 button
        self.tab3SubLayout.addWidget(enterBtn, 0, 1)
        self.tab3SubLayout.addWidget(QLabel("▶ 조회내역"), 1, 0)  # 조회 결과창
        eoeo = QTextEdit("날짜를 선택후 조회버튼을 눌러주세요.")
        eoeo.resize(eoeo.sizeHint())
        self.tab3SubLayout.addWidget(eoeo, 2, 0, 1, 2)

        # tab4. 매장관리 : 요금제변경
        chargeBox = QGroupBox("▼ 요금제 변경")
        self.chargeLayout = QGridLayout()
        self.mychargelst = QListWidget()
        self.chargeLayout.addWidget(QTextEdit("조회를 윈하시면 조회버튼을 눌러주세요."), 0, 0,
                                    3, 2)
        checkBtn = Button2("조회하기", self.revise)  # 요금제 수정 버튼
        self.chargeLayout.addWidget(checkBtn, 0, 4)
        changeBtn = Button2("변경하기", self.revise)  # 요금제 수정 버튼
        self.chargeLayout.addWidget(changeBtn, 1, 4)
        deleteBtn = Button2("삭제하기", self.revise)  # 요금제 수정 버튼
        self.chargeLayout.addWidget(deleteBtn, 2, 4)
        # 요금제 추가 &  버튼
        self.chargeLayout.addWidget(QLabel("▶\'상품명/가격/시간(분)\' 순으로 입력해주세요."), 3,
                                    0, 1, 2)
        self.addcharge = QLineEdit()
        self.chargeLayout.addWidget(self.addcharge, 4, 0)
        addBtn = Button2("추가하기", self.revise)
        self.chargeLayout.addWidget(addBtn, 3, 4)
        chargeBox.setLayout(self.chargeLayout)
        self.tab4SubLayout.addWidget(chargeBox)

        # tab4. 매장관리 : 고객 로그인/로그아웃 담당
        managerBox = QGroupBox("▼ 고객로그인/로그아웃")
        self.manageLayout = QGridLayout()
        self.mychargelst = QListWidget()
        self.loginID = QLineEdit()
        self.loginName = QLineEdit()
        self.loginPC = QLineEdit()
        self.manageLayout.addWidget(QLabel("아이디(ID) :"), 0, 0)
        self.manageLayout.addWidget(QLabel("이   름 :"), 1, 0)
        self.manageLayout.addWidget(QLabel("PC 좌석 :"), 2, 0)
        self.manageLayout.addWidget(self.loginID, 0, 1)
        self.manageLayout.addWidget(self.loginName, 1, 1)
        self.manageLayout.addWidget(self.loginPC, 2, 1)
        checkBtn = Button2("로그인하기", self.loginManager)  # 요금제 수정 버튼
        self.manageLayout.addWidget(checkBtn, 0, 4)
        changeBtn = Button2("로그아웃하기", self.loginManager)  # 요금제 수정 버튼
        self.manageLayout.addWidget(changeBtn, 1, 4)
        changeBtn = Button2("초기화", self.loginManager)  # 요금제 수정 버튼
        self.manageLayout.addWidget(changeBtn, 2, 4)
        notice = QLabel("\n※회원의 경우: 아이디, 이름, 좌석번호\n"
                        "   비회원의 경우: 카드번호, 죄석번호를 기입해주세요.※")
        notice.setStyleSheet('color:blue;')
        self.manageLayout.addWidget(notice, 4, 0)
        self.loginResult = QLabel()  # 로그인/ 로그아웃 결과창
        self.loginResult.setStyleSheet('color:red; font: bold 18px')
        self.manageLayout.addWidget(self.loginResult, 5, 0)
        managerBox.setLayout(self.manageLayout)
        self.tab4SubLayout.addWidget(managerBox)

        #tab5 취소/환불
        self.refundResult = QLabel('\n▶ \" ID를 입력한 뒤 \'조회하기\'버튼을 눌러주세요.\n')
        self.refundResult.setStyleSheet('font: bold 18px')
        self.tab5SubLayout.addWidget(self.refundResult, 0, 0, 1, 2)
        self.tab5SubLayout.addWidget(QLabel("아이디(ID) 또는 카드번호 : "), 1,
                                     0)  # ID로 조회
        self.refundID = QLineEdit()
        self.tab5SubLayout.addWidget(self.refundID, 1, 1)
        self.tab5SubLayout.addWidget(QLabel("이   름 : "), 2, 0)  # 이름
        self.refundName = QLineEdit()
        self.tab5SubLayout.addWidget(self.refundName, 2, 1)
        self.tab5SubLayout.addWidget(QLabel("남은 시간 : "), 3, 0)  # 남은시간
        self.refundTime = QLineEdit()
        self.tab5SubLayout.addWidget(self.refundTime, 3, 1)
        self.tab5SubLayout.addWidget(QLabel("환불가능금액 : "), 4, 0)  # 환불가능한 돈
        self.ableMoney = QLineEdit()
        self.tab5SubLayout.addWidget(self.ableMoney, 4, 1)
        enterBtn = Button("조회하기", self.refundManager)  # 조회하기 button
        self.tab5SubLayout.addWidget(enterBtn, 5, 1)
        resetBtn = Button("초기화", self.refundManager)  # 초기화 button
        self.tab5SubLayout.addWidget(resetBtn, 6, 1)
        self.tab5SubLayout.addWidget(QLabel('▼ 취소할 금액을 입력해주세요(천원단위) '), 5, 0,
                                     3, 1)
        self.refundMoney = QLineEdit()
        self.tab5SubLayout.addWidget(self.refundMoney, 7, 0)
        refundBtn = Button("환불하기", self.refundManager)  # 환불 button
        self.tab5SubLayout.addWidget(refundBtn, 7, 1)
        self.tab5SubLayout.addWidget(QLabel('▼ 회원 정보 '), 9, 0)
        self.tab5SubLayout.addWidget(QTextEdit(), 8, 0, 1, 2)

        self.tab5SubLayout.addWidget(QTextEdit(), 8, 0, 1, 2)

        #----------------------------- 윈도우창에 배치
        mainLayout.addLayout(self.left_layout)
        mainLayout.addLayout(rigthLayout)
        self.setLayout(mainLayout)
        self.setWindowTitle('Counter PC')
示例#20
0
import requests
import logging
from mysql import DB
from decimal import Decimal

db = DB(host="192.168.0.149",
        port=8005,
        user="******",
        password="******",
        database="coin")

url = 'http://api.f2pool.com/eth/0x7999895ddc1b69750739f61e96983c36f2e4966b'


def parse_one(data=None):
    if not data:
        return

    d = data[0][:10]
    txid = data[1]
    amount = Decimal(data[2])
    if db.select(
            r'''SELECT COUNT(-1) FROM eth_profit WHERE `date`="{}"'''.format(
                d))[0][0]:
        print(d)
        return

    return db.execute(
        r'''INSERT INTO eth_profit (`date`, txid, amount) VALUES ("{}", "{}", {})'''
        .format(d, txid, amount))
示例#21
0
class VirtualMachine:
    def __init__(self, id):
        self.db = DB("emmet", "brown", "vmweb")
        sql = "select * from vmachine where id={}".format(id)
        query = self.db.run(sql)
        self.id = id
        self.name = query[0]["name"]
        self.ram = query[0]["ram"]
        self.cpu = query[0]["cpu"]
        self.hdd = query[0]["hdd"]
        self.os = query[0]["os"]

    def stop(self):
        self.set_status(0)
        sql = "delete from process where vmachine_id={}".format(self.id)
        self.db.run(sql)

    def start(self):
        self.set_status(1)

    def suspend(self):
        self.set_status(2)

    def reboot(self):
        self.stop()
        self.start()

    def get_processes(self):
        sql = "select * from process where vmachine_id={} order by pid".\
            format(self.id)
        return self.db.run(sql)

    def run(self, pid, ram, cpu, hdd):
        sql = "insert into process (pid, ram, cpu, hdd, vmachine_id) \
            values({}, {}, {}, {}, {})".format(pid, ram, cpu, hdd, self.id)
        self.db.run(sql)

    def ram_usage(self):
        ram = 0
        for p in self.get_processes():
            ram += p["ram"]
        return ram * 100 / self.ram

    def cpu_usage(self):
        cpu = 0
        for p in self.get_processes():
            cpu += p["cpu"]
        return cpu * 100 / self.cpu

    def hdd_usage(self):
        hdd = 0
        for p in self.get_processes():
            hdd += p["hdd"]
        return hdd * 100 / self.hdd

    def set_status(self, new_status):
        sql = "update vmachine set status={} where id={}".format(
            new_status, self.id)
        self.db.run(sql)

    def get_status(self):
        sql = "select status from vmachine where id={}".format(self.id)
        r = self.db.run(sql)
        status = r[0]["status"]
        if status == 0:
            return "Stopped"
        elif status == 1:
            return "Running"
        elif status == 2:
            return "Suspended"
示例#22
0
 def __init__(self):
     self.db = DB("cineAdmin", "p@ssw0rd", "prueba")
示例#23
0
from mysql import DB

db = DB("aragorn", "arazorn")

cmd = input("Introduzca el comando: ")
desc = input("Introduzca la descripción: ")

sql = "insert into commands values ('{}', '{}')".format(cmd, desc)
db.run(sql)

sql = "select * from commands order by name"
print(db.query(sql))
示例#24
0
 def __init__(self, name, email, password, session):
     self.name = name
     self.email = email
     self.password = password
     self.session = session
     self.db = DB("cineAdmin", "p@ssw0rd", "prueba")
class VirtualMachine:
    def __init__(self, id):
        self.db = DB("abraham", "79072387cC$", "db_web")
        sql = f"select * from vmachine where id={id}"
        run = self.db.query(sql)
        self.id = run[0]["id"]
        self.name = run[0]["name"]
        self.ram = run[0]["ram"]
        self.cpu = run[0]["cpu"]
        self.hdd = run[0]["hdd"]
        self.os = run[0]["os"]
        self.status = 0
        # self.proc = list()

    def stop(self):
        sql = "update vmachine set status=0 where id=1"
        self.db.run(sql)
        sql = "delete from process where id=1"
        self.db.run(sql)
        self.status = 0
        # self.proc = list()

    def start(self):
        sql = "update vmachine set status=1 where id=1"
        self.db.run(sql)
        self.status = 1

    def suspend(self):
        sql = "update vmachine set status=2 where id=1"
        self.db.run(sql)
        self.status = 2

    def reboot(self):
        self.stop()
        self.start()

    def get_process(self):
        sql = f"select * from process where vmachine_id={self.id}"
        return self.db.query(sql)

    def run(self, pid, ram, cpu, hdd):
        sql = f"insert into process (pid, ram, cpu, hdd, vmachine_id) values ({pid}, {ram}, {cpu}, {hdd}, 1)"
        self.db.run(sql)
        # self.proc.append(
        #    {
        #        "pid": pid,
        #        "ram": ram,
        #        "cpu": cpu,
        #        "hdd": hdd
        #   }
        # )

    def ram_usage(self):
        ram = 0
        for p in self.get_process():
            ram += p["ram"]
        return ram * 100 / self.ram

    def cpu_usage(self):
        cpu = 0
        for p in self.get_process():
            cpu += p["cpu"]
        return cpu * 100 / self.cpu

    def hdd_usage(self):
        hdd = 0
        for p in self.get_process():
            hdd += p["hdd"]
        return hdd * 100 / self.hdd

    def get_status(self):
        if self.status == 0:
            return "Stopped"
        elif self.status == 1:
            return "Running"
        elif self.status == 2:
            return "Suspended"

    def __str__(self):
        return """
{} <{}> [{}]
{:.2f}% RAM used | {:.2f}% CPU used | {:.2f}% HDD used
        """.format(self.os, self.name, self.get_status(), self.ram_usage(),
                   self.cpu_usage(), self.hdd_usage())
示例#26
0
 def __init__(self, email, password):
     self.email = email
     self.password = password
     self.db = DB("cineAdmin", "p@ssw0rd", "prueba")
示例#27
0
class CounterPC(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.database = DB()  # DB객체 생성
        # 기본창 띄우기
        mainLayout = QHBoxLayout()  # 왼쪽과 오른쪽으로 구획을 나눔
        self.loginList = []

        #left.................................. 카테고리, 좌석배치도실시간 리스트, 고객조회, 회원정보, 로그인된 인원수
        self.left_layout = QVBoxLayout()

        # ▶실시간 현황
        self.customerBox1 = QGroupBox("▶실시간 현황")
        self.customerLayout1 = QGridLayout()
        self.totalNum = QLabel(str(len(self.loginList)) + "/71석")
        self.totalNum.setStyleSheet('font: bold 18px')
        self.customerLayout1.addWidget(self.totalNum, 0, 0)
        self.customerLayout1.addWidget(QTextEdit(), 1, 0)  # 여기에 리스트 반환
        select = '발생일시, ID,  회원명 , 카드번호, PC번호,  결제요금,  PC로그항목, 결제방식'  # DB 에서 전체말고 부분만
        select = '*'
        profile2 = self.database.bringDB('log', 'status', select, '')
        print(profile2)  # data from DB
        loglist = MyGrid(select, profile2)
        self.mychargelst = loglist.makeListOfStatus()  # Q리스트를 돌려준다
        self.customerLayout1.addWidget(self.mychargelst, 1, 0)

        self.customerBox1.setLayout(self.customerLayout1)

        # ▶회원정보
        customerBox3 = QGroupBox("▶회원정보")  # 클릭한 회원정보
        customerLayout = QGridLayout()
        self.pcNum = QLabel("       ")
        self.pcNum.setStyleSheet('font: bold 18px')
        customerLayout.addWidget(self.pcNum, 0, 0)
        self.customerprofile = QLabel("  ⚬ Name(ID):  \n\n  ⚬ 카드번호:  \n\n"
                                      "  ⚬ 시작일시:  \n\n  ⚬ 남은시간:  \n")
        customerLayout.addWidget(self.customerprofile, 1, 0)
        customerBox3.setLayout(customerLayout)

        self.left_layout.addWidget(self.customerBox1)
        self.left_layout.addWidget(customerBox3)

        # Right.................................. 카테고리(탭으로 표시하기), 좌석배치도
        rigthLayout = QVBoxLayout()

        # 1. 카테고리 QComboBox (맨상위)
        # Initialize tab screen
        self.tabs = QTabWidget()  # 모든 텝들을 커버하는 탭윈도우창
        self.tab1 = QWidget()  # 각 탭마다의 윈도우창을 설정
        self.tab2 = QWidget()
        self.tab3 = QWidget()
        self.tab4 = QWidget()
        self.tab5 = QWidget()
        self.tabs.addTab(self.tab1, "죄석배치")  # Add tabs
        self.tabs.addTab(self.tab2, "회원조회")
        self.tabs.addTab(self.tab3, "매출확인")  # Add tabs
        self.tabs.addTab(self.tab4, "매장관리")
        self.tabs.addTab(self.tab5, "취소/환불")
        self.tab1SubLayout = QGridLayout()
        self.tab2SubLayout = QGridLayout()
        self.tab3SubLayout = QGridLayout()
        self.tab4SubLayout = QVBoxLayout()
        self.tab5SubLayout = QGridLayout()
        self.tab1.setLayout(self.tab1SubLayout)
        self.tab2.setLayout(self.tab2SubLayout)
        self.tab3.setLayout(self.tab3SubLayout)
        self.tab4.setLayout(self.tab4SubLayout)
        self.tab5.setLayout(self.tab5SubLayout)

        rigthLayout.addWidget(self.tabs)

        # tab1. 좌석 배치도
        self.seatBox = QGroupBox('▶좌석배치도')
        self.seatBox.setStyleSheet('background:lightgray')
        self.seatLayout = QGridLayout()
        self.seatBox.setLayout(self.seatLayout)
        cal = 0
        row = 0
        for num in range(1, 72):
            seat_num = Button(str(num), self.showResult)
            state = QLabel()
            if num in self.loginList:  # 로그인된 자리
                state = QLabel("☜")
                seat_num.setStyleSheet('color:white; background: lightblue')
            cal += 1
            self.seatLayout.addWidget(state, row, (2 * cal) + 1)  # 비어있는지 check
            self.seatLayout.addWidget(seat_num, row, (2 * cal))  # 좌석넘버
            if cal == 9:
                cal = 0
                row += 1
        self.tab1SubLayout.addWidget(self.seatBox, 0, 0)  # tab에 Group Box배치

        # tab2. 회원조회
        self.findResult = QLabel('\n▶ \" ID를 입력한 뒤 \'조회하기\'버튼을 눌러주세요.\n')
        self.findResult.setStyleSheet('font: bold 18px')
        self.tab2SubLayout.addWidget(self.findResult, 0, 0, 1, 2)
        self.tab2SubLayout.addWidget(QLabel("아이디(ID) : "), 1, 0)  # ID로 조회
        self.insertID = QLineEdit()
        self.tab2SubLayout.addWidget(self.insertID, 1, 1)
        self.tab2SubLayout.addWidget(QLabel("이   름 : "), 2, 0)  # 이름으로 조회
        self.insertName = QLineEdit()
        self.tab2SubLayout.addWidget(self.insertName, 2, 1)
        enterBtn = Button("조회하기", self.showResult)  # 조회하기 button
        self.tab2SubLayout.addWidget(enterBtn, 3, 1, 1, 2)
        resetBtn = Button("초기화", self.showResult)  # 초기화 button
        self.tab2SubLayout.addWidget(resetBtn, 4, 1, 1, 2)
        self.tab2SubLayout.addWidget(QLabel('▼ 회원 정보 '), 5, 0)
        self.tab2SubLayout.addWidget(QTextEdit(), 6, 0, 1, 2)
        self.tab2SubLayout.addWidget(QLabel('▼ 회원 기록 '), 7, 0)
        self.tab2SubLayout.addWidget(QTextEdit(), 8, 0, 1, 2)

        # tab3. 매출확인
        self.calculate = QComboBox()

        self.calculate.addItems(['일간', '주간', '월간'])
        self.tab3SubLayout.addWidget(self.calculate, 0, 0)
        enterBtn = Button("매출조회", self.showResult)  # 조회하기 button
        self.tab3SubLayout.addWidget(enterBtn, 0, 1)
        self.tab3SubLayout.addWidget(QLabel("▶ 조회내역"), 1, 0)  # 조회 결과창
        eoeo = QTextEdit("날짜를 선택후 조회버튼을 눌러주세요.")
        eoeo.resize(eoeo.sizeHint())
        self.tab3SubLayout.addWidget(eoeo, 2, 0, 1, 2)

        # tab4. 매장관리 : 요금제변경
        chargeBox = QGroupBox("▼ 요금제 변경")
        self.chargeLayout = QGridLayout()
        self.mychargelst = QListWidget()
        self.chargeLayout.addWidget(QTextEdit("조회를 윈하시면 조회버튼을 눌러주세요."), 0, 0,
                                    3, 2)
        checkBtn = Button2("조회하기", self.revise)  # 요금제 수정 버튼
        self.chargeLayout.addWidget(checkBtn, 0, 4)
        changeBtn = Button2("변경하기", self.revise)  # 요금제 수정 버튼
        self.chargeLayout.addWidget(changeBtn, 1, 4)
        deleteBtn = Button2("삭제하기", self.revise)  # 요금제 수정 버튼
        self.chargeLayout.addWidget(deleteBtn, 2, 4)
        # 요금제 추가 &  버튼
        self.chargeLayout.addWidget(QLabel("▶\'상품명/가격/시간(분)\' 순으로 입력해주세요."), 3,
                                    0, 1, 2)
        self.addcharge = QLineEdit()
        self.chargeLayout.addWidget(self.addcharge, 4, 0)
        addBtn = Button2("추가하기", self.revise)
        self.chargeLayout.addWidget(addBtn, 3, 4)
        chargeBox.setLayout(self.chargeLayout)
        self.tab4SubLayout.addWidget(chargeBox)

        # tab4. 매장관리 : 고객 로그인/로그아웃 담당
        managerBox = QGroupBox("▼ 고객로그인/로그아웃")
        self.manageLayout = QGridLayout()
        self.mychargelst = QListWidget()
        self.loginID = QLineEdit()
        self.loginName = QLineEdit()
        self.loginPC = QLineEdit()
        self.manageLayout.addWidget(QLabel("아이디(ID) :"), 0, 0)
        self.manageLayout.addWidget(QLabel("이   름 :"), 1, 0)
        self.manageLayout.addWidget(QLabel("PC 좌석 :"), 2, 0)
        self.manageLayout.addWidget(self.loginID, 0, 1)
        self.manageLayout.addWidget(self.loginName, 1, 1)
        self.manageLayout.addWidget(self.loginPC, 2, 1)
        checkBtn = Button2("로그인하기", self.loginManager)  # 요금제 수정 버튼
        self.manageLayout.addWidget(checkBtn, 0, 4)
        changeBtn = Button2("로그아웃하기", self.loginManager)  # 요금제 수정 버튼
        self.manageLayout.addWidget(changeBtn, 1, 4)
        changeBtn = Button2("초기화", self.loginManager)  # 요금제 수정 버튼
        self.manageLayout.addWidget(changeBtn, 2, 4)
        notice = QLabel("\n※회원의 경우: 아이디, 이름, 좌석번호\n"
                        "   비회원의 경우: 카드번호, 죄석번호를 기입해주세요.※")
        notice.setStyleSheet('color:blue;')
        self.manageLayout.addWidget(notice, 4, 0)
        self.loginResult = QLabel()  # 로그인/ 로그아웃 결과창
        self.loginResult.setStyleSheet('color:red; font: bold 18px')
        self.manageLayout.addWidget(self.loginResult, 5, 0)
        managerBox.setLayout(self.manageLayout)
        self.tab4SubLayout.addWidget(managerBox)

        #tab5 취소/환불
        self.refundResult = QLabel('\n▶ \" ID를 입력한 뒤 \'조회하기\'버튼을 눌러주세요.\n')
        self.refundResult.setStyleSheet('font: bold 18px')
        self.tab5SubLayout.addWidget(self.refundResult, 0, 0, 1, 2)
        self.tab5SubLayout.addWidget(QLabel("아이디(ID) 또는 카드번호 : "), 1,
                                     0)  # ID로 조회
        self.refundID = QLineEdit()
        self.tab5SubLayout.addWidget(self.refundID, 1, 1)
        self.tab5SubLayout.addWidget(QLabel("이   름 : "), 2, 0)  # 이름
        self.refundName = QLineEdit()
        self.tab5SubLayout.addWidget(self.refundName, 2, 1)
        self.tab5SubLayout.addWidget(QLabel("남은 시간 : "), 3, 0)  # 남은시간
        self.refundTime = QLineEdit()
        self.tab5SubLayout.addWidget(self.refundTime, 3, 1)
        self.tab5SubLayout.addWidget(QLabel("환불가능금액 : "), 4, 0)  # 환불가능한 돈
        self.ableMoney = QLineEdit()
        self.tab5SubLayout.addWidget(self.ableMoney, 4, 1)
        enterBtn = Button("조회하기", self.refundManager)  # 조회하기 button
        self.tab5SubLayout.addWidget(enterBtn, 5, 1)
        resetBtn = Button("초기화", self.refundManager)  # 초기화 button
        self.tab5SubLayout.addWidget(resetBtn, 6, 1)
        self.tab5SubLayout.addWidget(QLabel('▼ 취소할 금액을 입력해주세요(천원단위) '), 5, 0,
                                     3, 1)
        self.refundMoney = QLineEdit()
        self.tab5SubLayout.addWidget(self.refundMoney, 7, 0)
        refundBtn = Button("환불하기", self.refundManager)  # 환불 button
        self.tab5SubLayout.addWidget(refundBtn, 7, 1)
        self.tab5SubLayout.addWidget(QLabel('▼ 회원 정보 '), 9, 0)
        self.tab5SubLayout.addWidget(QTextEdit(), 8, 0, 1, 2)

        self.tab5SubLayout.addWidget(QTextEdit(), 8, 0, 1, 2)

        #----------------------------- 윈도우창에 배치
        mainLayout.addLayout(self.left_layout)
        mainLayout.addLayout(rigthLayout)
        self.setLayout(mainLayout)
        self.setWindowTitle('Counter PC')

    # 버튼에 써있는 텍스트를 가져와서 케이스별 상황을 만든다
    # 매출조회, 회원조회,
    def showResult(self):
        sender = self.sender()
        text = sender.text()
        if text == '매출조회':  # 고객DB에 저장 및 실시간 로그DB에도 저장
            select = '발생일시, ID, 회원명, 카드번호, 결제방식,  결제요금'  # DB에서 전체말고 부분만
            if self.calculate.currentText() == '일간':
                string = ' where 결제방식 in (\'카드결제\', \'현금결제\')'
            elif self.calculate.currentText() == '주간':
                string = ''
            elif self.calculate.currentText() == '월간':
                string = ''

            profile = self.database.bringDB('log', 'status', select, string)
            print(profile)
            loglist = MyGrid(select, profile)
            mytable = loglist.makeTable()
            self.tab3SubLayout.addWidget(mytable, 2, 0, 1, 2)
        elif text == '조회하기':  # DB에서 검색한다
            try:
                select = '발생일시,ID,회원명,PC번호,PC로그항목,남은시간,총이용요금'  # DB에서 가져올 항목
                # 회원정보
                profile1 = self.database.bringDB(
                    'customer', 'member', select,
                    ' where ID = \'{}\''.format(self.insertID.text()))
                print(
                    profile1
                )  # ('0000-00-00 00:00:00', 'missenergy', '조혜영', '113ssd', 0, 0, 918, 95000, None)
                self.insertName.setText(profile1[0][2])  # 이름
                loglist = MyGrid(select, profile1)
                mytable = loglist.makeTable()  # 표를 돌려준다
                self.tab2SubLayout.addWidget(mytable, 6, 0, 1, 2)
                # 회원기록
                select = '발생일시,ID,회원명,PC번호,PC로그항목,결제요금,결제방식'  # DB에서 전체말고 부분만
                profile2 = self.database.bringDB(
                    'log', 'status', select,
                    ' where ID = \'{}\''.format(self.insertID.text()))
                print(
                    profile2
                )  # ('0000-00-00 00:00:00', 'missenergy', '조혜영', '113ssd', 0, 0, 918, 95000, None)
                loglist = MyGrid(select, profile2)
                mychargetable = loglist.makeTable()  # 표를 돌려준다
                self.tab2SubLayout.addWidget(mychargetable, 8, 0, 1, 2)

                if len(profile2) == 0:
                    print("\"일치하는 아이디가 없습니다.\"")
            except:
                self.findResult.clear()
                self.findResult.setStyleSheet('color:red; font: bold 18px')
                self.findResult.setText('\n▶ \"일치하는 아이디가 없습니다.\"\n')
        elif text == '초기화':
            self.insertID.clear()
            self.insertName.clear()
            self.findResult.clear()
            self.findResult.setStyleSheet("color:black; font:bold 18px ")
            self.findResult.setText('\n▶ \" ID를 입력한 뒤 \'조회하기\'버튼을 눌러주세요.\n')
            self.tab2SubLayout.addWidget(QTextEdit(), 6, 0, 1, 2)
            self.tab2SubLayout.addWidget(QTextEdit(), 8, 0, 1, 2)
        elif type(int(text)) == int:  # 좌석에 해당되는 번호가 들어오면 그좌석 고객정보
            try:
                self.pcNum.clear()
                self.pcNum.setStyleSheet("color:red; font:bold 18px")
                self.pcNum.setText("  ▒▒▒▒▶ {}번 PC ◀▒▒▒▒  ".format(text))
                string = ' where PC번호 = \'{}\''.format(int(text))
                select1 = '발생일시, ID, 회원명, 남은시간'
                profile1 = self.database.bringDB('customer', 'member', select1,
                                                 string)
                select2 = '발생일시, 카드번호, 남은시간'
                profile2 = self.database.bringDB('customer', 'nonmember',
                                                 select2, string)
                profile = profile1[0] if len(profile2) == 0 else profile2[0]
                print(profile)
                self.customerprofile.clear()
                self.customerprofile.setText(
                    "  ⚬ Name(ID):  {}({})\n\n  ⚬ 카드번호:  \n\n"
                    "  ⚬ 시작일시:  {}\n\n  ⚬ 남은시간:  {}분\n".format(
                        profile[2], profile[1], str(profile[0]), profile[3]))
            except:
                self.pcNum.setStyleSheet("color:black; font:bold 18px")
                self.pcNum.setText("  ▒▒▒▒▶ {}번 PC ◀▒▒▒▒  ".format(text))
                self.customerprofile.clear()
                self.customerprofile.setText(
                    "  ⚬ Name(ID):  \n\n  ⚬ 카드번호:  \n\n"
                    "  ⚬ 시작일시:  \n\n  ⚬ 남은시간:  \n")
        else:
            word = text.split("\n")
            self.choosePrice = word[1][:-1]
            self.result.clear()
            self.result.setText("선불요금 " + word[1] +
                                "이 선택되었습니다.\n 아이디를 입력해 주세요")

    # 요금제 변경 함수
    def revise(self):
        sender = self.sender()
        text = sender.text()
        if text == '조회하기':
            select = '상품명, 가격, 시간'  # DB 에서 전체말고 부분만
            profile2 = self.database.bringDB('charge', 'charge', select, '')
            print(profile2)  # data from DB
            loglist = MyGrid(select, profile2)
            self.mychargelst = loglist.makeListOfCharge()  # 표를 돌려준다
            self.chargeLayout.addWidget(self.mychargelst, 0, 0, 3, 2)
        elif text == '삭제하기':  # lineEdit과 DB모두 저장
            try:
                edit = self.mychargelst.currentItem().text().split(
                    ' ')  # 선택된거 text가져와 ' '기준으로 나눔
                print(edit[1])
                self.mychargelst.takeItem(self.mychargelst.currentRow())
                self.database.deleteDB('charge', 'charge',
                                       ' where 상품명 = \'{}\''.format(edit[1]))
            except:
                pass
        elif text == '추가하기':
            try:
                edit = self.addcharge.text().split('/')
                self.mychargelst.addItem(
                    "▶상품명: {}     가격: {}원    시간: {}분".format(
                        edit[0], edit[1], edit[2]))
                dic = {'상품명': edit[0], '가격': edit[1], '시간': edit[2]}
                self.database.storeDB('charge', 'charge', dic)
            except:

                print("다시입력!")

    # 취소/환불 함수
    def refundManager(self):
        sender = self.sender()
        text = sender.text()
        if text == '조회하기':
            try:
                select = '발생일시,ID,회원명,결제요금,결제방식,카드번호,PC로그항목'  # DB에서 가져올 항목
                # 회원정보
                id = '카드번호' if len(self.refundID.text()) == 4 else 'ID'
                profile1 = self.database.bringDB(
                    'log', 'status', select,
                    ' where {} = \'{}\' and 결제방식 in (\'현금결제\', \'카드결제\')'.
                    format(id, self.refundID.text()))
                profile2 = self.database.bringDB(
                    'customer', 'member', '남은시간',
                    ' where ID = \'{}\''.format(self.refundID.text()))
                print(profile2[0][0])
                self.refundName.setText(profile1[0][2])  # 이름
                self.refundTime.setText(str(profile2[0][0]))  # 남은시간
                self.ableMoney.setText(str(profile2[0][0] // 50 *
                                           1000))  # 환불가능 돈
                loglist = MyGrid(select, profile1)
                mychargetable = loglist.makeTable()  # 표를 돌려준다
                self.tab5SubLayout.addWidget(mychargetable, 8, 0, 1, 2)

            except:
                self.refundResult.clear()
                self.refundResult.setStyleSheet('color:red; font: bold 18px')
                self.refundResult.setText('\n▶ \"일치하는 아이디가 없습니다.\"\n')
        elif text == '환불하기':
            # 회원기록
            dic = {
                '총이용요금': -(int(self.refundMoney.text())),
                '남은시간': -(int(self.refundMoney.text()[:-3]) * 50)
            }
            print(dic)
            self.database.updateDB(
                'customer', 'member', dic,
                ' where ID = \'{}\''.format(self.refundID.text()))
            self.refundResult.clear()
            self.refundResult.setStyleSheet("color:red; font:20px")
            self.refundResult.setText("환불이 완료되었습니다.")

    # 매장관리 탭에서 고객의 정보를 이용하여 로그인/로그아웃 담당
    # + 좌석배치 탭의 정보를 바꾸는 역할
    def loginManager(self):
        sender = self.sender()
        text = sender.text()
        if text == '로그인하기':
            try:
                self.manager = PClog(self.loginPC.text(), self.loginID.text(),
                                     self.loginName.text())  # 로그인담당 매니저 생성
                self.manager.login()
                self.loginResult.setText("로그인 성공")
                # 로그인좌석 배열에 좌석추가
                self.loginList.append(int(self.loginPC.text()))
                # 전체 인원수 update
                self.totalNum.clear()
                self.totalNum.setText(str(len(self.loginList)) + "/71석")
                # 좌석 배열 새로 만들기
                self.seatBox = QGroupBox('▶좌석배치도')
                self.seatBox.setStyleSheet('background:lightgray')
                self.seatLayout = QGridLayout()
                self.seatBox.setLayout(self.seatLayout)
                cal = 0
                row = 0
                for num in range(1, 72):
                    seat_num = Button(str(num), self.showResult)
                    state = QLabel()
                    if num in self.loginList:  # 로그인된 자리
                        state = QLabel("☜")
                        seat_num.setStyleSheet(
                            'color:white; background: lightblue')
                    cal += 1
                    self.seatLayout.addWidget(state, row,
                                              (2 * cal) + 1)  # 비어있는지 check
                    self.seatLayout.addWidget(seat_num, row, (2 * cal))  # 좌석넘버

                    if cal == 9:
                        cal = 0
                        row += 1
                self.tab1SubLayout.addWidget(self.seatBox, 0,
                                             0)  # tab에 Group Box배치
            except:
                self.loginResult.setText("로그인 실패")
        elif text == '로그아웃하기':
            try:

                self.manager = PClog(self.loginPC.text(), self.loginID.text(),
                                     self.loginName.text())  # 로그인담당 매니저 생성
                self.manager.logout()
                self.loginResult.setText("로그아웃 성공")

                # 로그인좌석 배열에 좌석 제거
                self.loginList.remove(int(self.loginPC.text()))
                # 전체 인원수 update
                self.totalNum.clear()
                self.totalNum.setText(str(len(self.loginList)) + "/71석")
                # 좌석 배열 새로 만들기
                self.seatBox = QGroupBox('▶좌석배치도')
                self.seatBox.setStyleSheet('background:lightgray')
                self.seatLayout = QGridLayout()
                self.seatBox.setLayout(self.seatLayout)
                cal = 0
                row = 0
                for num in range(1, 72):
                    seat_num = Button(str(num), self.showResult)
                    state = QLabel()
                    if num in self.loginList:  # 로그인된 자리
                        state = QLabel("☜")
                        seat_num.setStyleSheet(
                            'color:white; background: lightblue')
                    print(self.loginList)

                    cal += 1
                    self.seatLayout.addWidget(state, row,
                                              (2 * cal) + 1)  # 비어있는지 check
                    self.seatLayout.addWidget(seat_num, row, (2 * cal))  # 좌석넘버

                    if cal == 9:
                        cal = 0
                        row += 1
                self.tab1SubLayout.addWidget(self.seatBox, 0,
                                             0)  # tab에 Group Box배치

            except:
                self.loginResult.setText("로그아웃 실패")
        elif text == '초기화':
            self.loginID.setText('')
            self.loginName.setText('')
            self.loginPC.setText('')
示例#28
0
文件: vm.py 项目: omaherpad/imw
class VirtualMachine:
    def __init__(self, id):
        self.db = DB("emmet", "78636756dD.", "vmweb")
        sql = f"select * from vmachine where id={id}"
        query = self.db.query(sql)

        self.name = query[0]["name"]
        self.ram = query[0]["ram"]
        self.cpu = query[0]["cpu"]
        self.hdd = query[0]["hdd"]
        self.os = query[0]["os"]
        self.id = id

    def stop(self):
        sql = f"delete from process where vmachine_id={self.id}"
        self.db.run(sql)
        sql = f"update vmachine set status=0 where id={self.id}"
        self.db.run(sql)

    def start(self):
        sql = f"update vmachine set status=1 where id={self.id}"
        self.db.run(sql)

    def suspend(self):
        sql = f"update vmachine set status=2 where id={self.id}"
        self.db.run(sql)
        self.status = 2

    def reboot(self):
        self.stop()
        self.start()

    def get_processes(self):
        sql = "select * from process where vmachine_id=1"
        return self.db.query(sql)

    def run(self, pid, ram, cpu, hdd):
        sql = f"insert into process (pid, ram, cpu, hdd, vmachine_id) values ({pid}, {ram}, {cpu}, {hdd}, {self.id})"
        self.db.run(sql)

    def ram_usage(self):
        ram = 0
        for p in self.get_processes():
            ram += p["ram"]
        return ram * 100 / self.ram

    def cpu_usage(self):
        cpu = 0
        for p in self.get_processes():
            cpu += p["cpu"]
        return cpu * 100 / self.cpu

    def hdd_usage(self):
        hdd = 0
        for p in self.get_processes():
            hdd += p["hdd"]
        return hdd * 100 / self.hdd

    def get_status(self):
        sql = "select status from vmachine where id=1"
        query = self.db.query(sql)
        status = query[0]["status"]
        if status == 0:
            return "Stopped"
        elif status == 1:
            return "Running"
        elif status == 2:
            return "Suspended"

    def __str__(self):
        return """
{} <{}> [{}]
{:.2f}% RAM used | {:.2f}% CPU used | {:.2f}% HDD used
        """.format(self.os, self.name, self.get_status(), self.ram_usage(),
                   self.cpu_usage(), self.hdd_usage())
示例#29
0
文件: main.py 项目: Kratossore069/imw
from mysql import DB

db = DB("gandalf", "Aragorn_3", "commands")

cmd = input("Introduzca el comando: ")
desc = input("Introduzca la descripción: ")

sql = "insert into commands values ('{}', '{}')".format(cmd, desc)
db.run(sql)

sql = "select * from commands order by name"
print(db.query(sql))
示例#30
0
文件: commands.py 项目: MeloGD/ASIR
from mysql import DB

db = DB("aragorn", "arazorn", "commands")

cmd = input("Introduzca el comando: ")
desc = input("Introduzca la descripción: ")

sql = "insert into commands values ('{}', '{}')".format(cmd, desc)
db.run(sql)

sql = "select * from commands order by name"
print(db.run(sql))
示例#31
0
from mysql import DB

db = DB('aragorn', 'arazorn', 'commands')

cmd = input('Introduzca el comando: ')
desc = input('Introduzca la descripción: ')

sql = f"insert into commands values ('{cmd}', '{desc}')"
db.run(sql)

sql = 'select * from commands order by name'
print(db.run(sql))