def fill(kls, account): from webinars_web.webinars import models as wm now = time() events = account.webex_account.events local_events = dict((e.remote_id, e) for e in wm.Event.objects.filter(account=account, deleted_at__isnull=True) if e.remote_id) with kls.delayed as d: for event in events: raw_event = dict( account_id = account.id, title = event.title, description = event.description, _timezone = event.starts_at.tz_name, _time_starts_at = nint(ntime(event._starts_at)), _time_ends_at = nint(ntime(event._ends_at)), _time_started_at = nint(ntime(event._started_at)), _time_ended_at = nint(ntime(event._ended_at)), session_key = event.session_key ) # if customer is automatically deleting events on webex side, then we make it seem like they haven't (so we don't start pumping NULLs into ends_at and starts_at) local_event = local_events.get(event.session_key) if local_event and local_event._ends_at and now > local_event._ends_at: raw_event['_time_starts_at'] = int(local_event._time_starts_at) raw_event['_time_ends_at'] = int(local_event._time_ends_at) raw_event['_timezone'] = local_event._timezone raw_event['hashcode'] = kls.calc_hashcode(**raw_event) d.insert(raw_event) from django.db import transaction transaction.commit_unless_managed() return len(events)
def fill(kls, account): from webinars_web.webinars import models as wm unmothballed_past_events = dict((e.remote_id, e) for e in wm.Event.objects.filter(account=account, deleted_at__isnull=True, mothballed=False, remote_id__isnull=False)) sessions = [s for w in account.gtw_organizer.webinars for s in w.sessions] with kls.delayed as d: for session in sessions: raw_event = dict( account_id = account.id, subject = session.webinar.subject or '', description = session.webinar.description or '', _timezone = session.webinar.timezone, _time_starts_at = nint(session._starts_at), _time_ends_at = nint(session._ends_at), _time_started_at = nint(session._started_at), _time_ended_at = nint(session._ended_at), key = nstr(session.key), universal_key = session.universal_key ) raw_event['hashcode'] = kls.calc_hashcode(**raw_event) d.insert(raw_event) unmothballed_past_events.pop(str(session.universal_key) or None,None) # if gtw event slides out of visibility (before we can mothball it) then we make it seem like it's still there (so we don't try to delete or start pumping NULLs into ends_at and starts_at) for k,e in unmothballed_past_events.iteritems(): raw_event = dict( account_id = e.account_id, subject = e.title or '', description = e.description or '', _timezone = e._timezone, _time_starts_at = nint(e._time_starts_at), _time_ends_at = nint(e._time_ends_at), _time_started_at= nint(e._time_started_at), _time_ended_at = nint(e._time_ended_at), key = e.alt_remote_id, universal_key = e.remote_id, hashcode = e.hashcode) d.insert(raw_event) from django.db import transaction transaction.commit_unless_managed() return len(sessions) + len(unmothballed_past_events)