Exemplo n.º 1
0
def find_entity(request):
    response = {'status': -1}

    api = NavigatorApi(request.user)
    entity_type = request.GET.get('type', '')
    database = request.GET.get('database', '')
    table = request.GET.get('table', '')
    name = request.GET.get('name', '')
    path = request.GET.get('path', '')

    # TODO: support arbitrary optional filter params

    if not entity_type:
        raise MetadataApiException(
            "find_entity requires a type value, e.g. - 'database', 'table', 'file'"
        )

    if entity_type.lower() == 'database':
        if not name:
            raise MetadataApiException('get_database requires name param')
        response['entity'] = api.get_database(name)
    elif entity_type.lower() == 'table':
        if not database or not name:
            raise MetadataApiException(
                'get_table requires database and name param')
        response['entity'] = api.get_table(database, name)
    elif entity_type.lower() == 'field':
        if not database or not table or not name:
            raise MetadataApiException(
                'get_field requires database, table, and name params')
        response['entity'] = api.get_field(database, table, name)
    elif entity_type.lower() == 'directory':
        if not path:
            raise MetadataApiException('get_directory requires path param')
        response['entity'] = api.get_directory(path)
    elif entity_type.lower() == 'file':
        if not path:
            raise MetadataApiException('get_file requires path param')
        response['entity'] = api.get_file(path)
    else:
        raise MetadataApiException("type %s is unrecognized" % entity_type)

    # Prevent nulls later
    if 'tags' in response['entity'] and not response['entity']['tags']:
        response['entity']['tags'] = []

    response['status'] = 0
    return JsonResponse(response)
Exemplo n.º 2
0
def find_entity(request):
  response = {'status': -1}

  api = NavigatorApi()
  entity_type = request.GET.get('type', '')
  database = request.GET.get('database', '')
  table = request.GET.get('table', '')
  name = request.GET.get('name', '')
  path = request.GET.get('path', '')

  # TODO: support arbitrary optional filter params

  if not entity_type:
    raise MetadataApiException("find_entity requires a type value, e.g. - 'database', 'table', 'file'")

  if entity_type.lower() == 'database':
    if not name:
      raise MetadataApiException('get_database requires name param')
    response['entity'] = api.get_database(name)
  elif entity_type.lower() == 'table':
    if not database or not name:
      raise MetadataApiException('get_table requires database and name param')
    response['entity'] = api.get_table(database, name)
  elif entity_type.lower() == 'field':
    if not database or not table or not name:
      raise MetadataApiException('get_field requires database, table, and name params')
    response['entity'] = api.get_field(database, table, name)
  elif entity_type.lower() == 'directory':
    if not path:
      raise MetadataApiException('get_directory requires path param')
    response['entity'] = api.get_directory(path)
  elif entity_type.lower() == 'file':
    if not path:
      raise MetadataApiException('get_file requires path param')
    response['entity'] = api.get_file(path)
  else:
    raise MetadataApiException("type %s is unrecognized" % entity_type)

  # Prevent nulls later
  if 'tags' in response['entity'] and not response['entity']['tags']:
    response['entity']['tags'] = []

  response['status'] = 0
  return JsonResponse(response)