python 代码生成 从mongo 到 react admin

python 代码生成 从mongo 到 react admin
D:\proj\python\starp-django\mongoKeysGenCurd.py

文档:python 代码生成 从mongo 到 react adm…
链接:http://note.youdao.com/noteshare?id=31abd0927d89972cdc1ad6eb749905f8&sub=6C9ADDD900094FB1BFBB3D8B2072C12D

import top.starp.util.mongo_util as mongo_util
# from top.starp.util.k import *
from top.starp.util import k 
from top.starp.util import common
from top.starp.util import string_util
from top.starp.util import list_util

conf=mongo_util.conf_path_to_mongodb_url(common.mongodb_conf_path_zucc)
# conf=mongo_util.conf_path_to_mongodb_url(common.mongodb_conf_path)

conn=mongo_util.get_connection(conf)
conn_st=mongo_util.getConnectionByConfPath(common.mongodb_conf_path)
# conn.get_database()
# conn.list_database_names()

# conn['admin'].command('listDatabases')
job_db=conn['job']
zucc_data_db=conn[k.zucc_data]
# job_db=conn[approve_list]


approve_list_cloc=zucc_data_db[k.approve_list]

colList_cloc=zucc_data_db[k.colList]
apiUrlMapCloc=zucc_data_db[k.apiUrlMap]

allUrlMap=apiUrlMapCloc.find({})
# apiUrlMap

use_log_db=conn_st[k.use_log]
apiKeyFind_cloc=use_log_db[k.apiKeyFind]

tao_bao_data_cloc=job_db['tao_bao_data']
# .find_one()
# print(conf)

# apiKeyAll=apiKeyFind_cloc.find({})

# apiKeyAll=apiUrlMapCloc.find({})


def columnNameGet(data_info):
    for col_info_one in data_info:
        # print(col_info_one)
        columnLabel=col_info_one[k.columnLabel]
        yes_find=string_util.find_substring_in(columnLabel,"姓名")
        # columnLabel
        if yes_find:
            # print(col_info_one)
            columnName=col_info_one[k.columnName]
            print(columnName)
            return columnName

def one_api_key(apiUrlMap):
    # apiUrlMap 
    apiName=apiUrlMap.get(k.apiName)
    # apiKey_some='643567-4f2a-4611-9fee-dbb2f57cf1'
    # apiKey_some='3a-0fa8-438b-a65e-16218d682'
    # apiName_some='近一周晚归学生\(全量数据一个学生多'
    # # 近一周晚归学生(全量数据一个学生多
    apiName_some=apiName
    # req={
    #     k.apiKey:k.like(apiKey_some),
    # }


    req={
        k.apiName:k.like(apiName_some),
    }
    lst=list(approve_list_cloc.find(req))
    # print("lst",lst)
    if len(lst)==0:
        return

    apiKeyObj=lst[0]
    print("apiKeyObj",apiKeyObj)



    # modelId=apiKeyObj[k.modelId]
    modelId=apiKeyObj.get(k.modelId)
    if modelId is None:
        print(f"modelId is None  apiKeyObj {apiKeyObj}")

    # for i in lst:
    #     print(i)

    # colList_cloc
    req_colList={
        k.id:modelId
    }

    colList_res=colList_cloc.find(req_colList)


    colInfo=colList_res[0]
    data_info=colInfo[k.data]
   

    columnName=columnNameGet(data_info)


    log_data={
        "columnName_data_info":data_info,
        "apiName_some":apiName_some,
        # "lst":lst,
        "apiKeyObj":apiKeyObj,
        "columnName":columnName,
        # "apiKey_some"
    }
    apiKeyFind_cloc.insert_one(log_data)
    print("log_data",log_data)


name='广西香蕉新鲜小米蕉水果9斤自然熟当季包邮小香芭蕉苹果蕉整箱10'
# 构建聚合管道
afterCoupon='afterCoupon'
afterCouponNum='afterCouponNum'

# mongo_util.like
pipeline = [
    {
        '$match': {
            'itemName': name
        }
    },
    {
   "$addFields": {
      afterCouponNum: { "$toDouble": f'${afterCoupon}'}
    }
  },
    {
        '$group': {
            '_id': None,
            'average': {'$avg': f'${afterCouponNum}'}
        }
    }
]


ali_go_pan_colc=use_log_db[k.ali_go_pan]
collectionName=k.col_conf
# ali_go_pan_colc.find({}).limit(1)
dataList=mongo_util.find(post_data={k.collectionName:collectionName,
                                   k.pageNumer:1,
                                   k.pageSize:1,
                           },db=use_log_db)

collectionNamePascal=string_util.to_pascal_case(collectionName)
# string_util.topascal python 代码 
dataOne=dataList[0]
print("dataOne",dataOne)
# tim 
# ColConfTable
from top.starp.util import time_util
from top.starp.util import file_util

now_time_str=time_util.get_now_time_str()
codeOutPathBase=f"/file/codeGen"
codeOutPathNow=f"{codeOutPathBase}/codeGen_{now_time_str}"
# codeOutPathBase=f"/file/codeGen/codeGen_{now_time_str}"

def compareSetance(key):
    # list_util.containsStrLikeIgnoreCase(key,["name"]): 
    if list_util.containsStrLikeIgnoreCase(key,["name"]):
        return    f" front.{key}.localeCompare(back.{key}), "

    if list_util.containsStrLikeIgnoreCase(key,["number","num"]):
        return    f" front.{key} -  back.{key} , "
    return    f" front.{key} -  back.{key} , "

import os


def genReactUpdate(dataOne):
   
    codeRows=""
   
    for key,val in dataOne.items():
  
        compareSetanceGened=compareSetance(key)
        # print(key)
        tpl="""
           
        
      
        """
        codeRow=tpl.replace("{key}",key).replace("{compareSetanceGened}",compareSetanceGened)
        print(codeRow)
        codeRows+=codeRow+'\n'
        # const columns:any[] = []
        # {FormItems}
        # D:\proj\python\starp-django\codeGen\template\ReactUpdate.tsx
    codeGenTemplatePath=r'codeGen/template'
    codeTpl=file_util.read_file(rf'{codeGenTemplatePath}/ReactUpdate.tsx')
    FormItems=codeRows
    codeFileData=codeTpl.replace("{FormItems}",FormItems)
    # codeFileData=f"""
    # {codeRows}
    # """
    # D:\proj\brain\admin-antd-react\src\pages\ColConfUpdate
    outPath=f"{codeOutPathNow}/{collectionNamePascal}Update/index.tsx"
    file_util.create_file_with_directory(outPath,codeFileData)
    # os.system(f"code {outPath}")

def genReactCols(dataOne):
    # for key in dataOne.keys():
    # for in 
    codeAll=""
   
    for key,val in dataOne.items():
        if "_id" == key:
            # continue
            key="idStr"
            # idStr
        compareSetanceGened=compareSetance(key)
        # print(key)
        tpl="""
        {
        title: '{key}',
        dataIndex: '{key}',
        key: '{key}',
        sorter: (front :any , back: any) => {compareSetanceGened}
        },"""
        code=tpl.replace("{key}",key).replace("{compareSetanceGened}",compareSetanceGened)
        print(code)
        codeAll+=code+'\n'
        # const columns:any[] = []
    codeFileData=f"""
    const columns:any[] = [{codeAll}]
    """
    outPath=f"{codeOutPathNow}/react_cols.tsx"
    file_util.create_file_with_directory(outPath,codeFileData)
    os.system(f"code {outPath}")


# genReactCols(dataOne=dataOne)
genReactUpdate(dataOne=dataOne)

你可能感兴趣的:(springboot,java,前端,python,react.js,开发语言)