コード例 #1
0
ファイル: DiskQuota.py プロジェクト: chrnux/cerebrum
class DiskQuotaConstants(Constants.Constants):
    disk_quota_set = _ChangeTypeCode(
        'disk_quota', 'set', 'set disk quota for %(subject)s',
        ('quota=%(int:quota)s', 'override_quota=%(int:override_quota)s',
         'override_exp=%(string:override_expiration)s',
         'reason=%(string:description)s'))
    disk_quota_clear = _ChangeTypeCode('disk_quota', 'clear',
                                       'clear disk quota for %(subject)s')
コード例 #2
0
ファイル: EntityTrait.py プロジェクト: chrnux/cerebrum
class TraitConstants(Constants):
    trait_add = _ChangeTypeCode(
        "trait", "add", "new trait for %(subject)s",
        ("%(trait:code)s", "numval=%(int:numval)s", "strval=%(string:strval)s",
         "date=%(string:date)s", "target=%(entity:target_id)s"))
    trait_del = _ChangeTypeCode(
        "trait", "del", "removed trait from %(subject)s",
        ("%(trait:code)s", "numval=%(int:numval)s", "strval=%(string:strval)s",
         "date=%(string:date)s", "target=%(entity:target_id)s"))
    trait_mod = _ChangeTypeCode(
        "trait", "mod", "modified trait for %(subject)s",
        ("%(trait:code)s", "numval=%(int:numval)s", "strval=%(string:strval)s",
         "date=%(string:date)s", "target=%(entity:target_id)s"))

    # There are no mandatory EntityTraitCodes

    EntityTrait = _EntityTraitCode
コード例 #3
0
class Constants(Constants.Constants):
    entity_hostpolicy_atom = Constants._EntityTypeCode(
        'hostpolicy_atom',
        'hostpolicy_atom - see table "cerebrum.hostpolicy_component" and friends.')
    entity_hostpolicy_role = Constants._EntityTypeCode(
        'hostpolicy_role',
        'hostpolicy_role - see table "cerebrum.hostpolicy_component" and friends.')


    hostpolicy_component_namespace = Constants._ValueDomainCode('hostpol_comp_ns',
                                                                'Domain for hostpolicy-components')


    hostpolicy_mutually_exclusive = _PolicyRelationshipCode(
        "hostpol_mutex", "Source policy and target policy are mutually exclusive")
    hostpolicy_contains = _PolicyRelationshipCode(
        "hostpol_contains", "Source policy contains target policy")

    # ChangeLog constants
    hostpolicy_atom_create = _ChangeTypeCode(
        'hostpolicy', 'atom_create', 'create atom %(subject)s')
    hostpolicy_atom_mod = _ChangeTypeCode(
        'hostpolicy', 'atom_mod', 'modify atom %(subject)s')
    hostpolicy_atom_delete = _ChangeTypeCode(
        'hostpolicy', 'atom_delete', 'delete atom %(subject)s')
    hostpolicy_role_create = _ChangeTypeCode(
        'hostpolicy', 'role_create', 'create role %(subject)s')
    hostpolicy_role_mod = _ChangeTypeCode(
        'hostpolicy', 'role_mod', 'modify role %(subject)s')
    hostpolicy_role_delete = _ChangeTypeCode(
        'hostpolicy', 'role_delete', 'delete role %(subject)s')

    hostpolicy_relationship_add = _ChangeTypeCode(
        'hostpolicy', 'relationship_add', 'add relationship %(subject)s -> %(dest)s')
        # TODO: type is not given here
    hostpolicy_relationship_remove = _ChangeTypeCode(
        'hostpolicy', 'relationship_remove', 'remove relationship %(subject)s -> %(dest)s')
        # TODO: type is not given here

    hostpolicy_policy_add = _ChangeTypeCode(
        'hostpolicy', 'policy_add', 'add policy %(dest)s to host %(subject)s')
    hostpolicy_policy_remove = _ChangeTypeCode(
        'hostpolicy', 'policy_remove', 'remove policy %(dest)s from host %(subject)s')
コード例 #4
0
class EphorteConstants(ConstantsBase):
    # Values from the ePhorte table ROLE
    ephorte_role_ar1 = _EphorteRoleTypeCode('AR1', 'Arkivansvarlig')
    ephorte_role_ar2 = _EphorteRoleTypeCode('AR2', 'Arkivar')
    ephorte_role_ar3 = _EphorteRoleTypeCode('AR3', 'Arkivledelsen')
    ephorte_role_ld = _EphorteRoleTypeCode('LD', 'Leder/saksfordeler')
    ephorte_role_ld_les = _EphorteRoleTypeCode('LD LES', 'Leserolle - leder')
    ephorte_role_sb = _EphorteRoleTypeCode('SB', 'Saksbehandler')
    ephorte_role_sb2 = _EphorteRoleTypeCode('SB2', 'Consultant')
    ephorte_role_sy = _EphorteRoleTypeCode('SY', 'Systemansvarlig')
    ephorte_role_mal = _EphorteRoleTypeCode('MAL', 'Mal-ansvarlige')
    ephorte_role_sub = _EphorteRoleTypeCode('SUB', 'Superbruker')

    #Values from the ePhorte table tilgang_type_code
    ephorte_perm_us = _EphortePermTypeCode(
        'US', 'Unntatt etter offentlighetsloven ved SO')
    ephorte_perm_un = _EphortePermTypeCode(
        'UN', 'Unntatt etter offentlighetsloven ved NIKK')
    ephorte_perm_ua = _EphortePermTypeCode('UA', 'Under arbeid')
    ephorte_perm_uo = _EphortePermTypeCode('UO',
                                           'Unntatt etter offentlighetsloven')
    ephorte_perm_p = _EphortePermTypeCode('P', 'Personalsaker')
    ephorte_perm_p2 = _EphortePermTypeCode('P2',
                                           'Personers økonomiske forhold')
    ephorte_perm_p3 = _EphortePermTypeCode('P3', 'Disiplinærsaker personal')
    ephorte_perm_p4 = _EphortePermTypeCode('P4', 'Rettssaker')
    ephorte_perm_s = _EphortePermTypeCode('S', 'Studentsaker')
    ephorte_perm_s2 = _EphortePermTypeCode('S2', 'Disiplinærsaker studenter')
    ephorte_perm_b = _EphortePermTypeCode('B',
                                          'Begrenset etter sikkerhetsloven')
    ephorte_perm_f = _EphortePermTypeCode(
        'F', 'Fortrolig etter beskyttelsesinstruksen')
    ephorte_perm_k = _EphortePermTypeCode('K', 'Kontrakter og avtaler')
    ephorte_perm_of = _EphortePermTypeCode('OF',
                                           'Unntatt etter offentlighetsloven')
    ephorte_perm_pv = _EphortePermTypeCode('PV', 'Personalsaker')
    ephorte_perm_po = _EphortePermTypeCode('PO',
                                           'Personers økonomiske forhold')
    ephorte_perm_pd = _EphortePermTypeCode('PD', 'Disiplinærsaker personal')
    ephorte_perm_pr = _EphortePermTypeCode('PR', 'Rettssaker')
    ephorte_perm_sv = _EphortePermTypeCode('SV', 'Studentsaker')
    ephorte_perm_sd = _EphortePermTypeCode('SD', 'Disiplinærsaker studenter')
    ephorte_perm_ar = _EphortePermTypeCode('AR', 'Under arbeid')
    ephorte_perm_pa = _EphortePermTypeCode('PA', 'Personalsaker AKAN')
    ephorte_perm_fo = _EphortePermTypeCode('FO', 'Forskningssaker')
    ephorte_perm_st = _EphortePermTypeCode('ST', 'Studenttilrettelegging')
    ephorte_perm_va = _EphortePermTypeCode('VA', 'Varsling ansatte')
    ephorte_perm_vs = _EphortePermTypeCode('VS', 'Varsling studenter')
    ephorte_perm_pb = _EphortePermTypeCode('PB', 'Personalsaker bilagslønn')
    ephorte_perm_os = _EphortePermTypeCode('OS', 'Studentombud')
    ephorte_perm_ai = _EphortePermTypeCode('AI', 'Anskaffelse Innkjøp')
    ephorte_perm_af = _EphortePermTypeCode('AF', 'Forskningsavvik')

    # Values from the ePhorte table ARKIVDEL
    ephorte_arkivdel_avtale_uio = _EphorteArkivdelCode(
        'AVTALE UIO', 'Avtalearkiv ved Universitetet i Oslo')
    ephorte_arkivdel_cristin = _EphorteArkivdelCode(
        'CRISTIN', 'Current Research Information System in Norway')
    ephorte_arkivdel_fs = _EphorteArkivdelCode('FS',
                                               'FS - Felles studentsystem')
    ephorte_arkivdel_eiend_uio = _EphorteArkivdelCode(
        'EIEND UIO', 'Eiendomsarkiv ved Universitetet i Oslo')
    ephorte_arkivdel_khm_forn = _EphorteArkivdelCode(
        'KHM FORN', 'KHM (Kulturhistorisk museum) - Fornminnneforvaltning')
    ephorte_arkivdel_pers_uio = _EphorteArkivdelCode(
        'PERS UIO', 'Personalarkiv ved Universitetet i Oslo')
    ephorte_arkivdel_persav_uio = _EphorteArkivdelCode(
        'PERSAV UIO', 'Avsluttede personalmapper ved UiO')
    ephorte_arkivdel_sak_romani = _EphorteArkivdelCode(
        'ROMANI', 'Romani og taterutvalget')
    ephorte_arkivdel_sak_nikk = _EphorteArkivdelCode('SAK NIKK',
                                                     'Saksarkiv ved NIKK')
    ephorte_arkivdel_sak_so = _EphorteArkivdelCode(
        'SAK SO', 'Saksarkiv ved Samordna Opptak')
    ephorte_arkivdel_sak_uio = _EphorteArkivdelCode(
        'SAK UIO', 'Saksarkiv ved Universitetet i Oslo')
    ephorte_arkivdel_stud_uio = _EphorteArkivdelCode(
        'STUD UIO', 'Studentarkiv ved Universitetet i Oslo')
    ephorte_arkivdel_studav_uio = _EphorteArkivdelCode(
        'STUDAV UIO', 'Avsluttede studentmapper ved UiO')
    ephorte_arkivdel_sak_fsat = _EphorteArkivdelCode(
        'SAK FSAT', 'Saksarkiv ved Felles studieadministrativt tjenestesenter')

    # Values from the ePhorte table JOURNENHET
    ephorte_journenhet_uio = _EphorteJournalenhetCode(
        'J-UIO', 'Journalenhet for UiO - Universitetet i Oslo')
    ephorte_journenhet_so = _EphorteJournalenhetCode(
        'J-SO', 'Journalenhet for SO - Samordna Opptak')
    ephorte_journenhet_nikk = _EphorteJournalenhetCode(
        'J-NIKK',
        'Journalenhet for NIKK - Nordisk institutt for kvinne- og kjønnsforskn'
    )
    ephorte_journenhet_romani = _EphorteJournalenhetCode(
        'J-ROMANI', 'Journalenhet for ROMANI - prosjektet')
    ephorte_journenhet_fsat = _EphorteJournalenhetCode(
        'J-FSAT',
        'Journalenhet for FSAT - Felles studieadministrativt tjenestesenter')

    # Spreads relevant for ephorte
    spread_ephorte_person = _SpreadCode('ePhorte_person',
                                        Constants.Constants.entity_person,
                                        'Person included in ePhorte export')
    spread_ephorte_ou = _SpreadCode('ePhorte_ou',
                                    Constants.Constants.entity_ou,
                                    'OU included in ePhorte export')

    EphorteRole = _EphorteRoleTypeCode
    EphorteArkivdel = _EphorteArkivdelCode
    EphorteJournalenhet = _EphorteJournalenhetCode
    EphortePermission = _EphortePermTypeCode

    # ChangeLog constants
    ephorte_role_add = _ChangeTypeCode('ephorte', 'role_add',
                                       'add ephorte role @ %(dest)s',
                                       ('type=%(rolle_type:rolle_type)s', ))

    ephorte_role_upd = _ChangeTypeCode('ephorte', 'role_upd',
                                       'update ephorte role @ %(dest)s')

    ephorte_role_rem = _ChangeTypeCode('ephorte', 'role_rem',
                                       'remove ephorte role @ %(dest)s',
                                       ('type=%(rolle_type:rolle_type)s', ))

    ephorte_perm_add = _ChangeTypeCode('ephorte', 'perm_add',
                                       'add ephorte perm @ %(dest)s',
                                       ('type=%(perm_type:perm_type)s', ))

    ephorte_perm_rem = _ChangeTypeCode('ephorte', 'perm_rem',
                                       'remove ephorte perm @ %(dest)s',
                                       ('type=%(perm_type:perm_type)s', ))
コード例 #5
0
class CLConstants(CLConstants):
    ea_policy = _ChangeTypeCode('exchange', 'set_ea_policy',
                                'Address book policy changed')
コード例 #6
0
ファイル: Hpc.py プロジェクト: Narvik-kommune/cerebrum
class HpcConstants(Constants.Constants):
    CpuArch = _CpuArchCode
    OperatingSystem = _OperatingSystemCode
    InterConnect = _InterConnectCode
    AllocationAuthority = _AllocationAuthorityCode
    AllocationStatus = _AllocationStatusCode
    AllocationCreditPriority = _AllocationCreditPriorityCode
    Science = _ScienceCode

    entity_project = Constants._EntityTypeCode(
        'project', 'see table project_info and friends')
    entity_allocation = Constants._EntityTypeCode(
        'allocation', 'see table allocation_info and friends')
    entity_allocationperiod = Constants._EntityTypeCode(
        'allocationperiod', 'see table allocation_period_info and friends')

    machine_mod = _ChangeTypeCode('e_machine', 'mod', 'modified %(subject)s')
    machine_demote = _ChangeTypeCode('e_machine', 'demote',
                                     'demote %(subject)s')
    machine_promote = _ChangeTypeCode('e_machine', 'promote',
                                      'promote %(subject)s')

    project_create = _ChangeTypeCode('e_project', 'create',
                                     'created %(subject)s')
    project_mod = _ChangeTypeCode('e_project', 'mod', 'modified %(subject)s')
    project_destroy = _ChangeTypeCode('e_project', 'destroy',
                                      'destroyed %(subject)s')

    allocation_create = _ChangeTypeCode('e_allocation', 'create',
                                        'created %(subject)s')
    allocation_mod = _ChangeTypeCode('e_allocation', 'mod',
                                     'modified %(subject)s')
    allocation_destroy = _ChangeTypeCode('e_allocation', 'destroy',
                                         'destroyed %(subject)s')

    allocation_period_create = _ChangeTypeCode('e_alloc_period', 'create',
                                               'created %(subject)s')
    allocation_period_mod = _ChangeTypeCode('e_alloc_period', 'mod',
                                            'modified %(subject)s')
    allocation_period_destroy = _ChangeTypeCode('e_alloc_period', 'destroy',
                                                'destroyed %(subject)s')
コード例 #7
0
class Constants(Constants.Constants):
    """``DnsConstants.Constants(Constants.Constants)`` defines
    constants used by the dns module"""
    entity_dns_cname = Constants._EntityTypeCode(
        'cname', 'cname - see table "cerebrum.cname_info" and friends.')
    entity_dns_host = Constants._EntityTypeCode(  # name-clash with existing entity_type
        'dns_host',
        'dns_host - see table "cerebrum.dns_host_info" and friends.')
    entity_dns_a_record = Constants._EntityTypeCode(
        'a_record',
        'a_record - see table "cerebrum.a_record_info" and friends.')
    entity_dns_aaaa_record = Constants._EntityTypeCode(
        'aaaa_record',
        'aaaa_record - see table "cerebrum.aaaa_record_info" and friends.')
    entity_dns_owner = Constants._EntityTypeCode(
        'dns_owner', 'dns_owner - see table "cerebrum.dns_owner" and friends.')
    entity_dns_ip_number = Constants._EntityTypeCode(
        'dns_ip_number',
        'dns_ip_number - see table "cerebrum.dns_ip_number" and friends.')
    entity_dns_ipv6_number = Constants._EntityTypeCode(
        'dns_ipv6_number',
        'dns_ipv6_number - see table "cerebrum.dns_ipv6_number" and friends.')
    entity_dns_subnet = Constants._EntityTypeCode(
        'dns_subnet',
        'dns_subnet - see table "cerebrum.dns_subnet" and friends.')
    entity_dns_ipv6_subnet = Constants._EntityTypeCode(
        'dns_ipv6_subnet',
        'dns_ipv6_subnet - see table "cerebrum.dns_ipv6_subnet" and friends.')
    dns_owner_namespace = Constants._ValueDomainCode('dns_owner_ns',
                                                     'Domain for dns_owners')

    spread_uio_machine_netgroup = Constants._SpreadCode(
        'NIS_mng@uio', Constants.Constants.entity_group,
        'Machine netgroup in NIS domain "uio"')

    field_type_txt = _FieldTypeCode('TXT', 'TXT Record')

    trait_dns_contact = _EntityTraitCode(
        'dns_contact', entity_dns_owner,
        """Contact information (e-mail address) for the host.""")
    trait_dns_comment = _EntityTraitCode(
        'dns_comment', entity_dns_owner,
        """A freeform comment about the host.""")

    # TODO: The uio constants should be in a uio specific constants module
    uio_zone = _DnsZoneCode("uio", ".uio.no.")
    trofast_zone = _DnsZoneCode("trofast_uio", ".trofast.uio.no.")
    other_zone = _DnsZoneCode("other", None)

    # ChangeLog constants
    a_record_add = _ChangeTypeCode('host', 'a_rec_add',
                                   'add a-record %(subject)s -> %(dest)s')
    a_record_del = _ChangeTypeCode('host', 'a_rec_del',
                                   'del a-record %(subject)s -> %(dest)s')
    a_record_update = _ChangeTypeCode(
        'host', 'a_rec_upd', 'update a-record %(subject)s -> %(dest)s')
    aaaa_record_add = _ChangeTypeCode(
        'host', 'aaaa_rec_add', 'add aaaa-record %(subject)s -> %(dest)s')
    aaaa_record_del = _ChangeTypeCode(
        'host', 'aaaa_rec_del', 'del aaaa-record %(subject)s -> %(dest)s')
    aaaa_record_update = _ChangeTypeCode(
        'host', 'aaaa_rec_upd', 'update aaaa-record %(subject)s -> %(dest)s')
    cname_add = _ChangeTypeCode('host', 'cname_add',
                                'add cname %(subject)s -> %(dest)s')
    cname_del = _ChangeTypeCode('host', 'cname_del',
                                'del cname %(subject)s -> %(dest)s')
    cname_update = _ChangeTypeCode('host', 'cname_upd',
                                   'update cname %(subject)s -> %(dest)s')
    dns_owner_add = _ChangeTypeCode('host', 'dns_owner_add',
                                    'add dns-owner %(subject)s')
    dns_owner_update = _ChangeTypeCode('host', 'dns_owner_upd',
                                       'update dns-owner %(subject)s')
    dns_owner_del = _ChangeTypeCode('host', 'dns_owner_del',
                                    'del dns-owner %(subject)s')
    general_dns_record_add = _ChangeTypeCode(
        'host', 'gen_dns_rec_add', 'add record for %(subject)s',
        ('%(int:field_type)s=%(string:data)s', ))
    general_dns_record_del = _ChangeTypeCode('host', 'gen_dns_rec_del',
                                             'del record for %(subject)s',
                                             ('type=%(int:field_type)s', ))
    general_dns_record_update = _ChangeTypeCode(
        'host', 'gen_dns_rec_upd', 'update record for %(subject)s',
        ('%(int:field_type)s=%(string:data)s', ))
    host_info_add = _ChangeTypeCode('host', 'host_info_add', 'add %(subject)s',
                                    ('hinfo=%(string:hinfo)s', ))
    host_info_update = _ChangeTypeCode('host', 'host_info_upd',
                                       'update %(subject)s',
                                       ('hinfo=%(string:hinfo)s', ))
    host_info_del = _ChangeTypeCode('host', 'host_info_del', 'del %(subject)s')
    ip_number_add = _ChangeTypeCode('host', 'ip_number_add', 'add %(subject)s',
                                    ('a_ip=%(string:a_ip)s', ))
    ip_number_update = _ChangeTypeCode('host', 'ip_number_upd',
                                       'update %(subject)s',
                                       ('a_ip=%(string:a_ip)s', ))
    ip_number_del = _ChangeTypeCode('host', 'ip_number_del', 'del %(subject)s')
    ipv6_number_add = _ChangeTypeCode('host', 'ipv6_number_add',
                                      'add %(subject)s',
                                      ('aaaaaaa_ip=%(string:aaaa_ip)s', ))
    ipv6_number_update = _ChangeTypeCode('host', 'ipv6_number_upd',
                                         'update %(subject)s',
                                         ('aaaaaaa_ip=%(string:aaaa_ip)s', ))
    ipv6_number_del = _ChangeTypeCode('host', 'ipv6_number_del',
                                      'del %(subject)s')
    mac_adr_set = _ChangeTypeCode('host', 'mac_adr_set', 'set %(subject)s',
                                  ('mac_adr=%(string:mac_adr)s', ))
    rev_override_add = _ChangeTypeCode(
        'host', 'rev_ovr_add', 'add rev-override %(subject)s -> %(dest)s')
    rev_override_del = _ChangeTypeCode('host', 'rev_ovr_del',
                                       'del rev-override for %(subject)s')
    rev_override_update = _ChangeTypeCode(
        'host', 'rev_ovr_upd', 'update rev-override %(subject)s -> %(dest)s')
    subnet_create = _ChangeTypeCode('subnet', 'subnet_create',
                                    'create subnet %(subject)s')
    subnet_mod = _ChangeTypeCode('subnet', 'subnet_mod',
                                 'modify subnet %(subject)s')
    subnet_delete = _ChangeTypeCode('subnet', 'subnet_delete',
                                    'delete subnet %(subject)s')
    subnet6_create = _ChangeTypeCode('subnet', 'subnet6_create',
                                     'create IPv6 subnet %(subject)s')
    subnet6_mod = _ChangeTypeCode('subnet', 'subnet6_mod',
                                  'modify IPv6 subnet %(subject)s')
    subnet6_delete = _ChangeTypeCode('subnet', 'subnet6_delete',
                                     'delete IPv6 subnet %(subject)s')

    srv_record_add = _ChangeTypeCode('host', 'srv_rec_add',
                                     'add srv-record %(subject)s -> %(dest)s')
    srv_record_del = _ChangeTypeCode('host', 'srv_rec_del',
                                     'del srv-record %(subject)s -> %(dest)s')

    FieldTypeCode = _FieldTypeCode
    DnsZone = _DnsZoneCode
コード例 #8
0
ファイル: CLConstants.py プロジェクト: chrnux/cerebrum
class CLConstants(CLConstants):
    """ChangeLog constants for Exchange."""

    # TODO: Clean up these codes! Some are unused, some are a bit wrongly named
    # exchange-relatert-jazz
    #
    # changelog variables used by the EventHandler to register
    # when events are handled by the recieving system
    #

    # Account mailbox created/deleted
    acc_mbox_create = _ChangeTypeCode('exchange', 'acc_mbox_create',
                                      'account mailbox added')
    acc_mbox_delete = _ChangeTypeCode('exchange', 'acc_mbox_delete',
                                      'account mailbox deleted')

    # Account mailbox created/deleted
    shared_mbox_create = _ChangeTypeCode('exchange', 'shared_mbox_create',
                                         'shared mailbox added')
    shared_mbox_delete = _ChangeTypeCode('exchange', 'shared_mbox_delete',
                                         'shared mailbox deleted')

    # Account add/remove an address
    acc_addr_add = _ChangeTypeCode('exchange', 'acc_addr_add',
                                   'account address added')
    acc_addr_rem = _ChangeTypeCode('exchange', 'acc_addr_rem',
                                   'account address removed')
    # Account change primary address
    acc_primaddr = _ChangeTypeCode('exchange', 'acc_primaddr',
                                   'account primary changed')

    # Setting of local delivery
    acc_local_delivery = _ChangeTypeCode('exchange', 'local_delivery',
                                         'local delivery setting changed',
                                         ('enabled = %(string:enabled)s', ))

    # Electronic reservation registered
    pers_reservation = _ChangeTypeCode('exchange', 'per_e_reserv',
                                       'address book visibility changed',
                                       ('visible = %(string:visible)s', ))

    # Distribution group create/deleted
    dl_mbox_create = _ChangeTypeCode('exchange', 'dl_mbox_create',
                                     'dist group mailbox added')
    dl_mbox_delete = _ChangeTypeCode('exchange', 'dl_mbox_delete',
                                     'dist group mailbox deleted')
    # Dist group add/remove address
    dl_addr_add = _ChangeTypeCode('exchange', 'dl_addr_add',
                                  'dist group address added')
    dl_addr_rem = _ChangeTypeCode('exchange', 'dl_addr_rem',
                                  'dist group address deleted')
    # Dist group set hidden
    dl_hidden_set = _ChangeTypeCode('exchange', 'dl_hidden_set',
                                    'dist group set HiddenAddr')
    # Dist group set join/depart restrictions
    dl_join_set = _ChangeTypeCode('exchange', 'dl_join_set',
                                  'dist group set JoinRestr')
    dl_depart_set = _ChangeTypeCode('exchange', 'dl_depart_set',
                                    'dist group set DepartRestr')

    # register when a distribution group has been created or removed
    # should probably log and show more data about groups
    dl_group_create = _ChangeTypeCode('dlgroup', 'create',
                                      'group create distribution %(subject)s')
    dl_group_modify = _ChangeTypeCode('dlgroup', 'modify',
                                      'group modify distribution %(subject)s')
    dl_group_remove = _ChangeTypeCode('dlgroup', 'remove',
                                      'group remove distribution %(subject)s')

    dl_group_add = _ChangeTypeCode(
        'dlgroup', 'add', 'added %(subject)s to %(dest)s',
        ('AlreadyPerformed=%(string:AlreadyPerformed)s', ))
    dl_group_rem = _ChangeTypeCode('dlgroup', 'rem',
                                   'removed %(subject)s from %(dest)s')

    dl_group_primary = _ChangeTypeCode('dlgroup', 'primary',
                                       'group set primary for %(subject)s')
    dl_group_addaddr = _ChangeTypeCode('dlgroup', 'addaddr',
                                       'group add address for %(subject)s')
    dl_group_remaddr = _ChangeTypeCode('dlgroup', 'remaddr',
                                       'group remove address for %(subject)s')
    dl_roomlist_create = _ChangeTypeCode('dlgroup', 'roomcreate',
                                         'group create roomlist %(subject)s')
    dl_group_hidden = _ChangeTypeCode('dlgroup', 'modhidden',
                                      'group mod hidden for %(subject)s',
                                      ('hidden:%(string:hidden)'))
    dl_group_manby = _ChangeTypeCode('dlgroup', 'modmanby',
                                     'group mod managed by for %(subject)s',
                                     ('manby:%(str:manby)'))
    dl_group_room = _ChangeTypeCode('dlgroup', 'modroom',
                                    'group mod room stat for %(subject)s',
                                    ('roomlist:%(str:roomlist)'))

    # deferred events
    exchange_group_add = _ChangeTypeCode('exchange', 'group_add',
                                         'deferred addition of group member')

    exchange_group_rem = _ChangeTypeCode('exchange', 'group_rem',
                                         'deferred removal of group member')