import logging logger = logging.getLogger(__name__) _GROUPS = [ {"module": "client", "key": "source", "label_zh": "客源来源", "description": "客源从何处获取,用于来源渠道分析", "sort_order": 1}, {"module": "client", "key": "follow_purpose", "label_zh": "跟进目的", "description": "客源跟进时选择的目的分类", "sort_order": 2}, {"module": "property", "key": "source", "label_zh": "房源来源", "description": "房源从何处获取", "sort_order": 3}, ] _ITEMS = { ("client", "source"): [ {"value": "store_reception", "label_zh": "门店接待", "sort_order": 1}, {"value": "old_client_referral", "label_zh": "老客户转介绍", "sort_order": 2}, {"value": "stationed_dispatch", "label_zh": "驻守派单", "sort_order": 3}, {"value": "walk_in", "label_zh": "上门", "sort_order": 4}, {"value": "online_58", "label_zh": "网络-58同城", "sort_order": 5}, {"value": "online_anjuke", "label_zh": "网络-安居客", "sort_order": 6}, {"value": "wechat", "label_zh": "微信", "sort_order": 7}, {"value": "friend_referral", "label_zh": "朋友介绍", "sort_order": 8}, ], ("client", "follow_purpose"): [ {"value": "callback", "label_zh": "回拨", "sort_order": 1}, {"value": "push_property", "label_zh": "推房", "sort_order": 2}, {"value": "showing", "label_zh": "带看", "sort_order": 3}, {"value": "maintain", "label_zh": "维护", "sort_order": 4}, {"value": "other", "label_zh": "其他", "sort_order": 5}, ], ("property", "source"): [ {"value": "proactive_development", "label_zh": "主动开发", "sort_order": 1}, {"value": "owner_walk_in", "label_zh": "业主上门", "sort_order": 2}, {"value": "old_client_referral", "label_zh": "老客户转介绍", "sort_order": 3}, {"value": "online_inquiry", "label_zh": "网络来电", "sort_order": 4}, ], } _TENANT_SETTINGS = [ {"category": "client", "key": "duplicate_check_scope", "value": {"v": "self"}, "value_type": "enum"}, ] _FIELD_RULES = [ {"module": "property", "entity_type": "residential", "trade_status": "sale", "field_key": "orientation", "requirement": "optional"}, {"module": "property", "entity_type": "residential", "trade_status": "sale", "field_key": "decoration", "requirement": "optional"}, {"module": "property", "entity_type": "residential", "trade_status": "sale", "field_key": "floor", "requirement": "optional"}, {"module": "property", "entity_type": "residential", "trade_status": "sale", "field_key": "building_area", "requirement": "required"}, {"module": "property", "entity_type": "residential", "trade_status": "sale", "field_key": "inner_area", "requirement": "optional"}, {"module": "property", "entity_type": "residential", "trade_status": "sale", "field_key": "room_layout", "requirement": "required"}, {"module": "property", "entity_type": "residential", "trade_status": "rent", "field_key": "decoration", "requirement": "optional"}, {"module": "property", "entity_type": "residential", "trade_status": "rent", "field_key": "floor", "requirement": "optional"}, {"module": "property", "entity_type": "residential", "trade_status": "rent", "field_key": "building_area", "requirement": "required"}, {"module": "property", "entity_type": "residential", "trade_status": "rent", "field_key": "room_layout", "requirement": "required"}, ] def seed_default_lookups(schema_name: str) -> None: from django.apps import apps LookupGroup = apps.get_model("fonrey_setting", "LookupGroup") LookupItem = apps.get_model("fonrey_setting", "LookupItem") TenantSetting = apps.get_model("fonrey_setting", "TenantSetting") FieldRequirementRule = apps.get_model("fonrey_setting", "FieldRequirementRule") group_map = {} for gd in _GROUPS: group, _ = LookupGroup.objects.get_or_create( module=gd["module"], key=gd["key"], defaults={ "label_zh": gd["label_zh"], "description": gd["description"], "sort_order": gd["sort_order"], }, ) group_map[(gd["module"], gd["key"])] = group item_objects = [] for (module, key), items in _ITEMS.items(): group = group_map[(module, key)] for item in items: item_objects.append( LookupItem( group=group, value=item["value"], label_zh=item["label_zh"], is_system=True, is_active=True, sort_order=item["sort_order"], ) ) LookupItem.objects.bulk_create(item_objects, ignore_conflicts=True) ts_objects = [ TenantSetting( category=ts["category"], key=ts["key"], value=ts["value"], value_type=ts["value_type"], ) for ts in _TENANT_SETTINGS ] TenantSetting.objects.bulk_create(ts_objects, ignore_conflicts=True) rule_objects = [ FieldRequirementRule( module=r["module"], entity_type=r["entity_type"], trade_status=r["trade_status"], field_key=r["field_key"], requirement=r["requirement"], ) for r in _FIELD_RULES ] FieldRequirementRule.objects.bulk_create(rule_objects, ignore_conflicts=True)