def main(): global dryrun, constants, person, ephorte_role, logger dryrun = False db = Factory.get('Database')() db.cl_init(change_program="set_eph_std") constants = Factory.get('Constants')(db) person = Factory.get('Person')(db) ephorte_role = EphorteRole(db) logger = Factory.get_logger("console") try: opts, args = getopt.getopt(sys.argv[1:], '', ['dryrun', 'set', 'remove', 'help']) except getopt.GetoptError: usage() for opt, val in opts: if opt in ('--dryrun', ): logger.info("assuming dryrun-mode") dryrun = True elif opt in ('--help', ): logger.debug("printing help text") usage() elif opt in ('--set', ): set_standard_role() elif opt in ('--remove', ): remove_double_std_roles() if dryrun: db.rollback() logger.info("DRYRUN: Roll back changes") else: db.commit() logger.info("Committing changes")
def join_ephorte_roles(old_id, new_id): # All ephorte roles belonging to old_person must be deleted. # Any roles that are manual (auto=F) should be given to new person from Cerebrum.modules.no.uio.Ephorte import EphorteRole ephorte_role = EphorteRole(db) for row in ephorte_role.list_roles(person_id=old_id): role_str = "ephorte role (%s, %s, %s, %s) from %s" % ( row['role_type'], row['adm_enhet'], row['arkivdel'], row['journalenhet'], old_id) if row['auto_role'] == 'F': # TODO: we should check if a person has a role before # adding, so that we don't need the try: ... except:... # but that is a bit swinish the way Ephorte.py is # designed at the moment and will be more dirty than this # hack. Ephorte.py will be redesigned pretty soon. try: ephorte_role.add_role(new_id, int(row['role_type']), int(row['adm_enhet']), row['arkivdel'], row['journalenhet'], auto_role='F') logger.debug("Transferring %s to %s" % (role_str, new_id)) except Exception, e: logger.warn("Couldn't transfer %s to %s\n%s" % (role_str, new_id, e)) else: logger.debug("Removing %s" % role_str) # Remove role from old_person ephorte_role.remove_role(old_id, int(row['role_type']), int(row['adm_enhet']), row['arkivdel'], row['journalenhet'])
def join_ephorte_roles(old_id, new_id, db): # All ephorte roles belonging to old_person must be deleted. # Any roles that are manual (auto=F) should be given to new person from Cerebrum.modules.no.uio.Ephorte import EphorteRole ephorte_role = EphorteRole(db) for row in ephorte_role.list_roles(person_id=old_id): role_str = "ephorte role (%s, %s, %s, %s) from %s" % ( row['role_type'], row['adm_enhet'], row['arkivdel'], row['journalenhet'], old_id) if row['auto_role'] == 'F': # TODO: we should check if a person has a role before # adding, so that we don't need the try: ... except:... # but that is a bit swinish the way Ephorte.py is # designed at the moment and will be more dirty than this # hack. Ephorte.py will be redesigned pretty soon. try: ephorte_role.add_role(new_id, int(row['role_type']), int(row['adm_enhet']), row['arkivdel'], row['journalenhet'], auto_role='F') logger.debug("Transferring %s to %s" % (role_str, new_id)) except Exception, e: logger.warn("Couldn't transfer %s to %s\n%s" % (role_str, new_id, e)) else: logger.debug("Removing %s" % role_str) # Remove role from old_person ephorte_role.remove_role(old_id, int(row['role_type']), int(row['adm_enhet']), row['arkivdel'], row['journalenhet'])
from Cerebrum import Errors from Cerebrum.modules.no.uio.Ephorte import EphorteRole from Cerebrum.modules.no.uio.EphorteWS import EphorteWSError from Cerebrum.modules.no.uio.Ephorte import EphortePermission from Cerebrum.utils.funcwrap import memoize from Cerebrum.utils.context import entity cereconf # Satisfy the linters. logger = Factory.get_logger("cronjob") db = Factory.get('Database')() co = Factory.get('Constants')(db) clconst = Factory.get('CLConstants')(db) ou = Factory.get('OU')(db) ephorte_role = EphorteRole(db) # Caches _person_to_user_id = {} _ephorte_ous = None _perm_codes = None _valid_ephorte_ous = None def get_email_address(pe): """Get a persons primary email address. :type pe: Person :param pe: The person :rtype: text
def ephorte_role(self): try: return self.__ephorte_role_util except AttributeError: self.__ephorte_role_util = EphorteRole(self.db) return self.__ephorte_role_util
""" import sys import getopt from Cerebrum.Utils import Factory from Cerebrum.utils.email import sendmail from Cerebrum.modules.no.uio.Ephorte import EphorteRole from mx import DateTime logger = Factory.get_logger("cronjob") db = Factory.get('Database')() co = Factory.get('Constants')(db) pe = Factory.get('Person')(db) ou = Factory.get('OU')(db) er = EphorteRole(db) def collect_expired_roles(age): """Collectis and returns all roles that belong to people who have had their last affiliation from SAP deleted age days ago.""" now = DateTime.now() oldness = now - int(age) logger.debug('Collecting expired roles') logger.debug('Selecting by affiliation deleted before %s' % str(oldness)) expired_person_ids = [] roles = {} for row in er.list_roles(): roles.setdefault(row['person_id'], []).extend([row])