def _create_labcontroller_helper(data): with convert_internal_errors(): if LabController.query.filter_by(fqdn=data['fqdn']).count(): raise Conflict409('Lab Controller %s already exists' % data['fqdn']) user = find_user_or_create(data['user_name']) user = update_user( user=user, display_name=data['fqdn'], email_address=data.get('email_address', user.email_address), password=data.get('password', user.password) ) labcontroller = LabController(fqdn=data['fqdn'], disabled=False) labcontroller.record_activity( user=identity.current.user, service=u'HTTP', action=u'Changed', field=u'FQDN', old=u'', new=data['fqdn']) labcontroller.user = user labcontroller.record_activity( user=identity.current.user, service=u'HTTP', action=u'Changed', field=u'User', old=u'', new=user.user_name) # For backwards compatibility labcontroller.record_activity( user=identity.current.user, service=u'HTTP', action=u'Changed', field=u'Disabled', old=u'', new=unicode(labcontroller.disabled)) session.add(labcontroller) # flush it so we return an id, otherwise we'll end up back in here from # the edit form session.flush() response = jsonify(labcontroller.__json__()) response.status_code = 201 return response