Example #1
0
def test_export_csv():
  headers = ["x", "y"]
  data = [ ["1", "2"], ["3", "4"], ["5,6", "7"], [None, None], ["http://gethue.com", "http://gethue.com"] ]

  # Check CSV
  generator = create_generator(content_generator(headers, data), "csv")
  response = make_response(generator, "csv", "foo")
  assert_equal("application/csv", response["content-type"])
  content = ''.join(response.streaming_content)
  assert_equal('x,y\r\n1,2\r\n3,4\r\n"5,6",7\r\nNULL,NULL\r\nhttp://gethue.com,http://gethue.com\r\n', content)
  assert_equal('attachment; filename="foo.csv"', response["content-disposition"])

  # Check non-ASCII for any browser except FF or no browser info
  generator = create_generator(content_generator(headers, data), "csv")
  response = make_response(generator, "csv", u'gんtbhんjk?¥n')
  assert_equal("application/csv", response["content-type"])
  content = ''.join(response.streaming_content)
  assert_equal('x,y\r\n1,2\r\n3,4\r\n"5,6",7\r\nNULL,NULL\r\nhttp://gethue.com,http://gethue.com\r\n', content)
  assert_equal('attachment; filename="g%E3%82%93tbh%E3%82%93jk%EF%BC%9F%EF%BF%A5n.csv"', response["content-disposition"])

  # Check non-ASCII for FF browser
  generator = create_generator(content_generator(headers, data), "csv")
  response = make_response(generator, "csv", u'gんtbhんjk?¥n',
                           user_agent='Mozilla / 5.0(Macintosh; Intel Mac OS X 10.12;rv:59.0) Gecko / 20100101 Firefox / 59.0)')
  assert_equal("application/csv", response["content-type"])
  content = ''.join(response.streaming_content)
  assert_equal('x,y\r\n1,2\r\n3,4\r\n"5,6",7\r\nNULL,NULL\r\nhttp://gethue.com,http://gethue.com\r\n', content)
  assert_equal('attachment; filename*="g%E3%82%93tbh%E3%82%93jk%EF%BC%9F%EF%BF%A5n.csv"',
               response["content-disposition"])
Example #2
0
def test_export_csv():
  headers = ["x", "y"]
  data = [ ["1", "2"], ["3", "4"], ["5,6", "7"], [None, None], ["http://gethue.com", "http://gethue.com"] ]

  # Check CSV
  generator = create_generator(content_generator(headers, data), "csv")
  response = make_response(generator, "csv", "foo")
  assert_equal("application/csv", response["content-type"])
  content = b''.join(response.streaming_content)
  assert_equal(b'x,y\r\n1,2\r\n3,4\r\n"5,6",7\r\nNULL,NULL\r\nhttp://gethue.com,http://gethue.com\r\n', content)
  assert_equal('attachment; filename="foo.csv"', response["content-disposition"])

  # Check non-ASCII for any browser except FF or no browser info
  generator = create_generator(content_generator(headers, data), "csv")
  response = make_response(generator, "csv", u'gんtbhんjk?¥n')
  assert_equal("application/csv", response["content-type"])
  content = b''.join(response.streaming_content)
  assert_equal(b'x,y\r\n1,2\r\n3,4\r\n"5,6",7\r\nNULL,NULL\r\nhttp://gethue.com,http://gethue.com\r\n', content)
  assert_equal('attachment; filename="g%E3%82%93tbh%E3%82%93jk%EF%BC%9F%EF%BF%A5n.csv"', response["content-disposition"])

  # Check non-ASCII for FF browser
  generator = create_generator(content_generator(headers, data), "csv")
  response = make_response(generator, "csv", u'gんtbhんjk?¥n',
                           user_agent='Mozilla / 5.0(Macintosh; Intel Mac OS X 10.12;rv:59.0) Gecko / 20100101 Firefox / 59.0)')
  assert_equal("application/csv", response["content-type"])
  content = b''.join(response.streaming_content)
  assert_equal(b'x,y\r\n1,2\r\n3,4\r\n"5,6",7\r\nNULL,NULL\r\nhttp://gethue.com,http://gethue.com\r\n', content)
  assert_equal('attachment; filename*="g%E3%82%93tbh%E3%82%93jk%EF%BC%9F%EF%BF%A5n.csv"',
               response["content-disposition"])
Example #3
0
def test_export_csvxls():
  header = ["x", "y"]
  data = [ ["1", "2"], ["3", "4"] ]

  # Check CSV
  response = make_response(header, data, "csv", "foo")
  assert_equal("application/csv", response["content-type"])
  assert_equal('"x","y"\r\n"1","2"\r\n"3","4"\r\n', response.content)
  assert_equal("attachment; filename=foo.csv", response["content-disposition"])

  # Check XLS
  response = make_response(header, data, "xls", "bar")
  assert_equal("application/xls", response["content-type"])
  assert_equal("attachment; filename=bar.xls", response["content-disposition"])
  assert_equal('"x","y"\r\n"1","2"\r\n"3","4"\r\n', xls2csv(response.content))
Example #4
0
def download(format, db, id=None, file_name='query_result', user_agent=None, max_rows=-1, max_bytes=-1, store_data_type_in_header=False, start_over=True):
  """
  download(query_model, format) -> HttpResponse

  Retrieve the query result in the format specified. Return an HttpResponse object.
  """
  if format not in common.DL_FORMATS:
    LOG.error('Unknown download format "%s"' % (format,))
    return

  content_generator = DataAdapter(db, max_rows=max_rows, start_over=start_over, max_bytes=max_bytes, store_data_type_in_header=store_data_type_in_header)
  generator = export_csvxls.create_generator(content_generator, format)

  resp = export_csvxls.make_response(generator, format, file_name, user_agent=user_agent)

  if id:
    resp.set_cookie(
      'download-%s' % id,
      json.dumps({
        'truncated': content_generator.is_truncated,
        'row_counter': content_generator.row_counter
      }),
      max_age=DOWNLOAD_COOKIE_AGE
    )

  return resp
Example #5
0
def download(handle, format, db, id=None, file_name='query_result'):
  """
  download(query_model, format) -> HttpResponse

  Retrieve the query result in the format specified. Return an HttpResponse object.
  """
  if format not in common.DL_FORMATS:
    LOG.error('Unknown download format "%s"' % (format,))
    return

  max_rows = conf.DOWNLOAD_ROW_LIMIT.get()

  content_generator = HS2DataAdapter(handle, db, max_rows=max_rows, start_over=True)
  generator = export_csvxls.create_generator(content_generator, format)

  resp = export_csvxls.make_response(generator, format, file_name)

  if id:
    resp.set_cookie(
      'download-%s' % id,
      json.dumps({
        'truncated': content_generator.is_truncated,
        'row_counter': content_generator.row_counter
      }),
      max_age=DOWNLOAD_COOKIE_AGE
    )

  return resp
Example #6
0
def download(handle, format, db, id=None):
    """
  download(query_model, format) -> HttpResponse

  Retrieve the query result in the format specified. Return an HttpResponse object.
  """
    if format not in common.DL_FORMATS:
        LOG.error('Unknown download format "%s"' % (format, ))
        return

    max_cells = conf.DOWNLOAD_CELL_LIMIT.get()

    content_generator = HS2DataAdapter(handle,
                                       db,
                                       max_cells=max_cells,
                                       start_over=True)
    generator = export_csvxls.create_generator(content_generator, format)

    resp = export_csvxls.make_response(generator, format, 'query_result')

    if id:
        resp.set_cookie('download-%s' % id,
                        json.dumps({
                            'truncated': content_generator.is_truncated,
                            'row_counter': content_generator.row_counter
                        }),
                        max_age=DOWNLOAD_COOKIE_AGE)

    return resp
Example #7
0
def download(request):
  if not ENABLE_DOWNLOAD.get():
    return serve_403_error(request)

  notebook = json.loads(request.POST.get('notebook', '{}'))
  snippet = json.loads(request.POST.get('snippet', '{}'))
  file_format = request.POST.get('format', 'csv')
  user_agent = request.META.get('HTTP_USER_AGENT')
  file_name = _get_snippet_name(notebook)

  content_generator = get_api(request, snippet).download(notebook, snippet, file_format=file_format)
  response = export_csvxls.make_response(content_generator, file_format, file_name, user_agent=user_agent)

  if snippet['id']:
    response.set_cookie(
      'download-%s' % snippet['id'],
      json.dumps({
        'truncated': 'false',
        'row_counter': '0'
      }),
      max_age=DOWNLOAD_COOKIE_AGE
    )
  if response:
    request.audit = {
      'operation': 'DOWNLOAD',
      'operationText': 'User %s downloaded results from %s as %s' % (request.user.username, _get_snippet_name(notebook), file_format),
      'allowed': True
    }

  return response
Example #8
0
def download(handle, format, db, id=None, file_name='query_result', user_agent=None):
  """
  download(query_model, format) -> HttpResponse

  Retrieve the query result in the format specified. Return an HttpResponse object.
  """
  if format not in common.DL_FORMATS:
    LOG.error('Unknown download format "%s"' % (format,))
    return

  max_rows = conf.DOWNLOAD_ROW_LIMIT.get()
  max_bytes = conf.DOWNLOAD_BYTES_LIMIT.get()

  content_generator = DataAdapter(db, handle=handle, max_rows=max_rows, max_bytes=max_bytes)
  generator = export_csvxls.create_generator(content_generator, format)

  resp = export_csvxls.make_response(generator, format, file_name, user_agent=user_agent)

  if id:
    resp.set_cookie(
      'download-%s' % id,
      json.dumps({
        'truncated': content_generator.is_truncated,
        'row_counter': content_generator.row_counter
      }),
      max_age=DOWNLOAD_COOKIE_AGE
    )

  return resp
Example #9
0
def export_documents(request):
    if request.GET.get('documents'):
        selection = json.loads(request.GET.get('documents'))
    else:
        selection = json.loads(request.POST.get('documents'))

    # Only export documents the user has permissions to read
    docs = Document2.objects.documents(user=request.user, perms='both', include_history=True, include_trashed=True).\
      filter(id__in=selection).order_by('-id')

    # Add any dependencies to the set of exported documents
    export_doc_set = _get_dependencies(docs)

    # For directories, add any children docs to the set of exported documents
    export_doc_set.update(_get_dependencies(docs, deps_mode=False))

    # Get PKs of documents to export
    doc_ids = [doc.pk for doc in export_doc_set]
    num_docs = len(doc_ids)

    if len(selection) == 1 and num_docs >= len(selection) and docs[0].name:
        filename = docs[0].name
    else:
        filename = 'hue-documents-%s-(%s)' % (
            datetime.today().strftime('%Y-%m-%d'), num_docs)

    f = string_io()

    if doc_ids:
        doc_ids = ','.join(map(str, doc_ids))
        management.call_command('dumpdata',
                                'desktop.Document2',
                                primary_keys=doc_ids,
                                indent=2,
                                use_natural_foreign_keys=True,
                                verbosity=2,
                                stdout=f)

    if request.GET.get('format') == 'json':
        return JsonResponse(f.getvalue(), safe=False)
    elif request.GET.get('format') == 'zip':
        zfile = zipfile.ZipFile(f, 'w')
        zfile.writestr("hue.json", f.getvalue())
        for doc in docs:
            if doc.type == 'notebook':
                try:
                    from spark.models import Notebook
                    zfile.writestr("notebook-%s-%s.txt" % (doc.name, doc.id),
                                   smart_str(Notebook(document=doc).get_str()))
                except Exception as e:
                    LOG.exception(e)
        zfile.close()
        response = HttpResponse(content_type="application/zip")
        response["Content-Length"] = len(f.getvalue())
        response[
            'Content-Disposition'] = 'attachment; filename="%s".zip' % filename
        response.write(f.getvalue())
        return response
    else:
        return make_response(f.getvalue(), 'json', filename)
Example #10
0
def download(api, session, cell, format):
    if format not in DL_FORMATS:
        LOG.error('Unknown download format "%s"' % format)
        return

    content_generator = SparkDataAdapter(api, session, cell)
    generator = export_csvxls.create_generator(content_generator, format)
    return export_csvxls.make_response(generator, format, "script_result")
Example #11
0
def download(api, session, cell, format, user_agent=None):
  if format not in DL_FORMATS:
    LOG.error('Unknown download format "%s"' % format)
    return

  content_generator = SparkDataAdapter(api, session, cell)
  generator = export_csvxls.create_generator(content_generator, format)
  return export_csvxls.make_response(generator, format, 'script_result', user_agent=user_agent)
Example #12
0
def test_export_csvxls():
    header = ["x", "y"]
    data = [["1", "2"], ["3", "4"]]

    # Check CSV
    response = make_response(header, data, "csv", "foo")
    assert_equal("application/csv", response["content-type"])
    assert_equal('"x","y"\r\n"1","2"\r\n"3","4"\r\n', response.content)
    assert_equal("attachment; filename=foo.csv",
                 response["content-disposition"])

    # Check XLS
    response = make_response(header, data, "xls", "bar")
    assert_equal("application/xls", response["content-type"])
    assert_equal("attachment; filename=bar.xls",
                 response["content-disposition"])
    assert_equal('"x","y"\r\n"1","2"\r\n"3","4"\r\n',
                 xls2csv(response.content))
Example #13
0
def test_export_csv():
  header = ["x", "y"]
  data = [ ["1", "2"], ["3", "4"], ["5,6", "7"], [None, None] ]

  # Check CSV
  response = make_response(header, data, "csv", "foo")
  assert_equal("application/csv", response["content-type"])
  assert_equal('x,y\r\n1,2\r\n3,4\r\n"5,6",7\r\nNULL,NULL\r\n', response.content)
  assert_equal("attachment; filename=foo.csv", response["content-disposition"])
Example #14
0
def test_export_csv():
    headers = ["x", "y"]
    data = [["1", "2"], ["3", "4"], ["5,6", "7"], [None, None]]

    # Check CSV
    generator = create_generator(content_generator(headers, data), "csv")
    response = make_response(generator, "csv", "foo")
    assert_equal("application/csv", response["content-type"])
    content = "".join(response.streaming_content)
    assert_equal('x,y\r\n1,2\r\n3,4\r\n"5,6",7\r\nNULL,NULL\r\n', content)
    assert_equal("attachment; filename=foo.csv", response["content-disposition"])
Example #15
0
def test_export_csv():
  header = ["x", "y"]
  data = [ ["1", "2"], ["3", "4"], ["5,6", "7"], [None, None] ]

  # Check CSV
  generator = create_generator(content_generator(header, data), "csv")
  response = make_response(generator, "csv", "foo")
  assert_equal("application/csv", response["content-type"])
  content = ''.join(response.streaming_content)
  assert_equal('x,y\r\n1,2\r\n3,4\r\n"5,6",7\r\nNULL,NULL\r\n', content)
  assert_equal("attachment; filename=foo.csv", response["content-disposition"])
Example #16
0
def test_export_csv():
    header = ["x", "y"]
    data = [["1", "2"], ["3", "4"], ["5,6", "7"], [None, None]]

    # Check CSV
    response = make_response(header, data, "csv", "foo")
    assert_equal("application/csv", response["content-type"])
    assert_equal('x,y\r\n1,2\r\n3,4\r\n"5,6",7\r\nNULL,NULL\r\n',
                 response.content)
    assert_equal("attachment; filename=foo.csv",
                 response["content-disposition"])
Example #17
0
def download(results, format):
  """
  download(results, format) -> HttpResponse

  Transform the search result set to the specified format and dwonload.
  """
  if format not in DL_FORMATS:
    LOG.error('Unknown download format "%s"' % format)
    return

  data = SearchDataAdapter(results, format)
  return export_csvxls.make_response(data[0], data[1:], format, 'query_result')
Example #18
0
def download(handle, format, db):
  """
  download(query_model, format) -> HttpResponse

  Retrieve the query result in the format specified. Return an HttpResponse object.
  """
  if format not in common.DL_FORMATS:
    LOG.error('Unknown download format "%s"' % (format,))
    return

  data, has_more = HS2DataAdapter(handle, db, conf.DOWNLOAD_ROW_LIMIT.get())
  return export_csvxls.make_response(data[0], data[1:], format, 'query_result')
Example #19
0
def download(results, format):
    """
  download(results, format) -> HttpResponse

  Transform the search result set to the specified format and dwonload.
  """
    if format not in DL_FORMATS:
        LOG.error('Unknown download format "%s"' % format)
        return

    data = SearchDataAdapter(results, format)
    return export_csvxls.make_response(data[0], data[1:], format,
                                       'query_result')
Example #20
0
def test_export_xls():
  header = ["x", "y"]
  data = [ ["1", "2"], ["3", "4"], ["5,6", "7"], [None, None] ]

  dataset = tablib.Dataset(headers=header)
  for row in data:
    dataset.append([cell is not None and cell or "NULL" for cell in row])

  # Check XLS
  response = make_response(header, data, "xls", "foo")
  assert_equal("application/xls", response["content-type"])
  assert_equal(dataset.xls, response.content)
  assert_equal("attachment; filename=foo.xls", response["content-disposition"])
Example #21
0
def test_export_xls_truncate_rows():
  headers = ["a"]
  data = [["1"]] * (MAX_XLS_ROWS + 1)
  sheet = [headers] + data

  # Check XLS
  generator = create_generator(content_generator(headers, data), "xls")
  response = make_response(generator, "xls", "foo")
  assert_equal("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", response["content-type"])

  sheet_data = _read_xls_sheet_data(response)
  assert_equal(len(sheet[:MAX_XLS_ROWS + 1]), len(sheet_data))
  assert_equal("attachment; filename=foo.xlsx", response["content-disposition"])
Example #22
0
def download(handle, format, db):
  """
  download(query_model, format) -> HttpResponse

  Retrieve the query result in the format specified. Return an HttpResponse object.
  """
  if format not in common.DL_FORMATS:
    LOG.error('Unknown download format "%s"' % (format,))
    return

  content_generator = HS2DataAdapter(handle, db, conf.DOWNLOAD_ROW_LIMIT.get())
  generator = export_csvxls.create_generator(content_generator, format)
  return export_csvxls.make_response(generator, format, 'query_result')
Example #23
0
def download(results, format, collection):
    """
  download(results, format) -> HttpResponse

  Transform the search result set to the specified format and download.
  """
    if format not in DL_FORMATS:
        LOG.error('Unknown download format "%s"' % format)
        return

    content_generator = SearchDataAdapter(results, format, collection)
    generator = export_csvxls.create_generator(content_generator, format)
    return export_csvxls.make_response(generator, format, 'query_result')
Example #24
0
def download(results, format, collection):
  """
  download(results, format) -> HttpResponse

  Transform the search result set to the specified format and dwonload.
  """
  if format not in DL_FORMATS:
    LOG.error('Unknown download format "%s"' % format)
    return

  content_generator = SearchDataAdapter(results, format, collection)
  generator = export_csvxls.create_generator(content_generator, format)
  return export_csvxls.make_response(generator, format, 'query_result')
Example #25
0
def test_export_xls_truncate_cols():
    headers = ["a"] * (MAX_XLS_COLS + 1)
    data = [["1"] * (MAX_XLS_COLS + 1)]

    dataset = tablib.Dataset(headers=headers[:MAX_XLS_COLS])
    dataset.extend([data[0][:MAX_XLS_COLS]])

    # Check XLS
    generator = create_generator(content_generator(headers, data), "xls")
    response = make_response(generator, "xls", "foo")
    assert_equal("application/xls", response["content-type"])
    content = "".join(response.streaming_content)
    assert_equal(dataset.xls, content)
    assert_equal("attachment; filename=foo.xls", response["content-disposition"])
Example #26
0
def test_export_xls():
    header = ["x", "y"]
    data = [["1", "2"], ["3", "4"], ["5,6", "7"], [None, None]]

    dataset = tablib.Dataset(headers=header)
    for row in data:
        dataset.append([cell is not None and cell or "NULL" for cell in row])

    # Check XLS
    response = make_response(header, data, "xls", "foo")
    assert_equal("application/xls", response["content-type"])
    assert_equal(dataset.xls, response.content)
    assert_equal("attachment; filename=foo.xls",
                 response["content-disposition"])
Example #27
0
def test_export_xls():
    headers = ["x", "y"]
    data = [["1", "2"], ["3", "4"], ["5,6", "7"], [None, None]]

    dataset = tablib.Dataset(headers=headers)
    for row in data:
        dataset.append([cell is not None and cell or "NULL" for cell in row])

    # Check XLS
    generator = create_generator(content_generator(headers, data), "xls")
    response = make_response(generator, "xls", "foo")
    assert_equal("application/xls", response["content-type"])
    content = "".join(response.streaming_content)
    assert_equal(dataset.xls, content)
    assert_equal("attachment; filename=foo.xls", response["content-disposition"])
Example #28
0
def test_export_xls():
    headers = ["x", "y"]
    data = [["1", "2"], ["3", "4"], ["5,6", "7"], [None, None]]
    sheet = [headers] + data

    # Check XLS
    generator = create_generator(content_generator(headers, data), "xls")
    response = make_response(generator, "xls", "foo")
    assert_equal("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", response["content-type"])

    expected_data = [[cell is not None and cell or "NULL" for cell in row] for row in sheet]
    sheet_data = _read_xls_sheet_data(response)

    assert_equal(expected_data, sheet_data)
    assert_equal("attachment; filename=foo.xlsx", response["content-disposition"])
Example #29
0
def test_export_xls():
  headers = ["x", "y"]
  data = [ ["1", "2"], ["3", "4"], ["5,6", "7"], [None, None], ["http://gethue.com", "http://gethue.com"] ]
  sheet = [headers] + data

  # Check XLS
  generator = create_generator(content_generator(headers, data), "xls")
  response = make_response(generator, "xls", "foo")
  assert_equal("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", response["content-type"])

  expected_data = [[cell is not None and cell.replace("http://gethue.com", '=HYPERLINK("http://gethue.com")') or "NULL" for cell in row] for row in sheet]
  sheet_data = _read_xls_sheet_data(response)

  assert_equal(expected_data, sheet_data)
  assert_equal('attachment; filename="foo.xlsx"', response["content-disposition"])
def test_export_xls_truncate_cols():
    headers = ["a"] * (MAX_XLS_COLS + 1)
    data = [["1"] * (MAX_XLS_COLS + 1)]

    dataset = tablib.Dataset(headers=headers[:MAX_XLS_COLS])
    dataset.extend([data[0][:MAX_XLS_COLS]])

    # Check XLS
    generator = create_generator(content_generator(headers, data), "xls")
    response = make_response(generator, "xls", "foo")
    assert_equal("application/xls", response["content-type"])
    content = ''.join(response.streaming_content)
    assert_equal(dataset.xls, content)
    assert_equal("attachment; filename=foo.xls",
                 response["content-disposition"])
Example #31
0
def download(handle, format, db):
  """
  download(query_model, format) -> HttpResponse

  Retrieve the query result in the format specified. Return an HttpResponse object.
  """
  if format not in common.DL_FORMATS:
    LOG.error('Unknown download format "%s"' % (format,))
    return

  max_cells = conf.DOWNLOAD_CELL_LIMIT.get()

  content_generator = HS2DataAdapter(handle, db, max_cells=max_cells, start_over=True)
  generator = export_csvxls.create_generator(content_generator, format)
  return export_csvxls.make_response(generator, format, 'query_result')
Example #32
0
def test_export_xls():
  header = ["x", "y"]
  data = [ ["1", "2"], ["3", "4"], ["5,6", "7"], [None, None] ]

  dataset = tablib.Dataset(headers=header)
  for row in data:
    dataset.append([cell is not None and cell or "NULL" for cell in row])

  # Check XLS
  generator = create_generator(content_generator(header, data), "xls")
  response = make_response(generator, "xls", "foo")
  assert_equal("application/xls", response["content-type"])
  content = ''.join(response.streaming_content)
  assert_equal(dataset.xls, content)
  assert_equal("attachment; filename=foo.xls", response["content-disposition"])
Example #33
0
 def profile(self, appid, app_type, app_property, app_filters):
     if app_property == 'memory':
         return self._memory(appid, app_type, app_property, app_filters)
     elif app_property == 'profile':
         return self._query_profile(appid)
     elif app_property == 'download-profile':
         return export_csvxls.make_response(
             [self._query_profile(appid)['profile']], 'txt',
             'query-profile_%s' % appid)
     elif app_property == 'backends':
         return self._query_backends(appid)
     elif app_property == 'finstances':
         return self._query_finstances(appid)
     else:
         return self._query(appid)
Example #34
0
def test_export_xls_truncate_rows():
    headers = ["a"]
    data = [["1"]] * (MAX_XLS_ROWS + 1)
    sheet = [headers] + data

    # Check XLS
    generator = create_generator(content_generator(headers, data), "xls")
    response = make_response(generator, "xls", "foo")
    assert_equal(
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        response["content-type"])

    sheet_data = _read_xls_sheet_data(response)
    assert_equal(len(sheet[:MAX_XLS_ROWS + 1]), len(sheet_data))
    assert_equal("attachment; filename=foo.xlsx",
                 response["content-disposition"])
Example #35
0
def test_export_xls_truncate_cols():
  headers = [u"a"] * (MAX_XLS_COLS + 1)
  data = [[u"1"] * (MAX_XLS_COLS + 1)]
  sheet = [headers] + data

  # Check XLS
  generator = create_generator(content_generator(headers, data), "xls")
  response = make_response(generator, "xls", "foo")
  assert_equal("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", response["content-type"])
  expected_data = [[cell is not None and cell or "NULL" for cell in row][:MAX_XLS_COLS] for row in sheet]

  sheet_data = _read_xls_sheet_data(response)
  sheet_data[0] = sheet_data[0][:MAX_XLS_COLS]
  sheet_data[1] = sheet_data[1][:MAX_XLS_COLS]
  assert_equal(len(expected_data), len(sheet_data))
  assert_equal(len(expected_data[0]), len(sheet_data[0]))

  assert_equal(expected_data, sheet_data)
  assert_equal("attachment; filename=foo.xlsx", response["content-disposition"])
Example #36
0
def test_export_xls_truncate_cols():
    headers = [u"a"] * (MAX_XLS_COLS + 1)
    data = [[u"1"] * (MAX_XLS_COLS + 1)]
    sheet = [headers] + data

    # Check XLS
    generator = create_generator(content_generator(headers, data), "xls")
    response = make_response(generator, "xls", "foo")
    assert_equal(
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        response["content-type"])
    expected_data = [[cell is not None and cell or "NULL"
                      for cell in row][:MAX_XLS_COLS] for row in sheet]

    sheet_data = _read_xls_sheet_data(response)
    sheet_data[0] = sheet_data[0][:MAX_XLS_COLS]
    sheet_data[1] = sheet_data[1][:MAX_XLS_COLS]
    assert_equal(len(expected_data), len(sheet_data))
    assert_equal(len(expected_data[0]), len(sheet_data[0]))

    assert_equal(expected_data, sheet_data)
    assert_equal("attachment; filename=foo.xlsx",
                 response["content-disposition"])
Example #37
0
            if doc.type == 'notebook':
                try:
                    from spark.models import Notebook
                    zfile.writestr("notebook-%s-%s.txt" % (doc.name, doc.id),
                                   smart_str(Notebook(document=doc).get_str()))
                except Exception, e:
                    LOG.exception(e)
        zfile.close()
        response = HttpResponse(content_type="application/zip")
        response["Content-Length"] = len(f.getvalue())
        response[
            'Content-Disposition'] = 'attachment; filename="%s".zip' % filename
        response.write(f.getvalue())
        return response
    else:
        return make_response(f.getvalue(), 'json', filename)


@ensure_csrf_cookie
def import_documents(request):
    def is_reserved_directory(doc):
        return doc['fields']['type'] == 'directory' and doc['fields'][
            'name'] in (Document2.HOME_DIR, Document2.TRASH_DIR)

    try:
        if request.FILES.get('documents'):
            documents = request.FILES['documents'].read()
        else:
            documents = json.loads(request.POST.get('documents'))

        documents = json.loads(documents)
Example #38
0
                try:
                    from spark.models import Notebook
                    zfile.writestr("notebook-%s-%s.txt" % (doc.name, doc.id),
                                   smart_str(Notebook(document=doc).get_str()))
                except Exception, e:
                    print e
                    LOG.exception(e)
        zfile.close()
        response = HttpResponse(content_type="application/zip")
        response["Content-Length"] = len(f.getvalue())
        response[
            'Content-Disposition'] = 'attachment; filename="hue-documents.zip"'
        response.write(f.getvalue())
        return response
    else:
        return make_response(f.getvalue(), 'json', 'hue-documents')


def import_documents(request):
    if request.FILES.get('documents'):
        documents = request.FILES['documents'].read()
    else:
        documents = json.loads(request.POST.get('documents'))

    documents = json.loads(documents)
    docs = []

    for doc in documents:
        if not request.user.is_superuser:
            doc['fields']['owner'] = [request.user.username]
        owner = doc['fields']['owner'][0]
Example #39
0
File: api2.py Project: cloudera/hue
                try:
                    from spark.models import Notebook

                    zfile.writestr(
                        "notebook-%s-%s.txt" % (doc.name, doc.id), smart_str(Notebook(document=doc).get_str())
                    )
                except Exception, e:
                    LOG.exception(e)
        zfile.close()
        response = HttpResponse(content_type="application/zip")
        response["Content-Length"] = len(f.getvalue())
        response["Content-Disposition"] = 'attachment; filename="%s".zip' % filename
        response.write(f.getvalue())
        return response
    else:
        return make_response(f.getvalue(), "json", filename)


@ensure_csrf_cookie
def import_documents(request):
    def is_reserved_directory(doc):
        return doc["fields"]["type"] == "directory" and doc["fields"]["name"] in (
            Document2.HOME_DIR,
            Document2.TRASH_DIR,
        )

    try:
        if request.FILES.get("documents"):
            documents = request.FILES["documents"].read()
        else:
            documents = json.loads(request.POST.get("documents"))
Example #40
0
File: api2.py Project: cloudera/hue
    zfile.writestr("hue.json", f.getvalue())
    for doc in docs:
      if doc.type == 'notebook':
        try:
          from spark.models import Notebook
          zfile.writestr("notebook-%s-%s.txt" % (doc.name, doc.id), smart_str(Notebook(document=doc).get_str()))
        except Exception, e:
          LOG.exception(e)
    zfile.close()
    response = HttpResponse(content_type="application/zip")
    response["Content-Length"] = len(f.getvalue())
    response['Content-Disposition'] = 'attachment; filename="%s".zip' % filename
    response.write(f.getvalue())
    return response
  else:
    return make_response(f.getvalue(), 'json', filename)


@ensure_csrf_cookie
def import_documents(request):
  def is_reserved_directory(doc):
    return doc['fields']['type'] == 'directory' and doc['fields']['name'] in (Document2.HOME_DIR, Document2.TRASH_DIR)

  try:
    if request.FILES.get('documents'):
      documents = request.FILES['documents'].read()
    else:
      documents = json.loads(request.POST.get('documents'))

    documents = json.loads(documents)
  except ValueError, e:
Example #41
0
File: api2.py Project: san21886/hue
    for doc in docs:
      if doc.type == 'notebook':
        try:
          from spark.models import Notebook
          zfile.writestr("notebook-%s-%s.txt" % (doc.name, doc.id), smart_str(Notebook(document=doc).get_str()))
        except Exception, e:
          print e
          LOG.exception(e)
    zfile.close()
    response = HttpResponse(content_type="application/zip")
    response["Content-Length"] = len(f.getvalue())
    response['Content-Disposition'] = 'attachment; filename="hue-documents.zip"'
    response.write(f.getvalue())
    return response
  else:
    return make_response(f.getvalue(), 'json', 'hue-documents')


def import_documents(request):
  if request.FILES.get('documents'):
    documents = request.FILES['documents'].read()
  else:
    documents = json.loads(request.POST.get('documents'))

  documents = json.loads(documents)
  docs = []

  for doc in documents:
    if not request.user.is_superuser:
      doc['fields']['owner'] = [request.user.username]
    owner = doc['fields']['owner'][0]
Example #42
0
                try:
                    from spark.models import Notebook

                    zfile.writestr(
                        "notebook-%s-%s.txt" % (doc.name, doc.id), smart_str(Notebook(document=doc).get_str())
                    )
                except Exception, e:
                    LOG.exception(e)
        zfile.close()
        response = HttpResponse(content_type="application/zip")
        response["Content-Length"] = len(f.getvalue())
        response["Content-Disposition"] = 'attachment; filename="hue-documents.zip"'
        response.write(f.getvalue())
        return response
    else:
        return make_response(f.getvalue(), "json", "hue-documents")


@ensure_csrf_cookie
def import_documents(request):
    if request.FILES.get("documents"):
        documents = request.FILES["documents"].read()
    else:
        documents = json.loads(request.POST.get("documents"))

    documents = json.loads(documents)
    docs = []

    uuids_map = dict((doc["fields"]["uuid"], None) for doc in documents)

    for doc in documents: