def add_or_update_activity(project_id, pgm_group, session_id=0, activity_id=0): """ Add activity to database or update it if it exists already. :param project_id: ID of the project Activity is associated with. :type project_id: Integer :param pgm_group: The PGM Group number. :type pgm_group: Integer :param session_id: ID of the session Activity is associated with. :type session_id: Integer :param activity_id: ID of the activity. :type activity_id: Integer :returns: Activity ID of the added activity. :rtype: Integer """ project = Project.get_by_id(project_id) session = Session.get_by_id(session_id) if session_id > 0 else None _logger().debug('ADD OR UPDATE. Session {0}: {1!r}'.\ format(session_id, session)) if activity_id > 0: try: activity = Activity.get_by_id(activity_id) activity.project_id = project_id activity.session_id = session_id except NoResultFound: activity = Activity(project, session) else: activity = Activity(project, session) activity.active = pgm_group activity.update() _logger().debug('ACTIVITY ID : {0} (session_id {1})'.\ format(activity.id, activity.session_id)) return activity.id