Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
 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
             }
         )
Ejemplo n.º 3
0
    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})
Ejemplo n.º 4
0
 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