def createAttraction(self, key, attractionData): from google.appengine.api import users from django.utils import simplejson import urllib, md5 user = users.get_current_user() if type(user) == users.User: attractionData['userid'] = self.getUserId(user.email()) attractionData['username'] = user.nickname() else: attractionData['userid'] = None attractionData['username'] = self.request.remote_addr region = 'Unknown location' url = "http://maps.google.com/maps/geo?q=%.2f,%.2f&sensor=false" % ( float(attractionData['location']['lat']), float(attractionData['location']['lon'])) jsonString = urllib.urlopen(url).read() if jsonString: data = simplejson.loads(jsonString) for placemark in data['Placemark']: region = ", ".join(self.getLocationName(placemark)) if region: break if key: oldAttraction = db.get(key) attractionData['root'] = oldAttraction.root attractionData['previous'] = oldAttraction.id attractionData['free'] = oldAttraction.free attractionData['rating'] = oldAttraction.rating attractionData['free'] = oldAttraction.free else: oldAttraction = None attractionData['root'] = None attractionData['previous'] = None attractionData['free'] = True attractionData['rating'] = 0 attractionData['free'] = True if not attractionData['free']: import difflib s = difflib.SequenceMatcher(None, oldAttraction.description, attractionData['description']) if s.ratio() < 0.5: attractionData['free'] = True newAttraction = Attraction( parent=oldAttraction, root=attractionData['root'], previous=attractionData['previous'], name=attractionData['name'], region=region, description=attractionData['description'], location=db.GeoPt(lat=attractionData['location']['lat'], lon=attractionData['location']['lon']), geobox=str(round(float(attractionData['location']['lat']), 1)) + ',' + str(round(float(attractionData['location']['lon']), 1)), href=attractionData['href'], picture=attractionData['picture'], tags=attractionData['tags'], free=attractionData['free'], rating=attractionData['rating'], userid=attractionData['userid'], username=attractionData['username']) newAttraction.id = md5.new(unicode(newAttraction)).hexdigest() if not newAttraction.root: newAttraction.root = newAttraction.id newAttraction.put() if oldAttraction: oldAttraction.next = newAttraction.id oldAttraction.put() return newAttraction
def post(self): n = int(self.request.get('n')) l = 50 f = self.request.get('f') import csv csvReader = csv.reader(open('attractions' + f + '.csv')) count = 1 for row in csvReader: if count >= n and count < n + l: q = Attraction.all() q.filter("id =", row[0]) if q.count() > 1: attractions = q.fetch(100) for attraction in attractions: attraction.delete() attraction = None else: attraction = q.get() if not attraction: location = row[1].split(',') if row[7] == 'y': freeVal = True else: freeVal = False name = row[2].decode('utf-8').replace("\n", ' ') if name == '': name = 'No name' try: newAttraction = Attraction( id = row[0], root = row[0], name = name, region = row[6].decode('utf-8').replace("\n", ' '), description = row[3].decode('utf-8'), location = db.GeoPt( lat = location[0], lon = location[1] ), geobox = str(round(float(location[0]), 1)) + ',' + str(round(float(location[1]), 1)), href = row[4].decode('utf-8'), picture = row[5].decode('utf-8'), free = freeVal, datetime = datetime.datetime( year = int(row[8][0:4]), month = int(row[8][5:7]), day = int(row[8][8:10]), hour = int(row[8][11:13]), minute = int(row[8][14:16]), second = int(row[8][17:19]) ) ) newAttraction.put() except db.BadValueError: pass elif count >= n: taskqueue.add( url = '/import', params = { 'n': n + l, 'f': f } ) break count = count + 1 if f < 4: taskqueue.add( url = '/import', params = { 'n': n + l, 'f': f + 1 } )
def post(self): n = int(self.request.get('n')) l = 50 f = self.request.get('f') import csv csvReader = csv.reader(open('attractions' + f + '.csv')) count = 1 for row in csvReader: if count >= n and count < n + l: q = Attraction.all() q.filter("id =", row[0]) if q.count() > 1: attractions = q.fetch(100) for attraction in attractions: attraction.delete() attraction = None else: attraction = q.get() if not attraction: location = row[1].split(',') if row[7] == 'y': freeVal = True else: freeVal = False name = row[2].decode('utf-8').replace("\n", ' ') if name == '': name = 'No name' try: newAttraction = Attraction( id=row[0], root=row[0], name=name, region=row[6].decode('utf-8').replace("\n", ' '), description=row[3].decode('utf-8'), location=db.GeoPt(lat=location[0], lon=location[1]), geobox=str(round(float(location[0]), 1)) + ',' + str(round(float(location[1]), 1)), href=row[4].decode('utf-8'), picture=row[5].decode('utf-8'), free=freeVal, datetime=datetime.datetime( year=int(row[8][0:4]), month=int(row[8][5:7]), day=int(row[8][8:10]), hour=int(row[8][11:13]), minute=int(row[8][14:16]), second=int(row[8][17:19]))) newAttraction.put() except db.BadValueError: pass elif count >= n: taskqueue.add(url='/import', params={'n': n + l, 'f': f}) break count = count + 1 if f < 4: taskqueue.add(url='/import', params={'n': n + l, 'f': f + 1})
def createAttraction(self, key, attractionData): from google.appengine.api import users from django.utils import simplejson import urllib, md5 user = users.get_current_user() if type(user) == users.User: attractionData['userid'] = self.getUserId(user.email()) attractionData['username'] = user.nickname() else: attractionData['userid'] = None attractionData['username'] = self.request.remote_addr region = 'Unknown location' url = "http://maps.google.com/maps/geo?q=%.2f,%.2f&sensor=false" % (float(attractionData['location']['lat']), float(attractionData['location']['lon'])) jsonString = urllib.urlopen(url).read() if jsonString: data = simplejson.loads(jsonString) for placemark in data['Placemark']: region = ", ".join(self.getLocationName(placemark)) if region: break if key: oldAttraction = db.get(key) attractionData['root'] = oldAttraction.root attractionData['previous'] = oldAttraction.id attractionData['free'] = oldAttraction.free attractionData['rating'] = oldAttraction.rating attractionData['free'] = oldAttraction.free else: oldAttraction = None attractionData['root'] = None attractionData['previous'] = None attractionData['free'] = True attractionData['rating'] = 0 attractionData['free'] = True if not attractionData['free']: import difflib s = difflib.SequenceMatcher(None, oldAttraction.description, attractionData['description']) if s.ratio() < 0.5: attractionData['free'] = True newAttraction = Attraction( parent = oldAttraction, root = attractionData['root'], previous = attractionData['previous'], name = attractionData['name'], region = region, description = attractionData['description'], location = db.GeoPt( lat = attractionData['location']['lat'], lon = attractionData['location']['lon'] ), geobox = str(round(float(attractionData['location']['lat']), 1)) + ',' + str(round(float(attractionData['location']['lon']), 1)), href = attractionData['href'], picture = attractionData['picture'], tags = attractionData['tags'], free = attractionData['free'], rating = attractionData['rating'], userid = attractionData['userid'], username = attractionData['username'] ) newAttraction.id = md5.new(unicode(newAttraction)).hexdigest() if not newAttraction.root: newAttraction.root = newAttraction.id newAttraction.put() if oldAttraction: oldAttraction.next = newAttraction.id oldAttraction.put() return newAttraction