def update_fb_events(): url = "https://graph.facebook.com/v2.3/" payload = {"access_token": FACEBOOK_ACCESS_TOKEN} for user_id, events in get_users().items(): user = User.query.filter(User.fb_id == user_id).first() for chunk in utils.grouper(events): ids = ",".join(event_data["id"] for event_data in chunk) payload["ids"] = ids # new request to get complete information r = requests.get(url, params=payload) data = json.loads(r.text) for event_id, event_data in data.items(): event = Event.query.filter(Event.fb_id == event_id).first() if event is None: event = Event(fb_id=event_id) start = iso8601.parse_date(event_data["start_time"]) event.start = start.replace(tzinfo=None) if "end_time" in event_data: end = iso8601.parse_date(event_data["end_time"]) event.end = end.replace(tzinfo=None) event.user_id = user.id event.description = event_data.get("description", "") event.location = event_data.get('location', None) event.name = event_data['name'] event.url = "https://www.facebook.com/" + event_data['id'] db.session.add(event) db.session.commit()
async def get_individual_event(event, user): sundial_id = str(event['uid']) cevent = Event.query.filter(Event.sundial_id == sundial_id).first() if cevent is None: cevent = Event(sundial_id=sundial_id, user_id=user.id) cevent.name = event["summary"] cevent.description = event["description"] cevent.location = event.get('location') cevent.url = event.get("url") try: cevent.start = event["dtstart"].dt.replace(tzinfo=None) except TypeError: # dtstart is a date, not a datetime cevent.start = event["dtstart"].dt try: cevent.end = event["dtend"].dt.replace(tzinfo=None) except TypeError: # dtend is a date, not a datetime cevent.end = event["dtend"].dt except KeyError: # no dtend pass return cevent