def create_contribution(event, contrib_data, custom_fields_data=None, session_block=None, extend_parent=False): user = session.user if session else None start_dt = contrib_data.pop('start_dt', None) contrib = Contribution(event=event) contrib.populate_from_dict(contrib_data) if custom_fields_data: set_custom_fields(contrib, custom_fields_data) db.session.flush() if start_dt is not None: schedule_contribution(contrib, start_dt=start_dt, session_block=session_block, extend_parent=extend_parent) signals.event.contribution_created.send(contrib) logger.info('Contribution %s created by %s', contrib, user) contrib.log(EventLogRealm.management, EventLogKind.positive, 'Contributions', f'Contribution {contrib.verbose_title} has been created', user) # Note: If you ever add more stuff here that should run for any new contribution, make sure # to also add it to ContributionCloner.clone_single_contribution return contrib
def create_contribution(event, contrib_data, custom_fields_data=None, session_block=None, extend_parent=False): start_dt = contrib_data.pop('start_dt', None) contrib = Contribution(event_new=event) contrib.populate_from_dict(contrib_data) if start_dt is not None: schedule_contribution(contrib, start_dt=start_dt, session_block=session_block, extend_parent=extend_parent) if custom_fields_data: set_custom_fields(contrib, custom_fields_data) db.session.flush() signals.event.contribution_created.send(contrib) logger.info('Contribution %s created by %s', contrib, session.user) contrib.event_new.log(EventLogRealm.management, EventLogKind.positive, 'Contributions', 'Contribution "{}" has been created'.format(contrib.title), session.user) return contrib