Commit graph

273 commits

Author SHA1 Message Date
Jan-Jelle Kester
4e7c640ba0 Bump copyright year 2020-09-07 16:52:32 +02:00
Jan-Jelle Kester
ee8a700b1b Clean up project structure 2020-09-07 16:52:32 +02:00
Jan-Jelle
c3b06045e0
Use Travis CI deployment v2 2019-12-16 11:21:35 +01:00
Jan-Jelle Kester
16daa13575 Supply PyPI credentials via environment variables (#222) 2019-12-03 15:36:40 +01:00
Keith Bussell
2aecef2760
Fix TOXENV variable name in deploy step (#217) 2019-11-12 20:42:27 +01:00
Keith Bussell
843495f669 Remove multi-db tests to make them more reliable
Fixes #213
2019-11-11 18:13:06 +01:00
Keith Bussell
e138ee8855 Bump version 2019-11-11 18:13:06 +01:00
Keith Bussell
7fa9636c18 Add Python 3.7 classifier 2019-11-11 18:13:06 +01:00
Keith Bussell
8b84777117 Ensure db affinity between model and LogEntry
This test case would fail occasionally--sometimes accessing `history`
would try pulling from "default" instead of the "postgres" database.

To fix this issue generally, this change:
https://github.com/jjkester/django-auditlog/pull/94/files#diff-10976dd6652a7dba50d5de998672e49bR60

should be propagated somehow into `AuditlogHistoryField`.
2019-11-11 18:13:06 +01:00
Keith Bussell
e0e6acb49c Use matrix to define TOXENV in Travis 2019-11-11 18:13:06 +01:00
Keith Bussell
c1d25a9ab5 Update testing for supported Django versions
Add support for Django 2.1 and 2.2, and drop support for < 1.11
2019-11-11 18:13:06 +01:00
Varuna Bamunusinghe
9be61a84a1 Fix tests for multiple database support. 2019-11-11 18:13:06 +01:00
Jan-Jelle Kester
12af4d45a0
Fix deploy config
* Bump version

* Set pypi config in .travis.yml
2018-09-18 22:56:54 +02:00
Jan-Jelle Kester
70e22afc78
Bump version 2018-09-18 11:09:10 +02:00
Ryan Castner
a22978e05b
(docs) Update README to include steps to release (#185) 2018-09-17 14:56:44 -04:00
Jan-Jelle Kester
aab8f47f97 Add deploy config for Travis CI (#183)
* Add deploy config for Travis CI

* Use binary psycopg2 distribution

* Remove group to get newer postgres version

* Revert "Remove group to get newer postgres version"

This reverts commit 2c22ae3248.

* Default to Postgres 9.4, Django 2.0 dropped support for <=9.3.

https://docs.travis-ci.com/user/database-setup/#using-a-different-postgresql-version
2018-09-17 14:30:08 -04:00
David D Lowe
bcf1dbf0bf Indicate Python 3 support in metadata (#176) 2018-05-30 14:12:25 -04:00
Keith Bussell
3a82338e59 (feature) Allow AuditlogHistoryField to block cascading deletes (#172)
Fixes #108

Thanks to @andrewwatts for suggesting and researching the approach.
2018-03-27 14:42:36 -04:00
Jethro Muller
bc886fa01d Mark LogEntryAdminMixin methods output as safe where required (#167)
* Mark LogEntryAdminMixin method output as safe where required

Use format_html to provide conditional escaping and mark_safe functionality

* Unwrap function call to prevent py27 and py34 errors
2018-03-01 11:24:00 -05:00
Afsalms
fced0a6dd8 Corrected the issue when audit log when using django Django==2.0.1 (#166)
* Corrected the issue when audit log when using django Django==2.0.1

* Quick fix
2018-02-28 09:47:27 -05:00
Jan-Jelle Kester
1c8d60b596
Merge pull request #160 from jjkester/v0.4.5
v0.4.5
2018-01-12 23:44:07 +01:00
Jan-Jelle Kester
eaa02e6f38 Version bump 2018-01-12 23:39:44 +01:00
Jan-Jelle Kester
b51b942348
Merge pull request #155 from audiolion/bugfix/changes-display-dict-errors
(bugfix) changes_display_dict errors
2018-01-11 17:30:45 +01:00
Ryan Castner
d9ead64eab
Change syntax to be more terse 2018-01-11 11:18:59 -05:00
Ryan Castner
7fea1c59a1
Merge branch 'master' into bugfix/changes-display-dict-errors 2018-01-11 10:57:16 -05:00
Ryan Castner
e22c2f7d6b Fix crash when verbose_name is not defined on a model and field is not defined in mapping_fields. Defaults to field.name as a fallback 2018-01-11 10:56:31 -05:00
Ryan Castner
b410b40597
Add missing django 2.0 tox tests (#156) 2018-01-08 09:39:45 -05:00
AmirAli Akbari
560e2028c6 (bugfix) Fall back on actor repr when reverse url fails 2018-01-04 14:26:52 -05:00
Stephen Mc Guinness
881b7326bd (bugfix) Adds hasattr check before threadlocal.auditlog access in set_actor
middleware.set_actor was inconsistent with other methods in checking for
hasattr(threadlocal, 'auditlog')
2018-01-04 14:07:13 -05:00
sven
31db99497a (bugfix) Naive Datetimes Crashing (#107)
* Timezone naive fix
2018-01-04 13:43:23 -05:00
Denis
96f2f3d93e Fixed resource_url to work with non-id models (#147)
* Fixed resource_url to work with non-id models

* Add tests for auditlog admin
2018-01-04 11:49:39 -05:00
Ryan Castner
f6ade2078b
Merge branch 'master' into bugfix/changes-display-dict-errors 2018-01-04 09:14:55 -05:00
Rod Manning
4dee03497c Add Django 2.0 Support (#154)
* Add changes for django 2.0

Made the following changes to ensure compatibility with django 2.0:

1. Replaced function calls to `is_authenticated()` with reference to
   property `is_authenticated`.

2. Added try/except call to import `django.core.urlresolvers` (now
   called `django.urls`.

   Also added an `... as ...` statement to ensure that references in the
   code to `urlresolvers` don't need to be changed.

3. Fixed calls statement of `on_delete` arg to all ForeignKey
   fields.

   Note that previously a kwarg was acceptable, but this is now a
   positional arg, and the selected `on_delete` method has been
   retained.

* Update tox tests and consequentual changes

Updated tox.ini to also test django 2.0 on python 3+. Some changes made
to previous commits required to ensure all tests passed:

- Added `compat.py` to have a `is_authenticated()` function to check
  authentication.

  This was necessary as the property/method call for `is_authenticated`
  is no compatible between django 1.8 (LTS) and 2.0.

  Changed AuditLogMiddleware to call this compatibility function instead
  of the django built-ins as a result.

- Changes made to `auditlog/models.py` to apply kwargs to both `to=` and
  `on_delete=` for consistency of handling in all version tested.

Incorrect django version specified for tox.ini. Now fixed.

* Add 'on_delete' kwarg to initial migration

Added and re-arranged 'on_delete' and 'to' kwargs in initial migration
to ensure compatbility with later versions of Django.

Also included updated manifest with changes required due to django 2.0
work.

* Add TestCase for compat.py

Added simple test case for compat.py file.

* Changes follow code review 2017-12-21

* More changes following code review 2017-12-28

1. Added detailed commentary to `compat.py` to ensure reason why
   `is_authenticated()` compatibility function is needed

2. Changed `hasattr` to `callable` in compat.is_authenticated()

3. Fixed typo in migration 0001 to use correct `on_delete` function
2018-01-02 13:50:45 -05:00
Ryan Castner
13d3eba674 Update tests to reflect testing against the localized timestamp 2018-01-02 13:13:10 -05:00
Ryan Castner
76a4ea0f95 Fix issue where base_field.choices has options but we short circuit on an empty field.choices 2018-01-02 13:12:44 -05:00
Ryan Castner
a94ca4d5fd Use django's timezone to provide utc tzinfo 2018-01-02 12:34:52 -05:00
Ryan Castner
6cb9a27dca Exclude fields with no internal type, e.g. relationships like foreign keys and reverse foreign keys, from the changes_display_dict output. 2018-01-02 12:28:37 -05:00
Ryan Castner
a98bf9d7a5 The previous conditional did not work as expected, when field.choices returns an empty dict the boolean is False and the operator does not shortcircuit as expected. This causes field.base_field.choices to be evaluated which crashes as it does not exist and field.choices was supposed to be the input. The updated version fixes this bug. 2018-01-02 12:28:02 -05:00
Ryan Castner
2105366379 Datetimes are stored without tzinfo, but as UTC. changes_display_dict now adds in UTC tzinfo then casts DateTimes to the server's settings.TIME_ZONE. 2018-01-02 12:24:49 -05:00
Jan-Jelle Kester
e33aef85d5
Merge pull request #150 from jjkester/v0.4.4
Version 0.4.4
2017-11-18 16:04:01 +01:00
Jan-Jelle Kester
f45fb55c81 Version bump 2017-11-18 15:48:00 +01:00
Ryan Castner
45760c6316 Fixes #93 - Add 'changes_display_dict' property to 'LogEntry' model to display diff in a more human readable format (#94)
Fixes #93 - Add 'changes_display_dict' property to 'LogEntry' model to display diff in a more human readable format

'changes_display_dict' currently handles fields with choices, long textfields and charfields, datefields, timefields, and datetimefields. Supports `django-multiselectfield` with choices and Postgres's ArrayField with choices.

Textfields and Charfields longer than 140 characters are truncated with an ellipsis appended.
Date, Time and DateTime fields are rendered according to `L10N`, or if turned off fall back on Django settings defaults for DATE_FORMAT, TIME_FORMAT and DATETIME_FORMAT.

A new kwarg was added to 'AuditlogModelRegistry' called 'mapping_fields'. The kwarg allows the user to map the fields in the model to a more human readable or intuitive name. If a field isn't mapped it will default to the `verbose_name` as defined on the model or the Django default `verbose_name`. Partial mapping is supported, all fields do not need to be mapped to use the feature.

* Add django-multiselectfield test dep

* Add psycopg2 test dep

* Add postgres testing database and router

* Add postgres support to travis builds

* Add support for multiple databases. LogEntry saves to same database of the model its associated to

* If any literal evals fail default to None

* Add support for Postgres ArrayField in changes_display_dict

* Revert to old travis image while they are fixing issues with it

* Update docs

* Add full test coverage
2017-09-13 10:57:47 -04:00
Ryan Castner
ac8638dadd Chore -- Update testing (#126)
* Ignore new testing related files

* Add tox testing, coverage and codecov integration.
Drop Django 1.9 testing as support officially ended in April,
Add Django 1.11 testing, the new LTS version of Django
Add testing against Django for each versions supported python versions.
Remove Django from requirements, install handled through tox for tests and
regular repositories do not need us to install Django for them or enforce
a django version, they can choose to use a supported version or not.

* Update for python 3.6 tests
2017-07-05 09:32:27 -04:00
Ryan Castner
7736f40dd1 Add management commands package to setup.py (#130)
We weren't actually packaging up the management command when we published to PyPI
2017-07-05 08:50:38 -04:00
Grant McConnaughey
cf190fce7a Support models with UUID primary keys (#111)
Fixes #110 to add support for UUID primary keys in related many to many querysets in the `get_for_objects()` method.

Forces queryset evaluation in `get_for_objects()` to cache the queryset, reducing additional db queries.
2017-06-29 10:19:33 -04:00
Jan-Jelle Kester
511816afc2 Merge pull request #117 from chris-griffin/master
Deprecate the use of field.rel except for django 1.8
2017-06-14 10:29:46 +02:00
Chris Griffin
ee8bd9bbef
Deprecate the use of field.rel except for django 1.8 2017-06-13 15:15:27 -04:00
Jan-Jelle Kester
cd662fc529 Merge pull request #105 from jjkester/v0.4.3
Fix import error on NoReverseMatch
2017-02-16 22:29:13 +01:00
Jan-Jelle Kester
d97160f0c8 Version bump 2017-02-16 22:24:35 +01:00
Jan-Jelle Kester
22997ded2f Fix import error
Issue #104
2017-02-16 22:24:24 +01:00