Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.12 KB | None | 0 0
  1. import os,xml.dom.minidom
  2. class general:
  3. def __init__(self,code=0):
  4. self.setCode(code)
  5. def setCode(self,value):self.__code=value
  6. def getCode(self):return self.__code
  7.  
  8. class Client(general):
  9. def __init__ (self, code, surname, name, middlename, passport):
  10. general.__init__(self,code)
  11. self.setSurname(surname)
  12. self.setName(name)
  13. self.setMiddlename(middlename)
  14. self.setPassport(passport)
  15. def setSurname (self, value): self.__surname = value
  16. def getSurname (self): return self.__surname
  17. def setName (self, value): self.__name = value
  18. def getName (self): return self.__name
  19. def setMiddlename (self, value): self.__middlename = value
  20. def getMiddlename (self): return self.__middlename
  21. def setPassport (self, value): self.__passport = value
  22. def getPassport (self): return self.__passport
  23. def ChangeSurname (self, newSurname): self.__surname = newSurname
  24. def ChangeName (self, newName): self.__name = newName
  25. def ChangeMiddlename (self, newMiddlename): self.__midllename = newMiddlename
  26. def ChangePassport (self, newPassport): self.__passport = newPassport
  27. def getClient(self):
  28. s1 = "%s %s %s %s" % (self.getSurname(), self.getName(), self.getMiddlename(),self.getPassport())
  29. return s1
  30.  
  31. class Phone(general):
  32. def __init__ (self, code, color, phonetype, phonenumber):
  33. general.__init__(self,code)
  34. self.setColor(color)
  35. self.setPhoneType(phonetype)
  36. self.setPhoneNumber(phonenumber)
  37. def setColor(self, value): self.__color = value
  38. def getColor(self): return self.__color
  39. def setPhoneType(self, value): self.__phonetype = value
  40. def getPhoneType(self): return self.__phonetype
  41. def setPhoneNumber(self, value): self.__phonenumber = value
  42. def getPhoneNumber(self): return self.__phonenumber
  43. def ChangePhonenumber(self, newPhonenumber): self.__phonenumber = newPhonenumber
  44. def getPhone(self):
  45. s2 = "%s %s %s" % (self.getColor(), self.getPhoneType(), self.getPhoneNumber())
  46. return s2
  47.  
  48. class Service(Client, Phone, general):
  49. def __init__ (self, code, Client, Phone, ServiceType, Price):
  50. general.__init__(self,code)
  51. self.setPhone(Phone)
  52. self.setClient(Client)
  53. self.setServiceType(ServiceType)
  54. self.setPrice(Price)
  55. def setServiceType (self, value): self.__ServiceType = value
  56. def getServiceType (self): return self.__ServiceType
  57. def setPrice (self, value): self.__price = value
  58. def getPrice (self): return self.__price
  59. def setClient (self, value): self.__Client = value
  60. def setPhone (self, value): self.__Phone = value
  61. def getClientCode(self):
  62. if self.__Client:return self.__Client.getCode()
  63. def getPhoneCode(self):
  64. if self.__Phone:return self.__Phone.getCode()
  65. def getService(self):
  66. s3 = "%s %s %s %s" % (self.__Client.getClient(),self.__Phone.getPhone(), self.getServiceType(), self.getPrice())
  67. return s3
  68.  
  69. class generalList:
  70. def __init__(self):self.__list=[]
  71. def clear(self):self.__list=[]
  72. def findByCode(self,code):
  73. for l in self.__list:
  74. if l.getCode()==code:
  75. return l
  76. break
  77. def getCodes(self):return [s.getCode() for s in self.__list]
  78. def appendList(self,value):self.__list.append(value)
  79. def removeList(self,code):
  80. for s in self.__list:
  81. if s.getCode()==code:self.__list.remove(s)
  82. def getCode(self,code):return self.findByCode(code).getCode()
  83.  
  84. class ClientList(generalList):
  85. def getSurname(self,code):return self.findByCode(code).getSurname()
  86. def getName(self,code):return self.findByCode(code).getName()
  87. def getMiddlename(self,code):return self.findByCode(code).getMiddlename()
  88. def getPassport(self,code):return self.findByCode(code).getPassport()
  89. def getClientList(self, code):
  90. s4 = "%s %s %s %s" % (self.findByCode(code).getSurname(), self.findByCode(code).getName(),self.findByCode(code).getMiddlename(), self.findByCode(code).getPassport())
  91. return s4
  92.  
  93. class PhoneList(generalList):
  94. def getColor(self,code):return self.findByCode(code).getColor()
  95. def getPhoneType(self,code):return self.findByCode(code).getPhoneType()
  96. def getPhoneNumber(self,code):return self.findByCode(code).getPhoneNumber()
  97. def getPhoneList(self, code):
  98. s5 = "%s %s %s" % (self.findByCode(code).getColor(), self.findByCode(code).getPhoneType(),self.findByCode(code).getPhoneNumber())
  99. return s5
  100.  
  101. class ServiceList(generalList):
  102. def getCode(self,code):return self.findByCode(code).getCode()
  103. def getServiceType(self,code):return self.findByCode(code).getServiceType()
  104. def getPrice(self,code):return self.findByCode(code).getPrice()
  105. def getServiceList(self, code):
  106. s6 = "%s %s" % (self.findByCode(code).getServiceType(),self.findByCode(code).getPrice())
  107. return s6
  108.  
  109. class generalListEdit(generalList):
  110. def getNewCode(self):
  111. m=0
  112. for c in self.getCodes():
  113. if c>m:m=c
  114. return m+1
  115. def setName(self,code,value):return self.findByCode(code).setName(value)
  116.  
  117. class ClientListEdit(ClientList,generalListEdit):
  118. def newRec(self,code=0,surname='',name='',middlename='',passport=''):self.appendList(Client(code,surname,name,middlename,passport))
  119. def setSurname(self,code,value):self.findByCode(code).setSurname(value)
  120. def setName(self,code,value):self.findByCode(code).setName(value)
  121. def setMiddlename(self,code,value):self.findByCode(code).setMiddlename(value)
  122. def setPassport(self,code,value):self.findByCode(code).setPassport(value)
  123.  
  124. class PhoneListEdit(PhoneList,generalListEdit):
  125. def newRec(self,code=0, color='',phonetype='',phonenumber=''):self.appendList(Phone(code, color, phonetype, phonenumber))
  126. def setColor(self,code,value):self.findByCode(code).setColor(value)
  127. def setPhoneType(self,code,value):self.findByCode(code).setPhoneType(value)
  128. def setPhoneNumber(self,code,value):self.findByCode(code).setPhoneNumber(value)
  129.  
  130. class ServiceListEdit(ServiceList,generalListEdit):
  131. def newRec(self,code,Client='', Phone='', ServiceType='', Price=''):
  132. self.appendList(Service(code,Client, Phone, ServiceType, Price))
  133. def setServiceType(self,code,value):self.findByCode(code).setServiceType(value)
  134. def setPrice(self,code,value):self.findByCode(code).setPrice(value)
  135. def getClientCode(self,code):return self.findByCode(code).getClientCode()
  136. def getPhoneCode(self,code):
  137. return self.findByCode(code).getPhoneCode()
  138.  
  139.  
  140.  
  141.  
  142. class Servicecenter(ClientListEdit,PhoneListEdit,ServiceListEdit):
  143. def __init__(self):
  144. self.__Clients=ClientListEdit()
  145. self.__Phones=PhoneListEdit()
  146. self.__Services=ServiceListEdit()
  147. def removeClient(self,code):
  148. b = True
  149. for c in self.getServiceCodes():
  150. if self.getServiceClientCode(c) == code:
  151. b = False
  152. break
  153. if b:
  154. self.__Clients.removeList(code)
  155. #for c in self.__Services.getCodes():
  156. #self.__Services.removeClient(c, code)
  157. def removePhone(self,code):
  158. d = True
  159. for c in self.getServiceCodes():
  160. if self.getServicePhoneCode(c) == code:
  161. d = False
  162. break
  163. if d:
  164. self.__Phones.removeList(code)
  165. #for c in self.__Services.getCodes():
  166. #self.__Services.setPhone(c,None)
  167. def test(self,code):
  168. return self.__Services.findByCode(code).getCode()
  169. def clear(self):
  170. self.__Services.clear()
  171. self.__Clients.clear()
  172. self.__Phones.clear()
  173. def newClient(self,code=0,surname='',name='',middlename='',passport=''):self.__Clients.newRec(code,surname,name, middlename, passport)
  174. def findClientByCode(self,code):return self.__Clients.findByCode(code)
  175. def getClientNewCode(self):return self.__Clients.getNewCode()
  176. def getClientCodes(self):return self.__Clients.getCodes()
  177. def getClientName(self,code):return self.__Clients.getName(code)
  178. def getClientSurname(self,code):return self.__Clients.getSurname(code)
  179. def getClientMiddleName(self,code):return self.__Clients.getMiddlename(code)
  180. def getClientPassport(self,code):return self.__Clients.getPassport(code)
  181. def setClientName(self,code,value):self.__Clients.setName(code,value)
  182. def setClientSurname(self,code,value):self.__Clients.setSurname(code,value)
  183. def setClientMiddlename(self,code,value):self.__Clients.setMiddlename(code,value)
  184. def setClientPassport(self,code,value):self.__Clients.setPassport(code,value)
  185.  
  186. def newPhone(self,code=0,color='',Phonetype='', Phonenumber=''):self.__Phones.newRec(code,color,Phonetype, Phonenumber)
  187. def findPhoneByCode(self,code):return self.__Phones.findByCode(code)
  188. def getPhoneNewCode(self):return self.__Phones.getNewCode()
  189. def getPhoneCodes(self):return self.__Phones.getCodes()
  190. def getPhoneColor(self,code):return self.__Phones.getColor(code)
  191. def getPhoneType(self,code):return self.__Phones.getPhoneType(code)
  192. def getPhoneNumber(self,code):return self.__Phones.getPhoneNumber(code)
  193. def getPhoneNewCode(self):return self.__Phones.getNewCode()
  194. def setPhoneColor(self,code,value):self.__Phones.setColor(code,value)
  195. def setPhoneType(self,code,value):self.__Phones.setPhoneType(code,value)
  196. def setPhoneNumber(self,code,value):self.__Phones.setPhoneNumber(code,value)
  197. def removeService(self,code):
  198. self.__Services.removeList(code)
  199.  
  200. def newService(self,code, client, phone, ServiceType='', Price=''):
  201. self.__Services.newRec(code, client, phone,ServiceType, Price)
  202. def findSericeByCode(self,code):return self.__Services.findByCode(code).getService()
  203. def setServiceServiceType(self,code,value):self.__Services.setServiceType(code,value)
  204. def setServicePrice(self,code,value):self.__Services.setPrice(code,value)
  205. def getServiceCodes(self):return self.__Services.getCodes()
  206. def getServiceNewCode(self):return self.__Services.getNewCode()
  207. def getServiceType(self,code):return self.__Services.getServiceType(code)
  208. def getServicePrice(self,code):return self.__Services.getPrice(code)
  209. def getServiceClientCode(self,code):return self.__Services.getClientCode(code)
  210. def getServicePhoneCode(self, code):return self.__Services.getPhoneCode(code)
  211. def getAll(self, code):
  212. s10="%s %s %s" % (self.__Clients.getClientList(code),self.__Phones.getPhoneList(code), self.__Services.getServiceList(code))
  213. return s10
  214.  
  215. class dataxml:
  216. def read(self, inp, cent):
  217. dom = xml.dom.minidom.parse(inp)
  218. dom.normalize()
  219. for node in dom.childNodes[0].childNodes:
  220. if (node.nodeType == node.ELEMENT_NODE) and (node.nodeName == "client"):
  221. code, name, surname, middlename, passport = 0, "", "", "", ""
  222. for t in node.attributes.items():
  223. if t[0] == "code":
  224. code = int(t[1])
  225. if t[0] == "name":
  226. name = t[1]
  227. if t[0] == "surname":
  228. surname = t[1]
  229. if t[0] == "middlename":
  230. middlename = t[1]
  231. if t[0] == "passport":
  232. passport = t[1]
  233. cent.newClient(code, name, surname, middlename, passport)
  234. if (node.nodeType == node.ELEMENT_NODE) and (node.nodeName == "phone"):
  235. code, color, phonetype, phonenumber = 0,"", "", ""
  236. for t in node.attributes.items():
  237. if t[0] == "code":
  238. code = int(t[1])
  239. if t[0] == "color":
  240. color = t[1]
  241. if t[0] == "phonetype":
  242. phonetype = t[1]
  243. if t[0] == "phonenumber":
  244. phonenumber = t[1]
  245. cent.newPhone(code, color, phonetype, phonenumber)
  246. if (node.nodeType == node.ELEMENT_NODE) and (node.nodeName == "service"):
  247. code, servicetype, price, client, phone, = 0, "", "",None,None
  248. for t in node.attributes.items():
  249. if t[0] == "code":
  250. code = int(t[1])
  251. if t[0] == "servicetype":
  252. servicetype = t[1]
  253. if t[0] == "price":
  254. price = t[1]
  255. if t[0] == "Client":
  256. client = cent.findClientByCode(int(t[1]))
  257. if t[0] == "Phone":
  258. phone = cent.findPhoneByCode(int(t[1]))
  259. cent.newService(code, servicetype, price, client, phone)
  260. for n in node.childNodes:
  261. if (n.nodeType == n.ELEMENT_NODE) and (n.nodeName == "Client"):
  262. for t in n.attributes.items():
  263. if t[0] == "code":
  264. Client = cent.findClientByCode(int(t[1]))
  265. for n in node.childNodes:
  266. if (n.nodeType == n.ELEMENT_NODE) and (n.nodeName == "Phone"):
  267. for t in n.attributes.items():
  268. if t[0] == "code":
  269. Phone = cent.findPhoneByCode(int(t[1]))
  270. def write(self, out, cent):
  271. dom = xml.dom.minidom.Document()
  272. root = dom.createElement("Servicecenter")
  273. dom.appendChild(root)
  274. for c in cent.getClientCodes():
  275. bk = dom.createElement("Client")
  276. bk.setAttribute("code", str(c))
  277. bk.setAttribute("name", str(cent.getClientName(c)))
  278. bk.setAttribute("surname", cent.getClientSurname(c))
  279. bk.setAttribute("middlename", str(cent.getClientMiddleName(c)))
  280. bk.setAttribute("passport", str(cent.getClientPassport(c)))
  281. root.appendChild(bk)
  282. for c in cent.getPhoneCodes():
  283. rd = dom.createElement("Phone")
  284. rd.setAttribute("code", str(c))
  285. rd.setAttribute("color", cent.getPhoneColor(c))
  286. rd.setAttribute("phonetype", cent.getPhoneType(c))
  287. rd.setAttribute("phonenumber", cent.getPhoneNumber(c))
  288. root.appendChild(rd)
  289. for c in cent.getServiceCodes():
  290. vbk = dom.createElement("Service")
  291. vbk.setAttribute("code", str(c))
  292. vbk.setAttribute("servicetype", cent.getServiceType(c))
  293. vbk.setAttribute("price", cent.getServicePrice(c))
  294. #vbk.setAttribute("Client", str(cent.getClientList(c)))
  295. #for ac in cent.getClientCodes(c):
  296. bk = dom.createElement("Client")
  297. bk.setAttribute("code", str(cent.getServiceClientCode(c)))
  298. #vbk.setAttribute("Phone", str(cent.getPhoneList(c)))
  299. #for ac in cent.getPhoneCodes(c):
  300. rd = dom.createElement("Phone")
  301. rd.setAttribute("code", str(cent.getServicePhoneCode(c)))
  302. vbk.appendChild(bk)
  303. vbk.appendChild(rd)
  304. root.appendChild(vbk)
  305. f = open(out, "wb")
  306. f.write(dom.toprettyxml(encoding='utf-8'))
  307.  
  308. cent1 = Servicecenter()
  309. dat1 = dataxml()
  310. dat1.read("olda.xml", cent1)
  311. print (4)
  312. print(cent1.getServiceCodes())
  313. for s in cent1.getServiceCodes():
  314. print(cent1.getAll(s))
  315. print(3)
  316. dat1.write("newa.xml", cent1)
  317. for s in cent1.getServiceCodes():
  318. print(cent1.getAll(s))
  319. print(1)
  320.  
  321.  
  322.  
  323.  
  324. import os
  325. import sqlite3 as db
  326.  
  327. emptydb = """
  328. PRAGMA foreign_keys = ON;
  329.  
  330. create table client
  331. (code integer primary key,
  332. surname text,
  333. name text,
  334. middlename text,
  335. passport text);
  336.  
  337. create table phone
  338. (code integer primary key,
  339. color text,
  340. phonetype text,
  341. phonenumber text);
  342.  
  343. create table service
  344. (code integer primary key,
  345. servicetype text,
  346. price text,
  347. client integer references author(code) on update cascade on delete set null,
  348. phone integer references studio(code) on update cascade on delete set null);
  349. """
  350. class datasql:
  351. def read(self,inp,lib):
  352. conn = db.connect(inp)
  353. curs = conn.cursor()
  354.  
  355. curs.execute('select code,surname,name, middlename, passport from client')
  356. data=curs.fetchall()
  357. for r in data:lib.newClient(r[0],r[1],r[2], r[3], r[4])
  358.  
  359. curs.execute('select code, color, phonetype, phonenumber from phone')
  360. data=curs.fetchall()
  361. for r in data:lib.newPhone(r[0],r[1],r[2],r[3])
  362.  
  363. curs.execute('select code, servicetype, price, client, phone from service')
  364. data=curs.fetchall()
  365. for r in data:lib.newService(r[0],r[1],r[2],lib.findClientByCode(r[3]),lib.findPhoneByCode(r[4]))
  366. def write(self,out,lib):
  367. conn = db.connect(out)
  368. curs = conn.cursor()
  369. curs.executescript(emptydb)
  370.  
  371. for c in lib.getClientCodes():
  372. curs.execute("insert into client(code,surname,name,middlename,passport) values('%s','%s','%s', '%s', '%s')"%(
  373. str(c),
  374. lib.getClientSurname(c),
  375. lib.getClientName(c),
  376. lib.getClientMiddleName(c),
  377. str(lib.getClientPassport(c))))
  378.  
  379. for c in lib.getPhoneCodes():
  380. curs.execute("insert into phone(code,color,phonetype,phonenumber) values('%s','%s','%s','%s')"%(
  381. str(c),
  382. lib.getPhoneColor(c),
  383. lib.getPhoneType(c),
  384. str(lib.getPhoneNumber(c))))
  385. for c in lib.getServiceCodes():
  386. curs.execute("insert into service(code, servicetype, price, client, phone) values('%s','%s','%s','%s','%s')"%(
  387. str(c),
  388. lib.getServiceType(c),
  389. str(lib.getServicePrice(c)),
  390. str(lib.getServiceClientCode(c)),
  391. str(lib.getServicePhoneCode(c))))
  392. conn.commit()
  393. conn.close()
  394.  
  395.  
  396. lib2 = Servicecenter()
  397. dat1 = dataxml()
  398. dat2 = datasql()
  399. dat1.read("olda.xml", lib2)
  400. dat2.write("newa.sqlite", lib2)
  401. lib2.clear()
  402. dat2.read("newa.sqlite", lib2)
  403. dat1.write("tempa.xml", lib2)
  404. print(2)
  405. print(lib2.getServiceCodes())
  406. for s in lib2.getServiceCodes():
  407. print (lib2.getAll(s))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement