@classmethod
def update_event(cls, event, form):
    """Updates ``event``, syncing changes to Google Calendar.

        Calls either :func:`update_series`, :func:`update_single_event`, or
        :func:`update_single_event_from_series` depending on whether the
        event is recurring and whether all updates in a series should be
        updated.

        If the event is being made recurring, or a recurrence is being removed,
        :func:`convert_to_series` or :func:`convert_to_single_event` will
        be called instead.

        :param event: The event to update.
        :type event: :class:`Event`
        :param form: The WTForms form from which the updates come.
        :type form: :class:`CreateEventForm` or a subclass.

        :raises: :class:`GoogleCalendarAPIError` and it's subclasses

        :returns: Response from the Google Calendar API.
        :rtype: dict
        """
    move_to = None
    if event.published != form.published.data:
        move_to = cls.PUBLIC if form.published.data else cls.PRIVATE
    if event.is_recurring != form.is_recurring.data:
        if event.is_recurring:
            return cls.convert_to_single_event(event, form, move_to=move_to)
        return cls.convert_to_series(event, form, move_to=move_to)
    elif event.is_recurring:
        if form.update_all.data:
            return cls.update_series(event, form, move_to=move_to)
        return cls.update_single_event_from_series(event, form)
    return cls.update_single_event(event, form, move_to=move_to)
