Ejemplo n.º 1
0
def csv():
    ''' to export tables to `.csv` file '''
    form = CSVForm()

    if form.validate_on_submit():
        tabels = [t[0] for t in EXPORT_TABLES]

        if form.table.data not in tabels:
            flash('Error: wrong entry, something went wrong', 'danger')
            return redirect(url_for('core.root'))

        module = getattr(data, form.table.data, None)
        csv_path = absolute_path(f'csv_{form.table.data}.csv')
        delimiter = EXPORT_DELIMETERS[form.delimiter.data]

        with open(csv_path, 'w+') as csv_file:
            fields = get_module_columns(module)
            csv_buffer = DictWriter(csv_file,
                                    delimiter=delimiter,
                                    fieldnames=fields)
            rows = [{fields[i]: value
                     for i, value in enumerate(values)}
                    for values in get_module_values(module)]

            form.headers.data and csv_buffer.writeheader()
            csv_buffer.writerows(rows)

        return send_file(csv_path, mimetype='csv', as_attachment=True)

    return render_template('csvs.html',
                           navbar='#snb3',
                           page_title='Export CSV',
                           form=form)
Ejemplo n.º 2
0
def test_get_ticket(c):
    ticket = Serial.all_clean().first()
    auth_token = AuthTokens.get()
    response = c.get(f'{BASE}/{ticket.id}',
                     follow_redirects=True,
                     headers={'Authorization': auth_token.token})

    assert response.status == '200 OK'
    assert Serial.get(response.json.get('id')).id == ticket.id
    assert all(p in response.json for p in get_module_columns(Serial)) is True
Ejemplo n.º 3
0
def test_pull_ticket(c):
    auth_token = AuthTokens.get()
    response = c.get(f'{BASE}/pull',
                     follow_redirects=True,
                     headers={'Authorization': auth_token.token})
    ticket = Serial.get(response.json.get('id'))

    assert response.status == '200 OK'
    assert ticket is not None
    assert ticket.p is True
    assert all(p in response.json for p in get_module_columns(Serial)) is True
Ejemplo n.º 4
0
def test_update_ticket(c):
    ticket = Serial.all_clean().first()
    new_name = 'new testing name'
    auth_token = AuthTokens.get()
    response = c.put(f'{BASE}/{ticket.id}',
                     follow_redirects=True,
                     headers={'Authorization': auth_token.token},
                     json={'name': new_name})

    assert response.status == '200 OK'
    assert Serial.get(response.json.get('id')).name == new_name
    assert all(p in response.json for p in get_module_columns(Serial)) is True
Ejemplo n.º 5
0
def test_list_tickets(c):
    auth_token = AuthTokens.get()
    response = c.get(BASE,
                     follow_redirects=True,
                     headers={'Authorization': auth_token.token})

    assert response.status == '200 OK'
    assert len(response.json) > 0
    assert LIMIT_PER_CHUNK > len(response.json)

    for t in response.json:
        assert Task.get(t.get('id')) is not None
        assert all(p in t for p in get_module_columns(Task)) is True
Ejemplo n.º 6
0
def test_csv_export_headers_disabled_and_tabs(client):
    with client.application.app_context():
        header = get_module_columns(User)
        rows = get_module_values(User)

    response = client.post('/csv', data={
        'table': 'User', 'headers': 0, 'delimiter': 1
    }, follow_redirects=True)
    content = response.data.decode('utf-8').split('\r\n')

    assert response.status == '200 OK'
    assert len(content) > len(rows)
    assert '\t'.join(header) not in content

    for row in map('\t'.join, rows):
        assert row == content.pop(0)
Ejemplo n.º 7
0
def test_csv_export(c):
    header = get_module_columns(User)
    rows = get_module_values(User)

    response = c.post('/csv',
                      data={
                          'table': 'User',
                          'headers': 1,
                          'delimiter': 0
                      },
                      follow_redirects=True)
    content = response.data.decode('utf-8').split('\r\n')

    assert response.status == '200 OK'
    assert len(content) > (len(rows) + 1)
    assert ','.join(header) == content.pop(0)

    for row in map(','.join, rows):
        assert row == content.pop(0)
Ejemplo n.º 8
0
def test_generate_ticket(c):
    name = 'new testing name'
    task = Task.get()
    office = task.offices[0]
    auth_token = AuthTokens.get()
    response = c.post(f'{BASE}',
                      follow_redirects=True,
                      headers={'Authorization': auth_token.token},
                      json={
                          'name': name,
                          'task_id': task.id,
                          'office_id': office.id
                      })
    ticket = Serial.get(response.json.get('id'))

    assert response.status == '200 OK'
    assert ticket is not None
    assert ticket.name == name
    assert ticket.task_id == task.id
    assert ticket.office_id == office.id
    assert all(p in response.json for p in get_module_columns(Serial)) is True