Mercurial > p > roundup > code
diff doc/customizing.txt @ 2910:5c0e5abcb5e3
doc updates
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Sun, 14 Nov 2004 23:30:43 +0000 |
| parents | 21a0b049fed8 |
| children | ca6206cc74d9 |
line wrap: on
line diff
--- a/doc/customizing.txt Sat Nov 13 07:11:14 2004 +0000 +++ b/doc/customizing.txt Sun Nov 14 23:30:43 2004 +0000 @@ -2,7 +2,7 @@ Customising Roundup =================== -:Version: $Revision: 1.152 $ +:Version: $Revision: 1.153 $ .. This document borrows from the ZopeBook section on ZPT. The original is at: http://www.zope.org/Documentation/Books/ZopeBook/current/ZPT.stx @@ -52,300 +52,225 @@ Tracker Configuration ===================== -The ``config.py`` located in your tracker home contains the basic +The ``config.ini`` located in your tracker home contains the basic configuration for the web and e-mail components of roundup's interfaces. -As the name suggests, this file is a Python module. This means that any -valid python expression may be used in the file. Mostly though, you'll -be setting the configuration variables to string values. Python string -values must be quoted with either single or double quotes:: - - 'this is a string' - "this is also a string - use it when the value has 'single quotes'" - this is not a string - it's not quoted - -Python strings may use formatting that's almost identical to C string -formatting. The ``%`` operator is used to perform the formatting, like -so:: - - 'roundup-admin@%s'%MAIL_DOMAIN - -this will create a string ``'roundup-admin@tracker.domain.example'`` if -MAIL_DOMAIN is set to ``'tracker.domain.example'``. - -You'll also note some values are set to:: - - os.path.join(TRACKER_HOME, 'db') - -or similar. This creates a new string which holds the path to the -``'db'`` directory in the TRACKER_HOME directory. This is just a -convenience so if the TRACKER_HOME changes you don't have to edit -multiple valoues. + +The followin taken from the `Python Library Reference`__ (May 20, 2004) +section "ConfigParser -- Configuration file parser": + + The configuration file consists of sections, led by a "[section]" header + and followed by "name = value" entries, with line continuations on a + newline with leading whitespace. Note that leading whitespace is removed + from values. The optional values can contain format strings which + refer to other values in the same section. Lines beginning with "#" or ";" + are ignored and may be used to provide comments. + + For example:: + + [My Section] + foodir: %(dir)s/whatever + dir=frob + + would resolve the "%(dir)s" to the value of "dir" ("frob" in this case). + +__ http://docs.python.org/lib/module-ConfigParser.html The configuration variables available are: -**TRACKER_HOME** - ``os.path.split(__file__)[0]`` - The tracker home directory. The above default code will automatically - determine the tracker home for you, so you can just leave it alone. - -**MAILHOST** - ``'localhost'`` - The SMTP mail host that roundup will use to send e-mail. - -**MAILUSER** - ``()`` - If your SMTP mail host requires a username and password for access, then - specify them here. eg. ``MAILUSER = ('username', 'password')`` - -**MAILHOST_TLS** - ``'no'`` - If your SMTP mail host provides or requires TLS (Transport Layer - Security) then set ``MAILHOST_TLS = 'yes'`` - -**MAILHOST_TLS_KEYFILE** - ``''`` - If you're using TLS, you may also set MAILHOST_TLS_KEYFILE to the name of - a PEM formatted file that contains your private key. - -**MAILHOST_TLS_CERTFILE** - ``''`` - If you're using TLS and have specified a MAILHOST_TLS_KEYFILE, you may - also set MAILHOST_TLS_CERTFILE to the name of a PEM formatted certificate - chain file. - -**MAIL_DOMAIN** - ``'tracker.domain.example'`` - The domain name used for email addresses. - -**DATABASE** - ``os.path.join(TRACKER_HOME, 'db')`` - This is the directory that the database is going to be stored in. By default - it is in the tracker home. - -**TEMPLATES** - ``os.path.join(TRACKER_HOME, 'html')`` - This is the directory that the HTML templates reside in. By default they are - in the tracker home. - -**STATIC_FILES** - e.g. ``os.path.join(TRACKER_HOME, 'files')`` - This *optional* variable defines the directory that static files are served - from (files with the URL ``/@@file/<filename>``). If this is not defined, - then static files are served from the TEMPLATES directory. - -**TRACKER_NAME** - ``'Roundup issue tracker'`` - A descriptive name for your roundup tracker. This is sent out in e-mails and - appears in the heading of CGI pages. - -**TRACKER_EMAIL** - ``'issue_tracker@%s'%MAIL_DOMAIN`` - The email address that e-mail sent to roundup should go to. Think of it as the - tracker's personal e-mail address. - -**TRACKER_WEB** - ``'http://tracker.example/cgi-bin/roundup.cgi/bugs/'`` - The web address that the tracker is viewable at. This will be included in - information sent to users of the tracker. The URL **must** include the - cgi-bin part or anything else that is required to get to the home page of - the tracker. You **must** include a trailing '/' in the URL. - -**ADMIN_EMAIL** - ``'roundup-admin@%s'%MAIL_DOMAIN`` - The email address that roundup will complain to if it runs into trouble. - -**EMAIL_FROM_TAG** - ``''`` - Additional text to include in the "name" part of the ``From:`` address used - in nosy messages. If the sending user is "Foo Bar", the ``From:`` line is - usually:: - - "Foo Bar" <issue_tracker@tracker.example> - - The EMAIL_FROM_TAG goes inside the "Foo Bar" quotes like so:: - - "Foo Bar EMAIL_FROM_TAG" <issue_tracker@tracker.example> - -**ERROR_MESSAGES_TO** - ``'user'``, ``'dispatcher'`` or ``'both'`` - Sends error messages to the dispatcher, user, or both. It will use the - ``DISPATCHER_EMAIL`` address if set, otherwise it'll use the - ``ADMIN_EMAIL`` address. - -**DISPATCHER_EMAIL** - ``''`` - The email address that Roundup will issue all error messages to. This is - also useful if you want to switch your 'new message' notification to - a central user. - -**LOGGGING_CONFIG** - ``os.path.join(TRACKER_HOME, 'logging.ini')`` - This variable activates logging of Roundup's internal messages using the - standard python ``logging`` module. The module is configured using the - indicated configuration file. See the `admin guide`_ for more detail. - -**LOGGING_FILENAME** - ``'/path/to/log file'`` - This variable activates logging of Roundup's internal messages using a - built-in minimal logging service which appends messages to the indicated - file. See the `admin guide`_ for more detail. - -**LOGGING_LEVEL** - ``'DEBUG'``, ``'INFO'``, ``'WARNING'`` or ``'ERROR'`` - This variable determines the level of messages logged by the built-in - logging service - messages of the level named and higher will be sent to - the ``LOGGING_FILENAME`` file. Not used when the ``LOGGGING_CONFIG`` - variable is set. See the `admin guide`_ for more detail. - -**MESSAGES_TO_AUTHOR** - ``'new'``, ``'yes'`` or``'no'`` - Send nosy messages to the author of the message? - If 'new' is used, then the author will only be sent the message when the - message creates a new issue. If 'yes' then the author will always be sent - a copy of the message they wrote. - -**ADD_AUTHOR_TO_NOSY** - ``'new'``, ``'yes'`` or ``'no'`` - Does the author of a message get placed on the nosy list automatically? - If ``'new'`` is used, then the author will only be added when a message - creates a new issue. If ``'yes'``, then the author will be added on followups - too. If ``'no'``, they're never added to the nosy. - -**ADD_RECIPIENTS_TO_NOSY** - ``'new'``, ``'yes'`` or ``'no'`` - Do the recipients (To:, Cc:) of a message get placed on the nosy list? - If ``'new'`` is used, then the recipients will only be added when a message - creates a new issue. If ``'yes'``, then the recipients will be added on - followups too. If ``'no'``, they're never added to the nosy. - -**EMAIL_SIGNATURE_POSITION** - ``'top'``, ``'bottom'`` or ``'none'`` - Where to place the email signature in messages that Roundup generates. - -**EMAIL_KEEP_QUOTED_TEXT** - ``'yes'`` or ``'no'`` - Keep email citations. Citations are the part of e-mail which the sender has - quoted in their reply to previous e-mail with ``>`` or ``|`` characters at - the start of the line. - -**EMAIL_LEAVE_BODY_UNCHANGED** - ``'no'`` - Preserve the email body as is. Enabiling this will cause the entire message - body to be stored, including all citations, signatures and Outlook-quoted - sections (ie. "Original Message" blocks). It should be either ``'yes'`` - or ``'no'``. - -**MAIL_DEFAULT_CLASS** - ``'issue'`` or ``''`` - Default class to use in the mailgw if one isn't supplied in email - subjects. To disable, comment out the variable below or leave it blank. - -**HTML_VERSION** - ``'html4'`` or ``'xhtml'`` - HTML version to generate. The templates are html4 by default. If you - wish to make them xhtml, then you'll need to change this var to 'xhtml' - too so all auto-generated HTML is compliant. - -**EMAIL_CHARSET** - ``utf-8`` (or ``iso-8859-1`` for Eudora users) - Character set to encode email headers with. We use utf-8 by default, as - it's the most flexible. Some mail readers (eg. Eudora) can't cope with - that, so you might need to specify a more limited character set (eg. - 'iso-8859-1'. - -**DEFAULT_TIMEZONE** - ``0`` - Numeric hour timezone offest to be used when displaying local times. - The default timezone is used when users do not choose their own in - their settings. - -The default config.py is given below - as you -can see, the MAIL_DOMAIN must be edited before any interaction with the -tracker is attempted.:: - - # roundup home is this package's directory - TRACKER_HOME=os.path.split(__file__)[0] - - # The SMTP mail host that roundup will use to send mail - MAILHOST = 'localhost' - - # The domain name used for email addresses. - MAIL_DOMAIN = 'your.tracker.email.domain.example' - - # This is the directory that the database is going to be stored in - DATABASE = os.path.join(TRACKER_HOME, 'db') - - # This is the directory that the HTML templates reside in - TEMPLATES = os.path.join(TRACKER_HOME, 'html') - - # Optional: the directory that static files are served from (files with - # the URL /@@file/<filename>). If this is not defined, then static files - # are served from the TEMPLATES directory. - # STATIC_FILES = os.path.join(TRACKER_HOME, 'files') - - # A descriptive name for your roundup tracker - TRACKER_NAME = 'Roundup issue tracker' - - # The email address that mail to roundup should go to - TRACKER_EMAIL = 'issue_tracker@%s'%MAIL_DOMAIN - - # The web address that the tracker is viewable at. This will be - # included in information sent to users of the tracker. The URL MUST - # include the cgi-bin part or anything else that is required to get - # to the home page of the tracker. You MUST include a trailing '/' - # in the URL. - TRACKER_WEB = 'http://tracker.example/cgi-bin/roundup.cgi/bugs/' - - # The email address that roundup will complain to if it runs into - # trouble - ADMIN_EMAIL = 'roundup-admin@%s'%MAIL_DOMAIN - - # These variables define where to log Roundup's internal messages to. - # You have two choices - either using the standard Python logging module - # or a minimal logging facility built into Roundup. The former is activated - # when you provide a LOGGING_CONFIG variable below which contains the - # configuration of the logging module. The latter is activated when you - # provide the LOGGING_FILENAME and optionally LOGGING_LEVEL variables. If - # none of these variables are defined then only errors will be logged, and - # they will go to stderr. See the Admin Guide for more detail. - # LOGGGING_CONFIG = os.path.join(TRACKER_HOME, 'logging.ini') - # or, - # LOGGING_FILENAME = '/path/to/log file' - # LOGGING_LEVEL = 'INFO' # one of 'DEBUG', 'INFO', 'WARNING', 'ERROR' - - # Additional text to include in the "name" part of the From: address - # used in nosy messages. If the sending user is "Foo Bar", the From: - # line is usually: "Foo Bar" <issue_tracker@tracker.example> - # the EMAIL_FROM_TAG goes inside the "Foo Bar" quotes like so: - # "Foo Bar EMAIL_FROM_TAG" <issue_tracker@tracker.example> - EMAIL_FROM_TAG = "" - - # Send nosy messages to the author of the message - MESSAGES_TO_AUTHOR = 'no' # either 'yes' or 'no' - - # Does the author of a message get placed on the nosy list - # automatically? If 'new' is used, then the author will only be - # added when a message creates a new issue. If 'yes', then the - # author will be added on followups too. If 'no', they're never - # added to the nosy. - ADD_AUTHOR_TO_NOSY = 'new' # one of 'yes', 'no', 'new' - - # Do the recipients (To:, Cc:) of a message get placed on the nosy - # list? If 'new' is used, then the recipients will only be added - # when a message creates a new issue. If 'yes', then the recipients - # will be added on followups too. If 'no', they're never added to - # the nosy. - ADD_RECIPIENTS_TO_NOSY = 'new' # either 'yes', 'no', 'new' - - # Where to place the email signature - EMAIL_SIGNATURE_POSITION = 'bottom' # one of 'top', 'bottom', 'none' - - # Keep email citations - EMAIL_KEEP_QUOTED_TEXT = 'no' # either 'yes' or 'no' - - # Preserve the email body as is - EMAIL_LEAVE_BODY_UNCHANGED = 'no' # either 'yes' or 'no' - - # Default class to use in the mailgw if one isn't supplied in email - # subjects. To disable, comment out the variable below or leave it - # blank. Examples: - MAIL_DEFAULT_CLASS = 'issue' # use "issue" class by default - #MAIL_DEFAULT_CLASS = '' # disable (or just comment the var out) - - # HTML version to generate. The templates are html4 by default. If you - # wish to make them xhtml, then you'll need to change this var to 'xhtml' - # too so all auto-generated HTML is compliant. - HTML_VERSION = 'html4' # either 'html4' or 'xhtml' - - # Character set to encode email headers with. We use utf-8 by default, as - # it's the most flexible. Some mail readers (eg. Eudora) can't cope with - # that, so you might need to specify a more limited character set (eg. - # 'iso-8859-1'. - EMAIL_CHARSET = 'utf-8' - #EMAIL_CHARSET = 'iso-8859-1' # use this instead for Eudora users - - # You may specify a different default timezone, for use when users do not - # choose their own in their settings. - DEFAULT_TIMEZONE = 0 # specify as numeric hour offest - - # - # SECURITY DEFINITIONS - # - # define the Roles that a user gets when they register with the - # tracker these are a comma-separated string of role names (e.g. - # 'Admin,User') - NEW_WEB_USER_ROLES = 'User' - NEW_EMAIL_USER_ROLES = 'User' +Section **main** + database -- ``db`` + Database directory path. The path may be either absolute or relative + to the directory containig this config file. + + templates -- ``html`` + Path to the HTML templates directory. The path may be either absolute + or relative to the directory containig this config file. + + admin_email -- ``roundup-admin`` + Email address that roundup will complain to if it runs into trouble. + + dispatcher_email -- ``roundup-admin`` + The 'dispatcher' is a role that can get notified of new items to the + database. It is used by the ERROR_MESSAGES_TO config setting. + + email_from_tag -- default *blank* + Additional text to include in the "name" part of the From: address used + in nosy messages. If the sending user is "Foo Bar", the From: line + is usually: ``"Foo Bar" <issue_tracker@tracker.example>`` + the EMAIL_FROM_TAG goes inside the "Foo Bar" quotes like so: + ``"Foo Bar EMAIL_FROM_TAG" <issue_tracker@tracker.example>`` + + new_web_user_roles -- ``User`` + Roles that a user gets when they register with Web User Interface. + This is a comma-separated list of role names (e.g. ``Admin,User``). + + new_email_user_roles -- ``User`` + Roles that a user gets when they register with Email Gateway. + This is a comma-separated string of role names (e.g. ``Admin,User``). + + error_messages_to -- ``user`` + Send error message emails to the ``dispatcher``, ``user``, or ``both``? + The dispatcher is configured using the DISPATCHER_EMAIL setting. + Allowed values: ``dispatcher``, ``user``, or ``both`` + + html_version -- ``html4`` + HTML version to generate. The templates are ``html4`` by default. + If you wish to make them xhtml, then you'll need to change this + var to ``xhtml`` too so all auto-generated HTML is compliant. + Allowed values: ``html4``, ``xhtml`` + + timezone -- ``0`` + Numeric timezone offset used when users do not choose their own + in their settings. + + instant_registration -- ``yes`` + Register new users instantly, or require confirmation via + email? + Allowed values: ``yes``, ``no`` + +Section **tracker** + name -- ``Roundup issue tracker`` + A descriptive name for your roundup instance. + + web -- ``http://host.example/demo/`` + The web address that the tracker is viewable at. + This will be included in information sent to users of the tracker. + The URL MUST include the cgi-bin part or anything else + that is required to get to the home page of the tracker. + You MUST include a trailing '/' in the URL. + + email -- ``issue_tracker`` + Email address that mail to roundup should go to. + +Section **rdbms** + Settings in this section are used by Postgresql and MySQL backends only + + name -- ``roundup`` + Name of the database to use. + + host -- ``localhost`` + Database server host. + + port -- default *blank* + TCP port number of the database server. Postgresql usually resides on + port 5432 (if any), for MySQL default port number is 3306. Leave this + option empty to use backend default. + + user -- ``roundup`` + Database user name that Roundup should use. + + password -- ``roundup`` + Database user password. + +Section **logging** + config -- default *blank* + Path to configuration file for standard Python logging module. If this + option is set, logging configuration is loaded from specified file; + options 'filename' and 'level' in this section are ignored. The path may + be either absolute or relative to the directory containig this config file. + + filename -- default *blank* + Log file name for minimal logging facility built into Roundup. If no file + name specified, log messages are written on stderr. If above 'config' + option is set, this option has no effect. The path may be either absolute + or relative to the directory containig this config file. + + level -- ``ERROR`` + Minimal severity level of messages written to log file. If above 'config' + option is set, this option has no effect. + Allowed values: ``DEBUG``, ``INFO``, ``WARNING``, ``ERROR`` + +Section **mail** + Outgoing email options. Used for nosy messages, password reset and + registration approval requests. + + domain -- ``localhost`` + Domain name used for email addresses. + + host -- default *blank* + SMTP mail host that roundup will use to send mail + + username -- default *blank* + SMTP login name. Set this if your mail host requires authenticated access. + If username is not empty, password (below) MUST be set! + + password -- default *blank* + SMTP login password. + Set this if your mail host requires authenticated access. + + tls -- ``no`` + If your SMTP mail host provides or requires TLS (Transport Layer Security) + then you may set this option to 'yes'. + Allowed values: ``yes``, ``no`` + + tls_keyfile -- default *blank* + If TLS is used, you may set this option to the name of a PEM formatted + file that contains your private key. The path may be either absolute or + relative to the directory containig this config file. + + tls_certfile -- default *blank* + If TLS is used, you may set this option to the name of a PEM formatted + certificate chain file. The path may be either absolute or relative + to the directory containig this config file. + + charset -- utf-8 + Character set to encode email headers with. We use utf-8 by default, as + it's the most flexible. Some mail readers (eg. Eudora) can't cope with + that, so you might need to specify a more limited character set + (eg. iso-8859-1). + + debug -- default *blank* + Setting this option makes Roundup to write all outgoing email messages + to this file *instead* of sending them. This option has the same effect + as environment variable SENDMAILDEBUG. Environment variable takes + precedence. The path may be either absolute or relative to the directory + containig this config file. + +Section **mailgw** + Roundup Mail Gateway options + + keep_quoted_text -- ``yes`` + Keep email citations when accepting messages. Setting this to ``no`` strips + out "quoted" text from the message. Signatures are also stripped. + Allowed values: ``yes``, ``no`` + + leave_body_unchanged -- ``no`` + Preserve the email body as is - that is, keep the citations *and* + signatures. + Allowed values: ``yes``, ``no`` + + default_class -- ``issue`` + Default class to use in the mailgw if one isn't supplied in email subjects. + To disable, leave the value blank. + +Section **nosy** + Nosy messages sending + + messages_to_author -- ``no`` + Send nosy messages to the author of the message. + Allowed values: ``yes``, ``no``, ``new`` + + signature_position -- ``bottom`` + Where to place the email signature. + Allowed values: ``top``, ``bottom``, ``none`` + + add_author -- ``new`` + Does the author of a message get placed on the nosy list automatically? + If ``new`` is used, then the author will only be added when a message + creates a new issue. If ``yes``, then the author will be added on + followups too. If ``no``, they're never added to the nosy. + Allowed values: ``yes``, ``no``, ``new`` + + add_recipients -- ``new`` + Do the recipients (``To:``, ``Cc:``) of a message get placed on the nosy + list? If ``new`` is used, then the recipients will only be added when a + message creates a new issue. If ``yes``, then the recipients will be added + on followups too. If ``no``, they're never added to the nosy. + Allowed values: ``yes``, ``no``, ``new`` + +You may generate a new default config file using the ``roundup-admin +genconfig`` command. + Tracker Schema ============== @@ -957,6 +882,7 @@ through its ``main()`` method. This means that you can do pretty much anything you want as a web interface to your tracker. + Repercussions of changing the tracker schema --------------------------------------------- @@ -968,6 +894,7 @@ 2. The "page" template may require links to be changed, as might the "home" page's content arguments. + How requests are processed -------------------------- @@ -994,6 +921,7 @@ this exception percolates up to the CGI interface that called the client + Determining web context ----------------------- @@ -1283,7 +1211,6 @@ returning. - Default templates ----------------- @@ -1447,6 +1374,7 @@ .. _Template Attribute Language: http://dev.zope.org/Wikis/DevSite/Projects/ZPT/TAL%20Specification%201.4 + Templating Expressions ~~~~~~~~~~~~~~~~~~~~~~ @@ -1513,6 +1441,7 @@ .. _Template Attribute Language Expression Syntax: http://dev.zope.org/Wikis/DevSite/Projects/ZPT/TALES%20Specification%201.3 + Template Macros ~~~~~~~~~~~~~~~ @@ -2128,6 +2057,7 @@ ... which will produce a table with four columns containing the items of the "keyword" class (well, their "name" anyway). + Displaying Properties --------------------- @@ -2181,6 +2111,7 @@ "topic" properties, and the table includes columns for the "title", "status", and "fixer" properties. + Searching Views --------------- @@ -2392,6 +2323,7 @@ *where each journal entry is an HTMLJournalEntry.* + Defining new web actions ------------------------ @@ -2474,6 +2406,45 @@ spreadsheet or database). +8-bit character set support in Web interface +-------------------------------------------- + +The web interface uses UTF-8 default. It may be overridden in both forms +and a browser cookie. + +- In forms, use the ``@charset`` variable. +- To use the cookie override, have the ``roundup_charset`` cookie set. + +In both cases, the value is a valid charset name (eg. ``utf-8`` or +``kio8-r``). + +Inside Roundup, all strings are stored and processed in utf-8. +Unfortunately, some older browsers do not work properly with +utf8-encoded pages (e.g. Netscape Navigator 4 displays wrong +characters in form fields). This version allows to change +the character set for http transfers. To do so, you may add +the following code to your ``page.html`` template:: + + <tal:block define="uri string:${request/base}${request/env/PATH_INFO}"> + <a tal:attributes="href python:request.indexargs_href(uri, + {'@charset':'utf-8'})">utf-8</a> + <a tal:attributes="href python:request.indexargs_href(uri, + {'@charset':'koi8-r'})">koi8-r</a> + </tal:block> + +(substitute ``koi8-r`` with appropriate charset for your language). +Charset preference is kept in the browser cookie ``roundup_charset``. + +Lines ``meta http-equiv`` added to the tracker templates in version 0.6.0 +should be changed to include actual character set name:: + + <meta http-equiv="Content-Type" + tal:attributes="content string:text/html;; charset=${request/client/charset}" + /> + +The charset is also sent in the http header. + + Examples ======== @@ -2962,8 +2933,6 @@ perform such calculations. We do this by adding a method to the TemplatingUtils class in our tracker ``interfaces.py`` module:: - XXX update this example for TemplatingUtils -> extensions - class TemplatingUtils: ''' Methods implemented on this class will be available to HTML templates through the 'utils' variable. @@ -2977,6 +2946,8 @@ total += time.period._value return total + XXX update this example for TemplatingUtils -> extensions + Replace the ``pass`` line if one appears in your TemplatingUtils class. As indicated in the docstrings, we will be able to access the ``totalTimeSpent`` method via the ``utils`` variable in our templates.
