Генератор admin.py для Django

На самом деле процесс не так сложен и долог, как кажется на первый взгляд. Ну описал ты модель, Она правильная и логичная, и пора бы в базу что то закинуть для теста, и тут … 

А в админке пусто. Вернее не пусто, а только управление пользователями, группами и больше ничего.

Поиски в интернете сразу намекают на то, что если ты новичок, то ты попал …:)

Вот как раз для таких новичков этот небольшой скрипт, который основываясь на данные из файла model.py создаст новый файл admin.py, который можно будет (немног подправив по своему вкусу) пользоватся небольшой частью перлестей админки.

Для корректной работы модель должна смотреться так:

class odin(models.Model):
      name = .............
(Пустая строка)
class dva(models.Model):
      name = .........

смысл в том, что классы разделены пустыми строками

Сам код ниже … Файл еще ниже …

import sys

models = []
fields = []

if len(sys.argv) < = 2:
    print "Run me: generate_admin.py  "
    exit()

adminfile = file(sys.argv[2], 'a')
adminfile.write(
    "# -*-coding:utf-8 -*-\nfrom django.contrib import admin\n\nfrom " + sys.argv[1] + ".models import *\n\n")

switcher = False

with open('models.py') as readmodel:
    for line in readmodel:
        parseline = line.split(" ")
        #If found class - forget about fields
        if parseline[0] == 'class':
            switcher = True
            classname = parseline[1].split("(")
            adminfile.write(parseline[0] + " admin" + classname[0] + "(admin.ModelAdmin):\n")
            models.append(classname[0])

        if switcher:
            fieldname = line.strip().split("=")[0].strip()
            fields.append(fieldname)

        if len(line) < = 1 and switcher == True:
            switcher = False
            fields.remove(fields[0])
            fields.remove('')

            fieldsformed = ''.join('"%s",' % fields).replace('",', '').replace('"', '')

            adminfile.write("\tlist_filter = " + fieldsformed + "\n")
            adminfile.write("\tsearch_fields = " + fieldsformed + "\n")
            adminfile.write("\tlist_display = " + fieldsformed + "\n")
            fields = []

adminfile.write("\n\n")
for classs in models:
    adminfile.write("admin.site.register(" + classs + ", admin" + classs + ")\n")

adminfile.close()

1) Скачать архив с файлом
2) Поместить разархивированный файл в папку, где находится models.py
3) Запустить так: generate_admin.py [Имя апликейшена] [Имя файла]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *