Skip to content

Commit 29d5684

Browse files
committed
sales and backwards incompatible info
1 parent 78bb675 commit 29d5684

File tree

5 files changed

+94
-64
lines changed

5 files changed

+94
-64
lines changed

CHANGELOG.rst

Lines changed: 46 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,30 @@ Changelog
44
2.1.0 (2018-05-XX)
55
++++++++++++++++++
66

7+
This release concentrates mostly on stability and adds small features here and there. Some of them
8+
are backwards incompatible and are marked as such. They shouldn't affect many users since most of
9+
them were used internally by Python-Redmine. A support for the Files API has been finally added, but
10+
please be sure to check it's documentation as the implementation on the Redmine side is horrible and
11+
there are things to keep in mind while working with Files API. Lastly, only until the end of May 2018
12+
there is a chance to buy a Pro Edition for only 14.99$ instead of the usual 24.99$, this is your
13+
chance to get an edition with additional features for a good price and to support the further development
14+
of Python-Redmine, more info `here <https://python-redmine.com/editions.html#pro-edition>`_.
15+
716
**New Features**:
817

918
- Files API support (`Issue #117 <https://github.com/maxtepkeev/python-redmine/issues/117>`__)
1019

1120
**Improvements**:
1221

13-
- ResourceSet's ``filter()`` method became more advanced. It is now possible to filter on all available
14-
resource attributes, to follow resource relationships and apply lookups to the filters (see
15-
`docs <https://python-redmine.com/introduction.html#methods>`__ for details)
22+
- *Backwards Incompatible:* ResourceSet's ``filter()`` method became more advanced. It is now possible
23+
to filter on all available resource attributes, to follow resource relationships and apply lookups to
24+
the filters (see `docs <https://python-redmine.com/introduction.html#methods>`__ for details)
1625
- ResourceManager class has been refactored:
1726

1827
* ``manager_class`` attribute on the ``Resource`` class can now be used to assign a separate
1928
``ResourceManager`` to a resource, that allows outsourcing a resource specific functionality to a
2029
separate manager class (see ``WikiPageManager`` as an example)
21-
* ``request()`` method has been removed
30+
* *Backwards Incompatible:* ``request()`` method has been removed
2231
* ``_construct_*_url()``, ``_prepare_*_request()``, ``_process_*_response()`` methods have been added
2332
for create, update and delete methods to allow a fine-grained control over these operations
2433

@@ -40,19 +49,20 @@ Changelog
4049

4150
**Changes**:
4251

43-
- Issue ``all`` operation now really returns all issues, i.e. both open and closed, instead of only returning
44-
open issues in previous versions due to the respect to Redmine's standard behaviour
45-
- Instead of only returning a token string, ``upload()`` method was modified to return a dict that contains
46-
all the data for an upload returned from Redmine, i.e. id and token for Redmine >= 3.4.0, token only for
47-
Redmine < 3.4.0. Also it is now possible to use this token and pass it using a ``token`` key instead of the
48-
``path`` key with path to the file in ``uploads`` parameter when doing an upload, this gives more control
49-
over the uploading process if needed
50-
- Removed ``resource_paths`` argument from Redmine object since ``ResourceManager`` now uses a special resource
51-
registry, to which, all resources that inherit from any Python-Redmine resource are being automatically added
52-
- Removed ``container_many`` in favor of ``container_filter``, ``container_create`` and ``container_update``
53-
attributes on ``Resource`` object to allow more fine-grained resource setup
54-
- ``return_raw`` parameter on ``engine.request()`` and ``engine.process_response()`` methods has been removed
55-
in favor of ``return_raw_response`` attribute on engine object
52+
- *Backwards Incompatible:* Issue ``all`` operation now really returns all issues, i.e. both open and closed,
53+
instead of only returning open issues in previous versions due to the respect to Redmine's standard behaviour
54+
- *Backwards Incompatible:* Instead of only returning a token string, ``upload()`` method was modified to return
55+
a dict that contains all the data for an upload returned from Redmine, i.e. id and token for Redmine >= 3.4.0,
56+
token only for Redmine < 3.4.0. Also it is now possible to use this token and pass it using a ``token`` key
57+
instead of the ``path`` key with path to the file in ``uploads`` parameter when doing an upload, this gives
58+
more control over the uploading process if needed
59+
- *Backwards Incompatible:* Removed ``resource_paths`` argument from Redmine object since ``ResourceManager``
60+
now uses a special resource registry, to which, all resources that inherit from any Python-Redmine resource
61+
are being automatically added
62+
- *Backwards Incompatible:* Removed ``container_many`` in favor of ``container_filter``, ``container_create``
63+
and ``container_update`` attributes on ``Resource`` object to allow more fine-grained resource setup
64+
- *Backwards Incompatible:* ``return_raw`` parameter on ``engine.request()`` and ``engine.process_response()``
65+
methods has been removed in favor of ``return_raw_response`` attribute on engine object
5666
- Updated bundled requests library to v2.15.1
5767

5868
**Bugfixes**:
@@ -121,8 +131,9 @@ user.
121131
``pre_*()`` and ``post_*()`` methods
122132
* ``ResourceSet`` object's ``get()`` and ``filter()`` methods now supports non-integer id's, e.g.
123133
WikiPage's title can now be used with it
124-
* ``ValuesResourceSet`` class has been removed
125-
* ``ResourceSet.values()`` method now returns an iterable of dicts instead of ``ValuesResourceSet`` object
134+
* *Backwards Incompatible:* ``ValuesResourceSet`` class has been removed
135+
* *Backwards Incompatible:* ``ResourceSet.values()`` method now returns an iterable of dicts instead of
136+
``ValuesResourceSet`` object
126137
* ``ResourceSet.values_list()`` method has been added which returns an iterable of tuples with Resource
127138
values or single values if flattened, i.e. ``flat=True``
128139

@@ -146,21 +157,23 @@ user.
146157

147158
**Changes**:
148159

149-
- Renamed package name from ``redmine`` to ``redminelib``
160+
- *Backwards Incompatible:* Renamed package name from ``redmine`` to ``redminelib``
150161
- Resource class attributes that were previously tuples are now lists
151-
- ``_Resource`` class renamed to ``Resource``
152-
- ``Redmine.custom_resource_paths`` keyword argument renamed to ``resource_paths``
153-
- ``Redmine.download()`` method now returns a `requests.Response <http://docs.python-requests.org/
154-
en/latest/api/#requests.Response>`__ object directly instead of ``iter_content()`` method if a ``savepath``
155-
param wasn't provided, this gives user even more control over response data
156-
- ``Resource.refresh()`` now really refreshes itself instead of returning a new refreshed
157-
resource, to get the previous behaviour use ``itself`` param, e.g. ``Resource.refresh(itself=False)``
158-
- Removed Python 3.2 support
159-
- Removed ``container_filter``, ``container_create`` and ``container_update`` attributes on ``Resource``
160-
object in favor of ``container_many`` attribute
161-
- Removed ``Resource.translate_params()`` and ``ResourceManager.prepare_params()`` in favor of
162-
``Resource.bulk_decode()``
163-
- Removed ``is_unicode()``, ``is_string()`` and ``to_string()`` from ``redminelib.utilities``
162+
- *Backwards Incompatible:* ``_Resource`` class renamed to ``Resource``
163+
- *Backwards Incompatible:* ``Redmine.custom_resource_paths`` keyword argument renamed to ``resource_paths``
164+
- *Backwards Incompatible:* ``Redmine.download()`` method now returns a `requests.Response
165+
<http://docs.python-requests.org/en/latest/api/#requests.Response>`__ object directly instead of
166+
``iter_content()`` method if a ``savepath`` param wasn't provided, this gives user even more control over
167+
response data
168+
- *Backwards Incompatible:* ``Resource.refresh()`` now really refreshes itself instead of returning a new
169+
refreshed resource, to get the previous behaviour use ``itself`` param, e.g. ``Resource.refresh(itself=False)``
170+
- *Backwards Incompatible:* Removed Python 3.2 support
171+
- *Backwards Incompatible:* Removed ``container_filter``, ``container_create`` and ``container_update`` attributes
172+
on ``Resource`` object in favor of ``container_many`` attribute
173+
- *Backwards Incompatible:* Removed ``Resource.translate_params()`` and ``ResourceManager.prepare_params()`` in
174+
favor of ``Resource.bulk_decode()``
175+
- *Backwards Incompatible:* Removed ``is_unicode()``, ``is_string()`` and ``to_string()`` from
176+
``redminelib.utilities``
164177
- Updated bundled requests library to v2.13.0
165178

166179
**Bugfixes**:

README.rst

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,18 @@ Python-Redmine
22
==============
33

44
.. image:: https://badge.fury.io/py/python-redmine.svg
5-
:target: https://badge.fury.io/py/python-redmine
5+
:target: https://badge.fury.io/py/python-redmine
66

77
.. image:: https://img.shields.io/travis/maxtepkeev/python-redmine/master.svg
8-
:target: https://travis-ci.org/maxtepkeev/python-redmine
8+
:target: https://travis-ci.org/maxtepkeev/python-redmine
99

1010
.. image:: https://img.shields.io/coveralls/maxtepkeev/python-redmine/master.svg
11-
:target: https://coveralls.io/r/maxtepkeev/python-redmine?branch=master
11+
:target: https://coveralls.io/r/maxtepkeev/python-redmine?branch=master
12+
13+
.. tip::
14+
15+
Until the end of May 2018 - Pro Edition for 14.99$ instead of 24.99$, more info
16+
`here <https://python-redmine.com/editions.html#pro-edition>`_
1217

1318
Python-Redmine is a library for communicating with a `Redmine <http://www.redmine.org>`_
1419
project management application. Redmine exposes some of it's data via `REST API
@@ -18,36 +23,36 @@ a simple but powerful Pythonic API inspired by a well-known `Django ORM
1823

1924
.. code-block:: python
2025
21-
>>> from redminelib import Redmine
26+
>>> from redminelib import Redmine
2227
23-
>>> redmine = Redmine('http://demo.redmine.org', username='foo', password='bar')
24-
>>> project = redmine.project.get('vacation')
28+
>>> redmine = Redmine('http://demo.redmine.org', username='foo', password='bar')
29+
>>> project = redmine.project.get('vacation')
2530
26-
>>> project.id
27-
30404
31+
>>> project.id
32+
30404
2833
29-
>>> project.identifier
30-
'vacation'
34+
>>> project.identifier
35+
'vacation'
3136
32-
>>> project.created_on
33-
datetime.datetime(2013, 12, 31, 13, 27, 47)
37+
>>> project.created_on
38+
datetime.datetime(2013, 12, 31, 13, 27, 47)
3439
35-
>>> project.issues
36-
<redminelib.resultsets.ResourceSet object with Issue resources>
40+
>>> project.issues
41+
<redminelib.resultsets.ResourceSet object with Issue resources>
3742
38-
>>> project.issues[0]
39-
<redminelib.resources.Issue #34441 "Vacation">
43+
>>> project.issues[0]
44+
<redminelib.resources.Issue #34441 "Vacation">
4045
41-
>>> dir(project.issues[0])
42-
['assigned_to', 'author', 'created_on', 'description', 'done_ratio',
43-
'due_date', 'estimated_hours', 'id', 'priority', 'project', 'relations',
44-
'start_date', 'status', 'subject', 'time_entries', 'tracker', 'updated_on']
46+
>>> dir(project.issues[0])
47+
['assigned_to', 'author', 'created_on', 'description', 'done_ratio',
48+
'due_date', 'estimated_hours', 'id', 'priority', 'project', 'relations',
49+
'start_date', 'status', 'subject', 'time_entries', 'tracker', 'updated_on']
4550
46-
>>> project.issues[0].subject
47-
'Vacation'
51+
>>> project.issues[0].subject
52+
'Vacation'
4853
49-
>>> project.issues[0].time_entries
50-
<redminelib.resultsets.ResourceSet object with TimeEntry resources>
54+
>>> project.issues[0].time_entries
55+
<redminelib.resultsets.ResourceSet object with TimeEntry resources>
5156
5257
Features
5358
--------
@@ -71,7 +76,7 @@ The recommended way to install is from Python Package Index (PyPI) with `pip <ht
7176

7277
.. code-block:: bash
7378
74-
$ pip install python-redmine
79+
$ pip install python-redmine
7580
7681
Pro Edition
7782
+++++++++++

docs/_static/css/python-redmine.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ ol.multinum>li:before {
6262
counter-increment: item;
6363
}
6464

65+
.strike {
66+
text-decoration: line-through;
67+
}
68+
6569
.feature-matrix {
6670
width: 100%;
6771
margin-bottom: 24px;

docs/editions.rst

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,18 @@ for details.
1111
Pro Edition
1212
-----------
1313

14+
.. role:: strike
15+
:class: strike
16+
1417
Supports additional features like async requests to Redmine, additional Redmine plugins and
1518
so on. Licensed under `Python-Redmine Pro Edition License Version 1.0
1619
<https://python-redmine.com/license.html#pro-edition>`_. License can be bought `here
1720
<https://secure.avangate.com/order/checkout.php?PRODS=4708754&QTY=1&CART=1&CARD=1&DISABLE_SHORT_FORM_MOBILE=1>`_
18-
for 24.99$ (additional taxes and/or charges may apply depending on the country of purchase and
19-
payment method used), doesn't expire and is valid for the current major Python-Redmine version,
20-
e.g. if at the time of purchase current Python-Redmine version is 2.0.1 then license will be
21-
valid for all 2.x.x versions. Below you can find a feature matrix which shows all the differences
22-
between these editions:
21+
for :strike:`24.99$` **14.99$ until the end of May 2018** (additional taxes and/or charges may apply (will be
22+
shown before the purchase) depending on the country of purchase and payment method used), doesn't expire and is
23+
valid for the current major Python-Redmine version, e.g. if at the time of purchase current Python-Redmine
24+
version is 2.0.1 then license will be valid for all 2.x.x versions. Below you can find a feature matrix which
25+
shows all the differences between these editions:
2326

2427
.. Sphinx and our current theme don't provide a way to create a table in the needed
2528
format, that is why we are using the raw html with redefined theme stylesheet here.

docs/index.rst

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,15 @@ Python-Redmine
1010
.. image:: https://img.shields.io/coveralls/maxtepkeev/python-redmine/master.svg
1111
:target: https://coveralls.io/r/maxtepkeev/python-redmine?branch=master
1212

13+
.. tip::
14+
15+
Until the end of May 2018 - Pro Edition for 14.99$ instead of 24.99$, more info
16+
`here <https://python-redmine.com/editions.html#pro-edition>`_
17+
1318
Python-Redmine is a library for communicating with a `Redmine <http://www.redmine.org>`_
1419
project management application. Redmine exposes some data via `REST API
1520
<http://www.redmine.org/projects/redmine/wiki/Rest_api>`_ for which Python-Redmine provides
16-
simple but powerful Pythonic API inspired by a well-known `Django ORM
21+
a simple but powerful Pythonic API inspired by a well-known `Django ORM
1722
<https://docs.djangoproject.com/en/dev/topics/db/queries/>`_:
1823

1924
.. code-block:: python

0 commit comments

Comments
 (0)