LINUX.ORG.RU

Кому из Питонеров интересно?


0

3

Пишу такую вот штуку, есть xml описание предметной области:

<db> <obj name=«manufacturers» caption=«Изготовитель» captions=«Изготовители»> <field name=«id» caption=«ID» type=«Integer» pk='True'/> <field name=«name» caption=«Имя» required=«True» type=«Unicode»/> <!-- <relationship name=«helmets» obj=«helmets» field=«manufacturer»/> --> </obj>

<obj name=«helmet_types» caption=«Тип шлема» captions=«Типы шлемов»> <field name=«id» caption=«ID» type=«Integer» pk='True'/> <field name=«typ_name» caption=«Имя типа» type=«Unicode»/> <!-- <relationship name=«helmets» obj=«helmets» field=«helmet_type»/> --> </obj>

<obj name=«helmets» caption=«Шлем» captions=«Шлемы»> <field name=«id» caption=«ID» type=«Integer» pk='True'/> <field name=«name» caption=«Имя» type=«Unicode»/> <field name=«helmet_type_id» caption=«Тип шлема» type=«Integer» fk=«helmet_types.id» display=«typ_name»/> <field name=«manufacturer_id» caption=«Производитель» type=«Integer» fk=«manufacturers.id» display=«name»/> </obj>

</db>

Есть библиотека с классом XMLMetadataStorage Он кушает это описание и возвращает классы helmets, helmet_types,manufacturers...

От них можно наследоваться. Его наследник XMLMetaSQLAlchemyStorage пополняет эти классы ORM создавая mapping и tables.

Есть WSGI адаптеры отображающие списки объектов созданных из этих классов в DHTMLXGrid. Ну и WSGI приложение которое позволяет редактировать, удалять и добавлять объекты в БД.

Одному такое писать тяжко иногда пропадает мотивация, та и тесты всякие я не осиливаю (времени мало).

Поэтому если кому интересно пишите мне на demmsnt(at)gmail.com может будем вместе писать. Там одних типов полей надо создать date, numeric, datetime.

Рабочий проект с работающим WSGI приложением вышлю на поглядеть.


Ответ на: комментарий от anonymous

>То есть это простая веб-морда к базе? Типа красивый PhpMyAdmin?

покажите мне как в PHPMyAdmin редактировать ссылочные поля не в виде ID а чтоб они вываливали субгрид и показывали не ключик, а какое-то поле из связанного грида.

У меня вот показывает: http://img80.imageshack.us/i/mozillafirefox2.png/

Хочу заголовки по русски в гриде ну и прочее. Как я могу кусок PHPMyAdmin использовать в админке интернет магазина (чтоб небыло левых пунктов в меню и прочее)?

demmsnt
() автор топика
Ответ на: комментарий от anonymous

2anonymous (11.01.2011 10:59:17)

Не. Я джангу больше не ем. Начиная с того, что она не умеет (не умела MS SQL) и заканчивая тем, что она не умеет GTK.

В джанге все делается вот так вот:

[code=python] class MyModelAdmin(admin.ModelAdmin): def formfield_for_manytomany(self, db_field, request, **kwargs): if db_field.name == «cars»: kwargs[«queryset»] = Car.objects.filter(owner=request.user) return super(MyModelAdmin, self).formfield_for_manytomany(db_field, request, **kwargs) [/code]

А я хочу чтоб не писать для Car отдельно для helmet отдельно. У меня вот такой адаптер:

[code=python]

class relationFieldAdapter:

interface.implements(IViewField) interface.implements(IViewRelationField) adapts(IObjectRelationField) def __init__(self,context): self.field = context def render(self,obj): schema = component.getUtility(IXMLSchemaStorage) subclass = self.field.getRelatedClass() obj_list = schema.getObjects(subclass) return template.render('relationFieldTemplate',{'obj':obj,'sub_objects':obj_list}) [/code]

Этот адаптер будет работать с любыми объектами предоставляющими интерфейс IObject и имеющими описатель

В джанге либо все навешивают на сам объект либо делают кучу движений.

demmsnt
() автор топика
Ответ на: комментарий от demmsnt

Опять забыл переключить

 
class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_manytomany(self, db_field, request, **kwargs):
        if db_field.name == "cars":
            kwargs["queryset"] = Car.objects.filter(owner=request.user)
        return super(MyModelAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)

А я хочу чтоб не писать для Car отдельно для helmet отдельно. У меня вот такой адаптер:


class relationFieldAdapter:
       interface.implements(IViewRelationField)  
       adapts(IObjectRelationField) 
       def __init__(self,context):
           self.field = context 
       def render(self,obj): 
           schema = component.getUtility(IXMLSchemaStorage) 
           subclass = self.field.getRelatedClass() 
           obj_list = schema.getObjects(subclass) 
           return template.render('relationFieldTemplate',{'obj':obj,'sub_objects':obj_list}) 

demmsnt
() автор топика
Ответ на: комментарий от xhat

Вы просто не видели 1С. А я видел, поэтому хотеть. Но питон не в зуб ногой, по крайней мере не до такой степени чтобы диктовать питонщикам как им лучше писать (а именно это подразумевается под фреймворком широкого применения) ;)

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

>Вы просто не видели 1С. А я видел, поэтому хотеть.

Кстати да. Точно так-же отдельная конфигурация, а определенные в ней обжекты можно использовать в обычном коде.

demmsnt
() автор топика

у вас страшное заболевание: объектная ориентация головного мозга

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.