示例#1
0
def create(context, request):

    try:
        name = request.params['name']
        parent = request.params.get('parent')

        g = Group(name=name)
        request.db_session.add(g)
        request.db_session.flush()
        if parent:
            try:
                g.parent = Group.get(request.db_session, parent)

            except NoResultFound:
                raise ParamsError('Invalid parent: %s', parent)

    except KeyError as e:
        raise ParamsError('Missing parameter: {}'.format(e))

    except IntegrityError as e:
        error = 'Group {} already exists'.format(name)
        raise HTTPConflict(headers={'X-Request-Error': error})

    else:
        request.db_session.commit()
        raise HTTPCreated()