cm/app.py

67 lines
2.7 KiB
Python

from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)
# 全局变量,存储传递进来的嵌套字典数据
customer_data = []
@app.route('/')
def index():
# 默认展示第一个客户
return redirect(url_for('view_customer', index=0))
@app.route('/customer/<int:index>')
def view_customer(index):
# 判断是否有数据
if not customer_data:
return "No customer data provided.", 400
# 确保index在合法范围内
if index < 0 or index >= len(customer_data):
return "Index out of range.", 400
customer = customer_data[index]
# 为每个 email_addresses 列表中的项添加唯一的索引
for domain, info in customer.items():
if 'email_addresses' in info and isinstance(info['email_addresses'], list):
for email_idx, email in enumerate(info['email_addresses']):
email['idx'] = email_idx # 给每个email项添加唯一的索引
is_first = index == 0
is_last = index == len(customer_data) - 1
return render_template('edit_customers.html',
customer=customer,
index=index,
is_first=is_first,
is_last=is_last)
@app.route('/update/<int:index>', methods=['POST'])
def update_customers(index):
updated_data = request.form.to_dict(flat=False)
# 更新嵌套字典数据
if 0 <= index < len(customer_data):
customer = customer_data[index]
for domain, info in customer.items():
if 'customer_industry' in info:
info['customer_industry'] = updated_data.get(f'{domain}_industry', [info['customer_industry']])[0]
if 'email_addresses' in info and isinstance(info['email_addresses'], list):
for j, email in enumerate(info['email_addresses']):
email['owner_name'] = updated_data.get(f'{domain}_owner_name_{j}', [email['owner_name']])[0]
email['email_address'] = updated_data.get(f'{domain}_email_address_{j}', [email['email_address']])[0]
email['category'] = updated_data.get(f'{domain}_category_{j}', [email['category']])[0]
email['promotion_history'] = updated_data.get(f'{domain}_promotion_history_{j}', [', '.join(email['promotion_history'])])[0].split(', ')
return redirect(url_for('view_customer', index=index))
def set_customer_data(data):
global customer_data
# 确保数据为嵌套字典格式
if isinstance(data, list) and all(isinstance(customer, dict) for customer in data):
customer_data = data
else:
raise ValueError("Data must be a list of dictionaries.")