Advertisement
Guest User

Untitled

a guest
Apr 17th, 2014
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # -*- coding: utf-8 -*-
  2. ##----------------------------------------------------------------------
  3. ## geodecode
  4. ##----------------------------------------------------------------------
  5. ## Copyright (C) 2007-2014 The NOC Project
  6. ## See LICENSE for details
  7. ##----------------------------------------------------------------------
  8.  
  9. # Python modules
  10. import re
  11. import requests
  12. # NOC modules
  13. from noc.sa.models import *
  14. from noc.inv.models import *
  15. from noc.inv.models.object import *
  16. from noc.lib.nosql import get_db
  17.  
  18. rx_city = re.compile(
  19.         r"^(г\.|пгт\.|пос\.\.)+(?P<city>(\S+ \S+ \S+|\S+ \S+|\S+))")
  20. rx_street = re.compile(
  21.         r"^ ул\.+(?P<street>(\S+ \S+ \S+|\S+ \S+|\S+))")
  22. rx_house = re.compile(
  23.         r"^ д\.+(?P<house>(\d+\S+|\d+))")
  24.  
  25. rx_room = re.compile(
  26.         r"^ п\.+(?P<room>(\d+\S+|\d+))")
  27.  
  28. db = get_db()
  29. om = db.noc.objectmodels
  30.  
  31. K = 0
  32. k = 0
  33.  
  34. for mo in tuple(ManagedObject.objects.filter(
  35.     administrative_domain=1)):
  36.     mo_id = mo.id
  37.     name = mo.name
  38.     postaddress = mo.postaddress.encode("UTF-8")
  39. #
  40. #    print ""
  41. #    print postaddress
  42. #
  43.     postaddress = postaddress.split(',')
  44.     match = rx_city.search(postaddress[0])
  45.     if match:
  46.         city = match.group("city")
  47. #
  48. #
  49.     else:
  50.         continue
  51.     try:
  52.         match = rx_street.search(postaddress[1])
  53.     except IndexError:
  54.         continue
  55.     if match:
  56.         street = match.group("street")
  57.     else:
  58.         continue
  59.     try:
  60.         match = rx_house.search(postaddress[2])
  61.     except IndexError:
  62.         continue
  63.     if match:
  64.         house = match.group("house")
  65.     else:
  66.         continue
  67.     try:
  68.         match = rx_room.search(postaddress[3])
  69.     except IndexError:
  70.         continue
  71.     if match:
  72.         room = match.group("room")
  73.     else:
  74.         continue
  75.  
  76.     pop =  'г.'.decode('UTF-8') + (city).decode('UTF-8') + ' | ' + 'ул.'.decode('UTF-8') + (street).decode('UTF-8') + ', д.'.decode('UTF-8') + (house).decode('UTF-8')
  77.     room = pop + ' | ' + "Подъезд №".decode('UTF-8') + room
  78.     rack = room + ' | ' + "Ящик №1".decode('UTF-8')
  79.  
  80.     K += 1
  81.     if city:
  82. #
  83.  
  84. #        try:
  85.             print rack
  86.             url="http://geocode-maps.yandex.ru/1.x/?geocode=" + city + ",+" + street.replace(' ', '+') + ",+дом+" + house +"&format=json"
  87.             urlopen = requests.get(url)
  88.             obj = urlopen.json()
  89.             coord = obj["response"]["GeoObjectCollection"]["featureMember"][0]["GeoObject"]["Point"]["pos"].split(' ')
  90.             x = coord[0]
  91.             y = coord[1]
  92.             print str(y), str(x)
  93.  
  94.             if not Object.objects.filter(name = pop):
  95.                 Object(
  96.                     name = pop,
  97.                     model = om.find_one({"name": "PoP | Access"})["_id"],
  98.                     data = {"container": {"container": True},
  99.                         "geopoint": {
  100.                             "x": x,
  101.                             "y": y},
  102.                         "pop": {"level": 20}
  103.                         }
  104.                 ).save()
  105.                 print pop
  106.  
  107.             if not Object.objects.filter(name = room):
  108.                 Object(
  109.                     name = room,
  110.                     model = om.find_one({"name": "Room"})["_id"],
  111.                     data = {"container": {"container": True}}
  112.                 ).save()
  113.                 print room
  114.  
  115.             if not Object.objects.filter(name = rack):
  116.                 Object(
  117.                     name = rack,
  118.                     model = om.find_one({"name": 'NoName | Rack | 19" 42U 1000mm Shelf'})["_id"],
  119.                     data = {"container": {"container": True}}
  120.                 ).save()
  121.                 print rack
  122.  
  123.             # Уложить mo в Rack
  124.  
  125.             k += 1
  126.             print "\n\n"
  127.             break
  128. #        except:
  129. #            break
  130. #            continue
  131.  
  132. print K, k
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement