Составители:
Рубрика:
36
"""
from Products.CMFCore.TypesTool import ContentFactoryMetadata
from Products.CMFCore.DirectoryView import addDirectoryViews
from Products.CMFCore.utils import getToolByName
from Products.CMFCore.CMFCorePermissions import ManagePortal
from Products.Archetypes.public import listTypes
from Products.Archetypes.Extensions.utils import installTypes
from Products.tenders.config import *
from cStringIO import StringIO
import string
from Products.tenders import skin_globals
skin_names = ('tenders',)
def setupSkin(self, out):
skinsTool = getToolByName(self, 'portal_skins')
# Add directory views
try:
addDirectoryViews(skinsTool, 'skins', skin_globals)
out.write( "Added directory views to portal_skins.\n" )
except:
out.write( '*** Unable to add directory views to
portal_skins.\n')
# Go through the skin configurations and insert the skin
skins = skinsTool.getSkinSelections()
for skin in skins:
path = skinsTool.getSkinPath(skin)
path = map(string.strip, string.split(path,','))
changed = 0
for skin_name in skin_names:
if skin_name not in path:
try:
path.insert(path.index('custom')+1, skin_name)
changed = 1
except ValueError:
path.append(skin_name)
changed = 1
if changed:
path = string.join(path, ', ')
# addSkinSelection will replace existing skins as well.
skinsTool.addSkinSelection(skin, path)
out.write("Added %s to %s skin\n" % (',
'.join(skin_names),skin))
else:
out.write("Skipping %s skin, %s already set up\n" %
(skin, ', '.join(skin_names)))
def setupTypes(self, out):
installTypes(self, out,
37
listTypes(PROJECTNAME),
PROJECTNAME)
out.write("installed types\n")
def install(self):
out=StringIO()
setupTypes(self, out)
setupSkin(self, out)
out.write('Installation completed.\n')
return out.getvalue()
Файл tender.py описывает основную схему, т.е. основные поля формы
# tender.py
# -*- coding: utf-8 -*-
"""A document type which may contain images and number of fields"""
#Импорт используемых библиотек
from AccessControl import ClassSecurityInfo
try:
from Products.LinguaPlone.public import *
except ImportError:
# No multilingual support
from Products.Archetypes.public import *
print "No LinguaPlone support"
# CMF
from Products.CMFCore import CMFCorePermissions
# AT
from Products.Archetypes.public import *
from Products.Archetypes.Field import ScalableImage
from Products.Archetypes.Marshall import PrimaryFieldMarshaller
from config import *
from Products.ATContentTypes.content.document import ATDocument
from Products.ATContentTypes.content.schemata import
ATContentTypeSchema
#Импорт имени проекта
from Products.tenders.config import PROJECTNAME
# Copy the ATDocument schema (to avoid modifying the original) and
append our
# own fields for the images and attachments manager widgets.
#Описание схемы. Типов полей и виджетов (widget – расширение возмож-
ностей полей,
# например, поле время/дата может иметь виджет календарь, который
позволяет
# пользователю набирать дату и время не вручную, а выбирать с помощью