U _3@sddlZddlZddlmZddlmZddlTddlmZddlmZddl TdZ e dd ge d d ge d d giZeddeDZddZd(ddZddZddZddZddZedkrejZeZe\ZZejrzddlm Z Wn(e!k rede"d YnXe#ed kr@ed!e$e"d eeZ%ed"Z&dZ'ej'rrd#d$ej'(d%DZ'eej)e&fe%Z*ej+rd&,ed dZ-ee-e*ee*e'ejd'dS))N)getpass) OptionParser)*)print_) __version__zfrom peewee import *%s database = %s('%s', **%s) class UnknownField(object): def __init__(self, *_, **__): pass class BaseModel(Model): class Meta: database = database ZmysqlZmysqldbZpostgres postgresqlZsqliteZsqlite3ccs$|]}t|D]}||fVqqdSN)DATABASE_ALIASES).0keyvaluer /pwiz.py s rcKsV|tkr(tddttd|dd}t|}||f|}tj||dS)Nz)Unrecognized database, must be one of: %s, schema)r) DATABASE_MAPerrjoinkeyssysexitpopZ IntrospectorZ from_database)Z database_typeZ database_namekwargsrZ DatabaseClassZdbr r rmake_introspector#s    rFcsj|dttjtfdfdd t }t j D]"}||kr^|rv||kr^||q^dS)N)Z table_namescs|pg}j|}|D]Z}|j}||kr<||kr._print_table..z )z schema = '%s'csg|]\}}|kr|jqSr )name)r colr primary_keysr r msz6print_models.._print_table..css|]}d|VqdSrr )r Zpkr r rrpsz& primary_key = CompositeKey(%s)) foreign_keysZ dest_tableradd model_namescolumnsitemssortedr#alllenZ field_classZ pk_classesZ primary_keyZ get_fieldmulti_column_indexesrr)tableseenZaccumr%Z foreign_keydestr(r columnskipr-ZfieldsuniqueZpk_field_namesZpk_list _print_tabledatabase introspectorpreserve_orderr"rr57sb            z"print_models.._print_table)N) Z introspectrTEMPLATEZget_additional_importsZget_database_class__name__get_database_namereprZget_database_kwargssetr*r'r)r7tablesr8r/r.r r4r print_models.s  ? r?cCsXtj}tdtd|td|dtd|tdttddS)Nz# Code generated by:z# python -m pwiz %sz # Date: %sz%B %d, %Y %I:%M%pz# Database: %sz# Peewee version: %sr)datetimeZnowrstrftimer;peewee_version)cmd_liner7Z timestampr r r print_header|s   rDcCstjd|tjdS)Nz %s )rstderrwriteflush)msgr r rrsrcCstdd}|j}|dddd|ddd d d |d d dd|dddddtt}|dddd|dd|dddd|dddd d!|d"d#d$dd%d&|d'd(dd)d*d+|S),Nz$usage: %prog [options] database_name)Zusagez-Hz--hosthost)r0z-pz--portportint)r0typez-uz--useruserz-Pz --passwordpassword store_true)r0actionz-ez--engineenginerzIDatabase type, e.g. sqlite, mysql or postgresql. Default is "postgresql".)r0defaultchoiceshelpz-sz--schemarz-tz--tablesr>zWOnly generate the specified tables. Multiple table names should be separated by commas.)r0rTz-iz--infoinfozIAdd database information and other metadata to top of the generated file.)r0rPrTz-oz--preserve-orderr8z6Model definition column ordering matches source table.)rPr0rT)rZ add_optionr*r)parserZaoZenginesr r rget_option_parsers*    rWcs.d}tfdd|D}jr*t|d<|S)N)rIrJrMrc3s&|]}t|r|t|fVqdSr)getattr)r ooptionsr rrs z%get_connect_kwargs..rN)dictrNr)r[Zopsrr rZrget_connect_kwargss  r]__main__) OrderedDictz&Preserve order requires Python >= 2.7.rz%Missing required parameter "database"cCsg|]}|r|qSr )strip)r r.r r rr$sr$, )r8)NF).r@rrZoptparserZpeeweerrrBZplayhouse.reflectionr9Z MySQLDatabaseZPostgresqlDatabaseZSqliteDatabaser r\rrr?rDrrWr]r:argvZraw_argvrV parse_argsr[argsr8 collectionsr_ ImportErrorrr,Z print_helpZconnectr6r>splitrQr7rUrrCr r r rs`      N