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
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)
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
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)
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)
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)
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)
def get_upload_table(filename): table_find = get_table(filename.replace('.xls', '')) return render_template('home.html', get_table=table_find)