Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2012-03-24

ZMI, Вкладка Properties

На предыдущем шаге я сделал вкладку 'View' для Zope Product. Теперь рассмотрим, что надо сделать, чтобы в ZMI появилась вкладка 'Properties' для объектов типа VCUFile.

Вообще говоря, изменений чуть, ибо вся логика наследуется из OFS.PropertyManager/PropertyManager:
from OFS.PropertyManager import PropertyManager

from AccessControl import ClassSecurityInfo
from Globals import InitializeClass

from vcufile import IVCUFile
from zope.interface import implements

from Products.PageTemplates.PageTemplateFile import PageTemplateFile # ZPT files
from Globals import DTMLFile # dtml files

addForm = DTMLFile('www/vcuFileAdd', globals())

def addFunction(self, id, filename, REQUEST=None):
    """addForm processor function. Constructor.
    Create a new VCUFile and add it to container.
    """
    p = VCUFileProduct(id, filename)
    self.Destination()._setObject(id, p)
    if REQUEST is not None:
        return self.manage_main(self, REQUEST, update_menu=0)
    return id
#def addFunction(dispatcher, id, filename):

class VCUFileProduct(Implicit, Persistent, RoleManager, Item, PropertyManager):
    """VCUFile product class, implements IVCUFile
    """
    implements(IVCUFile)

    #Item requerements
    meta_type = 'VCUFile'
    id = ''
    title = ''

    # ZMI views
    manage_options = (
        {'label':'Edit',   'action': 'editForm'}, # # editForm invoke editFunction
        {'label':'View',   'action': ''}, # If your class has a default view method (index_html) you should also include a View view whose action is an empty string.
    ) + PropertyManager.manage_options + RoleManager.manage_options + Item.manage_options # properties, security, undo, ownership
В модуль с классом продукта внесены изменения (выделены жирным) — добавлена одна строка (импорт) и изменены две (список наследования класса и добавка к 'manage_options').

Эти изменения реализуют вкладку 'Options' в ZMI для объектов VCUFile. Что и требовалось.

На этом можно и закончить обзор вопроса «как же мне создать Zope Product». Вот так и создать:

Про установку Zope:

А мне теперь надо наполнять эту заготовку логикой моего мегааплоада.

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)