# -*- coding:GBK -*-
import string
import pymysql as pys
import pymssql as pms
import easygui as eg
import datetime
ms_server = ''
ms_user = ''
ms_pass = ''
ms_db = ''
my_server = ''
my_user = ''
my_pass = ''
my_db = ''
def convert_to_tuple(strings): # 这个函数用来把坑爹的choicebox生成的str转成tuple
strings = strings.split(" ")
s_str = []
for i in strings:
s_str.append((i.strip(string.punctuation)))
t_str = tuple(s_str)
return t_str
class MssqlClass(object):
def __init__(self, conn):
self.conn = conn
def get_user_info(self, name):
cursor = self.conn.cursor()
try:
cursor.execute('select EMAIL '
'from View_EASY_SYS_USER_HelpDesk '
'WHERE EMPLOYEE_ID=%s', name)
info = cursor.fetchone()
return info
except Exception as e:
print u'获取用户信息失败' + str(e)
finally:
cursor.close()
class MysqlClass(object):
def __init__(self, conn):
self.conn = conn
def get_stock_equip(self):
cursor = self.conn.cursor()
try:
cursor.execute('select eq_id,eq_type,eq_instance from status where status="in"')
rs = cursor.fetchall()
return rs
except Exception as e:
print u'获取在库设备列表失败' + str(e)
finally:
cursor.close()
def get_users_equip(self, name):
cursor = self.conn.cursor()
try:
cursor.execute('select eq_id,eq_type,eq_instance from status where ac_user=\'%s\' AND status=\'out\'' % name)
rs = cursor.fetchall()
if cursor.rowcount < 1:
return None
else:
return rs
except Exception as e:
print u'获取用户借用列表失败' + str(e)
finally:
cursor.close()
def insert_data(self, name, equip, status):
cursor = self.conn.cursor()
try:
cur_date = str(datetime.date.today())
other_infomation = (name, status, cur_date)
info = equip + other_infomation
info = str(info)
cursor.execute('insert into record (eq_id,eq_type,eq_instance,ac_user,status,ac_date) values ' + info)
except Exception as e:
print u'插入信息失败' + str(e)
finally:
cursor.close()
def update_data(self, name, status, eq_id):
cursor = self.conn.cursor()
try:
cur_date = datetime.date.today()
cursor.execute('update status set ac_user=\'%s\',status=\'%s\',ac_date=\'%s\' where eq_id=\'%s\'' % (name, status, cur_date, eq_id))
except Exception as e:
print u'更新信息失败' +str(e)
finally:
cursor.close()
def action():
user_name = eg.enterbox(msg=u'请输入域账户名:', title=u'请输入')
if user_name == '':
eg.msgbox(u'错误,请输入域账户名称!')
return False
elif user_name == None:
return 2
# 获取用户信息
msconn = pms.connect(ms_server, ms_user, ms_pass, ms_db)
ms = MssqlClass(msconn)
user_info = ms.get_user_info(user_name)
msconn.close()
if user_info == None:
eg.msgbox(u'域账号不正确或没有创建')
return False
# 确认用户信息
# 请用户选择操作
selection = eg.buttonbox(msg=u'请选择您的操作', title=u'请选择操作',
choices=(u'借用', u'归还'))
if selection == u'借用':
myconn = pys.connect(my_server, my_user, my_pass, my_db)
try:
my = MysqlClass(myconn)
stock_equip = my.get_stock_equip()
borrow_equip = eg.choicebox(msg=u'请选择要借用的设备', title=u'借用列表', choices=stock_equip)
if borrow_equip == None:
eg.msgbox(u'您取消了操作')
# myconn.close()
return False
else:
borrow_equip = convert_to_tuple(borrow_equip)
eq_id = borrow_equip[0]
my.insert_data(user_name, borrow_equip, status='out')
my.update_data(user_name, status='out', eq_id=eq_id)
myconn.commit()
eg.msgbox(msg=u'%s 借用 %s 设备,操作成功!' % (user_name, borrow_equip[2]))
except Exception as e:
eg.msgbox(str(e))
myconn.rollback()
finally:
myconn.close()
return True
elif selection == u'归还':
myconn = pys.connect(my_server, my_user, my_pass, my_db)
my = MysqlClass(myconn)
try:
users_equit = my.get_users_equip(user_name)
if users_equit == None:
eg.msgbox(u'您没有借用设备!')
# myconn.close()
return False
else:
giveback_equit = eg.choicebox(msg=u'请选择要归还的设备', title=u'用户借用的设备', choices=users_equit)
if giveback_equit == None:
eg.msgbox(u'用户取消')
# myconn.close()
return False
else:
giveback_equit = convert_to_tuple(giveback_equit)
eq_id = giveback_equit[0]
my.insert_data(user_name, giveback_equit, status='in')
my.update_data(user_name, status='in', eq_id=eq_id)
myconn.commit()
eg.msgbox(msg=u'%s 归还 %s 设备,操作成功!' % (user_name, giveback_equit[2]))
except Exception as e:
eg.msgbox(str(e))
myconn.rollback()
finally:
myconn.close()
return True
else:
return False
while 1:
res = action()
if res == 2:
break