Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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"
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
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"