예제 #1
0
 def set_event_details(e_id, name, date, city,  add, descr, host, url, attendees, price, category, source):
     event1 = Event()
     qry = event1.check_event_exist(e_id) or event1.check_event_exist_by_name(name)
     if qry is False:
         event1.id = e_id
         event1.name = name
         event1.date = date
         event1.city = city
         event1.address = add
         event1.description = descr
         event1.host = host
         event1.event_url = url
         event1.source = source
         if (attendees != "Unknown"):
             event1.attendees = attendees
         event1.price = price
         if category is not None:
             event1.category = category
         key = event1.put()
         return key
     else:  # Update existing meetings! It could be changed or canceled!
         qry.name = name
         qry.date = date
         qry.city = city
         qry.address = add
         qry.description = descr
         qry.host = host
         qry.event_url = url
         qry.source = source
         qry.price = price
         if category is not None:
             qry.category = category
         results = Attendings.query(Attendings.event_id == qry.get_by_id(e_id))
         if results is not None:
             qry.attendees = attendees + results.count()
         else:
             qry.attendees = attendees
         qry.put()
예제 #2
0
파일: DAL.py 프로젝트: denbedilov/ATTENDER
 def set_event_details(e_id, name, date, city,  add, descr, host, url, attendees, price, category, source):
     event1 = Event()
     qry = event1.check_event_exist(e_id) or event1.check_event_exist_by_name(name)
     if qry is False:
         event1.id = e_id
         event1.name = name
         event1.date = date
         event1.city = city
         event1.address = add
         event1.description = descr
         event1.host = host
         event1.event_url = url
         event1.source = source
         if (attendees != "Unknown"):
             event1.attendees = attendees
         event1.price = price
         if category is not None:
             event1.category = category
         key = event1.put()
         return key
     else:  # Update existing meetings! It could be changed or canceled!
         qry.name = name
         qry.date = date
         qry.city = city
         qry.address = add
         qry.description = descr
         qry.host = host
         qry.event_url = url
         qry.source = source
         qry.price = price
         if category is not None:
             qry.category = category
         results = Attendings.query(Attendings.event_id == qry.get_by_id(e_id))
         if results is not None:
             qry.attendees = attendees + results.count()
         else:
             qry.attendees = attendees
         qry.put()
예제 #3
0
    def extract(self):
        connector = self.get_connector()

        i = 0
        for key, res in self.data.items():
            res_key = self.create_key(res['name'], res['city'])

            connector_res = get_from(connector.data, [res_key], {})
            res.update(connector_res)

            place_id = get_from(res, ['place_id'])
            if place_id:
                print("Found {} | {} => {}".format(i, place_id, res_key))
                if res_key not in connector.data or res != connector.data[
                        res_key]:
                    "\tUpdate"
                    connector.data[res_key] = res
                    db_session.merge(connector)
                    db_session.commit()
                pass
            else:
                place_q = ", ".join([
                    res['name'] or "",
                    get_from(res, ['address'], ""), res['city'] or ""
                ])

                print("!!!GEOCODE!!! {} | {} => {}".format(
                    i, res_key, place_q))

                try:
                    results = self.client.find_place(
                        input=place_q,
                        input_type='textquery',
                        fields=["place_id", "name", "formatted_address"])
                    res_data = get_from(results, ['candidates', 0], {})

                    res_addr = get_from(res_data, ['formatted_address'])
                    if 'formatted_address' in res_data:
                        del res_data["formatted_address"]
                    if res_addr: res_data["address"] = res_addr

                    res.update(res_data)

                    connector.data[res_key] = res
                    db_session.merge(connector)
                    db_session.commit()
                except Exception as e:
                    print("\t!!!ERROR!!! => {}".format(e))

                print("\t{}".format(res))
            i += 1

        i = 0
        for key, res in self.data.items():
            place_id = get_from(res, ['place_id'])
            if not place_id: continue

            ev = Event.query.filter(
                or_(Event.name == res['name'],
                    Event.alias == place_id)).first()

            if ev:
                print("Found Event({}) => {}".format(place_id, res['name']))
            else:
                print("Create Event({}) => {}".format(place_id, res['name']))
                print("\t{}".format(res))

                ev = Event(name=res['name'], alias=res['place_id'])

            # print(i, json.dumps(res, indent=2))
            i += 1

            ev.primary_type = Tag.FOOD_DRINK
            ev.address = get_from(res, ['address'])
            ev.city = res['city']
            ev.state = get_from(res, ['state'])
            if not ev.meta: ev.meta = {}
            ev.meta[self.TYPE] = res
            db_session.merge(ev)
            db_session.commit()