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

2015-03-02

Naudoc/Zope 2.10.7 Products

Практической пользы псто.

Как мы знаем, в Наудок (Naudoc) используется древняя версия Zope 2.10.
Поэтому, если надо сваять расширение/аддон/продукт для этой платформы, надо пользоваться старыми рецептами.
Вот, к примеру, минималистичный продукт, заготовка, фактически.

Предположим, папка Products Наудока лежит тут
/opt/naudoc/Products
Тогда создаем папку
/opt/naudoc/Products/MyProduct
в ней файл
/opt/naudoc/Products/MyProduct/__init__.py
import logging
logger = logging.getLogger('MyProduct')
__version__ = '$Revision: 0.1 $'[11:-2]

def log(message):
    logger.warning('dev log: %s' % message)

def initialize(context):
    log('initialize with %s' % context)
В принципе, это уже продукт, можно использовать. Например, так
# su -l zope
/opt/naudoc/bin/zopectl debug
>>> from Products.MyProduct import log
>>> log('oops')
Это если Наудок был установлен для работы под системной учеткой 'zope'.

Добавим немного юнит тестов.
Создадим папку
/opt/naudoc/Products/MyProduct/tests
и положим туда файл
/opt/naudoc/Products/MyProduct/tests/__init__.py
он пустой, это маркер пакета;
и файл
/opt/naudoc/Products/MyProduct/tests/test_all.py
import unittest
from Products.MyProduct import __version__

class TestPackage(unittest.TestCase):

    def test_failUnless(self):
        self.failUnless(__version__ == '0.1')

    def test_assertEqual(self):
        self.assertEqual(__version__, '0.1')

def test_suite():
    return unittest.TestSuite((
        unittest.makeSuite(TestPackage),
    ))

if __name__ == "__main__":
    unittest.main(defaultTest="test_suite")

Запускать тесты надо осторожно. Нет, очень осторожно!
/opt/naudoc/bin/zopectl test -k -m MyProduct.tests
Если, невзначай, вы пропустите ключик «-k», то тестраннер уничтожит все pyc файлы. А это означает, что систему вы запустить уже не сможете, ибо не ко всем модулям Наумен поставляет исходники (py). Только из резервной копии восстанавливать.

Поэтому, делаем резервные копии и только потом запускаем всякое.
Впрочем, это должно быть привычкой.



original post http://vasnake.blogspot.com/2015/03/naudoczope-2107-products.html

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

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

Архив блога

Ярлыки

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) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) 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) Baltic (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) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)