# coding: utf-8

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'Brick.settings'

from Brick.App.system.models import (
    PositionCategory,
    PositionCategoryTag,
)


def init_level_1():
    level_1_tag = (
        ('技术', 'technology'),
        ('产品', 'product'),
        ('设计', 'design'),
        ('运营', 'operate'),
        ('市场', 'market'),
        ('行政', 'administration')
    )
    for i in level_1_tag:
        name, code = i
        has_tag = PositionCategory.objects.filter(name=name)
        if has_tag:
            continue
        c = PositionCategory(
            name=name,
            code_name=code,
        )
        c.save()


def init_level_2():
    level_2_tag = (
        ('后端开发', 'back_end', '技术'),
        ('移动开发', 'mobile_develope', '技术'),
        ('前端开发', 'front_end', '技术'),
        ('测试', 'testing', '技术'),
        ('DBA', 'dba', '技术'),
        ('项目管理', 'project_nanagement', '技术'),
        ('高端技术', 'high_technology', '技术'),
        ('系统分析', 'system_analysis', '技术'),
        ('产品经理', 'product_manager', '产品'),
        ('产品设计师', 'product_designer', '产品'),
        ('高端产品', 'high_product', '产品'),
        ('平面设计', 'graphic_design', '设计'),
        ('视觉设计', 'visual_design', '设计'),
        ('交互设计', 'interaction_design', '设计'),
        ('用户研究', 'user_research', '设计'),
        ('高端设计', 'high_design', '设计'),
        ('运营', 'operate', '运营'),
        ('编辑', 'editor', '运营'),
        ('客服', 'service', '运营'),
        ('高端运营', 'high_operate', '运营'),
        ('市场/营销', 'market', '市场'),
        ('公关', 'public_relation', '市场'),
        ('销售', 'sale', '市场'),
        ('供应链', 'supply_chain', '市场'),
        ('采购', 'purchase', '市场'),
        ('投资', 'invest', '市场'),
        ('高端市场', 'high_market', '市场'),
        ('人力资源', 'hr', '行政'),
        ('行政', 'administration', '行政'),
        ('财务', 'financial', '行政'),
        ('法务', 'legal', '行政'),
        ('高端行政', 'high_legal', '行政'),
        ('运维', 'maintenance', '技术'),
        ('高端职位', 'high_market', '市场'),
    )
    for i in level_2_tag:
        name, code, level_1 = i
        parent_tag = PositionCategory.objects.get(
            name=level_1,
        )
        has_tag = PositionCategoryTag.objects.filter(
            name=name,
            code_name=code,
            category=parent_tag,
            parent=None,
        )
        if has_tag:
            continue
        tag = PositionCategoryTag(
            name=name,
            code_name=code,
            category=parent_tag,
        )   
        tag.save()
        print name


def init_level_3():
    level_3_tag = (
        ('Java', 'java', '后端开发', '技术'),
        ('C/C++', 'c/c++', '后端开发', '技术'),
        ('PHP', 'php', '后端开发', '技术'),
        ('数据挖掘', 'data_mining', '后端开发', '技术'),
        ('自然语言处理', 'nlp', '后端开发', '技术'),
        ('搜索算法', 'search_algorithm', '后端开发', '技术'),
        ('精准推荐', 'precision_recommend', '后端开发', '技术'),
        ('C#', 'c#', '后端开发', '技术'),
        ('全栈工程师', 'full_stack', '后端开发', '技术'),
        ('.NET', '.net', '后端开发', '技术'),
        ('Hadoop', 'hadoop', '后端开发', '技术'),
        ('Spark', 'spark', '后端开发', '技术'),
        ('Shark', 'shark', '后端开发', '技术'),
        ('Hive', 'hive', '后端开发', '技术'),
        ('Python', 'python', '后端开发', '技术'),
        ('Delphi', 'delphi', '后端开发', '技术'),
        ('VB', 'vb', '后端开发', '技术'),
        ('Perl', 'perl', '后端开发', '技术'),
        ('Ruby', 'ruby', '后端开发', '技术'),
        ('Node.js', 'node.js', '后端开发', '技术'),
        ('Go', 'go', '后端开发', '技术'),
        ('ASP', 'asp', '后端开发', '技术'),
        ('Shell', 'shell', '后端开发', '技术'),
        ('erlang', 'erlang', '后端开发', '技术'),
        ('J2EE', 'j2ee', '后端开发', '技术'),
        ('服务端', 'server', '后端开发', '技术'),
        ('HTML5', 'html5', '移动开发', '技术'),
        ('Android', 'android', '移动开发', '技术'),
        ('iOS', 'ios', '移动开发', '技术'),
        ('WP', 'wp', '移动开发', '技术'),
        ('web前端', 'web_front_end', '前端开发', '技术'),
        ('Flash', 'flash', '前端开发', '技术'),
        ('HTML5', 'html5', '前端开发', '技术'),
        ('JavaScript', 'javascript', '前端开发', '技术'),
        ('U3D', 'u3d', '前端开发', '技术'),
        ('AS3', 'as3', '前端开发', '技术'),
        ('Cocos2D-X', 'cocos2d-x', '前端开发', '技术'),
        ('QA', 'qa', '测试', '技术'),
        ('自动化测试', 'auto_test', '测试', '技术'),
        ('功能测试', 'function_test', '测试', '技术'),
        ('性能测试', 'performance_test', '测试', '技术'),
        ('测试开发', 'test_development', '测试', '技术'),
        ('游戏测试', 'game_test', '测试', '技术'),
        ('白盒测试', 'white_box_test', '测试', '技术'),
        ('灰盒测试', 'gray_box_test', '测试', '技术'),
        ('黑盒测试', 'black_box_test', '测试', '技术'),
        ('手机测试', 'mobile_test', '测试', '技术'),
        ('硬件测试', 'hardware_test', '测试', '技术'),
        ('测试经理', 'test_manager', '测试', '技术'),
        ('运维工程师', 'operate_engineer', '运维', '技术'),
        ('运维开发', 'operation_development', '运维', '技术'),
        ('网络工程师', 'network_engineer', '运维', '技术'),
        ('系统工程师', 'system_engineer', '运维', '技术'),
        ('IT支持', 'IT_support', '运维', '技术'),
        ('IDC', 'idc', '运维', '技术'),
        ('CDN', 'cdn', '运维', '技术'),
        ('F5', 'f5', '运维', '技术'),
        ('系统管理员', 'system_administrator', '运维', '技术'),
        ('病毒分析', 'virus_analysis', '运维', '技术'),
        ('web分析', 'web_analysis', '运维', '技术'),
        ('网络安全', 'network_security', '运维', '技术'),
        ('系统安全', 'system_security', '运维', '技术'),
        ('运维经理', 'operate_manager', '运维', '技术'),
        ('系统维护', 'system_maintenance', '运维', '技术'),
        ('MySQL', 'mysql', 'DBA', '技术'),
        ('SQLServer', 'sqlserver', 'DBA', '技术'),
        ('Oracle', 'oracle', 'DBA', '技术'),
        ('DB2', 'db2', 'DBA', '技术'),
        ('MongoDB', 'mongodb', 'DBA', '技术'),
        ('ETL', 'etl', 'DBA', '技术'),
        ('Hive', 'hive', 'DBA', '技术'),
        ('数据仓库', 'data_warehouse', 'DBA', '技术'),
        ('项目经理', 'project_manager', '项目管理', '技术'),
        ('项目助理', 'project_assistant', '项目管理', '技术'),
        ('开发主管', 'develope_manager', '高端技术', '技术'),
        ('主程', 'chief_programmer', '高端技术', '技术'),
        ('技术经理', 'technical_manager', '高端技术', '技术'),
        ('架构师', 'architect', '高端技术', '技术'),
        ('CTO', 'cto', '高端技术', '技术'),
        ('运维总监', 'operate_director', '高端技术', '技术'),
        ('技术合伙人', 'technical_partner', '高端技术', '技术'),
        ('技术顾问', 'technical_adviser', '高端技术', '技术'),
        ('项目总监', 'project_director', '高端技术', '技术'),
        ('测试总监', 'test_director', '高端技术', '技术'),
        ('安全专家', 'security_expert', '高端技术', '技术'),
        ('其他', 'other', '高端技术', '技术'),
        ('产品经理', 'pm', '产品经理', '产品'),
        ('网页产品经理', 'web_pm', '产品经理', '产品'),
        ('移动产品经理', 'mobile_pm', '产品经理', '产品'),
        ('产品助理', 'product_assistant', '产品经理', '产品'),
        ('数据产品经理', 'data_pm', '产品经理', '产品'),
        ('电商产品经理', 'e_commerce_pm', '产品经理', '产品'),
        ('产品实习', 'product_intern', '产品经理', '产品'),
        ('游戏策划', 'game_designer', '产品经理', '产品'),
        ('网页产品设计', 'web_product_designer', '产品设计师', '产品'),
        ('无线产品设计', 'mobile_product_designer', '产品设计师', '产品'),
        ('产品部经理', 'product_dept_manager', '高端产品', '产品'),
        ('产品总监', 'product_director', '高端产品', '产品'),
        ('游戏制作人', 'game_producer', '高端产品', '产品'),
        ('美术设计', 'art_design', '美术', '设计'),
        ('主美', 'lead_artist', '美术', '设计'),
        ('美工', 'art_design', '平面设计', '设计'),
        ('网页美工', 'web_art_design', '平面设计', '设计'),
        ('视觉设计', 'visual_design', '视觉设计', '设计'),
        ('网页设计', 'web_design', '视觉设计', '设计'),
        ('Flash设计', 'flash_design', '视觉设计', '设计'),
        ('APP设计', 'app_design', '视觉设计', '设计'),
        ('UI设计', 'ui_design', '视觉设计', '设计'),
        ('美术设计', 'art_design', '视觉设计', '设计'),
        ('2D/3D', '2d/3d', '视觉设计', '设计'),
        ('广告设计', 'ad_desigh', '视觉设计', '设计'),
        ('多媒体设计', 'media_design', '视觉设计', '设计'),
        ('原画师', 'concept_artist', '视觉设计', '设计'),
        ('游戏特效', 'game_effects', '视觉设计', '设计'),
        ('游戏界面设计', 'game_interface_design', '视觉设计', '设计'),
        ('游戏场景', 'game_scene', '视觉设计', '设计'),
        ('游戏角色', 'game_role', '视觉设计', '设计'),
        ('游戏动作', 'game_action', '视觉设计', '设计'),
        ('交互设计', 'interaction_design', '交互设计', '设计'),
        ('无线交互设计', 'mobile_interaction_design', '交互设计', '设计'),
        ('网页交互设计', 'web_interaction_design', '交互设计', '设计'),
        ('硬件交互设计', 'hardware_interaction_design', '交互设计', '设计'),
        ('数据分析', 'data_analysis', '用户研究', '设计'),
        ('用户研究', 'user_research', '用户研究', '设计'),
        ('游戏数值策划', 'game_numerical', '用户研究', '设计'),
        ('设计经理', 'design_manager', '高端设计', '设计'),
        ('设计总监', 'design_director', '高端设计', '设计'),
        ('视觉设计经理', 'visual_design_manager', '高端设计', '设计'),
        ('视觉设计总监', 'visual_design_director', '高端设计', '设计'),
        ('交互设计经理', 'interaction_design_manager', '高端设计', '设计'),
        ('交互设计总监', 'interaction_design_director', '高端设计', '设计'),
        ('用户研究经理', 'user_research_manager', '高端设计', '设计'),
        ('用户研究总监', 'user_research_director', '高端设计', '设计'),
        ('用户运营', 'user_operate', '运营', '运营'),
        ('产品运营', 'product_operate', '运营', '运营'),
        ('数据运营', 'data_operate', '运营', '运营'),
        ('内容运营', 'content_operate', '运营', '运营'),
        ('活动运营', 'activity_operate', '运营', '运营'),
        ('商家运营', 'business_operate', '运营', '运营'),
        ('品类运营', 'category_operate', '运营', '运营'),
        ('游戏运营', 'game_operate', '运营', '运营'),
        ('网络推广', 'network_promotion', '运营', '运营'),
        ('运营专员', 'specialist', '运营', '运营'),
        ('网店运营', 'online_store_operate', '运营', '运营'),
        ('新媒体运营', 'media_operate', '运营', '运营'),
        ('海外运营', 'overseas_operate', '运营', '运营'),
        ('运营经理', 'operate_manager', '运营', '运营'),
        ('竞价', 'bidding', '运营', '运营'),
        ('SEO', 'seo', '运营', '运营'),
        ('美术编辑', 'art_editor', '编辑', '运营'),
        ('编辑组长', 'editor_leader', '编辑', '运营'),
        ('副主编', 'subeditor', '编辑', '运营'),
        ('内容编辑', 'content_editor', '编辑', '运营'),
        ('文案策划', 'copywriter_plan', '编辑', '运营'),
        ('记者', 'reporter', '编辑', '运营'),
        ('售前咨询', 'pre_consultation', '客服', '运营'),
        ('售后咨询', 'after_consultation', '客服', '运营'),
        ('淘宝客服', 'taobao_service', '客服', '运营'),
        ('客服经理', 'service_manager', '客服', '运营'),
        ('主编', 'chief_editor', '高端运营', '运营'),
        ('运营总监', 'operate_director', '高端运营', '运营'),
        ('COO', 'coo', '高端运营', '运营'),
        ('客服总监', 'service_director', '高端运营', '运营'),
        ('BD专员', 'bd_specilist', '市场/营销', '市场'),
        ('商务拓展', 'bd', '市场/营销', '市场'),
        ('市场营销', 'marketing', '市场/营销', '市场'),
        ('市场策划', 'market_plan', '市场/营销', '市场'),
        ('市场顾问', 'market_consultant', '市场/营销', '市场'),
        ('市场推广', 'market_promotion', '市场/营销', '市场'),
        ('SEO', 'seo', '市场/营销', '市场'),
        ('SEM', 'sem', '市场/营销', '市场'),
        ('商务渠道', 'business_channel', '市场/营销', '市场'),
        ('商业数据分析', 'business_data_analysis', '市场/营销', '市场'),
        ('活动策划', 'activity_plan', '市场/营销', '市场'),
        ('网络营销', 'network_market', '市场/营销', '市场'),
        ('海外市场', 'overseas_market', '市场/营销', '市场'),
        ('政府关系', 'government_relation', '市场/营销', '市场'),
        ('媒介经理', 'media_manager', '公关', '市场'),
        ('广告协调', 'advertising_coordinator', '公关', '市场'),
        ('品牌公关', 'brand_pr', '公关', '市场'),
        ('促销专员', 'promotion_specialist', '销售', '市场'),
        ('销售经理', 'sales_manager', '销售', '市场'),
        ('客户代表', 'customer_representative', '销售', '市场'),
        ('BD经理', 'bd_manager', '销售', '市场'),
        ('渠道销售', 'channel_sale', '销售', '市场'),
        ('代理商销售', 'sale_agent', '销售', '市场'),
        ('销售助理', 'sale_assistant', '销售', '市场'),
        ('电话销售', 'telesales', '销售', '市场'),
        ('销售顾问', 'sale_consultant', '销售', '市场'),
        ('商品经理', 'product_manager', '销售', '市场'),
        ('物流', 'logistics', '供应链', '市场'),
        ('仓储', 'storage', '供应链', '市场'),
        ('分析师', 'analyst', '投资', '市场'),
        ('投资顾问', 'invest_adviser', '投资', '市场'),
        ('投资经理', 'invest_manager', '投资', '市场'),
        ('市场总监', 'market_director', '高端职位', '市场'),
        ('销售总监', 'sale_director', '高端职位', '市场'),
        ('商务总监', 'business_director', '高端职位', '市场'),
        ('CMO', 'cmo', '高端职位', '市场'),
        ('公关总监', 'pr_director', '高端职位', '市场'),
        ('采购总监', 'purchasing_director', '高端职位', '市场'),
        ('投资总监', 'invest_director', '高端职位', '市场'),
        ('人力资源', 'hr', '人力资源', '行政'),
        ('招聘', 'recruit', '人力资源', '行政'),
        ('HRBP', 'hrbp', '人力资源', '行政'),
        ('培训经理', 'training_manager', '人力资源', '行政'),
        ('薪资福利', 'remuneration', '人力资源', '行政'),
        ('薪酬', 'payment', '人力资源', '行政'),
        ('员工关系', 'employee_relations', '人力资源', '行政'),
        ('绩效考核', 'performance_assessment', '人力资源', '行政'),
        ('助理', 'assistant', '行政', '行政'),
        ('前台', 'receptionist', '行政', '行政'),
        ('行政', 'administration', '行政', '行政'),
        ('总助', 'gm_assistant', '行政', '行政'),
        ('文秘', 'secretarial', '行政', '行政'),
        ('文员', 'clerk', '行政', '行政'),
        ('会计', 'accountant', '财务', '行政'),
        ('出纳', 'cashier', '财务', '行政'),
        ('财务', 'finance', '财务', '行政'),
        ('结算', 'settlement', '财务', '行政'),
        ('税务', 'taxation', '财务', '行政'),
        ('审计', 'auditor', '财务', '行政'),
        ('风控', 'risk_management', '财务', '行政'),
        ('法务', 'legal', '法务', '行政'),
        ('律师', 'lawyer', '法务', '行政'),
        ('专利', 'patent', '法务', '行政'),
        ('行政经理', 'administration_manager', '高端职位', '行政'),
        ('行政总监', 'administration_director', '高端职位', '行政'),
        ('财务经理', 'finance_manager', '高端职位', '行政'),
        ('财务总监', 'finance_director', '高端职位', '行政'),
        ('HRD/HRM', 'hrd/hrm', '高端职位', '行政'),
        ('CFO', 'cfo', '高端职位', '行政'),
    )

    for i in level_3_tag:
        name, code, level_2, level_1 = i
        parent_tag = PositionCategory.objects.get(
            name=level_1,
        )
        try:
            level_2_tag = PositionCategoryTag.objects.get(
                name=level_2,
                parent=None,
            )
        except:
            print 'not found', name, code, level_2, level_1
            continue
        has_tag = PositionCategoryTag.objects.filter(
            name=name,
            code_name=code,
            category=parent_tag,
            parent=level_2_tag,
        )
        if has_tag:
            continue
        tag = PositionCategoryTag(
            name=name,
            code_name=code,
            category=parent_tag,
            parent=level_2_tag,
        )   
        tag.save()
        print name

if __name__ == '__main__':
    init_level_2()
    init_level_3()
