SHARE
TWEET

createoop2

a guest Dec 8th, 2019 66 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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 generallist :
  9.     def __init__(self):self.__list = []
  10.     def clear(self): self.__list = []
  11.     def findByCode(self,code):
  12.         for l in self.__list:
  13.             return l
  14.             break
  15.     def getCodes(self) : return [s.getCode() for s in self.__list]
  16.     def appendList (self,value):self.__list.append(value)
  17.     def removeList(self,code):
  18.         for s in self.__list:
  19.             if s.getCode()==code:self.__list.remove(s)
  20.            
  21. class generallistEdit(generallist):
  22.     def getNewCode(self):
  23.         m=0
  24.         for c in self.getCodes():
  25.             if c>m:m=c
  26.             return m+1
  27.     def setName(self,code,value):return self.findByCode(code).setName(value)
  28.  
  29. class Vidstanka(general):
  30.     def __init__(self,country='',year=0,mark='',code=0):
  31.         self.setCountry(country)
  32.         self.setYear(year)
  33.         self.setMark(mark)
  34.         self.setCode(code)
  35.     def setCountry(self,value):self.__country=value
  36.     def setYear(self,value):self.__year=value
  37.     def setMark(self,value):self.__mark=value
  38.     def setCode(self,value):self.__code=value
  39.     def getCountry(self):return self.__country
  40.     def getYear(self):return self.__year
  41.     def getMark(self):return self.__mark
  42.     def getCode(self):return self.__code
  43.  
  44. class VidstankalistEdit(generallistEdit):
  45.     def newRec (self,country='',year=0,mark='',code=0):
  46.         self.appendList(Vidstanka(country,year,mark,code))
  47.     def setCountry(self,code,value):self.findByCode(code).setCountry(value)
  48.     def setYear(self,code,value):self.findByCode(code).setYear(value)
  49.     def setMark(self,code,value):self.findByCode(code).setMark(value)
  50.     def getCountry(self,code):return self.findByCode(code).getCountry()
  51.     def getYear(self,code):return self.findByCode(code).getYear()
  52.     def getMark(self,code):return self.findByCode(code).getMark()
  53.  
  54. class Vidremonta(general):
  55.     def __init__(self,name='',time=0,cost=0,special='',code=0):
  56.         self.setName(name)
  57.         self.setTime(time)
  58.         self.setCost(cost)
  59.         self.setSpecial(special)
  60.         self.setCode(code)
  61.     def setName(self,value):self.__name=value
  62.     def setTime(self,value):self.__time=value
  63.     def setCost(self,value):self.__cost=value
  64.     def setSpecial(self,value):self.__special=value
  65.     def setCode(self,value):self.__code=value
  66.     def getName(self):return self.__name
  67.     def getTime(self):return self.__time
  68.     def getCost(self):return self.__cost
  69.     def getSpecial(self):return self.__special
  70.     def getCode(self):return self.__code
  71.  
  72. class VidremontalistEdit(generallistEdit):
  73.     def newRec (self,name='',time=0,cost=0,special='',code=0):
  74.         self.appendList(Vidremonta(name,time,cost,special,code))
  75.     def setName(self,code,value):self.findByCode(code).setName(value)
  76.     def setTime(self,code,value):self.findByCode(code).setTime(value)
  77.     def setCost(self,code,value):self.findByCode(code).setCost(value)
  78.     def setSpecial(self,code,value):self.findByCode(code).setSpecial(value)
  79.     def getName(self,code):return self.findByCode(code).getName()
  80.     def getTime(self,code):return self.findByCode(code).getTime()
  81.     def getCost(self,code):return self.findByCode(code).getCost()
  82.     def getSpecial(self,code):return self.findByCode(code).getSpecial()
  83.  
  84. class Remont(general):
  85.     def __init__(self,vidstanka='',data='',vidremonta='',speciall='',code=0):  
  86.          self.setVidstanka(vidstanka)
  87.          self.setData(data)
  88.          self.setVidremonta(vidremonta)
  89.          self.setSpeciall(speciall)
  90.          self.setCode(code)
  91.     def setVidstanka(self,value):self.__vidstanka=value
  92.     def setData(self,value):self.__data=value
  93.     def setVidremonta(self,value):self.__vidremonta=value
  94.     def setSpeciall(self,value):self.__speciall=value
  95.     def setCode(self,value):self.__code=value
  96.     def getVidstanka(self):return self.__vidstanka
  97.     def getData(self):return self.__data
  98.     def getVidremonta(self):return self.__vidremonta
  99.     def getSpeciall(self):return self.__speciall
  100.     def getCode(self):return self.__code
  101.     def info(self):
  102.         s='%s %s %s %s %s %s %s %s %s %s %s %s'%(self.__vidstanka.getCountry(),self.__vidstanka.getYear(),self.__vidstanka.getMark(),self.__vidstanka.getCode(),self.__vidremonta.getName(),self.__vidremonta.getTime(),self.__vidremonta.getCost(),self.__vidremonta.getSpecial(),self.__vidremonta.getCode(),self.getData(),self.getSpeciall(),self.getCode())
  103.         return(s)
  104.  
  105. class RemontlistEdit(generallistEdit):
  106.     def newRec (self,vidstanka='',data='',vidremonta='',speciall='',code=0):
  107.        self.appendList(Remont(vidstanka,data,vidremonta,speciall,code))
  108.     def setVidstanka(self,code,value):self.findByCode(code).setVidstanka(value)
  109.     def setData(self,code,value):self.findByCode(code).setData(value)
  110.     def setVidremonta(self,code,value):self.findByCode(code).setVidremonta(value)
  111.     def setSpeciall(self,code,value):self.findByCode(code).setSpeciall(value)
  112.     def getVidstanka(self,code):return self.findByCode(code).getVidstanka()
  113.     def getData(self,code):return self.findByCode(code).getData()
  114.     def getVidremonta(self,code):return self.findByCode(code).getVidremonta()
  115.     def getSpeciall(self,code):return self.findByCode(code).getSpeciall()
  116.  
  117. class Remontstankov :
  118.     def __init__(self):
  119.         self.__Vidstanka=VidstankalistEdit()
  120.         self.__Vidremonta=VidremontalistEdit()
  121.         self.__Remont=RemontlistEdit()
  122.     def removeVidstanka(self,code):
  123.     b = True
  124.     for c in self.getRemontCodes():
  125.         if self.getRemontVidstankaCode(c) == code:
  126.             b = False
  127.             break
  128.     if b:
  129.         self.__Vidstanka.removeList(code)
  130.  
  131.     def removeVidremonta(self,code):
  132.     d = True
  133.     for e in self.getRemontCodes():
  134.         if self.getRemontVidremontaCode(e) == code:
  135.             d = False
  136.             break
  137.     if d:
  138.         self.__Vidremonta.removeList(code)
  139.     def clear(self):
  140.         self.__Vidstanka.clear()
  141.         self.__Vidremonta.clear()
  142.         self.__Remont.clear()
  143.  
  144.     def removeVidstanka(self,code):
  145.         self.__Vidstanka.removeList(code)
  146.         for c in self.__Remont.getCodes():
  147.             self.Remont.serVidstanka(c,None)
  148.     def newVidstanka(self,country='',year=0,mark='',code=0):
  149.         self.__Vidstanka.newRec(country,year,mark,code)
  150.     def FindVidstankaByCode(self,code):return self.__Vidstanka.findByCode(code)
  151.     def setVidstankaCountry(self,code,value): self.__Vidstanka.setCountry(code, value)
  152.     def setVidstankaYear(self,code,value): self.__Vidstanka.setYear(code, value)
  153.     def setVidstankaMark(self,code,value): self.__Vidstanka.setMark(code, value)
  154.     def getVidstankaNewCode(self): return self.__Vidstanka.getNewCode()
  155.     def getVidstankaCodes(self): return self.__Vidstanka.getCodes()
  156.     def getVidstankaCountry(self,code): return self.__Vidstanka.getCountry(code)
  157.     def getVidstankaYear(self,code): return self.__Vidstanka.getYear(code)
  158.     def getVidstankaMark(self,code): return self.__Vidstanka.getMark(code)
  159.  
  160.     def removeVidremonta(self,code):
  161.         self.__Vidremonta.removeList(code)
  162.         for c in self.__Remont.getCodes():
  163.             self.Remont.serVidremonta(c,None)
  164.     def newVidremonta(self,name='',time=0,cost=0,special='',code=0):
  165.         self.__Vidremonta.newRec(name,time,cost,special,code)
  166.     def FindVidremontaByCode(self,code):return self.__Vidremonta.findByCode(code)
  167.     def setVidremontaName(self,code,value): self.__Vidremonta.setName(code, value)
  168.     def setVidremontaTime(self,code,value): self.__Vidremonta.setTime(code, value)
  169.     def setVidremontaCost(self,code,value): self.__Vidremonta.setCost(code, value)
  170.     def setVidremontaSpecial(self,code,value): self.__Vidremonta.setSpecial(code, value)
  171.     def getVidremontaNewCode(self): return self.__Vidremonta.getNewCode()
  172.     def getVidremontaCodes(self): return self.__Vidremonta.getCodes()
  173.     def getVidremontaName(self,code): return self.__Vidremonta.getName(code)
  174.     def getVidremontaTime(self,code): return self.__Vidremonta.getTime(code)
  175.     def getVidremontaCost(self,code): return self.__Vidremonta.getCost(code)
  176.     def getVidremontaSpecial(self,code): return self.__Vidremonta.getSpecial(code)
  177.  
  178.     def removeRemont(self,code):
  179.         self.__Remont.removeList(code)
  180.     def newRemont(self,vidstanka='',data='',vidremonta='',speciall='',code=0):
  181.         self.__Remont.newRec(vidstanka,data,vidremonta,speciall,code)
  182.     def FindRemontByCode(self,code):return self.__Remont.findbycode(code)
  183.     def setRemontVidstanka(self,code,value): self.__Remont.setVidstanka(code, value)
  184.     def setRemontData(self,code,value): self.__Remont.setData(code, value)
  185.     def setRemontVidremonta(self,code,value): self.__Remont.setVidremonta(code, value)
  186.     def setRemontSpeciall(self,code,value): self.__Remont.setSpeciall(code, value)
  187.     def getRemontCodes(self): return self.__Remont.getCodes()
  188.     def getRemontNewCodes(self): return self.__Remont.getNewCodes()
  189.     def getRemontVidstanka(self,code): return self.__Remont.getVidstanka(code)
  190.     def getRemontData(self,code): return self.__Remont.getData(code)
  191.     def getRemontVidremonta(self,code): return self.__Remont.getVidremonta(code)
  192.     def getRemontSpeciall(self,code): return self.__Remont.getSpeciall(code)
  193.     #def getRemontVidstankaCode(self, code): return self.__remont.getVidstankaCode(code)
  194.     #def getRemontVidstankaCountry(self, code): return self.__remont.getVidstankaCountry(code)
  195.     #def getRemontVidstankaYear(self, code): return self.__remont.getVidstankaYear(code)
  196.     #def getRemontVidstankaMark(self, code): return self.__remont.getVidstankaMark(code)
  197.     #def getRemontVidremontaCode(self, code): return self.__remont.getVidremontaCode(code)
  198.     #def getRemontVidremontaName(self, code): return self.__remont.getVidremontaName(code)
  199.     #def getRemontVidremontaTime(self, code): return self.__remont.getVidremontaTime(code)
  200.     #def getRemontVidremontaCost(self, code): return self.__remont.getVidremontaCost(code)
  201.     #def getRemontVidremontaSpecial(self, code): return self.__remont.getVidremontaSpecial(code)
  202.     def RemontInfo(self, code): return self.__remont.info(code)
  203.  
  204.  
  205. class dataxml:
  206.  
  207.     def read(self, inp, hos):
  208.         dom = xml.dom.minidom.parse(inp)
  209.         dom.normalize()
  210.         for node in dom.childNodes[0].childNodes:
  211.             if (node.nodeType == node.ELEMENT_NODE) and (node.nodeName == 'Vidstanka'):
  212.                 country,year,mark,code ='',0,'',0
  213.                 for t in node.attributes.items():
  214.                     if t[0] == "country": country = t[1]
  215.                     if t[0] == "year": year = int(t[1])
  216.                     if t[0] == "mark": mark = t[1]
  217.                     if t[0] == "code": code = int(t[1])
  218.                 hos.newVidstanka(country,year,mark,code)
  219.             if (node.nodeType == node.ELEMENT_NODE) and (node.nodeName == 'Vidremonta'):
  220.                 name,time,cost,special,code ='',0,0,'',0
  221.                 for t in node.attributes.items():
  222.                     if t[0] == "name": name = t[1]
  223.                     if t[0] == "time": time = t[1]
  224.                     if t[0] == "cost": cost = t[1]
  225.                     if t[0] == "special": special = t[1]
  226.                     if t[0] == "code": code = int(t[1])
  227.                 hos.newVidremonta(name,time,cost,special,code)
  228.             if (node.nodeType == node.ELEMENT_NODE) and (node.nodeName == 'Remont'):
  229.                 vidstanka,data,vidremonta,speciall,code ='','','','',0
  230.                 for t in node.attributes.items():
  231.                     if t[0] == "vidstanka": vidstanka = hos.FindVidstankaByCode(int(t[1]))
  232.                     if t[0] == "data": data = t[1]
  233.                     if t[0] == "vidremonta": vidremonta = hos.FindVidremontaByCode(int(t[1]))
  234.                     if t[0] == "speciall": speciall = t[1]
  235.                     if t[0] == "code": code = int(t[1])
  236.                 hos.newRemont(vidstanka,data,vidremonta,speciall,code)
  237.                 for n in node.childNodes:
  238.                     if (n.nodeType==n.ELEMENT_NODE) and (n.nodeName=='vidstanka'):
  239.                         for t in n.attributes.items():
  240.                             if t[0]=="code":vidstanka=hos.FindVidstankaByCode(int(t[1]))
  241.                         hos.appendRemontVidstanka(code,Vidstanka)
  242.                 for n in node.childNodes:
  243.                     if (n.nodeType==n.ELEMENT_NODE) and (n.nodeName=='vidremonta'):
  244.                         for t in n.attributes.items():
  245.                             if t[0]=="code":vidremonta=hos.FindVidremontaByCode(int(t[1]))
  246.                         hos.appendRemontVidremonta(code,Vidremonta)
  247.          
  248.                
  249.     def write(self, out, hos):
  250.         dom = xml.dom.minidom.Document()
  251.         root = dom.createElement("Remontstankov")
  252.         dom.appendChild(root)
  253.         for c in hos.getVidstankaCodes():
  254.             vsk = dom.createElement("vidstanka")
  255.             vsk.setAttribute('country', hos.getVidstankaCountry(c))
  256.             vsk.setAttribute('year', str(hos.getVidstankaYear(c)))
  257.             vsk.setAttribute('mark', hos.getVidstankaMark(c))
  258.             vsk.setAttribute('code', str(c))
  259.             root.appendChild(vsk)
  260.         for c in hos.getVidremontaCodes():
  261.             vrm = dom.createElement("vid")
  262.             vrm.setAttribute('name', hos.getVidremontaName(c))
  263.             vrm.setAttribute('time', str(hos.getVidremontaTime(c)))
  264.             vrm.setAttribute('cost', str(hos.getVidremontaCost(c)))
  265.             vrm.setAttribute('special', hos.getVidremontaSpecial(c))
  266.             vrm.setAttribute('code', str(c))
  267.             root.appendChild(vrm)
  268.         for c in hos.getRemontCodes():
  269.             rem = dom.createElement("Remont")
  270.             rem.setAttribute('vidstanka', str(hos.getRemontVidstanka(c).getCode()))
  271.             rem.setAttribute('data', str(hos.getRemontData(c)))
  272.             rem.setAttribute('vidremonta', str(hos.getRemontVidremonta(c).getCode()))
  273.             rem.setAttribute('speciall', hos.getRemontSpeciall(c))
  274.             rem.setAttribute('code', str(c))
  275.             root.appendChild(rem)
  276.         f = open(out, "w")
  277.         f.write(dom.toprettyxml())
  278. vs1=Vidstanka('Russia',2000,'Bosh',0)
  279. vr1=Vidremonta('Top342',2,40,'brokenbutton',0)
  280. r1=Remont(vs1,'20072019',vr1,'brokenbutton1',0)
  281. print(r1.info())
  282. rem1 = Remontstankov()
  283. dat1 = dataxml()
  284. dat1.read('old.xml', rem1)
  285. rem1.newVidstanka('Russia',2000,'Bosh',0)
  286. rem1.newVidremonta('Top342',2,40,'brokenbutton',0)
  287. rem1.newRemont(rem1.FindVidstankaByCode(1),'20072019',rem1.FindVidremontaByCode(1),'brokenbutton1',0)
  288. rem1.removeRemont(1)
  289. rem1.removeVidstanka(1)
  290. rem1.removeVidremonta(1)
  291. dat1.write('new.xml', rem1)
  292. <Remontstankov>
  293.     <Vidstanka country = 'Russia' year= '2000' mark = 'Bosh'  code= '1' />
  294.  
  295.  
  296.     <Vidremonta  name = 'Top342' time = '2' cost = '40' special = 'brokenbutton' code= '1'/>
  297.  
  298.  
  299.     <Remont  vidstanka= '1' data = '20.07.2019' vidremonta = '1' speciall = 'brokenbutton1' code = '1'>
  300.     </Remont>
  301.  
  302.  
  303. </Remontstankov>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top