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',
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):
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'],
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)
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'), })
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."""
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 /
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':
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'),