Ejemplo n.º 1
0
api = Namespace('persons', description='Person operations')


def find_person(id):
    pe = Factory.get('Person')(db.connection)
    try:
        pe.find(id)
    except Errors.NotFoundError:
        abort(404, message=u"No such person with entity_id={}".format(id))
    return pe


PersonAffiliation = api.model('PersonAffiliation', {
    'affiliation': fields.Constant(
        ctype='PersonAffiliation',
        description='Affiliation type'),
    'status': fields.Constant(
        ctype='PersonAffStatus',
        description='Affiliation status'),
    'ou': fields.base.Nested(
        models.OU,
        description='Organizational unit'),
    'create_date': fields.DateTime(
        dt_format='iso8601',
        description='Creation date'),
    'last_date': fields.DateTime(
        dt_format='iso8601',
        description='Last seen in source system'),
    'deleted_date': fields.DateTime(
        dt_format='iso8601',
Ejemplo n.º 2
0

OrganizationalUnit = api.model(
    'OrganizationalUnit', {
        'href':
        fields.href('.ou'),
        'id':
        fields.base.Integer(description='OU entity ID'),
        'contact':
        fields.base.List(fields.base.Nested(models.EntityContactInfo),
                         description='Contact information'),
        'names':
        fields.base.List(fields.base.Nested(models.EntityNameWithLanguage),
                         description='Names'),
        'contexts':
        fields.base.List(fields.Constant(ctype='Spread'),
                         description='Visible in these contexts'),
        'stedkode':
        fields.base.String(),
        'fakultet':
        fields.base.Integer(),
        'institutt':
        fields.base.Integer(),
        'avdeling':
        fields.base.Integer(),
    })


@api.route('/<string:id>', endpoint='ou')
@api.doc(params={'id': 'OU ID'})
class OrganizationalUnitResource(Resource):
Ejemplo n.º 3
0
    def unserialize(cls, input_):
        return cls._rev_map[input_.lower()]

    @classmethod
    def valid_roles(cls):
        return cls._rev_map.keys()


_group_fields = {
    'id':
    base_fields.Integer(description='group id'),
    'name':
    base_fields.String(description='group name'),
    'visibility':
    crb_fields.Constant(ctype='GroupVisibility',
                        transform=GroupVisibility.serialize,
                        description='group visibility'),
    'description':
    base_fields.String(description='group description'),
    'created_at':
    crb_fields.DateTime(dt_format='iso8601', description='creation timestamp'),
    'expire_date':
    crb_fields.DateTime(dt_format='iso8601', description='expire date'),
}

Group = api.model(
    'Group', {
        'href':
        crb_fields.href('.group'),
        'id':
        _group_fields['id'],
Ejemplo n.º 4
0
from Cerebrum import Errors
from Cerebrum.Entity import EntitySpread

api = Namespace('contexts', description='Context operations')


# Model for data from EntitySpread.list_spreads()
Context = api.model('Context', {
    'context': fields.base.String(
        attribute='spread',
        description='Context name'),
    'description': fields.base.String(
        description='Context description'),
    'entity_type': fields.Constant(
        ctype='EntityType',
        attribute='entity_type',
        description=''),
})


@api.route('/', endpoint='contexts')
class ContextListResource(Resource):
    """Resource for contexts."""

    context_search_filter = api.parser()
    context_search_filter.add_argument(
        'entity_types', type=str, action='append',
        help='Filter by entity type(s)')

    @api.marshal_list_with(Context)
    @api.doc(parser=context_search_filter)
Ejemplo n.º 5
0
    try:
        try:
            account = utils.get_account(identifier=identifier,
                                        idtype=idtype,
                                        actype='PosixUser')
        except utils.EntityLookupError:
            account = utils.get_account(identifier=identifier,
                                        idtype=idtype)
    except utils.EntityLookupError as e:
        abort(404, message=str(e))
    return account


AccountAffiliation = api.model('AccountAffiliation', {
    'affiliation': fields.Constant(
        ctype='PersonAffiliation',
        description='Affiliation name'),
    'priority': fields.base.Integer(
        description='Affiliation priority'),
    'ou': fields.base.Nested(
        models.OU,
        description='Organizational unit'),
})

AccountAffiliationList = api.model('AccountAffiliationList', {
    'affiliations': fields.base.List(
        fields.base.Nested(
            AccountAffiliation),
        description='Account affiliations'),
})
Ejemplo n.º 6
0
    et.find(ea.email_addr_target_id)

    return map(
        lambda (lp, dom, _a_id): {
            'value': '{}@{}'.format(lp, dom),
            'type': et.get_target_type()
        }, et.get_addresses())


EmailAddress = api.model(
    'EmailAddress', {
        'value':
        fields.base.String(description='The email address'),
        'type':
        fields.Constant(
            ctype='EmailTarget',
            description="Email address type, i.e. 'forward', 'target'")
    })

EmailAddresses = api.model(
    'EmailAddresses', {
        'addresses':
        fields.base.List(fields.base.Nested(EmailAddress),
                         description='List of addresses'),
    })


@api.route('/<string:address>', endpoint='emailaddresses')
@api.doc(params={'address': 'Email address'})
class EmailAddressesResource(Resource):
    """Resource for listing email addresses."""
Ejemplo n.º 7
0
from Cerebrum.rest.api import db, auth, utils
from Cerebrum.rest.api import fields as crb_fields
from Cerebrum.rest.api.v1 import models

api = Namespace('search', description='Search operations')


ExternalIdItem = api.model('ExternalIdItem', {
    'href': crb_fields.href(
        endpoint='.person'),
    'person_id': base_fields.Integer(
        description='Person ID',
        attribute='entity_id'),
    'source_system': crb_fields.Constant(
        ctype='AuthoritativeSystem',
        description='Source system'),
    'id_type': crb_fields.Constant(
        ctype='EntityExternalId',
        transform=models.ExternalIdType.serialize,
        description='External ID type'),
    'external_id': base_fields.String(
        description='External ID value')
})


@api.route('/persons/external-ids', endpoint='search-persons-external-ids')
class ExternalIdResource(Resource):
    """Resource for external ID searches."""

    # GET /
Ejemplo n.º 8
0
from Cerebrum.rest.api import db, fields

from . import api

# Model for data from entity.get_contact_info()
EntityContactInfo = api.model(
    'EntityContactInfo', {
        'value':
        fields.base.String(attribute='contact_value', description='Value'),
        'alias':
        fields.base.String(attribute='contact_alias', description='Alias'),
        'preference':
        fields.base.Integer(attribute='contact_pref',
                            description='Preference/priority, 1 = highest'),
        'type':
        fields.Constant(
            ctype='ContactInfo', attribute='contact_type', description='Type'),
        'entity_id':
        fields.base.Integer(description='Entity ID'),
        'description':
        fields.base.String(description='Description'),
        'source_system':
        fields.Constant(ctype='AuthoritativeSystem',
                        description='Source system'),
        'last_modified':
        fields.DateTime(dt_format='iso8601',
                        description='Last modified timestamp'),
    })

EntityContactInfoList = api.model(
    'EntityContactInfoList', {
        'contacts':
Ejemplo n.º 9
0
api = Namespace('persons', description='Person operations')


def find_person(id):
    pe = Factory.get('Person')(db.connection)
    try:
        pe.find(id)
    except Errors.NotFoundError:
        abort(404, message=u"No such person with entity_id={}".format(id))
    return pe


PersonAffiliation = api.model(
    'PersonAffiliation', {
        'affiliation':
        fields.Constant(ctype='PersonAffiliation',
                        description='Affiliation type'),
        'status':
        fields.Constant(ctype='PersonAffStatus',
                        description='Affiliation status'),
        'ou':
        fields.base.Nested(models.OU, description='Organizational unit'),
        'create_date':
        fields.DateTime(dt_format='iso8601', description='Creation date'),
        'last_date':
        fields.DateTime(dt_format='iso8601',
                        description='Last seen in source system'),
        'deleted_date':
        fields.DateTime(dt_format='iso8601', description='Deletion date'),
        'source_system':
        fields.Constant(ctype='AuthoritativeSystem',
                        description='Source system'),