Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.63 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. return self.__Client.getCode()
  63. def getPhoneCode(self):
  64. 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):
  136. return self.findByCode(code).getClientCode()
  137. def getPhoneCode(self,code):
  138. return self.findByCode(code).getPhoneCode()
  139.  
  140.  
  141.  
  142.  
  143. class Servicecenter(ClientListEdit,PhoneListEdit,ServiceListEdit):
  144. def __init__(self):
  145. self.__Clients=ClientListEdit()
  146. self.__Phones=PhoneListEdit()
  147. self.__Services=ServiceListEdit()
  148. def removeClient(self,code):
  149. b = True
  150. for c in self.getServiceCodes():
  151. if self.getServiceClientCode(c) == code:
  152. b = False
  153. break
  154. if b:
  155. self.__Clients.removeList(code)
  156. #for c in self.__Services.getCodes():
  157. #self.__Services.removeClient(c, code)
  158. def removePhone(self,code):
  159. d = True
  160. for c in self.getServiceCodes():
  161. if self.getServicePhoneCode(c) == code:
  162. d = False
  163. break
  164. if d:
  165. self.__Phones.removeList(code)
  166. #for c in self.__Services.getCodes():
  167. #self.__Services.setPhone(c,None)
  168. def test(self,code):
  169. return self.__Services.findByCode(code).getCode()
  170. def clear(self):
  171. self.__Services.clear()
  172. self.__Clients.clear()
  173. self.__Phones.clear()
  174. def newClient(self,code=0,surname='',name='',middlename='',passport=''):self.__Clients.newRec(code,surname,name, middlename, passport)
  175. def findClientByCode(self,code):return self.__Clients.findByCode(code)
  176. def getClientNewCode(self):return self.__Clients.getNewCode()
  177. def getClientCodes(self):return self.__Clients.getCodes()
  178. def getClientName(self,code):return self.__Clients.getName(code)
  179. def getClientSurname(self,code):return self.__Clients.getSurname(code)
  180. def getClientMiddleName(self,code):return self.__Clients.getMiddlename(code)
  181. def getClientPassport(self,code):return self.__Clients.getPassport(code)
  182. def setClientName(self,code,value):self.__Clients.setName(code,value)
  183. def setClientSurname(self,code,value):self.__Clients.setSurname(code,value)
  184. def setClientMiddlename(self,code,value):self.__Clients.setMiddlename(code,value)
  185. def setClientPassport(self,code,value):self.__Clients.setPassport(code,value)
  186.  
  187. def newPhone(self,code=0,color='',Phonetype='', Phonenumber=''):self.__Phones.newRec(code,color,Phonetype, Phonenumber)
  188. def findPhoneByCode(self,code):return self.__Phones.findByCode(code)
  189. def getPhoneNewCode(self):return self.__Phones.getNewCode()
  190. def getPhoneCodes(self):return self.__Phones.getCodes()
  191. def getPhoneColor(self,code):return self.__Phones.getColor(code)
  192. def getPhoneType(self,code):return self.__Phones.getPhoneType(code)
  193. def getPhoneNumber(self,code):return self.__Phones.getPhoneNumber(code)
  194. def getPhoneNewCode(self):return self.__Phones.getNewCode()
  195. def setPhoneColor(self,code,value):self.__Phones.setColor(code,value)
  196. def setPhoneType(self,code,value):self.__Phones.setPhoneType(code,value)
  197. def setPhoneNumber(self,code,value):self.__Phones.setPhoneNumber(code,value)
  198. def removeService(self,code):
  199. self.__Services.removeList(code)
  200.  
  201. def newService(self,code, client, phone, ServiceType='', Price=''):
  202. self.__Services.newRec(code, client, phone,ServiceType, Price)
  203. def findSericeByCode(self,code):return self.__Services.findByCode(code).getService()
  204. def setServiceServiceType(self,code,value):self.__Services.setServiceType(code,value)
  205. def setServicePrice(self,code,value):self.__Services.setPrice(code,value)
  206. def getServiceCodes(self):return self.__Services.getCodes()
  207. def getServiceNewCode(self):return self.__Services.getNewCode()
  208. def getServiceType(self,code):return self.__Services.getServiceType(code)
  209. def getServicePrice(self,code):return self.__Services.getPrice(code)
  210. def getServiceClientCode(self,code):return self.__Services.getClientCode(code)
  211. def getServicePhoneCode(self, code):return self.__Services.getPhoneCode(code)
  212. def getAll(self, code):
  213. s10="%s %s %s" % (self.__Clients.getClientList(code),self.__Phones.getPhoneList(code), self.__Services.getServiceList(code))
  214. return s10
  215.  
  216. class dataxml:
  217. def read(self, inp, cent):
  218. dom = xml.dom.minidom.parse(inp)
  219. dom.normalize()
  220. for node in dom.childNodes[0].childNodes:
  221. if (node.nodeType == node.ELEMENT_NODE) and (node.nodeName == "Client"):
  222. code, name, surname, middlename, passport = 0, "", "", "", ""
  223. for t in node.attributes.items():
  224. if t[0] == "code":
  225. code = int(t[1])
  226. if t[0] == "name":
  227. name = t[1]
  228. if t[0] == "surname":
  229. surname = t[1]
  230. if t[0] == "middlename":
  231. middlename = t[1]
  232. if t[0] == "passport":
  233. passport = t[1]
  234. cent.newClient(code, name, surname, middlename, passport)
  235. if (node.nodeType == node.ELEMENT_NODE) and (node.nodeName == "Phone"):
  236. code, color, phonetype, phonenumber = 0,"", "", ""
  237. for t in node.attributes.items():
  238. if t[0] == "code":
  239. code = int(t[1])
  240. if t[0] == "color":
  241. color = t[1]
  242. if t[0] == "phonetype":
  243. phonetype = t[1]
  244. if t[0] == "phonenumber":
  245. phonenumber = t[1]
  246. cent.newPhone(code, color, phonetype, phonenumber)
  247. if (node.nodeType == node.ELEMENT_NODE) and (node.nodeName == "Service"):
  248. code, Client, Phone, ServiceType, Price = 0, None,None, "", ""
  249. for t in node.attributes.items():
  250. if t[0] == "code":
  251. code = int(t[1])
  252. if t[0] == "servicetype":
  253. ServiceType = t[1]
  254. if t[0] == "price":
  255. Price = t[1]
  256. if t[0] == "Client":
  257. Client = cent.findClientByCode(int(t[1]))
  258. if t[0] == "Phone":
  259. Phone = cent.findPhoneByCode(int(t[1]))
  260.  
  261. for n in node.childNodes:
  262. if (n.nodeType == n.ELEMENT_NODE) and (n.nodeName == "Client"):
  263. for t in n.attributes.items():
  264. if t[0] == "code":
  265. Client = cent.findClientByCode(int(t[1]))
  266. for n in node.childNodes:
  267. if (n.nodeType == n.ELEMENT_NODE) and (n.nodeName == "Phone"):
  268. for t in n.attributes.items():
  269. if t[0] == "code":
  270. Phone = cent.findPhoneByCode(int(t[1]))
  271. print(Client)
  272. cent.newService(code, Client, Phone, ServiceType, Price)
  273. def write(self, out, cent):
  274. dom = xml.dom.minidom.Document()
  275. root = dom.createElement("Servicecenter")
  276. dom.appendChild(root)
  277. for c in cent.getClientCodes():
  278. bk = dom.createElement("Client")
  279. bk.setAttribute("code", str(c))
  280. bk.setAttribute("name", str(cent.getClientName(c)))
  281. bk.setAttribute("surname", cent.getClientSurname(c))
  282. bk.setAttribute("middlename", str(cent.getClientMiddleName(c)))
  283. bk.setAttribute("passport", str(cent.getClientPassport(c)))
  284. root.appendChild(bk)
  285. for c in cent.getPhoneCodes():
  286. rd = dom.createElement("Phone")
  287. rd.setAttribute("code", str(c))
  288. rd.setAttribute("color", cent.getPhoneColor(c))
  289. rd.setAttribute("phonetype", cent.getPhoneType(c))
  290. rd.setAttribute("phonenumber", cent.getPhoneNumber(c))
  291. root.appendChild(rd)
  292. for c in cent.getServiceCodes():
  293. vbk = dom.createElement("Service")
  294. vbk.setAttribute("code", str(c))
  295. vbk.setAttribute("servicetype", cent.getServiceType(c))
  296. vbk.setAttribute("price", cent.getServicePrice(c))
  297. #vbk.setAttribute("Client", str(cent.getClientList(c)))
  298. #for ac in cent.getClientCodes(c):
  299. bk = dom.createElement("Client")
  300. bk.setAttribute("code", str(cent.getServiceClientCode(c)))
  301. vbk.appendChild(bk)
  302. root.appendChild(vbk)
  303. #vbk.setAttribute("Phone", str(cent.getPhoneList(c)))
  304. #for ac in cent.getPhoneCodes(c):
  305. bk = dom.createElement("Phone")
  306. bk.setAttribute("code", str(cent.getServicePhoneCode(c)))
  307. vbk.appendChild(bk)
  308. root.appendChild(vbk)
  309. f = open(out, "w")
  310. f.write(dom.toprettyxml())
  311.  
  312. cent1 = Servicecenter()
  313. dat1 = dataxml()
  314. dat1.read("old.xml", cent1)
  315. cent1.newClient(4,'Имя','Фамилия','Отчество','Пасспорт')
  316. cent1.newPhone(4,'Цвет','Модель','Номер')
  317. cent1.newService(4,cent1.findClientByCode(4),cent1.findPhoneByCode(4),"Гарантийный ремонт", "3000")
  318.  
  319. cent1.removeClient(3)
  320. cent1.removePhone(3)
  321. #cent1.removeService(3)
  322. dat1.write("new.xml", cent1)
  323. for s in cent1.getServiceCodes():
  324. print(cent1.getAll(s))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement