コード例 #1
0
def create_custom_field(ifs, fieldname, tablename='Contact',
                        fieldtype='Text', values=None):
    form_id = -1
    query_criteria = {'Label': fieldname, 'FormId': form_id}
    existing_fields = get_table(ifs, 'DataFormField', query_criteria)
    if existing_fields and len(existing_fields) > 1:
        raise ValueError(
            f'InfusionsoftAPIError: two custom fields with the same label: '
            f'{existing_fields[0]["Label"]}')

    existing_field = existing_fields[0] if existing_fields else None

    field = {}
    if not existing_field:
        header_id = get_custom_field_header(ifs, tablename)

        created_field = ifs.DataService(
            'addCustomField',
            tablename,
            fieldname,
            fieldtype,
            header_id)
        if isinstance(created_field, tuple) or not created_field:
            raise ValueError(
                f'InfusionsoftAPIError: custom field could not be created:'
                f'{created_field[1]}')
        field['Id'] = created_field

        field['Name'] = "_" + get_table(
            ifs,
            'DataFormField',
            {'Id': created_field},
            ['Name'])[0]['Name']

        if values:
            created_values = ifs.DataService(
                'updateCustomField',
                field['Id'],
                {'Values': values})
            if isinstance(created_values, tuple):
                raise ValueError(
                    'InfusionsoftAPIError: custom field values'
                    ' could not be added')
    else:
        field['Id'] = existing_field['Id']
        field['Name'] = '_' + existing_field['Name']

    return field
コード例 #2
0
ファイル: rest_server.py プロジェクト: vmorariu/picarus
def data_table(_auth_user, table_name):
    table = tables.get_table(_auth_user, table_name)
    method = bottle.request.method.upper()
    if method == 'GET':
        return table.get_table(columns=parse_columns())
    elif method == 'POST':
        return table.post_table(*parse_params_files())
    else:
        bottle.abort(403)
コード例 #3
0
ファイル: rest_server.py プロジェクト: sanchan/picarus
def data_table(_auth_user, table_name):
    table = tables.get_table(_auth_user, table_name)
    method = bottle.request.method.upper()
    if method == 'GET':
        return table.get_table(columns=parse_columns())
    elif method == 'POST':
        return table.post_table(*parse_params_files())
    else:
        bottle.abort(403)
コード例 #4
0
def get_custom_field_header(ifs, tablename='Contact'):
    """Checks if field exists by given fieldname
    Returns header id"""

    form_id = -1
    tab = get_table(ifs, 'DataFormTab', {'FormId': form_id})
    if not tab:
        raise ValueError(
            f'InfusionsoftAPIError: {tablename} custom '
            f'field tab does not exist')
    tab_id = tab[0]['Id']

    header = get_table(ifs, 'DataFormGroup', {'TabId': tab_id})
    if not header:
        raise ValueError(
            f'InfusionsoftAPIError: {tablename} custom '
            f'field header does not exist')
    header_id = header[0]['Id']
    return header_id
コード例 #5
0
ファイル: rest_server.py プロジェクト: strategist922/picarus
def data_slice(_auth_user, table_name, start_row, stop_row):
    table = tables.get_table(_auth_user, table_name)
    method = bottle.request.method.upper()
    start_row = base64.urlsafe_b64decode(start_row)
    stop_row = base64.urlsafe_b64decode(stop_row)
    if method == 'GET':
        return table.get_slice(start_row, stop_row, parse_columns(), *parse_params_files())
    elif method == 'PATCH':
        return table.patch_slice(start_row, stop_row, *parse_params_files())
    elif method == 'POST':
        print_request()
        return table.post_slice(start_row, stop_row, *parse_params_files())
    else:
        bottle.abort(403)
コード例 #6
0
ファイル: rest_server.py プロジェクト: strategist922/picarus
def data_row(_auth_user, table_name, row):
    table = tables.get_table(_auth_user, table_name)
    method = bottle.request.method.upper()
    row = base64.urlsafe_b64decode(row)
    method = bottle.request.method.upper()
    if method == 'GET':
        return table.get_row(row, parse_columns())
    elif method == 'PATCH':
        return table.patch_row(row, *parse_params_files())
    elif method == 'POST':
        return table.post_row(row, *parse_params_files())
    elif method == 'DELETE':
        return table.delete_row(row)
    else:
        bottle.abort(403)
コード例 #7
0
ファイル: rest_server.py プロジェクト: vmorariu/picarus
def data_row(_auth_user, table_name, row):
    table = tables.get_table(_auth_user, table_name)
    method = bottle.request.method.upper()
    row = base64.urlsafe_b64decode(row)
    method = bottle.request.method.upper()
    if method == 'GET':
        return table.get_row(row, parse_columns())
    elif method == 'PATCH':
        return table.patch_row(row, *parse_params_files())
    elif method == 'POST':
        return table.post_row(row, *parse_params_files())
    elif method == 'DELETE':
        return table.delete_row(row)
    else:
        bottle.abort(403)
コード例 #8
0
def upload_file():
    if request.method == 'POST':
        file = request.files['file']
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            rows = table(os.path.join(app.config['UPLOAD_FOLDER'], filename),
                         filename)
            files = get_names()
            table_find = get_table(filename.replace('.xls', ''))
            os.remove(os.path.join(app.config['UPLOAD_FOLDER'], filename))
    return render_template('home.html',
                           tables=rows,
                           files=files,
                           get_table=table_find)
コード例 #9
0
ファイル: rest_server.py プロジェクト: strategist922/picarus
def data_column(_auth_user, table_name, row, column):
    table = tables.get_table(_auth_user, table_name)
    row = base64.urlsafe_b64decode(row)
    column = base64.urlsafe_b64decode(column)
    return table.delete_column(row, column)
コード例 #10
0
ファイル: rest_server.py プロジェクト: vmorariu/picarus
def data_column(_auth_user, table_name, row, column):
    table = tables.get_table(_auth_user, table_name)
    row = base64.urlsafe_b64decode(row)
    column = base64.urlsafe_b64decode(column)
    return table.delete_column(row, column)
コード例 #11
0
def get_upload_table(filename):
    table_find = get_table(filename.replace('.xls', ''))
    return render_template('home.html', get_table=table_find)