Beispiel #1
0
    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)
Beispiel #2
0
    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)