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")
Example #2
0
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'])
Example #3
0
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'])
Example #4
0
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])