コード例 #1
0
ファイル: models.py プロジェクト: pydevua/django-designer
def meta_code(model):
    lines = []
    if model.unique_together.all().count():
        pairs = []
        for item in model.unique_together.all():
            fields = ["'%s'" % f.name for f in item.fields.all()]
            pairs.append('(%s)' % ', '.join(fields))
        lines.append('unique_together = (%s,)' % ', '.join(pairs))
    if len(lines) == 0:
        return None
    code = CodeBlock()
    meta = code.class_('Meta')
    meta.extend(lines)
    return code
コード例 #2
0
ファイル: models.py プロジェクト: pydevua/django-designer
def app_models_code(application):
    code = CodeBlock(['from django.db import models'])
    code.extend(['', ''])

    for model in application.model_set.all():
        code.extend(model_code(model))
        code.extend(['', ''])
    return '\n'.join(code.lines())
コード例 #3
0
ファイル: models.py プロジェクト: pydevua/django-designer
def model_code(model):
    code = CodeBlock()
    model_class = code.class_(model.name, ['models.Model'])
    if model.comments:
        model_class.append('"""%s"""' % model.comments)#TODO: handle quotes in comments, make it like a method(CommentsCode(CodeBlock))
    for field in model.field_set.all():
        model_class.append(model_field_code(field))
    if model.custom_code:
        lines = [''] + model.custom_code.split('\n')
        model_class.extend(lines)
    meta = meta_code(model)
    if model.field_set.all().count() == 0 and not model.custom_code and not meta:
        model_class.append('pass')
    if meta:
        model_class.append('')
        model_class.extend(meta)
    return code