PowerTools Documentation: Index | Kickstart templates

This topic provides the template source files that help in writing a DSP.

These files assume common DSP requirements. You can copy these files into the DSP source directory and modify them to suit the DSP requirements.

# 1 dAPI.py

``

    import deployables_lib as dl

    dl.load_msgs_module("DSP_SHORTNAME-DSP_VERSION", symtab = globals())

    dir_moves = [('DSP_SHORTNAME-DSP_VERSION', '')]

    pat = '^\s*\$(?P<key>\S+)\s*=\s*(?P<value>array\s*\(.*\))\s*;\s*$'
    sub = '$%(key)s = %(value)s;\r'

    def install(site, site_conf, instance_conf, msgs):

       dl.do_install_actions(site,site_conf,instance_conf,msgs,
                             globals(), ['resolve_location',
                                         'check_disk_quota',
                                         'check_install_loc_owner']
                             {})
       if msgs.get_severity() != msgs.ERROR:
           domain = site_conf['siteinfo']['domain']
           email = instance_conf['username'] + '@' + domain
           conf_vars = [('domain', domain),
                   ('email', email)]

           actions = ['archive_unpack', 'edit_conf_file']
           args_dict = {
               'archive_unpack':  { 'dir_moves': dir_moves },
               'edit_conf_file':  { 'file': 'config.php', 'lang': 'php',
                                    'pat': pat, 'sub': sub, 'vars': conf_vars },
               }
           dl.do_install_actions(site, site_conf, instance_conf, msgs,
                                 globals(), actions, args_dict)

    def reconfigure(context, site, site_conf, old_site_conf, instance_conf,
                   old_instance_conf, msgs):
       new_domain =     site_conf['siteinfo']['domain']
       new_email =      instance_conf['username'] + '@' + new_domain

       conf_vars = [('domain', new_domain),
                   ('email', new_email)]

       actions = ['handle_url_loc', 'resolve_location',
                  'archive_unpack', 'handle_username_change',
                  'edit_conf_file']
       args_dict = {
           'archive_unpack':  { 'dir_moves': dir_moves, },
           'edit_conf_file':  { 'file': 'config.php', 'lang': 'php',
                                'pat': pat, 'sub': sub, 'vars': conf_vars },
           }
       dl.do_reconfigure_actions(context, site, site_conf, old_site_conf,
                                 instance_conf, old_instance_conf, msgs,
                                 globals(), actions, args_dict)

    def upgrade(site, site_conf, instance_conf, old_instance_conf, msgs):
       if old_instance_conf['shortname'] == 'DSP_SHORTNAME' and \
         old_instance_conf['version'] == '0.9':
           instance_conf['syncfs'] = '1'
           instance_conf['overwritefiles'] = '1'

           actions = ['do_backup', 'archive_unpack','edit_conf_file']

           args_dict = {
               'archive_unpack': { 'dir_moves' : dir_moves },
                                 { 'fileinfo' : {'excluded_files' : ['config.php']}}
              }

           dl.do_upgrade_actions(site, site_conf, instance_conf,
                                 old_instance_conf, msgs,
                                 globals(), actions, args_dict)

    def remove(site, site_conf, instance_conf, msgs):
       dl.install_loc_cleanup(site, site_conf, instance_conf, dir_moves)

    def get_instance_configuration(context, site, site_conf, new_instance_conf,
                                  old_instance_conf, locale, msgs):
       instance = dl.dsp_create_instance(new_instance_conf['shortname'],
                                         new_instance_conf['version'])
                                        ['username', 'url_net', 'url_path',
                                        'domain_to_path'])
       return instance

# 2 dsp.xml

    <?xml version="1.0" ?>

    <dsp>
     <dspDescription>
     <shortname>Foo</shortname>
     <longname>Foo CMS DSP</longname>
     <version>1.0</version>
     <url>http://foo-home.sourceforge.net/</url>
     <type>Content Management System</type>
     <shortDescription>Foo CMS</shortDescription>
     <dapiversion>1.5</dapiversion>
     <dapirelease>1</dapirelease>
     <commonOption name="domain_to_path"/>
     <commonOption name="url_net_required"/>
     <commonOption name="url_path_required"/>
     <commonOption name="url_loc"/>
     <commonOption name="install_loc"/>
     <commonOption name="username"/>
     <commonOption name="archive_name" file="foo-1.0.tar.gz"/>
     <commonOption name="archive_type" type="tar.gz"/>
     </dspDescription>
    </dsp>

# 3 default.xsl

    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

     <xsl:import href="/usr/lib/ensim/deployables/lib/themes/default.xsl"/>
     <xsl:output method="html" omit-xml-declaration="yes"/>

    </xsl:stylesheet>

# 4 include.mk

    shortname := Foo
    name := Foo
    version := 1.0

    lib_files := dsp.xml msgs.list
    raw_lib_files := foo.gif
    themes := default.xsl

source_files := foo-1.0.tar.gz

-include $(addsuffix /make_utils/dsp_common.mk,$(all_source_dirs))

# 5 msgs.list

    #include "common_msgs.list"

# 6 archive and logo files

These should be downloaded from the DSP site.

Retrieved from "wiki/index.php/Kickstart_templates"