Example #1
0
def test_import_contributions_changes(db, dummy_event, dummy_user):
    original_start_dt = as_utc(datetime(2017, 11, 27, 8, 0, 0))
    original_end_dt = as_utc(datetime(2017, 11, 27, 12, 0, 0))
    dummy_event.start_dt = original_start_dt
    dummy_event.end_dt = original_end_dt

    # Change of end time
    csv = b'\n'.join([b'2017-11-27T08:00,10,First contribution,,,,',
                      b'2017-11-27T08:10:00,10,Second contribution,John,Doe,ACME Inc.,[email protected]',
                      b'2017-11-27T11:30,60,Third contribution,Guinea Albert,Pig,,[email protected]'])

    contributions, changes = import_contributions_from_csv(dummy_event, BytesIO(csv))
    new_end_dt = as_utc(datetime(2017, 11, 27, 12, 30, 0))
    assert dummy_event.end_dt == new_end_dt
    assert changes == {
        'duration': [(timedelta(hours=4), timedelta(hours=4, minutes=30))],
        'end_dt': [(original_end_dt, new_end_dt)]
    }

    # reset date/time
    dummy_event.start_dt = original_start_dt
    dummy_event.end_dt = original_end_dt

    # Change of start/end date
    csv = b'\n'.join([b'2017-11-26T08:00,10,First contribution,,,,',
                      b'2017-11-27T08:10:00,10,Second contribution,John,Doe,ACME Inc.,[email protected]',
                      b'2017-11-28T11:30,60,Third contribution,Guinea Albert,Pig,,[email protected]'])

    contributions, changes = import_contributions_from_csv(dummy_event, BytesIO(csv))
    new_start_dt = as_utc(datetime(2017, 11, 26, 8, 0, 0))
    new_end_dt = as_utc(datetime(2017, 11, 28, 12, 30, 0))
    assert dummy_event.start_dt == new_start_dt
    assert dummy_event.end_dt == new_end_dt
    assert len(changes) == 3
Example #2
0
def test_import_contributions_changes(db, dummy_event, dummy_user):
    original_start_dt = as_utc(datetime(2017, 11, 27, 8, 0, 0))
    original_end_dt = as_utc(datetime(2017, 11, 27, 12, 0, 0))
    dummy_event.start_dt = original_start_dt
    dummy_event.end_dt = original_end_dt

    # Change of end time
    csv = b'\n'.join([b'2017-11-27T08:00,10,First contribution,,,,',
                      b'2017-11-27T08:10:00,10,Second contribution,John,Doe,ACME Inc.,[email protected]',
                      b'2017-11-27T11:30,60,Third contribution,Guinea Albert,Pig,,[email protected]'])

    contributions, changes = import_contributions_from_csv(dummy_event, BytesIO(csv))
    new_end_dt = as_utc(datetime(2017, 11, 27, 12, 30, 0))
    assert dummy_event.end_dt == new_end_dt
    assert changes == {
        'duration': [(timedelta(hours=4), timedelta(hours=4, minutes=30))],
        'end_dt': [(original_end_dt, new_end_dt)]
    }

    # reset date/time
    dummy_event.start_dt = original_start_dt
    dummy_event.end_dt = original_end_dt

    # Change of start/end date
    csv = b'\n'.join([b'2017-11-26T08:00,10,First contribution,,,,',
                      b'2017-11-27T08:10:00,10,Second contribution,John,Doe,ACME Inc.,[email protected]',
                      b'2017-11-28T11:30,60,Third contribution,Guinea Albert,Pig,,[email protected]'])

    contributions, changes = import_contributions_from_csv(dummy_event, BytesIO(csv))
    new_start_dt = as_utc(datetime(2017, 11, 26, 8, 0, 0))
    new_end_dt = as_utc(datetime(2017, 11, 28, 12, 30, 0))
    assert dummy_event.start_dt == new_start_dt
    assert dummy_event.end_dt == new_end_dt
    assert len(changes) == 3
Example #3
0
    def _process(self):
        form = ImportContributionsForm()

        if form.validate_on_submit():
            contributions, changes = import_contributions_from_csv(self.event, form.source_file.data)
            flash(ngettext("{} contribution has been imported.",
                           "{} contributions have been imported.",
                           len(contributions)).format(len(contributions)), 'success')
            if changes:
                flash(_("Event dates/times adjusted due to imported data."), 'warning')
            return jsonify_data(flash=False, redirect=url_for('.manage_contributions', self.event))
        return jsonify_template('events/contributions/management/import_contributions.html', form=form,
                                event=self.event)
Example #4
0
def test_import_contributions(dummy_event, dummy_user):
    dummy_event.start_dt = as_utc(datetime(2017, 11, 27, 8, 0, 0))
    dummy_event.end_dt = as_utc(datetime(2017, 11, 27, 12, 0, 0))

    csv = b'\n'.join([
        b'2017-11-27T08:00,10,First contribution,,,,',
        b',,Second contribution,John,Doe,ACME Inc.,[email protected]',
        b'2017-11-27T08:30,15,Third contribution,Guinea Albert,Pig,,[email protected]'
    ])

    contributions, changes = import_contributions_from_csv(
        dummy_event, BytesIO(csv))
    assert len(contributions) == 3

    assert contributions[0].start_dt == dummy_event.start_dt
    assert contributions[0].duration == timedelta(minutes=10)
    assert contributions[0].title == 'First contribution'
    assert len(contributions[0].speakers) == 0

    assert contributions[1].start_dt is None
    assert contributions[1].duration == timedelta(minutes=20)
    assert contributions[1].title == 'Second contribution'
    speakers = contributions[1].speakers
    assert len(speakers) == 1
    assert speakers[0].full_name == 'John Doe'
    assert speakers[0].affiliation == 'ACME Inc.'
    assert speakers[0].email == '*****@*****.**'

    assert contributions[2].start_dt == as_utc(datetime(
        2017, 11, 27, 8, 30, 0))
    assert contributions[2].duration == timedelta(minutes=15)
    assert contributions[2].title == 'Third contribution'
    speakers = contributions[2].speakers
    assert len(speakers) == 1
    # name comes from PersonLink, not user
    assert speakers[0].full_name == 'Guinea Albert Pig'
    assert not speakers[0].affiliation
    assert speakers[0].email == '*****@*****.**'
    assert speakers[0].person.user == dummy_user

    assert not changes
Example #5
0
def test_import_contributions(dummy_event, dummy_user):
    dummy_event.start_dt = as_utc(datetime(2017, 11, 27, 8, 0, 0))
    dummy_event.end_dt = as_utc(datetime(2017, 11, 27, 12, 0, 0))

    csv = b'\n'.join([b'2017-11-27T08:00,10,First contribution,,,,',
                      b',,Second contribution,John,Doe,ACME Inc.,[email protected]',
                      b'2017-11-27T08:30,15,Third contribution,Guinea Albert,Pig,,[email protected]'])

    contributions, changes = import_contributions_from_csv(dummy_event, BytesIO(csv))
    assert len(contributions) == 3

    assert contributions[0].start_dt == dummy_event.start_dt
    assert contributions[0].duration == timedelta(minutes=10)
    assert contributions[0].title == 'First contribution'
    assert len(contributions[0].speakers) == 0

    assert contributions[1].start_dt is None
    assert contributions[1].duration == timedelta(minutes=20)
    assert contributions[1].title == 'Second contribution'
    speakers = contributions[1].speakers
    assert len(speakers) == 1
    assert speakers[0].full_name == 'John Doe'
    assert speakers[0].affiliation == 'ACME Inc.'
    assert speakers[0].email == '*****@*****.**'

    assert contributions[2].start_dt == as_utc(datetime(2017, 11, 27, 8, 30, 0))
    assert contributions[2].duration == timedelta(minutes=15)
    assert contributions[2].title == 'Third contribution'
    speakers = contributions[2].speakers
    assert len(speakers) == 1
    # name comes from PersonLink, not user
    assert speakers[0].full_name == 'Guinea Albert Pig'
    assert not speakers[0].affiliation
    assert speakers[0].email == '*****@*****.**'
    assert speakers[0].person.user == dummy_user

    assert not changes
Example #6
0
def _check_importer_exception(event, csv):
    with pytest.raises(UserValueError) as e:
        import_contributions_from_csv(event, BytesIO(csv))
    return e.value
Example #7
0
def _check_importer_exception(event, csv):
    with pytest.raises(UserValueError) as e:
        import_contributions_from_csv(event, BytesIO(csv))
    return e.value