def create_single_event(cls, form, creator): """Creates a non-recurring Mongoengine and Google Calendar event from form data. :param form: The WTForms form. :type form: :class:`CreateEventForm` or a subclass. :param creator: The user that is currently logged in. :type creator: :class:`~app.models.User` :raises: :class:`GoogleCalendarAPIError` and it's subclasses :returns: Response from the Google Calendar API. :rtype: dict """ # Generate the event and date data event_and_date_data = DataBuilder.event_and_date_data_from_form( form, creator=creator) event_and_date_data = cls._remove_none_fields(event_and_date_data) event = Event(**event_and_date_data) event.save() # Return the Google Calendar response return e.gcal_client().create_event(event)
def test_human_readable_date(date, output): """Test that :func:`~app.models.Event.human_readable_date` properly formats event dates into human readable date strings. """ event = Event(start_date=date, start_time=None, end_date=date, end_time=None) assert event.human_readable_date() == output
def test_human_readable_time(start_time, end_time, output): """Test that :func:`~app.models.Event.human_readable_time` properly formats event times into human readable time strings. """ any_date = dt.date(2015, 3, 31) event = Event(start_date=any_date, start_time=start_time, end_date=any_date, end_time=end_time) assert event.human_readable_time() == output
def test_human_readable_atetime(sdate, stime, edate, etime, output): """Test that :func:`~app.models.Event.human_readable.datetime` properly formats event dates and times into human readable datetime strings. """ event = Event(start_date=sdate, start_time=stime, end_date=edate, end_time=etime) assert event.human_readable_datetime() == output
def test_event_starting_on_midnight(): """Test that events starting on midnight are properly formatted.""" event = Event(start_date=dt.date(2015, 4, 1), start_time=dt.time(0), end_date=dt.date(2015, 4, 1), end_time=dt.time(5, 30)) assert not event.is_multiday() assert event.human_readable_date() == "Wednesday, April 1" assert event.human_readable_time() == "12-5:30am"
def _make_event(cls, e_data, d_data): """Create a new :class:`Event` object and save it to Mongoengine. The event is created by unpacking non-None fields of ``e_data`` and ``d_data`` in the constructor for :class:`Event`. :param dict e_data: The event data for this event. :param dict d_data: The date data for this event. """ params = cls._remove_none_fields(dict(e_data.items() + d_data.items())) event = Event(**params) event.save() return event
def test_event_ending_on_midnight(): """Test that events ending on midnight are properly formatted.""" start_date, start_time = dt.date(2015, 3, 31), dt.time(22) end_date, end_time = dt.date(2015, 4, 1), dt.time(0) event = Event(start_date=start_date, start_time=start_time, end_date=end_date, end_time=end_time) assert not event.is_multiday() assert event.human_readable_date() == "Tuesday, March 31" assert event.human_readable_time() == "10pm-12am"