%if 0%{?fedora} || 0%{?epel} > 5 %bcond_without python3 %else %bcond_with python3 %endif %define debug_package %{nil} %define python_version %(%{__python} -c "import sys; print '%%d.%%d' %% sys.version_info[:2]") %define with_admin 1 %define with_client 1 %define with_django 1 %define with_hub 1 %define with_worker 1 # HACK: detect if we're compiling for epel %define epel %(rpm -q epel-release &>/dev/null && echo 1 || echo 0) # Turn off Django support for EPEL 6 - Django 1.5 is not included %if 0%{?rhel} == 6 && 0%{?epel} %define with_admin 0 %define with_django 0 %define with_hub 0 %endif # Use the python2-* packages for dependencies if possible, # as suggested by Fedora packaging guidelines; but these aren't # available for EPEL builds. %if 0%{?epel} %define python2_django python-django %define python2_rpm rpm-python %else %define python2_django python2-django %define python2_rpm python2-rpm %endif # FOR TESTING ONLY %dump Name: kobo Version: 0.7.0 Release: 3%{?dist} License: LGPLv2 Summary: Python modules for tools development Group: Development/Libraries URL: https://github.com/release-engineering/kobo Source0: https://github.com/release-engineering/%{name}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz BuildArch: noarch BuildRequires: python2-devel >= 2.6 %if 0%{?with_python3} BuildRequires: python%{python3_pkgversion}-devel %endif %description Kobo is a set of python modules designed for rapid tools development. %package -n python2-%{name} Summary: Python modules for tools development %{?python_provide:%python_provide python2-%{name}} Provides: kobo = %{version}-%{release} Obsoletes: kobo < 0.6.0-2 %description -n python2-%{name} Kobo is a set of python modules designed for rapid tools development. %if 0%{?with_django} %package -n python2-%{name}-django Summary: Django components Group: Development/Libraries Requires: python2-kobo = %{version}-%{release} Requires: %{python2_django} >= 1.6 %{?python_provide:%python_provide python2-%{name}-django} Provides: kobo-django = %{version}-%{release} Obsoletes: kobo-django < 0.6.0-2 %description -n python2-%{name}-django Django components. %endif %if 0%{?with_client} %package -n python2-%{name}-client Summary: CLI client Group: Development/Libraries Requires: python2-kobo = %{version}-%{release} %{?python_provide:%python_provide python2-%{name}-client} Provides: kobo-client = %{version}-%{release} Obsoletes: kobo-client < 0.6.0-2 %description -n python2-%{name}-client CLI client. %endif %if 0%{?with_worker} %package -n python2-%{name}-worker Summary: Worker daemon processing tasks submitted to the hub Group: Development/Libraries Requires: python2-kobo = %{version}-%{release} %{?python_provide:%python_provide python2-%{name}-worker} Provides: kobo-worker = %{version}-%{release} Obsoletes: kobo-worker < 0.6.0-2 %description -n python2-%{name}-worker Worker daemon processing tasks submitted to the hub. %endif %if 0%{?with_hub} %package -n python2-%{name}-hub Summary: Xml-rpc and web interface to a task database Group: Development/Libraries Requires: python2-kobo = %{version}-%{release} Requires: python2-django >= 1.6 Requires: gzip %{?python_provide:%python_provide python2-%{name}-hub} Provides: kobo-hub = %{version}-%{release} Obsoletes: kobo-hub < 0.6.0-2 %description -n python2-%{name}-hub Hub is a xml-rpc and web interface to a task database. %endif %package -n python2-%{name}-rpmlib Summary: Functions to manipulate with RPM files Group: Development/Libraries Requires: python2-kobo = %{version}-%{release} Requires: %{python2_rpm} Requires: python2-koji %{?python_provide:%python_provide python2-%{name}-rpmlib} Provides: kobo-rpmlib = %{version}-%{release} Obsoletes: kobo-rpmlib < 0.6.0-2 %description -n python2-%{name}-rpmlib Rpmlib contains functions to manipulate with RPM files. %if 0%{?with_admin} %package admin Summary: Kobo admin script for instant project deployment Group: Development/Tools %if 0%{?with_python3} Requires: python3-%{name}-admin %else Requires: python2-%{name}-admin %endif %description admin Kobo admin provides templates for various kobo-based projects, incl. CLI, hub client, worker and hub. %package -n python2-%{name}-admin Summary: Kobo admin script for instant project deployment Group: Development/Tools Requires: python2-kobo >= %{version} Requires: python2-django >= 1.6 %{?python_provide:%python_provide python2-%{name}-admin} %description -n python2-%{name}-admin Python library for kobo-admin command. %endif %if 0%{?with_python3} %package -n python%{python3_pkgversion}-%{name} Summary: Python modules for tools development %{?python_provide:%python_provide python%{python3_pkgversion}-%{name}} %description -n python%{python3_pkgversion}-%{name} Kobo is a set of python modules designed for rapid tools development. %if 0%{?with_django} %package -n python%{python3_pkgversion}-%{name}-django Summary: Django components Group: Development/Libraries Requires: python%{python3_pkgversion}-kobo = %{version}-%{release} Requires: python%{python3_pkgversion}-django >= 1.6 %{?python_provide:%python_provide python%{python3_pkgversion}-%{name}-django} %description -n python%{python3_pkgversion}-%{name}-django Django components. %endif %if 0%{?with_client} %package -n python%{python3_pkgversion}-%{name}-client Summary: CLI client Group: Development/Libraries Requires: python%{python3_pkgversion}-kobo = %{version}-%{release} %{?python_provide:%python_provide python%{python3_pkgversion}-%{name}-client} %description -n python%{python3_pkgversion}-%{name}-client CLI client. %endif %if 0%{?with_worker} %package -n python%{python3_pkgversion}-%{name}-worker Summary: Worker daemon processing tasks submitted to the hub Group: Development/Libraries Requires: python%{python3_pkgversion}-kobo = %{version}-%{release} %{?python_provide:%python_provide python%{python3_pkgversion}-%{name}-worker} %description -n python%{python3_pkgversion}-%{name}-worker Worker daemon processing tasks submitted to the hub. %endif %if 0%{?with_hub} %package -n python%{python3_pkgversion}-%{name}-hub Summary: Xml-rpc and web interface to a task database Group: Development/Libraries Requires: python%{python3_pkgversion}-kobo = %{version}-%{release} Requires: python%{python3_pkgversion}-django >= 1.6 Requires: gzip %{?python_provide:%python_provide python%{python3_pkgversion}-%{name}-hub} %description -n python%{python3_pkgversion}-%{name}-hub Hub is a xml-rpc and web interface to a task database. %endif %package -n python%{python3_pkgversion}-%{name}-rpmlib Summary: Functions to manipulate with RPM files Group: Development/Libraries Requires: python%{python3_pkgversion}-kobo = %{version}-%{release} Requires: python%{python3_pkgversion}-rpm Requires: python%{python3_pkgversion}-koji %{?python_provide:%python_provide python%{python3_pkgversion}-%{name}-rpmlib} %description -n python%{python3_pkgversion}-%{name}-rpmlib Rpmlib contains functions to manipulate with RPM files. %if 0%{?with_admin} %package -n python%{python3_pkgversion}-%{name}-admin Summary: Kobo admin script for instant project deployment Group: Development/Tools Requires: python%{python3_pkgversion}-kobo >= %{version} Requires: python%{python3_pkgversion}-django >= 1.6 %{?python_provide:%python_provide python%{python3_pkgversion}-%{name}-admin} %description -n python%{python3_pkgversion}-%{name}-admin Python library for kobo-admin command. %endif %endif # with_python3 %prep %setup -q -n %{name}-%{version} %build %{py2_build} %if 0%{?with_python3} %{py3_build} %endif %install rm -rf ${RPM_BUILD_ROOT} %{py2_install} %if 0%{?with_python3} # only package python3 version of kobo-admin rm -rf $RPM_BUILD_ROOT/%{_bindir}/kobo-admin %{py3_install} %endif %if ! 0%{?with_admin} rm -rf $RPM_BUILD_ROOT/%{python2_sitelib}/kobo/admin %if 0%{?with_python3} rm -rf $RPM_BUILD_ROOT/%{python3_sitelib}/kobo/admin %endif rm -rf $RPM_BUILD_ROOT/%{_bindir}/kobo-admin %endif %if ! 0%{?with_client} rm -rf $RPM_BUILD_ROOT/%{python2_sitelib}/kobo/client %if 0%{?with_python3} rm -rf $RPM_BUILD_ROOT/%{python3_sitelib}/kobo/client %endif %endif %if ! 0%{?with_django} rm -rf $RPM_BUILD_ROOT/%{python2_sitelib}/kobo/django %if 0%{?with_python3} rm -rf $RPM_BUILD_ROOT/%{python3_sitelib}/kobo/django %endif %endif %if ! 0%{?with_hub} rm -rf $RPM_BUILD_ROOT/%{python2_sitelib}/kobo/hub %if 0%{?with_python3} rm -rf $RPM_BUILD_ROOT/%{python3_sitelib}/kobo/hub %endif %endif %if ! 0%{?with_worker} rm -rf $RPM_BUILD_ROOT/%{python2_sitelib}/kobo/worker %if 0%{?with_python3} rm -rf $RPM_BUILD_ROOT/%{python3_sitelib}/kobo/worker %endif %endif %files -n python2-%{name} %dir %{python2_sitelib}/kobo %{python2_sitelib}/kobo/*.py* %exclude %{python2_sitelib}/kobo/rpmlib.py* %doc AUTHORS %license COPYING LICENSE %{python2_sitelib}/%{name}-%{version}-py?.?.egg-info %if 0%{?with_django} %files -n python2-%{name}-django %{python2_sitelib}/kobo/django %endif %if 0%{?with_client} %files -n python2-%{name}-client %{python2_sitelib}/kobo/client %endif %if 0%{?with_worker} %files -n python2-%{name}-worker %{python2_sitelib}/kobo/worker %endif %if 0%{?with_hub} %files -n python2-%{name}-hub %{python2_sitelib}/kobo/hub %endif %files -n python2-%{name}-rpmlib %{python2_sitelib}/kobo/rpmlib.py* %if 0%{?with_admin} %files admin %{_bindir}/kobo-admin %files -n python2-%{name}-admin %{python2_sitelib}/kobo/admin %endif %if 0%{?with_python3} %files -n python%{python3_pkgversion}-%{name} %dir %{python3_sitelib}/kobo %{python3_sitelib}/kobo/*.py* %{python3_sitelib}/kobo/__pycache__/* %exclude %{python3_sitelib}/kobo/rpmlib.py* %{python3_sitelib}/%{name}-%{version}-py?.?.egg-info %doc AUTHORS %license COPYING LICENSE %if 0%{?with_django} %files -n python%{python3_pkgversion}-%{name}-django %{python3_sitelib}/kobo/django %endif %if 0%{?with_client} %files -n python%{python3_pkgversion}-%{name}-client %{python3_sitelib}/kobo/client %endif %if 0%{?with_worker} %files -n python%{python3_pkgversion}-%{name}-worker %{python3_sitelib}/kobo/worker %endif %if 0%{?with_hub} %files -n python%{python3_pkgversion}-%{name}-hub %{python3_sitelib}/kobo/hub %endif %files -n python%{python3_pkgversion}-%{name}-rpmlib %{python3_sitelib}/kobo/rpmlib.py* %if 0%{?with_admin} %files -n python%{python3_pkgversion}-%{name}-admin %{python3_sitelib}/kobo/admin %endif %endif %changelog * Wed Oct 18 2017 Rohan McGovern - 0.7.0-3 - Fix duplicate packaging of kobo-admin for python2, python3 - Fix some python3 packages depending on python2 packages - Prefer python2-* packages over unprefixed packages for Requires - Move kobo-admin to own package (Lubomír Sedlář) * Wed Oct 18 2017 Rohan McGovern - 0.7.0-2 - Fix Provides/Obsoletes to follow packaging guidelines (Lubomír Sedlář) * Tue Oct 17 2017 Rohan McGovern - 0.7.0-1 - New upstream release 0.7.0 - Build Python 3 packages (Lubomír Sedlář) * Tue Sep 05 2017 Rohan McGovern - 0.6.0-1 - New upstream release 0.6.0 * Wed Jul 26 2017 Fedora Release Engineering - 0.5.2-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild * Fri Feb 10 2017 Fedora Release Engineering - 0.5.2-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild * Fri Nov 4 2016 Zbigniew Jędrzejewski-Szmek - 0.5.2-2 - Convert to modern python macros - Own /usr/lib/python2.7/site-packages/kobo/ directory * Tue Jul 26 2016 Daniel Mach - 0.5.2-1 - conf.py: use print() function (Ken Dreyer) - conf.py: py2/py3 compatible exception handling (Ken Dreyer) - Fix shortcuts to run on py2.4. (Daniel Mach) - Closed tasks can be interrupted without throwing an exception (Marek Šabo) - Add __setitem__ to FileCache (Lubomír Sedlář) - Show minimal priority in admin (Tomas Kopecek) - Add tests/README (Alexander Todorov) - Add tests for RPMs with 'something-X.Y' names (Alexander Todorov) - xmlrpc: remember to call super class constructor (Kamil Dudka) - Condition for setting hostport generalized (Marek Šabo) - Http proxy working on Fedora 22 (Marek Šabo) - Pass arbitrary args to logging module (Lubomír Sedlář) - migration for min_priority (Tomas Kopecek) - fix default values (Tomas Kopecek) - minimal priority for worker (Tomas Kopecek) - backward compatibility with django 1.6 (Tomas Kopecek) - make get_tasks call backwards compatible (Tomas Kopecek) - Add permission for displaying task tracebacks (Tomas Kopecek) - report correct allowed username length (Tomas Kopecek) - Add a RPC call and a command to list running tasks. (Tomas Kopecek) - Add --all option for enable|disable worker command. (Tomas Kopecek) - Fix multiple same checksum types. (Tomas Kopecek) - Django 1.8 rebase (Tomas Kopecek) - Add ssl context for https. (Tomas Kopecek) - Don't add additional space when printing log. (Tomas Kopecek) - Fix displayed task time (Tomas Kopecek) * Tue Jul 19 2016 Fedora Release Engineering - 0.5.1-4 - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages * Thu Feb 04 2016 Fedora Release Engineering - 0.5.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild * Wed Jun 17 2015 Fedora Release Engineering - 0.5.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild * Tue Feb 17 2015 Daniel Mach - 0.5.1-1 - Enable/disable worker. (Tomas Kopecek) - upload_task_log: correctly handle unicode vs str strings. (Tomas Kopecek) - resubmit_task: add missing 'force' parameter. (Tomas Kopecek) * Sat Nov 15 2014 Daniel Mach - 0.5.0-1 - Modify shortcuts.run() to pass all **kwargs to Popen(). (Daniel Mach) - Admin page for kobo.auth.User (Tomas Kopecek) - Unset active menu if no other menu is active (Lubomír Sedlář) - Allow rendering menu for bootstrap's navbar (Lubomír Sedlář) - Handle menu items without text as dividers (Lubomír Sedlář) - allow --force in resubmit-tasks CLI command (Tomas Kopecek) - Django 1.6 db transaction model (Tomas Kopecek) - CLI command for viewing log files (Tomas Kopecek) - Display overall time in task page (Tomas Kopecek) - Fix shortcuts.run() to handle errno.EINTR correctly. (Tomas Tomecek) - Don't count assigned tasks into worker load. (Tomas Tomecek) - Human readable state exceptions. (Tomas Kopecek) - Human readable JSONField. (Tomas Kopecek) * Fri Jan 17 2014 Daniel Mach - 0.4.3-1 - Rename User model to properly adjust to older db schema. (Tomas Kopecek) - Fix typo in login template. (Tomas Kopecek) - Switch from simplejson to json. (Daniel Mach) * Tue Dec 17 2013 Daniel Mach - 0.4.2-1 - Revamp make_nvr() and make_nvra(), make them public (add to __all__), add tests. (Daniel Mach) - Fix: display subtasks in task's detail view (Tomas Tomecek) - Fix JSONField (load and dump) (Tomas Tomecek) - Fix CSRF exemption in XML-RPC handler factory (Tomas Tomecek) - View simplifications (Tomas Kopecek) - Translate everything in templates (Tomas Kopecek) - Additional fields visible in admin, searching/filtering (Tomas Kopecek) - Use more proper class-based style for generic forms (Tomas Kopecek) - Refactored generic views. (Tomas Kopecek) - Fix rtf content type test for py2.4. (Daniel Mach) - Add FileCache.items() to export items() and also fix py3. (Daniel Mach) - Remove slots from most places. (Daniel Mach) - Improve shortcuts.parse_checksum_line() to support escaped checksum lines. (Daniel Mach) - Add 'executable' argument to shortcuts.run(). (Daniel Mach) * Mon Oct 14 2013 Daniel Mach - 0.4.1-1 - Return 'nosrc' arch when RPMTAG_NOPATCH RPM header is set. (Daniel Mach) - Fix 'ImproperlyConfigured: The SECRET_KEY setting must not be empty.' exception in test_types.py. (Daniel Mach) - Fix setup script to install additional package data. (Daniel Mach) - Fix reading RPMTAG_NOSOURCE and RPMTAG_NOPATCH headers from 'nosrc' RPMs. (Daniel Mach) * Mon Jul 29 2013 Daniel Mach - 0.4.0-2 - Drop admin subpackage on rhel <= 5 - Drop admin, django and hub subpackages on epel 6 * Thu Jul 25 2013 Daniel Mach - 0.4.0-1 - Drop django and hub subpackages on rhel <= 5 - Set filename to be real name of a downloaded file. (Tomas Tomecek) - Fix logwatcher to scroll to latest logs. (Tomas Tomecek) - Remove obsolete function kobo.django.views.generic._object_list(). (Tomas Kopecek) - Updated README for 0.4.0 release (Tomas Kopecek) - Revamp setup.py and related files. (Daniel Mach) - LongnameUser table has auth_user db table name for easier upgrade. (Tomas Kopecek) - Add checksum_type to SimpleRpmWrapper. (Tomas Kopecek) - Add kobo.threads.run_in_threads() helper. (Tomas Kopecek) - Django 1.5 rebase. (Tomas Kopecek) - Remove unnecessary slots from pkgset.FileCache. (Daniel Mach) * Mon Feb 11 2013 Daniel Mach - 0.3.8-1 - Don't catch and mask any exceptions in cli.CommandOptionParser.run(). (Daniel Mach) - Set an empty keyring in rpmlib.get_rpm_header(). (Daniel Mach) - Format Fault's output to be nicer. (Tomas Tomecek) - Display error when cancelling task fails. (Tomas Tomecek) - Fix task cancelation method name. (Tomas Tomecek) - Add pkgset.SimpleRpmWrapper; support pickle by providing __getstate__() and __setstate__() methods. (Daniel Mach) - Enable searching in task list by label. (Tomas Tomecek) - Enable making custom queries in view task_list. (Tomas Tomecek) - Limit value length to 200 characters in tback.Traceback. (Daniel Mach) - Fix email.utils import to work with py2.4. (Daniel Mach) - Backwards compatibility bugfix in hub.models. (Tomas Tomecek) * Wed Jan 16 2013 Daniel Mach - 0.3.7-1 - Proxy support enhancement (Tomas Mlcoch) - Improve task ordering. (Daniel Mach) - Better formatting in Traceback output. (Tomas Tomecek) - Add JSONField.value_to_string() method. (Tomas Tomecek) - Improve task dir deletion and task files view. (Tomas Tomecek) - allow line buffering for shortcuts.run() (Tomas Kopecek) - Allow to specify buffer_size in shortcuts.run(). (Daniel Mach) - Add rpmlib.get_changelogs_from_header() and pkgset.RpmWrapper.changelogs. (Daniel Mach) - Support https_proxy environ variable (Tomas Mlcoch) - Create pid file in a more secure way. (Daniel Mach) - Create empty kobo.django.auth.models module to fix crashes in Django 1.4. (Daniel Mach) - Add shortcuts.makedirs() function which is identical to os.makedirs but doesn't fail on existing dirs. (Daniel Mach) - Fix typo in the 404.html template. (Daniel Mach) - Fix traceback on undefined workdir in kobo.shortcuts.run(). (Daniel Mach) - Add help-rst command which generates rst documentation for all CommandOptionParser's commands. (Daniel Mach) * Wed Dec 21 2011 Daniel Mach - 0.3.6-1 - Clarify auth middleware ordering in the hub settings template. (Daniel Mach) - Add kobo.threads -- a simple threading worker pool. (Daniel Mach) - Fix force_list and force_tuple to work with sets. (Daniel Mach) - Implement removing files from a file cache. (Daniel Mach) - Make shortcuts.run() thread-safe. (Daniel Mach) * Mon Oct 10 2011 Daniel Mach - 0.3.5-1 - Bump version to 0.3.5. (Daniel Mach) - Return tracebacks in the XML-RPC dispatcher as unicode. (Daniel Mach) - Refactor MainMenu to be Django 1.3 compliant. (Martin Magr) - Make StateEnumField Django 1.2 compliant. (Martin Magr) - Add proxy support to XML-RPC transports. (Daniel Mach) - Cache stat values in FileWrapper objects, add size and mtime properties. (Tomas Mlcoch) - Fix unittest kobo.http for Python 2.4. (Tomas Mlcoch) - Add unit test for kobo.pkgset. (Tomas Mlcoch) - Rename pkgset.FileCache.__get__ to __getitem__. (Tomas Mlcoch) - Add unit test for kobo.http. (Tomas Mlcoch) - Add unit test for kobo.decorators. (Tomas Mlcoch) - Add docstrings to kobo.http. (Tomas Mlcoch) - Add UndoHardlink class to __all__. (Tomas Mlcoch) - Add unit test for kobo.hardlink. (Tomas Mlcoch) - Fix params for os.utime() call in UndoHardlink class. (Tomas Mlcoch) - Fix tback.Traceback to work properly in interpreter. (Tomas Mlcoch) - Use getattr to read Krb5Error.err_code to prevent possible AttributeError in HubProxy. (Daniel Mach) - Add a new task state - CREATED. (Daniel Mach) - Fix templates to work properly in debug mode. (Daniel Mach) - Revamp log downloads - download as a stream, better support for other than .log files, enforce using UPLOAD_DIR in settings. (Daniel Mach) - Delete empty directories on FileUpload.delete(). (Daniel Mach) - Catch an exception when deleting an FileUpload object and target file is missing. (Daniel Mach) - Make sure that xmlrpc.decode_xmlrpc_chunk() won't fail on existing directory. (Daniel Mach) - Run task cleanup and notification for foreground tasks. (Daniel Mach) - Enhance shortcuts.iter_chunks() to work with files. (Daniel Mach) - Upload files in chunks in order to prevent client-side memory issues. (Daniel Mach) - Exclude file uploads from CSRF protection. (Daniel Mach) - Add assertRegexpMatches and assertIsInstance to tback tests to make them work on python < 2.7. (Daniel Mach) - Fix processing unitialized variables in tback. (Martin Bukatovic) - Fix a traceback in kobo-admin start-hub when a project name contained dashes. (Daniel Mach) - Add -tt python interpreter argument to project templates. (Daniel Mach) - Add kobo.rpmlib.parse_evr() to parse E:VR. (Daniel Mach) - Fix parse_nvra() - arch must not contain '-'. (Daniel Mach) - Add missing {{ project_name }} prefix to kobo admin templates. (Daniel Mach) - Start daemons in "/" rather than in working dir. (Daniel Mach) - Add TransactionMiddleware to the hub template's settings. (Daniel Mach) - Add skip_broken argument to PluginContainer.register_module() class method. (Daniel Mach) * Fri Feb 18 2011 Daniel Mach - 0.3.4-1 - Add kobo.decorators.log_traceback() devel decorator to log function tracebacks to a file. (Daniel Mach) - Fix tback.Traceback for py2.4. (Daniel Mach) * Tue Feb 1 2011 Daniel Mach - 0.3.3-1 - Replace double underscores with dots in xmlrpc method names. (Daniel Mach) - Fix regex in test_tback.py so unit tests pass. (Daniel Mach) - Fix session handling in worker. (Daniel Mach) - Fix kobo.Traceback to return empty string on no exception. Add traceback tests. (Tomas Kopecek) - Simplify hub deployment (add menu and template to default). Tweak kobo-admin templates. (Daniel Mach) - Add a warning about a possibly read-only database to the worker middleware assert. (Daniel Mach) - Add task notification() and cleanup() class methods. (Daniel Mach) - Revamp hub urls and admin templates. (Daniel Mach) - Prevent a race condition when using CookieTransport in threads in py2.7. (Daniel Mach) - Add unit test for EnumItem.change_state() return value. (Daniel Mach) - StateEnum.change_state() now returns bool as documented. (Martin Magr) - Command argument in kobo.shortcuts.run() can be also a list now. (Daniel Mach) - Strip path from nvr in kobo.rpmlib.parse_nvr() and parse_nvra(). (Daniel Mach) - Exclude XML-RPC from CSRF processing. (Daniel Mach) - Add stdin data support to kobo.shortcuts.run(). (Daniel Mach) - Add kobo.shortcuts.iter_chunks() to iterate through a list, string or generator and yield chunks of defined size. (Daniel Mach) - Raise an exception when spawn_subtask() or wait() method is called in a foreground task. (Daniel Mach) - Add constructor to kobo.django.hacks.UserChangeForm to fix maximum recursion depth error. (Daniel Mach) - Fix username max_length hack to work with Django 1.2.1. (Martin Bukatovic) - Add kobo.notification module to send email notifications. (Daniel Mach) - Process kobo.shortcuts.run() logging in chunks and print data immediately. (Daniel Mach) - Subtasks have to follow parent's channel and arch. (Martin Magr) - Compute elapsed time for running tasks. (Tomas Kopecek) * Wed Oct 27 2010 Daniel Mach - 0.3.2-1 - Fix XML-RPC transports to make them work in py2.5 and py2.6. (Daniel Mach) - Automatically scroll the task log window when we're at the bottom of the page. (Daniel Mach) - Show self.* attributes in extended tracebacks. (Daniel Mach) - Compress logs with gzip when a task finishes. (Daniel Mach) - Convert task logs to utf8 (with "replace" option) to prevent raising UnicodeDecodeError during template processing. (Daniel Mach) * Tue Oct 19 2010 Daniel Mach - 0.3.1-1 - Add help-admin command to display help for admin commands. (Daniel Mach) - Add config parser support for glob matching on dict keys. (Tomas Kopecek) - Implement timeout support in xmlrpc transports. (Daniel Mach) - Improve kobo.xmlrpc.CookieTransport to work with python 2.7 as well. (Daniel Mach) - Add kobo-admin utility. (Martin Bukatovic) - Add missing HttpResponseForbidden import to kobo.hub.views. (Daniel Mach) - Fix bug in "Show only my tasks" search option on Tasks page. (Daniel Mach) * Fri Aug 13 2010 Daniel Mach - 0.3.0-2 - Bump to new upstream version. - Fix kobo.rpmlib.get_digest_algo_from_header() when RPMTAG_FILEDIGESTALGO contains None value. (Daniel Mach) - Pass 'conf' argument do daemonized worker's main_loop. (Daniel Mach) * Mon Feb 15 2010 Daniel Mach - 0.2.1-1 - Split rpmlib to a subpackage. - Add missing "compare_nvr" to __all__. (Daniel Mach) - Remove duplicate subtask removal in Task.wait(). (Tomas Kopecek) - Parent task didn't wake up even if all child tasks were finished. (Tomas Kopecek) - Change 'make log' to use C locales and automatically fill name and email from GIT. (Daniel Mach) - Fix spawn_subtask argument. (cherry picked from commit 374a4165c16d6b34fa486a38525753969e549415) (Tomas Kopecek) - Fix XML-RPC method registration. (original patch by Xuqing Kuang) (Daniel Mach) - Convert rpm.labelCompare's arguments to string to prevent segfaulting. Add compare_nvr tests. (Tomas Kopecek) - Add Task.get_time_display() to get time spent in task in human readable form. (Daniel Mach) - Use koji.get_sigpacket_key_id() to read sigkey id from a rpm header. (Daniel Mach) * Thu Nov 5 2009 Daniel Mach - 0.2.0-1 - Rewrite menu to get rid of tuples in menu definition. Always use MenuItem classes. (Daniel Mach) - Send task logs to hub to enable realtime log watching. (Daniel Mach) - Add menu_item helper. (Tomas Kopecek) - New version of menu component. (Tomas Kopecek) - Order tasks to assign by priority first. (Daniel Mach) - Fix spacing errors to be more PEP 8 compliant. (Daniel Mach) - Handle SystemExit in TaskManager.run_task(). (Daniel Mach) - Add a shortcut and pkgset support for computing hashlib based hashes. (Daniel Mach) - Add hack enabling 'VERBOSE' log level in the python logging module and Logger class. (Daniel Mach) - Run tests in alphabetical order. (Daniel Mach) - Fix TaskAdmin to search for user in correct db field. (Tomas Kopecek) - More convenient admin listing for Worker model. (Tomas Kopecek) - Add files to cache faster (skip stat call when possible). (Tomas Kopecek) - Remove deps on postgresql, httpd, mod_auth_kerb and python-krbV. - Add AUTHORS, COPYING and LICENSE to kobo.rpm. * Tue Aug 18 2009 Daniel Mach - 0.1.2-1 - Read default paginate_by value from settings in kobo.django.views.generic.object_list. (Tomas Kopecek) - Add read_from_file() and rename save() to save_to_file() in kobo.shortcuts. (Daniel Mach) - Reverse FileUpload default ordering. (Daniel Mach) - Add kobo.conf.get_dict_value() to support dicts with default values. (Daniel Mach) - Add direct access to files via pkgset.RpmWrapper. (Tomas Kopecek) - Add documentation to django.auth.krb5. (Daniel Mach) - Fix worker key generation in kobo.hub.models.Worker.save(). (Daniel Mach) - Fix a security hole in krb5 middleware: a user was able to log in as different user to admin interface. (Daniel Mach) - Change Makefile to run tests before creating source tarball. (Daniel Mach) - Change HubProxy._hub verification to fix exceptions in Python2.6. (Martin Magr) - Another SQL performance improvement in Task admin. (Tomas Kopecek) - Set Task.parent as raw_id field to improve admin performance. (Daniel Mach) - Add (spent) time method to Task and display it in the admin listing. (Tomas Kopecek) * Wed Jul 22 2009 Daniel Mach - 0.1.1-1 - Enhance types.Enum to support help_text and additonal options. Update tests for types module. (Daniel Mach) - Remove temp directory after file upload. (Tomas Kopecek) - Remove MANIFEST in make clean. (Daniel Mach) - Fix shortcuts.run to read complete stdout. (Jan Blazek) - Add rpmlib.get_file_list_from_header() which extracts file list, colors and checksums from a rpm header. (Daniel Mach) - Add get_digest_algo_from_header() function to read rpm digest algorithm. (Daniel Mach) - Update epydoc docstrings in kobo.rpmlib. (Daniel Mach) - Fix deadlock in run(). Use proc.poll() instead of proc.wait(). (Daniel Mach) - Update epydoc docstrings in kobo.shortcuts. (Daniel Mach) - Fix AtributeError when active_submenu is None. (Daniel Mach) - Return menu dict even if no menu is active. (Daniel Mach) - Do not allow to register plugins to PluginContainer base class. Add several tests. (Daniel Mach) - Add test runner. (Daniel Mach) - Add support for empty submenus. (Martin Magr) * Wed Jun 17 2009 Daniel Mach - 0.1.0-1 - first release