Viewing File: /opt/alt/python38/lib64/python3.8/site-packages/playhouse/__pycache__/djpeewee.cpython-38.pyc

U

SW@sxdZddlmZddlZddlTedZGdddeZGdd	d	e	Z
zddlZe
jZ
Wnek
rrYnXdS)
zE
Simple translation of Django model classes to peewee model classes.
)partialN)*zpeewee.playhouse.djpeeweec@seZdZddZdS)AttrDictcCs||SN)selfattrrr/djpeewee.py__getattr__szAttrDict.__getattr__N)__name__
__module____qualname__r
rrrr	rsrc@s6eZdZddZddZddZd
d	d
ZddZdS)DjangoTranslatorcCs||_dSr)get_django_field_map
_field_map)rrrr	__init__szDjangoTranslator.__init__cCsddlm}|jtf|jtf|jtf|jtf|jtf|jtf|j	t	f|j
tf|jtf|jtf|j
ttddf|jtf|jtf|jjtfgS)NrfieldsTZnull)django.db.modelsrZ	AutoFieldZPrimaryKeyFieldZBigIntegerFieldZBooleanFieldZ	CharFieldZ
DateTimeFieldZ	DateFieldZDecimalFieldZ
FilePathFieldZ
FloatFieldIntegerFieldZNullBooleanFieldrZ	TextFieldZ	TimeFieldrelatedZ
ForeignKeyForeignKeyField)rdjfrrr	rs 
z%DjangoTranslator.get_django_field_mapcCs*d}|jD]\}}t||r
|}q&q
|Sr)r
isinstance)rfield	convertedZdjango_fieldZpeewee_fieldrrr	
convert_field's
zDjangoTranslator.convert_fieldNFcCsT|r||krdS|dkrd}ddlm}|j}||jr>dSd||j<i}dd}	t|j|	dD]}
||
}|tkrP|dkr<|
jj	}|jj}
|
|krd||
<|j
|||d||d||
dkrtd	|
j
|
t|
jd
||
j
<nL|
jjp|
}|dr d||
j
|df}t||
||
jd
||
j
<nt|
jd
||
j
<qb|rb||
jd
||
j
<qbt|jtf|}|j|j_d|jj_|||j<|rzdd|D}Wn(tk
rdd|D}YnX|D]4\}}|jj|krq|j
|||d||dq|jD]2}t||jj s4q|j
|jj!||||dqdS)NrrcSs|jr
dpd|fS)Nrr)rrrr	<lambda>Cz3DjangoTranslator._translate_model.<locals>.<lambda>)keyr	max_depthbackrefsexcludezCycle detected: %s: %s)	db_column+z
__%s:%s:%s)related_namer'z%scSsg|]}||jfqSr)model.0frrr	
<listcomp>{sz5DjangoTranslator._translate_model.<locals>.<listcomp>cSs0g|](}|js|jr|jr|js||jjfqSr)Zone_to_manyZ
one_to_oneZauto_createdZconcreterr*r+rrr	r.~s)"rrZ_metagetZobject_namesortedrrZrelto_translate_modelloggerwarnnamercolumnr)Zrelated_query_nameendswithstripr'typeZModelZdb_tableZdatabaseZ
interpolationZget_all_related_objectsAttributeErrorZ
get_fieldsmany_to_manyrrZManyToManyFieldZthrough)rr*mappingr$r%r&roptionsZattrsZ	field_keyZmodel_fieldrZ
related_modelZ
model_namer)klassZall_relatedZrel_objr;rrr	r2/s









z!DjangoTranslator._translate_modelc	Ost}|dd}|dd}|dd}|dd}|sH|rHtdn|sRd	}n|rb|dkrbd
}|D]}|j|||||dqf|S)av
        Generate a group of peewee models analagous to the provided Django
        models for the purposes of creating queries.

        :param model: A Django model class.
        :param options: A dictionary of options, see note below.
        :returns: A dictionary mapping model names to peewee model classes.
        :rtype: dict

        Recognized options:
            `recurse`: Follow foreign keys (default: True)
            `max_depth`: Max depth to recurse (default: None, unlimited)
            `backrefs`: Follow backrefs (default: False)
            `exclude`: A list of models to exclude

        Example::

            # Map Django models to peewee models. Foreign keys and M2M will be
            # traversed as well.
            peewee = translate(Account)

            # Generate query using peewee.
            PUser = peewee['User']
            PAccount = peewee['Account']
            query = (PUser
                     .select()
                     .join(PAccount)
                     .where(PAccount.acct_type == 'foo'))

            # Django raw query.
            users = User.objects.raw(*query.sql())
        recurseTr$Nr%Fr&z9Error, you cannot specify a max_depth when recurse=False.rrr#)rr/
ValueErrorr2)	rZmodelsr=r<r?r$r%r&r*rrr	translate_modelss(!
z!DjangoTranslator.translate_models)NFN)rrr
rrrr2rArrrr	rs
ir)__doc__	functoolsrZloggingZpeeweeZ	getLoggerr3dictrobjectrZdjangorA	translateImportErrorrrrr	<module>s
A
Back to Directory File Manager