roundup


Nameroundup JSON
Version 2.5.0 PyPI version JSON
download
home_pagehttps://www.roundup-tracker.org
SummaryA simple-to-use and -install issue-tracking system with command-line, web and e-mail interfaces. Highly customisable.
upload_time2025-07-13 04:08:28
maintainerRalf Schlatterbeck
docs_urlNone
authorRichard Jones
requires_python>=3.7
licenseOSI Approved: MIT License, Zope Public License, Python Software Foundation License
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            I'm proud to release version 2.5.0 of the Roundup issue
tracker.  This release is a bugfix and feature release, so
make sure to read `docs/upgrading.txt
<https://www.roundup-tracker.org/docs/upgrading.html>`_ to
bring your tracker up to date.

The 42 changes, as usual, include some new features and many
bug fixes.

Version 2.5.0 does not support Python 2. The minimum Python
version is 3.7.

Note that you should run ``roundup-admin ... migrate`` to
update the database schema version. Do this before you use
the web, command-line or mail interface and before any users
access the tracker.

You can install it with::

   pip install roundup

(preferably in a virtual environment). To download it, use::

   pip download roundup

then unpack and test/install from the tarball.

Among the significant enhancements in version 2.5.0 compared to
the 2.4.0 release are:

* **XSS vulnerability with devel and responsive templates fixed**

  Just before release an XSS security issue with trackers based on
  the devel or responsive templates was discovered. The updating
  directions include instructions on fixing this issue with the
  html templates.

* **The property/field advanced search expression feature has been
  enhanced and documented.**

  Search expressions are usually built using the
  expression editor on the search page. They can be built manually
  by modifying the search URL but the RPN search expression format
  was undocumented. Errors in expressions could return results that
  didn't match the user's intent. This release documents the RPN
  expression syntax, adds basic expression error detection, and
  improves error reporting.

* **The default hash method for password storage is more secure.**

  We use PBKDF2 with SHA512 (was SHA1). With this change you can
  lower the value of password_pbkdf2_default_rounds in your
  tracker's config.ini. Check the upgrading documentation for more
  info. (Note this may cause longer authentication times, the
  upgrade doc describes how to downgrade the hash method if required.)

* **Roundup's session token is now prefixed with the magic
  ``__Secure__`` tag when using HTTPS.**

  This adds another layer of protection in addition to the
  existing ``Secure`` property that comes with the session cookie.

* **Data authorization can be done at the database level speeding up
  display of index pages.**

  Roundup verifies the user's authorization for the data fetched
  from the database after retrieving data from the database. A new
  optional ``filter`` argument has been added to Permission
  objects. When the administrator supplies a filter function, it
  can boost performance with SQL server databases by pushing
  selection criteria to the database. By offloading some
  permission checks to the database, less data is retrieved from
  the database. This leads to quicker display of index pages with
  reduced CPU and network traffic.

* **The REST endpoint can supply binary data (images, pdf, ...) to
  its clients.**

  Requesting binary data from a REST endpoint has been a
  hassle. Since JSON can't handle binary data, images (and other
  binary data) need to be encoded. This makes them significantly
  larger. The workaround was to use a non-REST endpoint for fetching
  non-text attachments. This update lets the REST endpoint return
  raw message or file content data. You can utilize the
  ``binary_content`` endpoint along with an appropriate ``Accept``
  header (e.g. ``image/jpeg``) in your request.

* **Extract translatable strings from your tracker easily.**

  The ``roundup-gettext`` tool has been enhanced to extract
  translatable strings from detectors and extensions. This will
  simplify the process of translating your trackers.

Other miscellaneous fixes include:

* Fix a crash bug on Windows with Python 3.13.

* Update documentation on required REST headers, along with other
  documentation updates.

* Improve handling of an error condition generated when an invalid
  REST response format is requested. For example if XML output is
  requested, but dicttoxml is not installed, we now return an
  error without doing any work.

* Fix an incorrect error report when a PUT REST request sets
  the user's email address to its current value.

* Add support for the ``defusedxml`` Python module to enhance
  security when using XML.

* Introduce the templating function:
  ``utils.set_http_response(integer)`` to set the HTTP return code
  directly from your template. This allows the template logic to
  return a 404 or other code when the user invokes a template
  incorrectly.

* Add a new ``registerUtilMethod('name', my_function)``. which
  makes it easier to define and use complex templating utilities.
  It passes a default argument that allows access to the client
  instance, translation functions, and other templating utility
  functions. Previously you had to pass the arguments explicitly
  when calling the utility from the template.

* Add the ability to generate native HTML date and
  number/integer inputs. Check the upgrading document for caveats.
  This feature is disabled by default.

* Re-enable support for GPG/PGP signed emails, which requires
  installation from the test PyPi repository.

The file CHANGES.txt has a detailed list of feature
additions and bug fixes for each release. The most recent
changes from there are at the end of this announcement. Also
see the information in doc/upgrading.txt.

If you find bugs, please report them to issues AT
roundup-tracker.org or create an account at
https://issues.roundup-tracker.org and open a new ticket. If
you have patches to fix the issues they can be attached to
the email or uploaded to the tracker.

Upgrading
=========

If you're upgrading from an older version of Roundup you
*must* follow all the "Software Upgrade" guidelines given in
the doc/upgrading.txt documentation.

Note that you should run ``roundup-admin ... migrate`` for
all your trackers to update the database schema version. Do
this before you use the web, command-line or mail interface
and before any users access the tracker.

Roundup requires Python 3 newer than or equal to version 3.7 for
correct operation. (Python 3.4 or 3.5, or 3.6 may work, but are not
tested.) Note that Roundup 2.4.0 was the last release to support
Python 2. You should deploy new trackers with Python 3 and plan on
upgrading older trackers from Python 2 to Python 3. See the upgrade
guide.

To give Roundup a try, just download (directions above),
unpack and run::

    python demo.py

then open the url printed by the demo app.

Release info and download page:

     https://pypi.org/project/roundup/

Source and documentation is available at the website:

     https://www.roundup-tracker.org/

Mailing lists - the place to ask questions:

     https://sourceforge.net/p/roundup/mailman/


About Roundup
=============

Roundup is a simple-to-use and install issue-tracking system
with command-line, web and e-mail interfaces. It is based on
the winning design from Ka-Ping Yee in the Software
Carpentry "Track" design competition.

Roundup manages a number of issues (with flexible properties
such as "description", "priority", and so on) and provides
the ability to:

(a) submit new issues,
(b) find and edit existing issues, and
(c) discuss issues with other participants.

The system facilitates communication among the participants
by managing discussions and notifying interested parties
when issues are edited. One of the major design goals for
Roundup that it be simple to get going. Roundup is therefore
usable "out of the box" with any Python 3.7+
installation. It doesn't even need to be "installed" to be
operational, though an install script is provided.

It comes with five basic issue tracker templates

* a classic bug/feature tracker
* a more extensive devel tracker for bug/features etc.
* a responsive version of the devel tracker
* a jinja2 version of the devel template (work in progress)
* a minimal skeleton

and supports four database back-ends (anydbm, sqlite, mysql
and postgresql).

Recent Changes
==============

From 2.4.0 to 2.5.0

Fixed:

- issue2551343 - Remove support for PySQLite. It is unmaintained
  and sqlite3 is used which is the default for a Python
  distribution.  (John Rouillard)
- replace use of os.listdir with os.scandir. Performance
  improvement.  Using with Python 2 requires 'pip install
  scandir'. (John Rouillard)
- issue2551131 - Return accept-patch if patch body not accepted
  (415 code). Accept-Patch returned with acceptable values. (John
  Rouillard)
- issue2551074 - In "responsive" template: click on hide comment leads
  to a red error msg. (Report by Ludwig Reiter; fix John Rouillard)
- issue2550698 - added documentation on filtering using RPN property
  expressions. (John Rouillard)
- issue2551372 - Better document necessary headers for REST and fix
  logging to log missing Origin header (Ralf Schlatterbeck with
  suggestions on documentation by John Rouillard)
- issue2551289 - Invalid REST Accept header with post/put performs
  change before returning 406. Error before making any changes to the
  db if we can't respond with requested format. (John Rouillard)
- issue2551356 - Add etag header when If-Modified-Since GET request
  returns not-modified (304). Breaking change to function signature
  for client.py-Client::_serve_file(). (John Rouillard)
- issue2551381 - roundup-server parses URI's with multiple '?"
  incorrectly. (John Rouillard)
- issue2551382 - invalid @verbose, @page_* values in rest uri's
  generate 409 not 400 error. (John Rouillard)
- fix issues with rest doc and use of PUT on a property item. Response
  is similar to use of PUT on the item, not a GET on the
  item. Discovered while fuzz testing. (John Rouillard)
- issue2551383 - Setting same address via REST PUT command results in
  an error. Now the userauditor does not trigger an error if a user
  sets the primary address to the existing value. (John Rouillard)
- issue2551253 - Modify password PBKDF2 method to use SHA512. The
  default password hashing algorithm has been upgraded to
  PBKDF2-SHA512 from PBKDF2-SHA1. The default pbkdf2 rounds in the
  config file has been changed to 250000. The admin should change it
  manually if it is at 2 million. PBKDF2-SHA512 (PBKDF2S5) has been
  available since release 2.3, but it required a manual step to make
  it the default. (John Rouillard)
- fixed a crash with roundup-admin perftest password when rounds not set
  on command line. (John Rouillard)
- issue2551374 - Add error handling for filter expressions. Filter
  expression errors are now reported. (John Rouillard)
- issue2551384: Modify flow in client.py's REST handler to verify
  authorization earlier. The validation order for REST requests
  has been changed. Checking user authorization to use the REST
  interface is done before validating the Origin header. As a
  result, incorrectly formatted CORS preflight requests
  (e.g. missing Origin header) can now return HTTP status 403 as
  well as status 400. (John Rouillard)
- issue2551387 - TypeError: not indexable. Fix crash due to
  uninitialized list element on a (Mini)FieldStorage when unexpected
  input is posted via wsgi. (Reported and debugged by Christof
  Meerwald; fix John Rouillard)
- close http socket and send a 408 status when a timeout exception
  is handed in roundup-server. This prevents another exception
  caused by using a timed out socket. (John Rouillard)
- issue2551391, partial fix for issue1513369. input fields were
  not getting id's assigned. Fixed automatic id assignment to
  input fields. Thinko in the code. (John Rouillard)
- issue1895197 - translated help texts in admin.py not displayed
  correctly. (Initial patch tobias-herp, John Rouillard)
- issue2551238 - roundup-server should exit with error if -d
  <pidfile> is used without -l <logfile>. Added code to report
  the issue. Added issue with relative paths for log file whn
  using -L and -d with roundup-server. (John Rouillard)
- Allow the specification of a "form" parameter for Date fields to make
  the popup calendar work when the enclosing form has a name different
  from "itemSynopsis". (Ralf Schlatterbeck)
- issue2551376: Fix tracebacks in item templates (Ralf Schlatterbeck)
- issue2551396: Use of os.path.stat.ST_MTIME in python 3.13 crashes
  roundup on windows. Replaced with equivalent stat.ST_MTIME. (Randy
  on IRC, fix: John Rouillard and R. David Murray (bitdancer))
- issue2551323: remove functions used for XHTML template
  support. XHTML was deprecated in Roundup 2.3.0 and an invalid value
  in 2.4.0. (John Rouillard)
- issue2551406: 'Templating Error: too many values to unpack' crash
  fixed. (reported by and patch Christof Meerwald, commit/test John
  Rouillard)
- fix potential HTTP Response Splitting issue in
  roundup-server. Discovered by CodeQL in CI. (John Rouillard)

Features:

- issue2551287 - Enhance roundup_gettext.py to extract strings from
  detectors/extensions. If the polib module is available,
  roundup-gettext will extract translatable strings from the tracker's
  Python code. If polib is missing, it will print a warning. (Patch
  Marcus Priesch, cleanup to remove python 2 issues, John Rouillard.)
- issue2551315 - Document use of
  RestfulInstance.max_response_row_size to limit data returned
  from rest request. (John Rouillard)
- issue2551330 - Add an optional 'filter' function to the Permission
  objects and the addPermission method. This is used to optimize search
  performance by not checking items returned from a database query
  one-by-one (using the check function) but instead offload the
  permission checks to the database. For SQL backends this performs the
  filtering in the database.  (Ralf Schlatterbeck)
- issue2551370 - mark roundup session cookie with __Secure-
  prefix. (John Rouillard)
- add -P flag to roundup-server to log client address from
  X-Forwarded-For reverse proxy header rather than connecting
  address. This logs the actual client address when
  roundup-server is run behind a reverse proxy. It also appends a
  + sign to the logged address/name. (John Rouillard)
- issue2551068 - Provide way to retrieve file/msg data via rest
  endpoint. Raw file/msg data can be retrieved using the
  /binary_content attribute and an Accept header to select the mime
  type for the data (e.g. image/png for a png file). The existing html
  interface method still works and is supported, but is legacy. (John
  Rouillard) 
- added fuzz testing for some code. Found issue2551382 and
  others. (John Rouillard)
- issue2551116 - Replace xmlrpclib (xmlrpc.client) with defusedxml.
  Added support for defusedxml to better secure the xmlrpc
  endpoint. (John Rouillard)
- Added new instance.registerUtilMethod() method to make using complex
  templating easier as it provides a default Client instance to the
  templating method. (John Rouillard)
- Added new templating utils.set_http_response(integer) method to
  allow reporting an error to the user from a template. (John
  Rouillard)
- issue2551390 - Replace text input/calendar popup with native
  date input. Also add double-click and exit keyboard handlers to
  allow copy/paste/editing the text version of the date. Configurable
  via the use_browser_date_input setting in the [web] section of
  config.ini. By default browser native dates are turned off.
  (John Rouillard, Ralf Schlatterbeck)
- Use native number type input for Number() and Integer()
  properties. Integer() uses step=1 as well. Configurable via the
  use_browser_number_input setting in the [web] section of config.ini.
  Set off by default. See
  https://issues.roundup-tracker.org/issue2551398 for discussion of
  issues with native number inputs.  (John Rouillard, Ralf
  Schlatterbeck)
- issue2551231 - template.py-HTMLClass::classhelp doesn't merge
  user defined classes. It now merges them in. (John Rouillard)
- re-enable support for GPG/PGP encrypted emails using new python gpg
  package on the test pypi instance. (Paul Schwabauer)

            

Raw data

            {
    "_id": null,
    "home_page": "https://www.roundup-tracker.org",
    "name": "roundup",
    "maintainer": "Ralf Schlatterbeck",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "rsc@runtux.com",
    "keywords": null,
    "author": "Richard Jones",
    "author_email": "richard@users.sourceforge.net",
    "download_url": "https://files.pythonhosted.org/packages/17/ad/9117015e1116aa3e3c10ff077e8dbe9e2b2cb7ffb0279b29301d3b7a2073/roundup-2.5.0.tar.gz",
    "platform": null,
    "description": "I'm proud to release version 2.5.0 of the Roundup issue\ntracker.  This release is a bugfix and feature release, so\nmake sure to read `docs/upgrading.txt\n<https://www.roundup-tracker.org/docs/upgrading.html>`_ to\nbring your tracker up to date.\n\nThe 42 changes, as usual, include some new features and many\nbug fixes.\n\nVersion 2.5.0 does not support Python 2. The minimum Python\nversion is 3.7.\n\nNote that you should run ``roundup-admin ... migrate`` to\nupdate the database schema version. Do this before you use\nthe web, command-line or mail interface and before any users\naccess the tracker.\n\nYou can install it with::\n\n   pip install roundup\n\n(preferably in a virtual environment). To download it, use::\n\n   pip download roundup\n\nthen unpack and test/install from the tarball.\n\nAmong the significant enhancements in version 2.5.0 compared to\nthe 2.4.0 release are:\n\n* **XSS vulnerability with devel and responsive templates fixed**\n\n  Just before release an XSS security issue with trackers based on\n  the devel or responsive templates was discovered. The updating\n  directions include instructions on fixing this issue with the\n  html templates.\n\n* **The property/field advanced search expression feature has been\n  enhanced and documented.**\n\n  Search expressions are usually built using the\n  expression editor on the search page. They can be built manually\n  by modifying the search URL but the RPN search expression format\n  was undocumented. Errors in expressions could return results that\n  didn't match the user's intent. This release documents the RPN\n  expression syntax, adds basic expression error detection, and\n  improves error reporting.\n\n* **The default hash method for password storage is more secure.**\n\n  We use PBKDF2 with SHA512 (was SHA1). With this change you can\n  lower the value of password_pbkdf2_default_rounds in your\n  tracker's config.ini. Check the upgrading documentation for more\n  info. (Note this may cause longer authentication times, the\n  upgrade doc describes how to downgrade the hash method if required.)\n\n* **Roundup's session token is now prefixed with the magic\n  ``__Secure__`` tag when using HTTPS.**\n\n  This adds another layer of protection in addition to the\n  existing ``Secure`` property that comes with the session cookie.\n\n* **Data authorization can be done at the database level speeding up\n  display of index pages.**\n\n  Roundup verifies the user's authorization for the data fetched\n  from the database after retrieving data from the database. A new\n  optional ``filter`` argument has been added to Permission\n  objects. When the administrator supplies a filter function, it\n  can boost performance with SQL server databases by pushing\n  selection criteria to the database. By offloading some\n  permission checks to the database, less data is retrieved from\n  the database. This leads to quicker display of index pages with\n  reduced CPU and network traffic.\n\n* **The REST endpoint can supply binary data (images, pdf, ...) to\n  its clients.**\n\n  Requesting binary data from a REST endpoint has been a\n  hassle. Since JSON can't handle binary data, images (and other\n  binary data) need to be encoded. This makes them significantly\n  larger. The workaround was to use a non-REST endpoint for fetching\n  non-text attachments. This update lets the REST endpoint return\n  raw message or file content data. You can utilize the\n  ``binary_content`` endpoint along with an appropriate ``Accept``\n  header (e.g. ``image/jpeg``) in your request.\n\n* **Extract translatable strings from your tracker easily.**\n\n  The ``roundup-gettext`` tool has been enhanced to extract\n  translatable strings from detectors and extensions. This will\n  simplify the process of translating your trackers.\n\nOther miscellaneous fixes include:\n\n* Fix a crash bug on Windows with Python 3.13.\n\n* Update documentation on required REST headers, along with other\n  documentation updates.\n\n* Improve handling of an error condition generated when an invalid\n  REST response format is requested. For example if XML output is\n  requested, but dicttoxml is not installed, we now return an\n  error without doing any work.\n\n* Fix an incorrect error report when a PUT REST request sets\n  the user's email address to its current value.\n\n* Add support for the ``defusedxml`` Python module to enhance\n  security when using XML.\n\n* Introduce the templating function:\n  ``utils.set_http_response(integer)`` to set the HTTP return code\n  directly from your template. This allows the template logic to\n  return a 404 or other code when the user invokes a template\n  incorrectly.\n\n* Add a new ``registerUtilMethod('name', my_function)``. which\n  makes it easier to define and use complex templating utilities.\n  It passes a default argument that allows access to the client\n  instance, translation functions, and other templating utility\n  functions. Previously you had to pass the arguments explicitly\n  when calling the utility from the template.\n\n* Add the ability to generate native HTML date and\n  number/integer inputs. Check the upgrading document for caveats.\n  This feature is disabled by default.\n\n* Re-enable support for GPG/PGP signed emails, which requires\n  installation from the test PyPi repository.\n\nThe file CHANGES.txt has a detailed list of feature\nadditions and bug fixes for each release. The most recent\nchanges from there are at the end of this announcement. Also\nsee the information in doc/upgrading.txt.\n\nIf you find bugs, please report them to issues AT\nroundup-tracker.org or create an account at\nhttps://issues.roundup-tracker.org and open a new ticket. If\nyou have patches to fix the issues they can be attached to\nthe email or uploaded to the tracker.\n\nUpgrading\n=========\n\nIf you're upgrading from an older version of Roundup you\n*must* follow all the \"Software Upgrade\" guidelines given in\nthe doc/upgrading.txt documentation.\n\nNote that you should run ``roundup-admin ... migrate`` for\nall your trackers to update the database schema version. Do\nthis before you use the web, command-line or mail interface\nand before any users access the tracker.\n\nRoundup requires Python 3 newer than or equal to version 3.7 for\ncorrect operation. (Python 3.4 or 3.5, or 3.6 may work, but are not\ntested.) Note that Roundup 2.4.0 was the last release to support\nPython 2. You should deploy new trackers with Python 3 and plan on\nupgrading older trackers from Python 2 to Python 3. See the upgrade\nguide.\n\nTo give Roundup a try, just download (directions above),\nunpack and run::\n\n    python demo.py\n\nthen open the url printed by the demo app.\n\nRelease info and download page:\n\n     https://pypi.org/project/roundup/\n\nSource and documentation is available at the website:\n\n     https://www.roundup-tracker.org/\n\nMailing lists - the place to ask questions:\n\n     https://sourceforge.net/p/roundup/mailman/\n\n\nAbout Roundup\n=============\n\nRoundup is a simple-to-use and install issue-tracking system\nwith command-line, web and e-mail interfaces. It is based on\nthe winning design from Ka-Ping Yee in the Software\nCarpentry \"Track\" design competition.\n\nRoundup manages a number of issues (with flexible properties\nsuch as \"description\", \"priority\", and so on) and provides\nthe ability to:\n\n(a) submit new issues,\n(b) find and edit existing issues, and\n(c) discuss issues with other participants.\n\nThe system facilitates communication among the participants\nby managing discussions and notifying interested parties\nwhen issues are edited. One of the major design goals for\nRoundup that it be simple to get going. Roundup is therefore\nusable \"out of the box\" with any Python 3.7+\ninstallation. It doesn't even need to be \"installed\" to be\noperational, though an install script is provided.\n\nIt comes with five basic issue tracker templates\n\n* a classic bug/feature tracker\n* a more extensive devel tracker for bug/features etc.\n* a responsive version of the devel tracker\n* a jinja2 version of the devel template (work in progress)\n* a minimal skeleton\n\nand supports four database back-ends (anydbm, sqlite, mysql\nand postgresql).\n\nRecent Changes\n==============\n\nFrom 2.4.0 to 2.5.0\n\nFixed:\n\n- issue2551343 - Remove support for PySQLite. It is unmaintained\n  and sqlite3 is used which is the default for a Python\n  distribution.  (John Rouillard)\n- replace use of os.listdir with os.scandir. Performance\n  improvement.  Using with Python 2 requires 'pip install\n  scandir'. (John Rouillard)\n- issue2551131 - Return accept-patch if patch body not accepted\n  (415 code). Accept-Patch returned with acceptable values. (John\n  Rouillard)\n- issue2551074 - In \"responsive\" template: click on hide comment leads\n  to a red error msg. (Report by Ludwig Reiter; fix John Rouillard)\n- issue2550698 - added documentation on filtering using RPN property\n  expressions. (John Rouillard)\n- issue2551372 - Better document necessary headers for REST and fix\n  logging to log missing Origin header (Ralf Schlatterbeck with\n  suggestions on documentation by John Rouillard)\n- issue2551289 - Invalid REST Accept header with post/put performs\n  change before returning 406. Error before making any changes to the\n  db if we can't respond with requested format. (John Rouillard)\n- issue2551356 - Add etag header when If-Modified-Since GET request\n  returns not-modified (304). Breaking change to function signature\n  for client.py-Client::_serve_file(). (John Rouillard)\n- issue2551381 - roundup-server parses URI's with multiple '?\"\n  incorrectly. (John Rouillard)\n- issue2551382 - invalid @verbose, @page_* values in rest uri's\n  generate 409 not 400 error. (John Rouillard)\n- fix issues with rest doc and use of PUT on a property item. Response\n  is similar to use of PUT on the item, not a GET on the\n  item. Discovered while fuzz testing. (John Rouillard)\n- issue2551383 - Setting same address via REST PUT command results in\n  an error. Now the userauditor does not trigger an error if a user\n  sets the primary address to the existing value. (John Rouillard)\n- issue2551253 - Modify password PBKDF2 method to use SHA512. The\n  default password hashing algorithm has been upgraded to\n  PBKDF2-SHA512 from PBKDF2-SHA1. The default pbkdf2 rounds in the\n  config file has been changed to 250000. The admin should change it\n  manually if it is at 2 million. PBKDF2-SHA512 (PBKDF2S5) has been\n  available since release 2.3, but it required a manual step to make\n  it the default. (John Rouillard)\n- fixed a crash with roundup-admin perftest password when rounds not set\n  on command line. (John Rouillard)\n- issue2551374 - Add error handling for filter expressions. Filter\n  expression errors are now reported. (John Rouillard)\n- issue2551384: Modify flow in client.py's REST handler to verify\n  authorization earlier. The validation order for REST requests\n  has been changed. Checking user authorization to use the REST\n  interface is done before validating the Origin header. As a\n  result, incorrectly formatted CORS preflight requests\n  (e.g. missing Origin header) can now return HTTP status 403 as\n  well as status 400. (John Rouillard)\n- issue2551387 - TypeError: not indexable. Fix crash due to\n  uninitialized list element on a (Mini)FieldStorage when unexpected\n  input is posted via wsgi. (Reported and debugged by Christof\n  Meerwald; fix John Rouillard)\n- close http socket and send a 408 status when a timeout exception\n  is handed in roundup-server. This prevents another exception\n  caused by using a timed out socket. (John Rouillard)\n- issue2551391, partial fix for issue1513369. input fields were\n  not getting id's assigned. Fixed automatic id assignment to\n  input fields. Thinko in the code. (John Rouillard)\n- issue1895197 - translated help texts in admin.py not displayed\n  correctly. (Initial patch tobias-herp, John Rouillard)\n- issue2551238 - roundup-server should exit with error if -d\n  <pidfile> is used without -l <logfile>. Added code to report\n  the issue. Added issue with relative paths for log file whn\n  using -L and -d with roundup-server. (John Rouillard)\n- Allow the specification of a \"form\" parameter for Date fields to make\n  the popup calendar work when the enclosing form has a name different\n  from \"itemSynopsis\". (Ralf Schlatterbeck)\n- issue2551376: Fix tracebacks in item templates (Ralf Schlatterbeck)\n- issue2551396: Use of os.path.stat.ST_MTIME in python 3.13 crashes\n  roundup on windows. Replaced with equivalent stat.ST_MTIME. (Randy\n  on IRC, fix: John Rouillard and R. David Murray (bitdancer))\n- issue2551323: remove functions used for XHTML template\n  support. XHTML was deprecated in Roundup 2.3.0 and an invalid value\n  in 2.4.0. (John Rouillard)\n- issue2551406: 'Templating Error: too many values to unpack' crash\n  fixed. (reported by and patch Christof Meerwald, commit/test John\n  Rouillard)\n- fix potential HTTP Response Splitting issue in\n  roundup-server. Discovered by CodeQL in CI. (John Rouillard)\n\nFeatures:\n\n- issue2551287 - Enhance roundup_gettext.py to extract strings from\n  detectors/extensions. If the polib module is available,\n  roundup-gettext will extract translatable strings from the tracker's\n  Python code. If polib is missing, it will print a warning. (Patch\n  Marcus Priesch, cleanup to remove python 2 issues, John Rouillard.)\n- issue2551315 - Document use of\n  RestfulInstance.max_response_row_size to limit data returned\n  from rest request. (John Rouillard)\n- issue2551330 - Add an optional 'filter' function to the Permission\n  objects and the addPermission method. This is used to optimize search\n  performance by not checking items returned from a database query\n  one-by-one (using the check function) but instead offload the\n  permission checks to the database. For SQL backends this performs the\n  filtering in the database.  (Ralf Schlatterbeck)\n- issue2551370 - mark roundup session cookie with __Secure-\n  prefix. (John Rouillard)\n- add -P flag to roundup-server to log client address from\n  X-Forwarded-For reverse proxy header rather than connecting\n  address. This logs the actual client address when\n  roundup-server is run behind a reverse proxy. It also appends a\n  + sign to the logged address/name. (John Rouillard)\n- issue2551068 - Provide way to retrieve file/msg data via rest\n  endpoint. Raw file/msg data can be retrieved using the\n  /binary_content attribute and an Accept header to select the mime\n  type for the data (e.g. image/png for a png file). The existing html\n  interface method still works and is supported, but is legacy. (John\n  Rouillard) \n- added fuzz testing for some code. Found issue2551382 and\n  others. (John Rouillard)\n- issue2551116 - Replace xmlrpclib (xmlrpc.client) with defusedxml.\n  Added support for defusedxml to better secure the xmlrpc\n  endpoint. (John Rouillard)\n- Added new instance.registerUtilMethod() method to make using complex\n  templating easier as it provides a default Client instance to the\n  templating method. (John Rouillard)\n- Added new templating utils.set_http_response(integer) method to\n  allow reporting an error to the user from a template. (John\n  Rouillard)\n- issue2551390 - Replace text input/calendar popup with native\n  date input. Also add double-click and exit keyboard handlers to\n  allow copy/paste/editing the text version of the date. Configurable\n  via the use_browser_date_input setting in the [web] section of\n  config.ini. By default browser native dates are turned off.\n  (John Rouillard, Ralf Schlatterbeck)\n- Use native number type input for Number() and Integer()\n  properties. Integer() uses step=1 as well. Configurable via the\n  use_browser_number_input setting in the [web] section of config.ini.\n  Set off by default. See\n  https://issues.roundup-tracker.org/issue2551398 for discussion of\n  issues with native number inputs.  (John Rouillard, Ralf\n  Schlatterbeck)\n- issue2551231 - template.py-HTMLClass::classhelp doesn't merge\n  user defined classes. It now merges them in. (John Rouillard)\n- re-enable support for GPG/PGP encrypted emails using new python gpg\n  package on the test pypi instance. (Paul Schwabauer)\n",
    "bugtrack_url": null,
    "license": "OSI Approved: MIT License, Zope Public License, Python Software Foundation License",
    "summary": "A simple-to-use and -install issue-tracking system with command-line, web and e-mail interfaces. Highly customisable.",
    "version": "2.5.0",
    "project_urls": {
        "Changelog": "https://sourceforge.net/p/roundup/code/ci/tip/tree/CHANGES.txt",
        "Contact": "https://roundup-tracker.org/contact.html",
        "Documentation": "https://roundup-tracker.org/docs.html",
        "Download": "https://pypi.org/project/roundup",
        "Homepage": "https://www.roundup-tracker.org",
        "IRC": "https://webchat.oftc.net/?randomnick=1&channels=roundup&prompt=1",
        "Issues": "https://issues.roundup-tracker.org/",
        "Licenses": "https://roundup-tracker.org/docs/license.html",
        "Wiki": "https://wiki.roundup-tracker.org/"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "17ad9117015e1116aa3e3c10ff077e8dbe9e2b2cb7ffb0279b29301d3b7a2073",
                "md5": "fb8aab5ab85b674ae4cdd60fc2981f09",
                "sha256": "24d64b8e3cdc09bf4386a92ed06a22e78d5491865982592ce6a8529b90816c02"
            },
            "downloads": -1,
            "filename": "roundup-2.5.0.tar.gz",
            "has_sig": false,
            "md5_digest": "fb8aab5ab85b674ae4cdd60fc2981f09",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 4660956,
            "upload_time": "2025-07-13T04:08:28",
            "upload_time_iso_8601": "2025-07-13T04:08:28.445715Z",
            "url": "https://files.pythonhosted.org/packages/17/ad/9117015e1116aa3e3c10ff077e8dbe9e2b2cb7ffb0279b29301d3b7a2073/roundup-2.5.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-13 04:08:28",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "roundup"
}
        
Elapsed time: 0.43675s