forked from stephenmcd/mezzanine
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
3151 lines (2885 loc) · 279 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Version 5.0 and newer
---------------------
Please refer to the `GitHub Releases Page <https://github.com/stephenmcd/mezzanine/releases>`_.
Version 4.3.1 (Aug 08, 2018)
----------------------------
* Allow fabfile to be importable when building docs - steve@jupo.org
* Remove top-level ``__init__.py`` from new projects. Closes #1860 - steve@jupo.org
* Fix HTML escaping. Closes #1866 - steve@jupo.org
Version 4.3.0 (Jun 15, 2018)
----------------------------
* Added explicit ``on_delete`` arguments for all ForeignKey models - Samir Shah
* Only generate thumbnails in RichText when absolute width/height used. Closes #1748 - Stephen McDonald
* Removed null attribute from slug CharField - Samir Shah
* Converted all ``template.render`` calls to pass a dict instead of a Context object - Samir Shah
* Fixed ``MezzanineBackend.authenticate`` backend to accept a request argument, added in Django 1.11 - Samir Shah
* Fixed ``test_multiple_comment_forms`` to be agnostic of the order of HTML attributes - Samir Shah
* Altered annotation behaviour of search results. Previously this was done implicitly in the ``SearchQuerySet.iterator()`` method,. which Django would call internally when evaluating the queryset. Django 1.11 changed its behaviour to use a ModelIterator class instead of. just calling `iterator()` on the queryset. Rather than suppy a custom. ModelIterator, we just make the annotate explicit - Samir Shah
* Updated setup and test configuration to include Django 1.11 - Samir Shah
* password reset: 'http' -> ``request.schema``. This fixes a potential security vulnerability in which the password. reset url is exposed to untrusted intermediary nodes in the network. Thanks to John Barham for reporting. See. ``<https://groups.google.com/forum/?_escaped_fragment_=topic/mezzanine-users/KaDzCzCJDPM#!topic/mezzanine-users/KaDzCzCJDPM>`` - ryneeverett
* Add explicit ``on_delete`` arguments to foreign keys in migrations - Samir Shah
* Use TextField for ``Field.label`` and ``Field.help_text``. Fixes #1753. Now length limits for user-defined labels and ``help_texts`` are enforced in the admin instead of the DB, which should prevent any further migrations - Eduardo Rivas
* Get rid of ``max_length`` settings for `mezzanine.forms` - Eduardo Rivas
* Timezone aware blog months. From [the mailing. ``list](https://groups.google.com/forum/#!topic/mezzanine-users/W1HNoqj1ZHI):`` Quoting Luke Addison (2017-04-30 21:20:09). > When ``USE_TZ`` is set to True,. > ``mezzanine.blog.templatetags.blog_tags.blog_months`` pulls the month and year. > from an array of timezone aware datatime objects but uses them to create an. > array of timezone unaware datatime objects which is the used to create the. > ``month_dicts`` return value. This seems like a bug to me. >. > For example, if a UTC time is stored in the database less than an hour. > before the end of a month, and then this tag is used with timezone. > Europe/London (UTC+1 currently) then wouldn't this tag return the pervious. > month instead of the current month? - ryneeverett
* Test and simplify ``blog_months`` - ryneeverett
* Weigh search results by age. Weigh search results by their age by default. Add a new setting,. `SEARCH_AGE_SCALE_FACTOR`, controlling how much emphasis to put on the. age when ranking results (set this to 0 to revert to the old behavior) - Simen Heggestøyl
* Split dev and prod ``ALLOWED_HOSTS``. Django started checking `ALLOWED_HOSTS` when `DEBUG=True` a few releases back. See ``https://www.djangoproject.com/weblog/2016/nov/01/security-releases/#s-cve-2016-9014-dns-rebinding-vulnerability-when-debug-true`` - Ed Rivas
* Update docs related to ``ALLOWED_HOSTS`` - Ed Rivas
* Fix the old url parsing in import wordpress - Karim N Gorjux
* Use Django's six module - Stephen McDonald
* Don't warn Mezzanine about itself - Stephen McDonald
* Looser check for LocalMiddleware. Closes #1621 - Stephen McDonald
* Modified the blog homepage pattern to a working version. Added import it requires - Ville Ranki
* Remove explicit ``show_banner`` argument from ``inner_run``. This broke --noreload for me. When called from ``https://github.com/django/django/blob/master/django/core/management/commands/runserver.py#L107``, if ``**options`` contains a ``show_banner`` arg (which, seemingly, is set just above in ``add_arguments``), this throws a "Got multiple values for argument" TypeError - Kevin Shen
* Handle ``MIDDLEWARE_CLASSES`` -> MIDDLEWARE - Stephen McDonald
* Don't use lazy static loading when Django's ManifestStaticFilesStorage is configured. Closes #1772 - Stephen McDonald
* Link to Pillow docs for dependencies - Stephen McDonald
* Adding new site to site list. Adding "The National: New Australian Art" to the site list. ``https://the-national.com.au`` - pegl
* Doesn't convert JPG/JPEG images to RGBA. resolve #1781 - Bruno Barbosa
* Remove all device-detection features - Eduardo Rivas
* Remove mentions of device handling from docs - Eduardo Rivas
* Use template loaders instead of middlware for host-based template swapping - Eduardo Rivas
* Add docs on upgrading from TemplateForHostMiddleware - Eduardo Rivas
* Create ``__init__.py`` so Python can find directory - Dylan Peter Hayward
* Properly parse positional args. As demonstrated by using ``call_command``, the positional args not. processed. This may be a left-over from optarg migration. Usage property is no longer necessary - Melvyn Sopacua
* Fix build fail while in here - Melvyn Sopacua
* Added more tests por pages - Vindio
* Update ``page_not_found`` view args. Closes #1795 - Stephen McDonald
* Rename Displayable ``is_public`` to published - Stephen McDonald
* Test Nginx config before restarting. This way the configuration won't be updated if it's broken, and you also get an error message in the terminal explaining why it's broken (instead of just telling you to check service status/journal) - Andrés Martano
* Enable browser-native spell checking in WYSIWYG tinymce editor, which got wiped in 82339b0 . Previously introduced in 86f6ef6 - Michel
* Fixing the support for external links which are moved to child categories in the menu hierarchy - Gerik Peterson
* Update ``LOGOUT_URL`` to make use of ``ACCOUNT_URL`` - Adam Radwon
* Ensure template vars for form defaults are properly escaped - Stephen McDonald
* Fix drag-n-drop for Form field inlines. Fixes #1841. Inherit from DynamicInlineAdminForm to inject the necessary JS files - Eduardo Rivas
* Fix failing tests that assume threadlocals have been set up - Luke Plant
* Pulled out middleware present check into its own function. And fixed Python 3 compat - Luke Plant
* Made all middleware installation checking consistent. All check by string first, and then for classes and subclasses,. correctly ignoring things that aren't classes - Luke Plant
* Fix failing tests that assume threadlocals have been set up (#1848) - Luke Plant
* Fix keywords widget for Django 1.11. Closes #1844 - stephenmcd
* Fix sense of ``SITE_PERMISSION_MIDDLEWARE`` check. Issue introduced by commit 00f4a63c - Ross Younger
* Fix sense of other check for ``SITE_PERMISSION_MIDDLEWARE``. Issue introduced by commit 00f4a63 - Ross Younger
* Added basic tests for TemplateSettings. The tests follow the existing functionality - Luke Plant
* Gave TemplateSettings a useful ``__repr__``. Previously it just returned '{}' always, from super()s empty dict - Luke Plant
* Don't emit warning when doing ``force_text(TestSettings())``. This is to fix the behaviour of getting lots of instances of: UserWarning: ``__unicode__`` is not in ``TEMPLATE_ACCESSIBLE_SETTINGS``. if you have django-debug-tool installed - Luke Plant
* Prevent changes to ``FORMS_EXTRA_FIELDS`` setting creating new migrations - steve@jupo.org
* Support access to related model on Django 2+ - Williams Mendez
* Fix safe string handling in richtext filters - steve@jupo.org
* Fix some test warnings - steve@jupo.org
* Add deprecation handling for ``mark_safe`` as decorator - steve@jupo.org
* Fix SplitSelectDateTimeWidget which Django 1.9 broke. Closes #1838 - steve@jupo.org
* Fix usage of ``request.scheme`` in password reset email - Eduardo Rivas
* Make thumbnail tag recognize ``.PNG`` and ``.GIF``. Files with the upper case extensions ``.PNG`` and ``.GIF`` are now recognized by. the thumbnail template tag as being PNG- and GIF images, respectively,. instead of being treated as JPEG images - Simen Heggestøyl
* Added gcc and rsync for the full deployment on the freshly installed Debian (eg. on OVH) - lukasz
* Support `SelectDateWidget` in django 1.8 and django 2.x - Williams Mendez
* Narrow exception handling to ImportError only - Williams Mendez
Version 4.2.3 (Mar 10, 2017)
----------------------------
* Test ``MultiChoiceField.validate`` when invalid. For the record, this raises a TypeError prior to Simen's commit - ryneeverett
* Test ``MultiChoiceField.validate`` when valid. Also, I realized that the `choices` kwarg needs to be a nested list - ryneeverett
* Ensure createdb command passes on the exepcted options to base class - Stephen McDonald
* Workaround for Django bug with templates field and empty values - Stephen McDonald
* Update travis django versions. (#1683). See discussion at. ``https://github.com/stephenmcd/mezzanine/commit/1866997c64725b3161b59628c8deaee544f0c473`` - ryneeverett
* Subclass Django's redirect admin to filter by site - Stephen McDonald
* Remove "Overriding vs. Extending" Docs. I know we discussed this a little bit somewhere and rewriting this. section was suggested. However, I don't see any reason to keep it. around. This was always a django issue but we provided a. mezzanine-specific solution. Now that there's a django solution, why. clutter our docs with it? - ryneeverett
* Richtext filters must return SafeString. For now, just raise a warning. In the way-off future I'd like to see. ``richtext_filters`` raise an exception when a SafeString is not received. Django makes a contract with users: "Unless you explicitly mark. untrusted input as safe, we'll escape it and you don't need to worry. about XSS ``vulnerabilities."`` My position is that reusable apps should. proxy this contract to users. In doing so, this also moves the SafeString conversion out of templates. and into the `escape` function in which bleach actually makes the html. safe. The closer these two components are to each other the less likely. we are to make a mistake in between them - ryneeverett
* Fix ``SSLRedirectMiddleware.__init__`` signature. As reported on the mailing list. ``(https://groups.google.com/d/msg/mezzanine-users/d5mcAMOVcnk/uqw61LyjAwAJ),``. this raised a TypeError because the `get_response` argument is optional - ryneeverett
* Move “required” from field help text to template. The forms app used to set “required” as the help text for fields that. are required and didn’t have a help text already. Move this text into. the template instead, making it easier to override - Simen Heggestøyl
* Use ``call_command()`` instead of execute() (#1691) - Geoffrey ROYER
* Remove the ``no_color`` handling in createdb management command (#1691) - Geoffrey ROYER
* Fix example in profile docs - Stephen McDonald
* Remove outdated message regarding auto-reload. Since ``local_settings.py`` is added to ``sys.modules``, the autoreload is working as expected. See: ``https://github.com/stephenmcd/mezzanine/blob/master/mezzanine/project_template/project_name/settings.py#L308`` - Ed Rivas
* Document ``static_lazy's`` purpose. This is a summary of the reasoning in. ``https://github.com/stephenmcd/mezzanine/pull/1411`` - ryneeverett
* Update contributing guidelines to reflect practice. The language here is too broad and has caused several users to submit. high quality bug reports or patches to the mailing list when it's. actually easier to deal with them in the tracker - ryneeverett
* Fix TinyMCE support in dynamic inlines (#1674). * Fix TinyMCE support in dynamic inlines. Use TinyMCE’s jQuery plugin to initialise our editors, and handle. Django’s formset:added event to initialise editors in dynamically added. forms. * Tidy up TinyMCE initialisation code. * Call out changes to ``jquery.tinymce.min.js`` more visibly - Alex Hill
* Warn when editing admin users without permissions. Closes #1707 - Stephen McDonald
* Move contributing guidelines to ``CONTRIBUTING.rst``. This will present itself before people open issues which should cut down. on a lot of the erroneous ones - ryneeverett
* Fix short URL generation - Stephen McDonald
* Add support for importing via blogml - Evan Mattiza
* Clean up blogml importer - Stephen McDonald
* Added python 3.6 (#1720) - Andrii Soldatenko
* Deprecate ``as_tag`` templatetag shortcut. It isn't documented but folks may be using it anyway. We can't switch. over to ``simple_tag`` internally yet until we drop support for ``django-1.8`` - ryneeverett
* Restore tinymce support in front-end editing. Closes #1718 - Stephen McDonald
* Fix caching editable settings forever when no request - David Sanders
* Blog RSS feed - set length property for images (enclosure) - Yuri Prezument
* Blog RSS - add ``mime_type`` for images (enclosure) - Yuri Prezument
* Blog Atom feed - add "updatedate" property - Yuri Prezument
* Fix issue with PyPy2 (#1725). Under PyPy2 you can't do u"foo" == lazy(static, str)("bar") because the. code assumes dir(str) is a strict subset of dir(unicode), which isn't. true on PyPy2. The other way around is no problem however, and the. other strings in the static assets lists are unicode anyway - Ernst Sjöstrand
* Fix issue 1710. During user validation, only save POST data in session if it is a POST. request, otherwise saved comment may be overwritten by GET request that. results from redirect if user verification is required - Chris Hawes
* Re-order JavaScript loading to ensure TinyMCE has access to correct variables. Closes #1728 - Stephen McDonald
* Nicer way to import and register checks. The previous way meant every check gets mentioned 3 times (def, import,. register), with this way it is just once, and all the ``django.core.checks``. are together - Luke Plant
* Converted SitePermissionMiddleware warning to a Django check. Refs issue #1400 - Luke Plant
* Added hashbangs/permission bits to make scripts more easily runnable - Luke Plant
* Made it easier to run individual tests - Luke Plant
* Documented how to run tests - Luke Plant
* Fixed pyflakes errors for ``.checks`` imports - Luke Plant
* Fixed login form to not use ``request.REQUEST``. This is not available in Django 1.9 and greater, so without this fix the. forms are (slightly) broken. There doesn't seem to be any reason to use. REQUEST instead of POST - the form is a POST one, and the parameters are not. used elsewhere in the code base to construct a querystring - Luke Plant
* Fixed search forms to use ``request.GET`` instead of ``request.REQUEST``. ``request.REQUEST`` is not available in Django 1.9 and greater - Luke Plant
* Support latest bleach, BS, html5lib. Closes #1741, closes #1742, closes #1743 - Stephen McDonald
Version 4.2.2 (Sep 25, 2016)
----------------------------
* Add an option for turning off the runserver banner. Add an option to Mezzanine’s runserver command for not showing the. banner at startup - Simen Heggestøyl
* Only set ``content_model`` first time. Fix #1676 - ryneeverett
Version 4.2.1 (Sep 19, 2016)
----------------------------
* Issue #1565. Added conditions for assigning keywords to the keyword widget, when a validation error occurs - xuryax
* Stop using deprecated template settings. - ``TEMPLATE_DIRS``. - ``TEMPLATE_LOADERS``. I think these must have been actually removed in ``django-1.10.0`` because. they're throwing AttributeError's now - ryneeverett
* Remove deprecated ``richtext_filter`` tag. I don't see how the fallback could even work without the user defining. ``RICHTEXT_FILTERS`` as empty in their own settings, because it defaults to. `("mezzanine.utils.html.thumbnails",)` so the `if not filternames` path. would never be taken. Give that the fallback does nothing, I think. printing a warning is deceptive so better just to remove it entirely - ryneeverett
* Fixed crash in ``Page.get_ascendants`` with non-current site - Alex Hill
* Add ``override_current_site_id`` context manager - Alex Hill
* Make sure a thread-local request is set in PagesTests. We rely in these tests on a “current request” being stored as a. thread-local, but without explicitly assigning one we were dependent on. other tests that make requests being executed before these - Alex Hill
* Exclude ``.pyc``, ``.pyo`` and ``__pycache__`` files from release - Edward Betts
* Correctly handle custom email fields in ``mezzanine.forms``. The `is_a` method checks whether a field is one of Mezzanine's built-in. form fields. As far as I can tell, every other usage is for the purpose. of initializing the built-in fields and widgets, so it makes sense to. exclude user-defined fields. However in this instance, we only want to know whether the field is an. EmailField, not that it is *the* built-in Mezzanine email field. Therefore, check the class rather than identity. The effective change here is that user-defined fields (in. ``FORMS_EXTRA_FIELDS)`` which subclass django's EmailField will be able to. receive confirmation emails - ryneeverett
* Remove redundant assignment of ``request.site_id`` - Alex Hill
* Add compatibility with the Django 1.10 MIDDLEWARE setting - Samir Shah
* Added test for KeywordWidget - xuryax
* Updated Test for KeywordWidget - xuryax
* Add more docstrings to ContentTyped - ryneeverett
* Set base ContentTyped ``content_model`` to None. Per discussion with @AlexHill in cartridge#293, ``content_model`` is the. name of django's automatic OneToOneField's linking the concrete base. class inheriting from ContentTyped to it's subclasses. There is no such. field when the base class itself is instantiated, so the ``content_model``. should be None - ryneeverett
* ``ContentTyped.get_content_model()`` should return instance, not class - Alex Hill
* Test admin redirects for ContentTyped models - Alex Hill
* Small error documentation. I think there are a small error : fields (plural) not field - Anthony
* Add some MIDDLEWARE compatibility fixes that were missing from #1660. Also change the way in which the middleware setting is determined. A statis variable will fail when settings are modified on the fly, ``e.g.``, when running tests - Samir Shah
* Fix positional argument count on ``get_db_prep_value`` - Jeff Cook
* Restore context vars in ``admin_dropdown_menu`` templatetag. Closes #1669 - Stephen McDonald
* Fix request context for form entries in admin - Stephen McDonald
* Fix template for form entries in admin - Stephen McDonald
* Fix overextends tag with cached template loader - Alex Hill
* Deprecate overextends tag since Django now includes its functionality - Alex Hill
* Remove some obsolete checks for Django < 1.8 - Alex Hill
* Deprecate SSLRedirectMiddleware. Resolve #1600. Also, set default SSL settings to `editable=False` so they do not. display in the settings by default - ryneeverett
* Move most Field functionality into abstract base class - Alex Hill
* Escape comment usernames in admin list - Stephen McDonald
* Move richtext filtering into a util function - Stephen McDonald
Version 4.2.0 (Aug 12, 2016)
----------------------------
* Update collecttemplates command for 4.1. Closes #1512 - Stephen McDonald
* Return correct HTTP error response if static proxy cannot find requested file - Stephen McDonald
* Fix dummy homepage object in sitemap. Closes #1516 - Stephen McDonald
* Fixes #1449 -- duplicate profile fields in admin - Alex Hill
* Move template form CSS rule to grappelli-safe - Alex Hill
* Removed nesting of Context objects. Inclusion tags should: * Return dictionaries, not Context objects. * Explicitly pass all needed data to their templates. * Not modify passed in Context object ideally. No code should wrap Context objects in further Context objects, as this. causes errors in some contexts - Luke Plant
* Fix blog pagination due to Django 1.9 change - Stephen McDonald
* Don't load user model at import time in tests - Stephen McDonald
* Move misc admin related urlpatterns under /admin/ for better compatibility with SSLRedirectMiddleware. Closes #1365 - Stephen McDonald
* Fix user creation with required profile fields - Alex Hill
* Removed syncdb from deploy as it is no longer supported in ``Django1.9`` and has been depricated since 1.7, migrate is used instead - Douglas Kastle
* Use Django's native dynamic inline mechanism - Alex Hill
* Remove custom dynamic inline templates - Alex Hill
* Support with i18n urlpatterns with ``SSL_FORCE_URL_PREFIXES``. Closes #1456 - Stephen McDonald
* Restore the ordering-related parts of ``dynamic_inline.js``. We still need to use ``dynamic_inline.js`` for its custom ordering code, but we can remove everything related to dynamically adding and removing inline forms since we're now using Django's built-in mechanisms for that - Alex Hill
* Remove now-unused dynamic inline templates - Alex Hill
* Update Python/Django versions in documentation - Stephen McDonald
* Accept either CDATA or text nodes for WordPress comments. ,. All text output is CDATA in an export from WordPress 4.4.2. It is hoped. that accepting either text or CDATA as node type will be compatible. with exports from all versions of WordPress - Jeff Cook
* Changed proxy to resolve mime types using the mimetypes library for python - Andrew Cassidy
* Google Chrome seems to interpret an empty response as. <html><body></body></html> so forced ``content_type`` to text/plain to. prevent Chrome handling it in this way - Andrew Cassidy
* Changed free themes url. I have changed the URL for the free themes - thecodinghouse
* Fix help text for Link page URL. The field is required, but the inherited help text says it's optional - Gavin Wahl
* Add Coveralls coverage testing to CI, per #1012 - ryneeverett
* Clear ``TEST_COLLATION`` deprecation warning - David Sanders
* Add Federation of Egalitarian Communities Website - Pavan Rikhi
* Only autofocus visible fields with Html5Mixin - David Sanders
* Replace all ``_meta.fields`` with ``_meta.get_fields``. According to ``https://docs.djangoproject.com/en/1.8/ref/models/meta/`` to. access all the fields of the ``_meta`` object you should call ``get_fields()``. This. is new with Django 1.8. The ``_meta.fields`` is now a property with a docstring. saying it's Private API intended only to be used by Django itself - Geoff Crompton
* Ensure csrftoken cookie is set inside nevercache tag - David Sanders
* Remove check for CSRF token before re-running CSRF middleware - David Sanders
* Add testcase for nevercache and CSRF cookie - David Sanders
* Response should be marked as CSRF processing not done, not request - David Sanders
* Fix unicode errors in user agent check for devices. Closes #1589 - Stephen McDonald
* ``ModelAdmin.in_menu`` -> ``has_module_permission``. Deprecate `ModelAdmin.in_menu` now that django has an equivalent method,. `ModelAdmin.has_module_permission`. See. ``<https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#django.contrib.admin.ModelAdmin.has_module_permission>`` - ryneeverett
* Replace undocumented ``ModelAdmin.get_model_perms``. Instead use the documented methods `ModelAdmin.has_change_permission`. and `ModelAdmin.has_add_permission` - ryneeverett
* Fix tests for pyflakes 1.2.x. The warning message now includes the module name - ryneeverett
* Fix selector of the ``_order`` field to make stacked inlines sortable - Eduardo Rivas
* Catch TinyMCE errors when trying to save inlines. Previously this used to prevent the new ``_order`` values from being computed - Eduardo Rivas
* Annotate special handling of the ``_order`` field in inlines - Eduardo Rivas
* Add CSS to hide the ``_order`` field in stacked inlines - Eduardo Rivas
* Constrain content images to max width in default templates - Stephen McDonald
* un-urlencode thumbnail filenames. Closes #1580 - Stephen McDonald
* Clarify format of ``ADMIN_REMOVAL`` setting - Stephen McDonald
* Fix: Add missing space - cspollar
* Fix file name decoding from zip files in python 3. In python3, non-ascii filenames in galleries are incorrectly decoded,. interpreting utf8 code points as box-drawing characters. For example, in. the demo project "Ávila Spain" is incorrectly parsed as "A╠üvila Spain". CP437 is a superset of ascii and the de facto standard for file names. Obviously not every valid utf-8 character is in this character set, but. a lot of tooling does not support file names with characters outside. this set anyway. If we were to encode them in a broader character set I. suspect we would get into OS-interoperability issues, so better to. forego encoding them and coerce them into valid file names. Note that this changes the behavior such that in python3, file names are. now decoded with a chardet-detected encoding. It's also notable that the latest release of chardet incorrectly. identifies the encoding, so in the demo galleries, "Ávila Spain" is. incorrectly parsed as "AĚvila Spain". This is fixed in chardet master - ryneeverett
* ``base_concrete_model:`` accept model class argument. Previously only model instances were accepted but now model classes can. be passed alternatively - ryneeverett
* Factor custom content types out of Page. Custom content types are now implemented as Model and ModelAdmin mixins. This way they can be reused by Cartridge's Product model - ryneeverett
* Add ``content_typed/change_list.html`` include. This eliminates template duplication for the content type selector in. cartridge. Note that all jQuery events are propagated unless one of them returns. `false`, so both of our `addlist` change handlers get called. ``http://stackoverflow.com/questions/4379403/jquery-event-handlers-return-values`` - ryneeverett
* Append default ``TEMPLATE_ACCESSIBLE_SETTINGS``. This means users don't have to copy the defaults into their settings and. are protected from future changes to the settings used by internal. mezzanine templates - ryneeverett
* Warn when unallowed template settings are used. Since the exception is suppressed, give a hint that the template. setting isn't allowed - ryneeverett
* dynamically set current rating if it exists - Martín Gaitán
* Remove redundant slash in urlpatterns when homepage is the blog - Stephen McDonald
* Django 1.10 removed ``LOGOUT_URL``, so provide a default - Stephen McDonald
* Replace Django's deprecated ``AUTH_PROFILE_MODULE`` setting with new ``ACCOUNTS_PROFILE_MODEL`` setting - Stephen McDonald
* Remove use of NoArgsCommand, which Django 1.10 removes - Stephen McDonald
* Remove ``content_typed`` namespace. - ``content_typed.py`` -> ``models.py`` + ``admin.py``. - ``content_typed/change_list.html`` ->. ``admin/includes/content_typed_change_list.html`` - ryneeverett
* Restore guards against back button in page tree / content typed JS - Stephen McDonald
* Fix encoding in blog feeds. Closes #1461 - Stephen McDonald
* Add form media to Form pages. My use case is adding form assets to a widget used by a field included. in the ``FORMS_EXTRA_FIELDS`` setting. I don't think one should have to. override this template to do this and overextension doesn't seem to work. on content-typed templates - ryneeverett
* Fail gracefully on third-party admin classes that do odd things. Closes #1628 - Stephen McDonald
* Prevent bleach from stripping 'tel:' hrefs in HTML - Stephen McDonald
* Fix #1438 -- allow multiple comment forms on a page - Alex Hill
* Use ``call_command`` instead calling ``Command.execute()`` directly - Alex Hill
* Fix search by hacking around Django's abstract manager restriction - Alex Hill
* Allow Django 1.10 in ``setup.py`` - Alex Hill
* Pass raw context dict to ``template.render()`` in error views - Alex Hill
* Remove testing of dotted path for ``LOGIN_URL`` setting, since Django 1.10 doesn't support it - Stephen McDonald
* Prevent Django 1.10 from adding required attribute to admin change list actions dropdown - Stephen McDonald
* Replace usage of optparse with argparse - Alex Hill
* Ensure blog import commands contain base args - Stephen McDonald
* Add Django ``stable/1.10.x`` to test matrix - Alex Hill
* Upgrade pip and setuptools before test run - Alex Hill
* Restore access to parent template context in comments template tag. Closes #1654 - Stephen McDonald
Version 4.1.0 (Jan 17, 2016)
----------------------------
* Update Python version classifiers in ``setup.py`` - Stephen McDonald
* Update excluded files in package build - Stephen McDonald
* Force ``local_settings.py`` into ``sys.modules`` so it's visible to Django's autoreloader - Stephen McDonald
* Add the ability to use proxy in "Add ," drop down. We sometimes want to use proxy models in the add dropdown, to have. different changeform being backed-up by the same model. See ce02f8afe3d42dda for more information about the "and not. ``m._meta.proxy"`` part - Antoine Catton
* Improve readability by using list comprehension - Antoine Catton
* Remove extraneous site permissions field. Closes #1366 - Stephen McDonald
* Add to settings this: ``RATINGS_ACCOUNT_REQUIRED`` = True ``COMMENTS_ACCOUNT_REQUIRED`` = True ``RATINGS_RANGE`` = [-1, 1] and then run tests you will get about 5 errors, so i fixed tests for these settings and now they work well - d-first
* Do not throw away next parameter on login. ``get_full_path()`` throws away the "next" URL parameter, breaking. vanilla Django redirection behavior. The login form should redirect. to the "next" parameter on a successful login - Alexander Bliskovsky
* When the thumbnail richtext filter runs, deal with BeautifulSoup adding closing br tags, by stripping them out. Closes #1377 - Stephen McDonald
* ``r_range`` deleted replased with settings - d-first
* Fix textarea fields in live-editing - Stephen McDonald
* Upgrade to jQuery 1.8.3 - Nik Nyby
* Upgrade jQuery UI to 1.8.24. This upgrades jQuery UI from 1.8.2 to 1.8.24, fixing. a bunch of bugs. It also changes the CSS file used for jQuery UI - the ``v1.9``. CSS was being used, so I've replaced it with the appropriate. CSS for version 1.8.24 - Nik Nyby
* Upgrade ``jquery.form.js`` to 3.51.0-2014.06.20 - Nik Nyby
* Fix edit overlay vertical positioning - Nik Nyby
* Upgrade Bootstrap from 3.0.3 to 3.1.1 - Nik Nyby
* Test on Python 2.7, Django 1.8. These are the versions I use by default, so we shouldn't need to exclude this combination - Nik Nyby
* Don't use zip files - Nik Nyby
* Fix TinyMCE width in live-editing - Stephen McDonald
* Bootstrap 3.2.0. Continuing the effort of gradually updating bootstrap,. this upgrades from 3.1.1 to 3.2.0. There's not many changes here and everything's looking okay. to me - Nik Nyby
* Fix tag list padding - Stephen McDonald
* Make a note about removing JS hack for site permissions field at some stage - Stephen McDonald
* Update ``tinymce_setup.js:`` Django language codes. ``https://docs.djangoproject.com/en/1.8/topics/i18n/``. Language codes are generally represented in lower-case, but the HTTP Accept-Language header is case-insensitive. The separator is a dash. I also noticed a warning message showing when I run 'python ``manage.py`` runserver'. it's about 'zh-tw' will be deprecated in Django 1.9, use 'zh-hant' instead. So I also add 'zh-hant'. I guess 'zh-cn' may be deprecated too. I tested 'zh-hant' and 'zh-tw' well, my tinymce editor shows hints in Traditional Chinese now. I only change the content in "var ``language_codes`` = {}" block, but github marks whole file to be changed. I don't know why - fygul
* Update ``frequently-asked-questions.rst``. Update the link of ``"urls.py`` module" - Fygul Hether
* Checking if page attribute in request is of type ``mezzanine.page.models.Page``, before processing it - pirave
* Ken is a core team member - Stephen McDonald
* Add support for blogs with > 500 posts - Anna Wiggins
* Replace timestamp trimming code with a more robust regex; current code broke on some timestamps returned by blogger - Anna Wiggins
* Add several new overridable blocks to the base template - Anna Wiggins
* Fix and test ``page_processor's`` ``exact_page`` argument - David Sanders
* Updating disqus sso tag with working encoder - pirave
* Resolve css/js Media paths using static templatetag - David Sanders
* Clean up page context processor check - Stephen McDonald
* Removing ``tox.ini`` since it's out of date - and of course it is, we don't use it - Stephen McDonald
* ``utils.html:`` HTMLParseError disappeared in Python 3.5. The HTMLParser is guaranteed not to choke on HTML soup - Hervé Cauwelier
* Add kwarg for form used in login and password reset views - David Sanders
* Don't titlecase group name for ``ADMIN_MENU_ORDER`` - David Sanders
* Add ``_parent_page_ids`` to global context scope. Currently if the first menu loaded is in a nested context. ` parent_pages_ids` can drop out of scope, and then never get reset since. `menu_pages` is set in `context.dicts[0]`. See ``https://github.com/stephenmcd/mezzanine/issues/1154`` - Julian Andrews
* Upgrade html5shiv to ``v3.7.3`` - Nik Nyby
* Remove unnecessary triple-quote in comment - Nik Nyby
* Don't overwrite files options in mezzanine-project command. Updating the `files` option here disables the `--name` option, which I need. to render custom template files ``(i.e``. a Makefile) when making a custom. mezzanine template for use with `mezzanine-project`. This change adds `local_settings.py.template` to the list of files to render instead. of overwriting the list completely. This allows users to specify their own template. files if necessary. Relevant django code is here: ``https://github.com/django/django/blob/master/django/core/management/templates.py#L56``. And my mezzanine template I'm getting this to work with is here: ``https://github.com/nikolas/ctlmezzanine`` - Nik Nyby
* Ensure global context variables set in ``page_menu`` template tag are actually global - Stephen McDonald
* Switch to a lazy static for Media statics - David Sanders
* In the admin dropdown menu, show add links to users without change permissions. This is a patch to fix the following problem: 1. Create a user with add permissions but not change permissions on a model. that is managed through the admin ``(e.g``. blog posts). 2. Log in as that user in the admin site. 3. Click on the name of the model in the dropdown menu on the left. 4. Error. The problem arises because the template uses the ``admin_url`` instead of the. ``add_url`` for users without appropriate permissions to change instances of the. model. It then tries to remedy the situation by manually appending 'add/' to. the url. However, the url it receives from the template tag ``admin_url`` is set. to 'None' - Pieter
* Fix for ``is_spam_akismet`` to handle Python 3's bytestring response properly - Christian Hill
* Handle None as ``content_type`` subclass without breaking - Sam Kingston
* Restore login redirects on ratings/comments. Closes #1440 - Stephen McDonald
* Check for ``FORMS_USE_HTML5`` on the admin instead of the model. Fixes #1399 - Eduardo Rivas
* Removing duplicate profile fields from admin. Issue #1449 - Danny Sag
* Document ``errors_for`` and update ``fields_for`` docs. - The fields for template path and type are out of date. - Document ``errors_for`` since it adds a lot of value to ``fields_for`` - ryneeverett
* Add references to api-docs. This will add links to documentation generated from the source - Tomas Chmelevskij
* Added mezzanine-shortcodes to third-party apps - Stephen McDonald
* Don't strip HTML in TinyMCE. Because filtering is handled by bleach. Reimplement 0f6ab7c - ryneeverett
* Recommend using ``includes/footer_scripts``. This is how it's done in the default templates but docs-readers probably. aren't going to know that they're already calling `editable_loader` via. an include - ryneeverett
* Add support for Python 3.5 in trove classifiers and travis build - Sam Kingston
* Add a setter for property ``MenusField.choices``. Django 1.9’s ``CharField.choices`` is just a regular attribute, no longer a. property. Its constructor tries to set a value, and since we weren’t. providing a setter, we’d hit an exception - Alex Hill
* Update project template to use TEMPLATES - Alex Hill
* Suggest using TEMPLATES in ``set_dynamic_settings`` - Alex Hill
* Replace SortedDict with OrderedDict - Alex Hill
* Drop support for Django 1.7 - Alex Hill
* Drop Python 3.3 support - Alex Hill
* Don't use OrderableBase in 1.9. Django 1.9 supports ordering with respect to generic foreign keys,. which makes OrderableBase no longer necessary - Alex Hill
* Update Django & Python versions in ``setup.py`` - Alex Hill
* Import skipUnless from Python's unites - Alex Hill
* Fix saving related objects in tests - Alex Hill
* Don't use removed ``Field.get_flatchoices()`` - Alex Hill
* Remove check for page context processor in PageMiddleware - Alex Hill
* Remove LazyModelOperations. Django now provides lazy model signals which accept model strings and. render this class redundant - Alex Hill
* Update flake8 configuration to match Django's - Alex Hill
* Refactor ``EXTRA_MODEL_FIELD`` code. Break into a few smaller functions, and use ``Apps.lazy_model_operation``. instead of ``class_prepared`` signal - Alex Hill
* Remove usage of SubfieldBase - Alex Hill
* Revert "Don't use OrderableBase in 1.9". This reverts commit 54d900776a2c7412cdacd7b5a6a4af44affac869 - Alex Hill
* Remove complexity check from flake8 config. This wasn’t being honoured by the lint test before, so causes several. failures when enabled. We can add it again later and refactor those. functions if necessary - Alex Hill
* Bring ``docs/conf.py`` into line with flake8 - Alex Hill
* Restore but deprecate Mezzanine's ``get_user_model()``. This wasn’t actually defined before, simply imported from Django. We. define it here in order to provide a deprecation warning for anybody. importing it from this file - Alex Hill
* Make ``EXTRA_MODEL_FIELDS`` work in 1.8 again - Alex Hill
* Add a ``footer_js`` block in templates - Alex Hill
* Fix usage of TemplateResponse - Alex Hill
* Account for middleware subclasses in ``cache_installed()`` - Alex Hill
* Remove "builtins" from TEMPLATE options in Django < 1.9 - Alex Hill
* Can't use add() with bulk=False in Django 1.8 - Alex Hill
* Formalise template tests with checks framework - Alex Hill
* Fixed #1483 ValueError while parsing dates of imported Blogger posts - Daniel Blasco
* missing french messages for accounts, compiling ``.mo`` file - flo@mymedecine.fr
* Move SingletonAdmin to utils. Resolve #1480 - ryneeverett
* Add classes to ``app_list`` in admin. This provides a hook for model specific styling, and mirrors what Django. itself does. See: ``https://github.com/django/django/blob/5399ccc0f4257676981ef7937ea84be36f7058a6/django/contrib/admin/templates/admin/index.html#L23`` - Julian Andrews
* Catch error if user sitepermissions don't exist. For the most part, if not using `SitePermissionMiddleware` Mezzanine. falls back on the `is_staff` attribute seamlessly. But since. d5d21ba527bd4 it's possible to have users without sitepermissions. This. breaks the admin dropdown, but not much else. This fix should allow. single site projects to continue to leave `SitePermissionMiddleware`. uninstalled - Julian Andrews
* Fall back to title field first before using string rep for meta title - Stephen McDonald
* Give the media library a root URL so it can be correctly highlighted in the admin nav. Closes #1505 - Stephen McDonald
* Only add debug toolbar urlpatterns if installed - Stephen McDonald
* Support admin classes registered via decorator. Closes #1462 - Stephen McDonald
* Fix some more cases of related managers requiring saved data in Django 1.9 - Stephen McDonald
* Remove redundant slashes in blog urlpatterns - Stephen McDonald
* Update from deprecated features of urlpatterns - Stephen McDonald
* Remove use of deprecated ``get_all_field_names()`` - Stephen McDonald
* Remove deprecated use of ``i18n_patterns()`` - Stephen McDonald
* Remove deprecated middleware names - Stephen McDonald
* Fix admin login interface selector - Stephen McDonald
* Fix slashes in blog urlpatterns - Stephen McDonald
* Create links to settings mentioned in the comments. Adds labels to the ``settings.rst`` files which can be used accross the. documentation to to link to their description - Tomas Chmelevskij
* Remove deprecated category/keyword helpers on blog posts, which existed for Django 1.3 - Stephen McDonald
* Remove Django 1.7 support from overextends templatetag - Stephen McDonald
* Remove a bunch of Django 1.7 handling from tests - Stephen McDonald
* TEMPLATES is a list of configurations - ryneeverett
* ``django.core.context_processors->django.template,``. RemovedInDjango110Warning: ``django.core.context_processors`` is deprecated in favor of ``django.template.context_processors`` - ryneeverett
* string url views -> callable url views. RemovedInDjango110Warning: Support for string view arguments to url() is deprecated and will be removed in Django 1.10, Pass the callable instead - ryneeverett
* Fix user profile signal handler - Stephen McDonald
* Restore profile form fields - Stephen McDonald
Version 4.0.1 (Jul 26, 2015)
----------------------------
* Prompt for user creation in createdb command if interactive - Stephen McDonald
* Fix #1351 - exception in ``displayable_links_js`` - Alex Hill
* Use Django's createsuperuser command when createdb is run in interactive mode - Stephen McDonald
* Fix some Django 1.9 warnings - Stephen McDonald
* Remove references to long deprecated ``PAGES_MENU_SHOW_ALL`` setting - Stephen McDonald
* Locale middleware should fall after session middleware - Stephen McDonald
* Set up debug toolbar explicitly when installed. Closes #1358 - Stephen McDonald
* Restore support for alternate package option in mezzanine-project command - Stephen McDonald
* Fix for issue #1361 - backup command fails when called from deploy - Luke Plant
* Use 'exec' instead of import to add ``local_settings``. This allows ``local_settings`` to reference and modify existing settings. Refs issue #1360 - Luke Plant
Version 4.0.0 (Jul 09, 2015)
----------------------------
* Strip punctuation from keywords instead of non-alphanumeric chars, since languages like Hindi use characters that Python doesn't consider to be alphanumeric - Stephen McDonald
* Unpin tzlocal version 1.0 - Alex Hill
* Update tinymce setup to use browsers' built in spell checking. Tested and works in latest FireFox and Chrome and Safari - joshcartme
* Support custom user models in admin password change view. Previously it was assumed that the user's pw change view is at "auth/user/(\d+)/password/", which caused NoReverseMatch with custom models - Rivo Laks
* Fix admin password change for Django 1.5 - Stephen McDonald
* Support Django 1.7 migrations - Baylee Feore
* Don't remove south when ``USE_SOUTH`` isn't defined - Stephen McDonald
* Use ``is_staff`` to check for logged in user in base admin template. Closes #1114 - Stephen McDonald
* beautifulsoup version should not be pinned exactly. There's no need to require exactly 4.1.3 - Gavin Wahl
* Added brackets for Python 3 print() - Tuk Bredsdorff
* Handle malformed user agent strings. Closes #1116 - Stephen McDonald
* Configure ``SOUTH_MIGRATION_MODULES`` setting to check for custom south migration packages - Stephen McDonald
* Move ``south_migrations`` -> migrations/south - Stephen McDonald
* Added `The Entrepreneurial School <http://theentrepreneurialschool.com/>` to site using Mezzanine - Renyi Khor
* Fix DoesNotExist when non admin visits /admin. SitePermission objects are only added when staff users are created. If a non admin user (with no manually assigned site permissions) visits the admin a DoesNotExist is raised since no site permissions exist for the user. Therefore the templatetags logic should only run if the user is staff - joshcartme
* Exposed ``JQUERY_UI_FILENAME`` for templates - wrwrwr
* wordpress export is under Tools, not Settings - Gavin Wahl
* Renamed all ``get_query_set`` methods to ``get_queryset``. Django 1.6 normalized the naming, providing a metaclass that handles. previous naming schemes, while printing a warning. See: ``https://code.djangoproject.com/ticket/15363``. This is probably incompatible with 1.5, but limits the amount of. Django 1.8 deprecation warnings - wrwrwr
* Explicitly list fields when defining form from model. This only changes one test (`` test_richtext_widget``), but here's a. short article that may explain why ``fields`` or ``exclude`` becomes. mandatory argument to ``modelform_factory`` and why you actually may. want to explicitly list fields to be available in forms: ``http://blog.mhartl.com/2008/09/21/mass-assignment-in-rails-applications/`` - wrwrwr
* Unfrozen future, pep and flakes. If the reason to keep these at some fixed old versions still exists,. please add a comment - wrwrwr
* Let sqlite configuration not contain a ``NAME`` at all (as with some settings environments) - wrwrwr
* Resolve race condition in ``conf.settings`` - Alex Hill
* Fixed a couple of block comments not starting with hash and space - wrwrwr
* List form fields (as recommended) to preserve compatibility with 1.5. The ``"__all__"`` shortcut must be ``past-1.6`` only - wrwrwr
* Fixed ``test_login_required`` when run without ``mezzanine.accounts``. Note 1: Always testing both scenerios no matter what's in the settings. would be thorough, but without something like the 1.7+ ``modify_settings``. it turns out ugly. It would be better to run the whole suite with and. without some optional apps. Note 2: This test passes when run through ``runtests``, but it cheats. by forcing ``mezzanine.accounts`` into installed apps ;-) - wrwrwr
* Allow Mezzanine's static files handling to support ``MEDIA_ROOT`` outside of ``STATIC_ROOT`` during development - Stephen McDonald
* Don't colorize the terminal banner if color sequences aren't supported - Stephen McDonald
* Cleaned up ``in_menus`` defaults test. Making use of the runtime settings changes support - wrwrwr
* Added failing settings race condition test - Alex Hill
* Simpler fix for race condition in settings - Alex Hill
* Reorder and add comments to settings test - Alex Hill
* Overwrite settings cache when loading from DB - Alex Hill
* Clear DB settings after test run - Alex Hill
* Made forms tests use Mezzanine's TestCase. Not currently necessary, but potentially surprising if you add something. to the TestCase - wrwrwr
* Added a simple decorator defining ``get_query_set`` or ``get_queryset``. allowing to use the latter one while preserving compatibility with 1.5. Django (1.6+) uses a metaclass to allow usage of the former name after. renaming a method (``django.utils.deprecation.RenameMethodsBase``), but. for the 2 cases in Mezzanine a decorator seems sufficient and less. intrusive - wrwrwr
* Replaced usage of ``Options.get_(add|change|delete)_permission`` with. ``auth.get_permission_codename``. Just a single case in ``utils/views.py``. The former one is deprecated and will be removed in Django 1.8; see. ``https://code.djangoproject.com/ticket/20642`` - wrwrwr
* Added an 1.5-compatible implementation of ``get_permission_codename`` - wrwrwr
* Made MenusField respect the current value of ``PAGE_MENU_TEMPLATES_DEFAULT`` - wrwrwr
* Small semantic change in MenusField behavior, now ``in_menus`` returns an. empty tuple instead of None for a page not in any menu. This seems more consistent with ``PAGE_MENU_TEMPLATES_DEFAULT`` = tuple() - wrwrwr
* Made MenusField also support dynamic changes to ``PAGE_MENU_TEMPLATES``. This costs a call to a private ``Field._get_choices()``, because. ``Field.choices`` is already a property - wrwrwr
* Extended the ``test_login_required`` to check if ``LOGIN_URL`` set to view or. pattern name still allows the decorator to work as expected. The new cases are only checked if ``mezzanine.accounts`` is installed. These additional ``LOGIN_URL`` possibilities were introduced in 1.5; view. objects should also work, but don't seem to be documented - wrwrwr
* Don't test the new options with 1.4, it's not supposed to support them - wrwrwr
* Prevent duplicate app names when testing - Stephen McDonald
* Extend ``renamed_get_queryset`` to also support admin classes, and apply to OwnableAdmin - Stephen McDonald
* ``set_slug`` now save itself - Dustin Broderick
* ``set_slug`` now saves itself - Dustin Broderick
* Remove the requirement for searchable models to subclass Displayable - Stephen McDonald
* Handle installing initial data with Django 1.7's syncdb signals. Closes #1123 - Stephen McDonald
* Remove redundant page save in slug tests - Stephen McDonald
* Slightly faster settings loader - Stephen McDonald
* Fix some docstrings and messages - Stephen McDonald
* Actually skip the threading test as expected - Stephen McDonald
* Fix version check in ``post_syncdb`` signals - Stephen McDonald
* Added description of "label" keyword argument of ``register_settings``. function to docs - eyeinthebrick
* Cache site ID on request object, even when fallback setting is used. Closes #1144 - Stephen McDonald
* Fix site ID fallback when testing - Stephen McDonald
* separate basic gallery functionality. to be more flexible with creating galleries we can separate gallery. functionality so it can be reused if developer wants to create a. gallery but not necessarily a gallery page - Robert Zywucki
* Added a test for DynamicInlineAdmin - wrwrwr
* Allow DynamicInlineAdmin fields to be a tuple. Previously, if fields was defined as a tuple, a very confusing TypeError. would be raised - Rocky Meza
* Travis test the latest versions of Django. This way you don't have to update every time a security release comes. out - Rocky Meza
* Re-instate conf test as per recent threading fixes. Closes #858 - Stephen McDonald
* Return HTTP 405 on comment/rating URLs for GET requests. Closes #1159 - Stephen McDonald
* Fix Travis Django installation - Rocky Meza
* Shamelessly modified the dynamic admin fields tuple test, so it checks. ``get_fieldsets()`` instead of directly using the fields attribute. Also made BaseDynamicInlineAdmin work when fields are listed without. the ``_order`` field or fieldsets are declared (with or without it) - wrwrwr
* SiteRelated changed to allow explicit site assignment on creation - Kelvin Wong
* Made "flake8 ." output less warnings. Excluded ``docs/conf.py`` as its autogenerated by Sphinx and increased. acceptable complexity from 10 to 20 - wrwrwr
* Allowed optional apps to be loaded for testing - wrwrwr
* Separated generation of ``short_urls`` from their saving - wrwrwr
* include menu pages in broader context. issue #1154 - Eduardo S. Klein
* Refactored confirmation prompts in createdb, ``create_pages`` and collecttemplates - wrwrwr
* Factored out deleting unused keywords as a manager method - wrwrwr
* Removed ``django_extensions`` from ``INSTALLED_APPS`` for testing - wrwrwr
* Fixed ``pages.test_login_required`` with I18N / LocaleMiddleware - wrwrwr
* Fixed ``core.test_password_reset`` with ``i18n_patterns`` - wrwrwr
* Use the response context during two-phase rendering. If a response has `context_data` use that instead of creating a new. context and running context processors again - David Sanders
* Fix for using response ``context_data`` - David Sanders
* Remove call to ``set_model_permissions`` in page admin - Alex Hill
* Backout context processor changes to cache middleware for now, re #1174 - Stephen McDonald
* Prevent order setting vs. form submission race condition. If the js runs slow for any reason the admin form can submit before the order of inlines has been set - joshcartme
* Create new model field OrderField - Alex Hill
* ``OrderWidget.is_hidden`` should evaluate False - Alex Hill
* Update orderable ordering to use the submit event. It seems that the click event may not be guaranteed to run in FireFox before the form actually submits. This may be due to a variety of factors including the version of jQuery but for now switching to the submit event solves the problem - joshcartme
* Fixed spelling of 'collapsed' - Stone C. Lasley
* Refactored all the initial data setup to only occur when the createdb command is used, since Django 1.7's migrations no longer provide a signal that can reliably trap when tables are created - Stephen McDonald
* Added migrations for changed ``_order`` field - Stephen McDonald
* Host the dashboard screentshot in the docs so it can be correctly referenced on github - Stephen McDonald
* Fix docs build for Django 1.7 - Stephen McDonald
* Fix for brocken link - Krzysztof Szumny
* Fix optional data installation for non-interactive installs - Stephen McDonald
* Don't store absolute urls as short urls in the db, since the column length is shorted, and these aren't necessairly permanent either. Closes #1178 - Stephen McDonald
* Refactored the ``fields_for`` templatetag to allow for custom field template - Avery Laird
* nginx conf: use Mozilla recommended ciphers. For the included ``nginx.conf``, use the ciphersuite recommended by the Operations. Security team at the Mozilla project: ``https://wiki.mozilla.org/Security/Server_Side_TLS``. The ones included here are the ones labelled "Intermediate compatibility". They. also document a ciphersuite with a higher level of security on that page. labelled "Modern compatibility", though it excludes more older browsers - Lorin Hochstein
* Updated the js in ``footer_scripts.html`` to handle universal analytics - Avery Laird
* Convert relative URLs to absolute in RSS feed item descriptions. Closes #1193 - Stephen McDonald
* Fix 500 error when the 'comment' view function doesn't receive expected form data - Christian Abbott
* Filenames in ZIP not always UTF-8. Fixing this with chardet - Souren Araya
* Don't assume ``INSTALLED_APPS`` is all modules as Django 1.7 adds AppConfig - Frankie Robertson
* Replace ``django.contrib.comments`` with ``django_comments``. Django has removed the comments app from ``django.contrib``, and. moved it into an external django-contrib-comments package hosted. under the Django GitHub organisation - Alex Hill
* Test up to Python 3.4 and Django up to 1.8 - Alex Hill
* Test with Py 3.4, Django 1.7 and default runners. Update ``.travis.yml`` config to run tests under Python 3.4 and Django 1.7. Future-proof the test script to work with both default test runners: DjangoTestSuiteRunner ``pre-1.6``, and DiscoverRunner in 1.6 and later. Under DiscoverRunner, the ``django.contrib`` tests won’t be run - Alex Hill
* Enable SHA1 hasher for happy Django 1.4 tests - Alex Hill
* Miscellaneous backwards-compatible 1.8 fixes. Includes changes to Meta, some moved functions and various internal API. changes - Alex Hill
* Accommodate Django 1.8's template system changes. Django 1.8 introduces the possibility of using multiple template. engines, which means that some components of Django's template system. have been encapsulated in an Engine class instead of being available. globally, and other parts refactored and moved around - Alex Hill
* Remove Django 1.4 and 1.5 from ``.travis.yml`` - Alex Hill
* No need to enable SHA1 hasher in tests > 1.4 - Alex Hill
* Remove ``mezzanine.utils.models.get_user_model``. This was introduced for compatibility with Django 1.4 after Django 1.5. included support for custom User models. Now that we no longer support. Django 1.4, we can just use the builtin version. Still need to remove references in filebrowser, so the import remains. in ``mezzanine.utils.models`` - Alex Hill
* Remove shims for ``force_text`` and ``smart_text``. Not necessary since dropping support for Django 1.4 - Alex Hill
* Deleted ``mezzanine/utils/deprecation.py``. This contained compatibility fixes for Django < 1.6, which we no longer. support - Alex Hill
* Remove miscellaneous BC fixes for Django < 1.6 - Alex Hill
* Use ``get_models`` from ``django.db.models.loading`` - Alex Hill
* Bump required Django version to > 1.6.0 - Alex Hill
* Import ``local_settings.py`` before test run - Alex Hill
* Restore previous behaviour in runtests script - use the ``local_settings`` template to create ``test_settings``, not an actual ``local_settings`` module, which may already exist during development - Stephen McDonald
* Use south's test command, which is needed to pick up our custom values for ``SOUTH_MIGRATION_MODULES`` - Stephen McDonald
* Some envs don't create pyc files - Stephen McDonald
* Allow ``local_settings`` import when project isn't a package - Stephen McDonald
* Some path hacks during development to allow tests to be picked up when calling the test command via ``manage.py`` - Stephen McDonald
* KeyError when excluding ``first_name``, ``last_name``, and username fields using ``ACCOUNTS_PROFILE_FORM_EXCLUDE_FIELDS`` and ``ACCOUNTS_NO_USERNAME`` settings - rsadwick
* Fix handling blank first/last names in username creation - Stephen McDonald
* Fix bug with missing scope in atexit registered function in test runner - Stephen McDonald
* Update ``views.py``. clean the cookie rating record after an auth user undoing his/her rating - Yuheng QIU
* Exclude commit messages with 3 words or less from the changelog - Stephen McDonald
* Using Tabbed admin instead of showing all fields at once - Mathias
* Delete cached context settings on settings update. With editable settings it is best to invalidate the context settings. cache key when settings have been changed via the admin panel so that. they can take effect immediately - David Sanders
* Added site ID back to settings cache key prefix - David Sanders
* pip can't seem to install Django 1.8 from a zip file on Python 2.7 - Stephen McDonald
* Fallback lookup for current page should exclude link pages, since they may contain duplicate slugs. Closes #1220 - Stephen McDonald
* Update docs and add mini-tutorial in Deployment section - Eduardo Rivas
* Handle new app-loading mechanism for Django 1.7 in fabfile. See ``https://docs.djangoproject.com/en/1.7/releases/1.7/#standalone-scripts`` - Eduardo Rivas
* Add documentation about using AppConfigs in ``INSTALLED_APPS`` and ``defaults.py`` - Frankie Robertson
* Added exception handler for ``make_dirs()`` function call in thumbnail() template tag - Alex Bendig
* Fix error raised when twitter lib is installed, but ``mezzanine.twitter`` is removed from ``INSTALLED_APPS`` - Stephen McDonald
* Update ``multi-lingual.rst`` for spelling/grammar - Ryan Sadwick
* Show Links to Code in Package Documentation. Refs #1148 - Pavan Rikhi
* Account for ``cartridge.shop`` being after ``mezzanine.pages`` in the template rendering pipeline. Also enable nested {% ifinstalled %} tags - Mathias
* Twitter: Fix parsing of email addresses as Twitter usernames - Eduardo Rivas
* Added setting to allow custom forms for submitting comments. Handy for common requests from people such as adding captchas. Easiest way is to create a new form class that inherits from ThreadedCommentForm then specify that class in the new setting - Paul Hunt
* Import WordPress draft posts correctly - Jan Varho
* Don't consider proxy models a content model. Otherwise we'll try to use them with ``select_related``, which is not. supported - Gavin Wahl
* Remove all support for South in favour of Django >= 1.7 migrations - Stephen McDonald
* Remove all support for Django < 1.7 - Stephen McDonald
* Add option for thumbnails to not grow in size. Add the `no_grow` option to the thumbnail template tag, specifying. whether a thumbnail is allowed to grow in size when resizing to a given. width or height - Simen Heggestøyl
* Fix createdb to work with Django 1.7 and 1.8. Django 1.8 changed the way optional args are added to management commands. This patch adds optional args "the old way" for Django 1.7 in `Command.__init__`, and then uses "the new way" for Djagno 1.8, which is via a call to the new class method `add_arguments()` - Eduardo Rivas
* Check for valid Python package name format in mezzanine-project command. Closes #1248 - Stephen McDonald
* Add ``SECRET_KEY`` to docs config which fixes broken rtd builds - Sam Kingston
* Attempt to fix path issue in rtd environment - Sam Kingston
* Set ``CurrentSiteManager.use_in_migrations`` = False - Alex Hill
* Migrations for Django 1.8 - Alex Hill
* Fix overextends tag for Django 1.7 & 1.8 - Alex Hill
* Compile all new Spanish locale - Eduardo Rivas
* Initial project layout update - Alex Hill
* Allow project template's ``local_settings.py`` into repo - Alex Hill
* Explicitly set email field ``max_length`` to 254 - Alex Hill
* Make updated project template work with ``local_settings.py.template`` - Alex Hill
* Restore ``".template"`` suffix in test script - Alex Hill
* Django changed ``Model._meta.get_parent_list()`` to return a list instead of a set! This fixes it - Stephen McDonald
* Change field on site permission model as per Django warning - Stephen McDonald
* Add mezzanine-modal-announcements to third party modules - Josh Cartmell
* change redirect to be permanent, which is how Django does it - Darius
* Change way PostgreSQL version is displayed - orotau
* Fix import error with latest django-contrib-comments - Stephen McDonald
* Fix various import warnings for Django 1.9 - Stephen McDonald
* Use a consistent version of jquery-ui - Stephen McDonald
* Add the ``featured_image`` as an enclosure to the rss feed. Add the featured image to the rss feed as an enclosure url, so that it can be used by feed readers. For example Zapier RSS to Facebook to use as the Post Image - Michael Best
* Restricted support Django versions to < 1.9 - Stephen McDonald
* Prefetch blog categories in RSS feed - Stephen McDonald
* Ensure host for the current site is used in RSS feeds - Stephen McDonald
* Handle parent comment ID in duplicate comment check. Closes #1286 - Stephen McDonald
* Added mezzanine-slideshows to third-party apps - Stephen McDonald
* Updated email address for security issues - Stephen McDonald
* Fix edge case where ``mezzanine.accounts`` code is run even though not installed (generated docs, some alternate test run setups), and the ``ACCOUNTS_PROFILE_FORM_EXCLUDE_FIELDS`` isn't defined - Stephen McDonald
* Added mezzanine-onepage to third-party apps - Stephen McDonald
* Ensure consistent ``related_model`` attribute throughout django fields - Mathias
* Keep compatibility with django 1.7 for ``generic.fields.BaseGenericRelation`` - Mathias
* Ensure front-end language selector is always visible - Stephen McDonald
* Switch forms admin to use the object-tools-items block in template - David Sanders
* Add some space between the filter-horizontal admin widget and its help text - Stephen McDonald
* Move default button text for forms app from model into template - Stephen McDonald
* Fix double-escaping of HTML in settings admin form field help text - Stephen McDonald
* Define correct JS media for settings admin form class - Stephen McDonald
* Ensure ``mezzanine.accounts`` is available when generating settings docs - Stephen McDonald
* Allow protocol to be omitted from URL arg in ``import_rss`` command - Stephen McDonald
* Fix mysql/unicode issue on saving Link pages - Stephen McDonald
* Use Django language code to configure language for TinyMCE - Stephen McDonald
* Remove automatic selection of site permission for staff users, since it breaks when manually choosing them in the admin interface - Stephen McDonald
* Updating documentation to account for the switch between South and Django's builtin migration tools - Mathias
* Updating multi-lingual documentation to add a note on migrations - Mathias
* Update ``model-customization.rst``. Small grammar changes - orotau
* Restore support for the ``ADMIN_REMOVAL`` setting. Closes #1313 - Stephen McDonald
* Don't assume ``ADMIN_REMOVAL`` setting is defined - Stephen McDonald
* Added optional ``extra_context`` to applicable views - David Sanders
* Add index on ``publish_date`` - Frankie Robertson
* Ensure emptyish page titles in admin tree are clickable. Closes #1321 - Stephen McDonald
* Smarter handling of editable settings - Alex Hill
* Make ``use_editable`` backward compatible - Alex Hill
* Use ``clear_cache`` in tests - Alex Hill
* Remove calls to ``Settings.use_editable()`` - Alex Hill
* Make setting context processor lazy - Alex Hill
* Make Settings object more opaque WRT the current thread - Alex Hill
* Remove context settings caching - Alex Hill
* Show repr of setting values in warning - Alex Hill
* Add a few settings tests - Alex Hill
* Don't require ``Settings.clear_cache()`` outside of a request - Alex Hill
* Test conflicting settings warning - Alex Hill
* Refactor settings retrieval logic - Alex Hill
* Clear request settings cache when settings saved - Alex Hill
* Handle updated project layout in fabfile - Alex Hill
* Handle updated project layout in ``supervisor.conf`` - Alex Hill
* Update ``settings.py`` for new project layout - Alex Hill
* Fix URLs during tests - Alex Hill
* Stop server before dropping database - Alex Hill
* Fix paths in settings - Alex Hill
* More refinements to fabfile - Alex Hill
* Give all deploy files the ``.template`` extension - Alex Hill
* Add utility function ``real_project_name`` - Alex Hill
* Use ``real_project_name`` in ``fabfile.py`` - Alex Hill
* Use ``real_project_name`` in ``manage.py`` - Alex Hill
* Add missing blank line - Alex Hill
* Use ``real_project_name`` in ``wsgi.py`` - Alex Hill
* Use unicode paths in project template handling - Alex Hill
* Add missing trailing bracket - Alex Hill
* Add ``BASE_DIR`` to settings - Alex Hill
* Don't use DB settings at import time - Alex Hill
* Update settings docs to reflect removeal of ``use_editable`` - Stephen McDonald
* Fix doc generation for new project template layout - Stephen McDonald
* Update jquery to 1.7.2, jquery-mobile to 1.2.1. In an effort to gradually bring mezzanine's javascript up to date,. this commit updates mezzanine's default jquery version to the. latest in the 1.7.x series (which is 1.7.2). Because the 1.7.2 release notes state that this version. should be used with jQuery Mobile >= version 1.1, I've updated. jQuery Mobile as well. ``http://blog.jquery.com/2012/03/21/jquery-1-7-2-released/`` - Nik Nyby
* Prefer published date over updated date in RSS importer. Closes #1329 - Stephen McDonald
* Fix manually assigned template settings, such as ``MEZZANINE_ADMIN_PREFIX`` - Stephen McDonald
* Fix host themes when current site does not match domain, eg when selected via admin. Closes #1327 - Stephen McDonald
* Ensure local middleware installed if required - Stephen McDonald
* Change next release numbering in warning message - Mathias Ettinger
* Upgrade to TinyMCE 4. Closes #705 - Stephen McDonald
* Refactor dynamic inline handling. Fixes a bug where Mezzanine would delete inline rows even when its. inlines weren’t being used - Alex Hill
* Correctly handle ``GRAPPELLI_INSTALLED`` and ``ADMIN_MENU_COLLAPSED`` - Alex Hill
* Amend file location for local settings when advising on contribution - Stuart Dines
* admin: use apps config ``verbose_name`` for display - gradel
* TinyMCE 4.2 -> 4.1 due to image insertion conflict - Stephen McDonald
* Don't show draft blog posts under related posts - Stephen McDonald
* Ensure link pages only allow external URLs. Closes #1342. Closes #1345 - Stephen McDonald
* Revert changes to Link model validation - Stephen McDonald
* Clean leading/trailing slashes from page admin slugs - Alexander Bliskovsky
Version 3.1.10 (Aug 30, 2014)
-----------------------------
* Delete kwargs for ``page_view``. This is strange, pass `view_kwargs` form some view to ``page_view``. I have error if kwargs contin `slug` key or some keys with not exists in ``page_view`` kwargs - Pahaz Blinov
* South should not be used for Django 1.7 - Stephen McDonald
* Added mezzanine-bsbanners to third party apps - Stephen McDonald
* Clean up some docstrings - Stephen McDonald
* For dropdown fields in the forms builder app, use the placeholder text to provide an empty first choice - Stephen McDonald
* Add a custom banner to Mezzanine's runserver command, showing a logo and various software versions - Stephen McDonald
* Handle new management command loading order in Django 1.7, so we can override runserver - Stephen McDonald
* Make the setuptools test runner part of the mezzanine package so that we can call it from other packages (such as cartridge). Also make its ``local_settings`` module more dynamic - Stephen McDonald
* Remove working directory hack from bundled ``manage.py`` - conflicts with Django runserver's auto-reloader when run from outside of project root - Stephen McDonald
* Updated development instructions for setting up Mezzanine when contributing - Stephen McDonald
* Update to latest patch versions of Django in travis config - Stephen McDonald
* Better explansion example in dev setup docs - Stephen McDonald
* A test for the ``login_required`` property has been added - Ulrich Wagner
* A more complete test for the ``login_required`` property - Ulrich Wagner
* Don't apply a zindex to h1 tags in admin, since it conflicts with date picker widgets. Closes #1087 - Stephen McDonald
* Raise 404 in page view if page is not an exact match. Closes #1090 - Stephen McDonald
* Add unique constraint to site perm model. Closes #1089 - Stephen McDonald
* Provide a more meaningful exception message when the ``SEARCH_MODEL_CHOICES`` settings points to missing models - Stephen McDonald
* Run page processors before view in PageMiddleware - Alex Hill
* Only run page processors for Mezzanine's page view - Alex Hill
* Update ``models.py``. This fixes day light saving issue. It seems that ``created_at`` is coming with timezone 0000 UTC, so I would like to make ti timezoneaware using just utc. Django templates shows datetime ok with timesince without one hour error - eino-makitalo
* Fix login required test for protected page - Stephen McDonald
* Fix dynamic ``INSTALLED_APPS`` in setuptools test runner - Stephen McDonald
* Remove non-ascii chars from comment - Stephen McDonald
* Better approach for test settings - Stephen McDonald
* Issue 1102 - fixed UnicodeEncodeError when importing non-ascii files from zip - Maciej Szulik
* Fix ``local_settings`` import error check for Python 3 - Stephen McDonald
Version 3.1.9 (Jul 12, 2014)
----------------------------
* Nicer error message when ``register_setting`` is called with editable and no default - Stephen McDonald
* In thumbnails richtext filter, use built-in HTML parser with BeautifulSoup to better preserve original markup - Stephen McDonald
* Bail early in thumbnails richtext filter if ``MEDIA_URL`` isn't used - Stephen McDonald
Version 3.1.8 (Jul 10, 2014)
----------------------------
* Support custom User model in AdminLoginInterfaceSelectorMiddleware - Rocky Meza
* Fix call to ``get_model`` in search view - Stephen McDonald
* Add test for the search view - Stephen McDonald
Version 3.1.7 (Jul 06, 2014)
----------------------------
* Fix twitter query encoding - Stephen McDonald
Version 3.1.6 (Jul 05, 2014)
----------------------------
* Stricter child page lookup when parent slug is updated. Fixes #1045 - Stephen McDonald
* In thumbnails richtext filter, maintain markup that html5lib deems belonging in a head tag, and fix any script tags that have been self-closed - Stephen McDonald
* In front-end editing, handle widget overrides not existing when ``FORMS_USE_HTML5`` is False - Stephen McDonald
* Remove some redundant encoding/escaping from Twitter queries, and handle some MySQL unicode warnings - Stephen McDonald
* Fix regression in generic signal handling in Django 1.7 - Alex Hill
* Initial refactor of profile support for Django 1.7 - Alex Hill
* LazyModelOperations can wait on multiple models - Alex Hill
* Add trailing newline to ``accounts/models.py`` - Alex Hill
* Allow ``'app_label.ModelName'`` passed to ``get_model()`` - Alex Hill
* Fail early with invalid lazy model names - Alex Hill
* Use ``get_profile_for_user()`` in profile signal handler - Alex Hill
* Use ProfileNotConfigured in profile functions - Alex Hill
* Use ProfileNotConfigured in ``accounts/admin.py`` - Alex Hill
* Update accounts tests to use ProfileNotConfigured - Alex Hill
* Use ``get_profile_fields_form()`` rather than importing - Alex Hill
* Fix return statement in ``accounts_tags.profile_fields()`` - Alex Hill
* Fix dependency: oauthlib is used - Melvyn Sopacua
* Replace html5lib with BeautifulSoup in thumbnails richtext filter, to preserve original HTML. Closes #1056 - Stephen McDonald
* In thumbnails richtext filter, only resize images uploaded to ``MEDIA_URL``. Closes #1058 - Stephen McDonald
* Use beautifulsoup4 for Python 3 support - Stephen McDonald
* Added mezzanineopenshift to third-party apps - Stephen McDonald
* Remove distutils version checking code which doesn't work with strings in versions - Stephen McDonald
* Allow alternate settings module when building docs. Closes #1062 - Stephen McDonald
* Remove redundant encoding. Closes #1063 - Stephen McDonald
* Redundant forms admin attribute - Stephen McDonald
Version 3.1.5 (Jun 09, 2014)
----------------------------
* Small css fix for settings admin page - Mario Rosa
* Check if ``django.contrib.admin`` is in ``INSTALLED_APPS``. Make sure ``django.contrib.admin`` is in ``INSTALLED_APPS`` before moving. it to the end of the list. Adding this enables moving admin app. on a different domain - Dovydas Stepanavicius
* Add language selector in the navigation bar - Mathias Ettinger
* Generate slug from title for default language instead of active one - Mathias Ettinger
* rtl: fix margins in admin - Ahmad Khayyat
* Fix ID check in ``admin_page_ordering`` view to prevent some redundant queries - Stephen McDonald
* Revert bad ``get_FOO_display`` change. Closes #1032 - Stephen McDonald
* Don't strip quotes from twitter template tag args which was only needed in early Django versions. Closes #1034 - Stephen McDonald
* Remove global signal handlers in ``mezzanine.generic``. Fixes #1036 - Alex Hill
* Implement a new ``can_move`` dynamic page permission. Content types can override ``can_move()`` to control whether a given page. move in the page tree is permitted. ``can_move()`` should raise a. PageMoveException if the move is denied. PageMoveException takes a. single argument: a message explaining the reason for the denial - Ahmad Khayyat
* page tree: reload on move exception to revert the tree and display any messages - Ahmad Khayyat
* Move LazyModelOperations into ``mezzanine.utils.models`` - Stephen McDonald
* Added ``mezzanine.utils.html.thumbnails`` to ``RICHTEXT_FILTERS`` setting, which converts images within richtext fields into thumbnail references. Closes #567 - Stephen McDonald
* CSS fixes for send to twitter admin checkobx - Stephen McDonald
* Document the ``can_move`` dynamic permission - Ahmad Khayyat
* Faster admin left-hand menu animation - Stephen McDonald
* Show featured images in recent blog posts section - Stephen McDonald
Version 3.1.4 (May 05, 2014)
----------------------------
* Remove previous cached build dir when creating wheel builds - Stephen McDonald
* Explicitly close db connection in ``poll_twitter`` command - Stephen McDonald
* Remove deprecated Debug Toolbar configuration. ``DEBUG_TOOLBAR_CONFIG.INTERCEPT_REDIRECTS`` has been deprecated. In fact, the Redirect panel is now disabled by default, so we don't need to define the setting any more. Deprecation notice: ``http://django-debug-toolbar.readthedocs.org/en/latest/changes.html#deprecated-features``. New default value: ``http://django-debug-toolbar.readthedocs.org/en/latest/configuration.html#toolbar-options`` - Eduardo Rivas
* Bypass streaming responses in cache middleware. Closes #1020 - Stephen McDonald
* Django 1.7: avoid trying to load user model during startup for profile signals - Stephen McDonald
* Support pre/post Django 1.7 CurrentSiteManager - Stephen McDonald
* Change handling of multiple versions of password reset urlpattern format to work with Django 1.7 - Stephen McDonald
* Django 1.7: fix exception handling when testing for slugs or app/model names in page processors - Stephen McDonald
* Django 1.7: fix initial site creation, in 1.7 the default site already exists - Stephen McDonald
* Django 1.7: fix admin formfields for generic relations, thanks to @loic84 - Stephen McDonald
* added ``get_XXX_display()`` to MultiChoiceField - slav0nic
* Only abort second phase cache render for non-200 http status when DEBUG is enabled - Stephen McDonald
* Bump grappelli-safe version to 0.3.10 - Stephen McDonald
Version 3.1.3 (Apr 25, 2014)
----------------------------
* Fix regression in page middleware on non TemplateResponse responses - Stephen McDonald
* Revert change to javascript location in default templates - Stephen McDonald
Version 3.1.2 (Apr 25, 2014)
----------------------------
* [#1004] Move Javascript to the Bottom of the Body. * Move all Javascript Includes to Bottom of the ``base.html`` and. ``mobile/base.html`` templates. * Move ``extra_js`` Blocks Below main Blocks in the ``pages/form.html`` and. ``pages/gallery.html`` templates. closes #1004: JS should be at the bottom of body - Pavan Rikhi
* Widget js shouldn't need staticfiles handling - Stephen McDonald
* Allow local testing of ``STATIC_URL`` containing host - Stephen McDonald
* Add Additional 3rd Party Integration Documentation - Pavan Rikhi
* Indicate active tree branch in tree page menu - Stephen McDonald
* Move the logic for assigning a page variable to the template context, from PageMiddleware into a context processor. This ensures we don't reply on TemplateResponse objects - Stephen McDonald
* More reworking of the docs for integrating apps with pages - Stephen McDonald
* Give a ``.template`` extension to Python files under ``project_template/deploy`` since they aren't valid Python files and an attempt to compile them may be made when installing. Closes #1010 - Stephen McDonald
* Make the new page context processor backward compatible with older projects - Stephen McDonald
* Fix some deprecation warnings: mimetype -> ``content_type`` - Stephen McDonald
* Restore site selection dropdown menu in admin nav - Stephen McDonald
* Decouple the Blog Post List from RichTextPages. The ``blog_post_list.html`` template currently requires that any `page`. context variable passed to it has a `richtextpage` attribute. These changes modify the template, making the `richtextpage` attribute. optional. This allows users to create other Page types pointing to the. URL of the Blog Post List - Pavan Rikhi
* Fix styling of admin help text. Closes #1013 - Stephen McDonald
* Further decoupling of richtextpage in blog templates - Stephen McDonald
* Apply admin title click globally - Stephen McDonald
* Show users section in admin nav highlighted as active for the change password view - Stephen McDonald
* Include grappelli in ``INSTALLED_APPS`` during tests - Stephen McDonald
* Skip reset password test for older Django versions since we now include grappelli, which has a bad url name in the reset password template. Since fixed but not released - Stephen McDonald
* Ensure missing settings vars don't break admin JS. Closes #1015 - Stephen McDonald
* Bump grappelli safe version to 0.3.9 - Stephen McDonald
Version 3.1.1 (Apr 19, 2014)
----------------------------
* Fix richtext widget loading - Stephen McDonald
Version 3.1.0 (Apr 17, 2014)
----------------------------
* Allow auth admin's change password view to be reversed - Stephen McDonald
* Fix for ignoring ``search_fields`` when they are set on the ModelAdmin - Sam Kingston
* Make pillow an explicit dependency since wheel distributions can't have optional dependencies, and clean up uses of it - Stephen McDonald
* Update reference and link for Pillow in Deps - Matt Stevenson
* Add Debian and Ubuntu prereqs for Pillow - Matt Stevenson
* Something is broken with password-resetting. Building a test to reproduce the issue (already hitting the first problem). Will do further testing and fixes in this branch - Arnold Krille
* Further up the test-road. Running this with ``Django1.5.5`` works here. The test reaches the page congratulating to the new password and showing a link to "Log in". Unfortunately that link leads to an invalid url '/accounts/login' by default:-( But thats probably stuff for a different Issue/PR - Arnold Krille
* fix for the python3 problem? - Arnold Krille
* Make the urls version-dependant. This feels a bit dirty. But it could actually work - Arnold Krille
* Python3 fixes. Don't know if this is correct, its my first actual encounter with python3;-) - Arnold Krille
* Add a note about osx setup for libjpeg - Stephen McDonald
* When testing, do so in english. And follow any language-redirects should these occure - Arnold Krille
* Better uidb64 password reset version check - Stephen McDonald
* Fix the fix for reversing the change password form when multiple langages are enabled in the admin - Stephen McDonald
* Provide a warning on admin login when the default password is being used - Stephen McDonald
* Bump grappelli version to 0.3.6 - Stephen McDonald
* Fix ``add_to_builtins`` import for Django 1.7 - Stephen McDonald
* Initial version of new admin menu - Stephen McDonald
* Adds docs for ``HOST_THEMES`` configuration - geojeff
* Made a few grammatical fixes - geojeff
* Removed a caveat that can go in the PR comments - geojeff
* Update css to make side nav full height. Add js to open/close section subnav - Josh Cartmell
* Don't animate the admin menu when first loading - Stephen McDonald
* Better defaults for non-english language codes - Stephen McDonald
* Added setting ``ADMIN_MENU_COLLAPSED`` for controlling admin side-nav behaviour - Stephen McDonald
* Remove dashboard link from admin menu - replace with cliackable Mezzanine title - Stephen McDonald
* Highlight selected item in admin nav - Stephen McDonald
* Move site/lang drop-downs into top nav bar - Stephen McDonald
* Bigger buttons throughout admin - Stephen McDonald
* Move multi-site docs into new section - Stephen McDonald
* Fix tuple/list setting handling - Stephen McDonald
* Allow page subclasses to implement ``get_template_name`` to customize template selection in the page view. Closes #957 - Stephen McDonald
* Use dark chosen plugin for top nav dropdowns in admin - Stephen McDonald
* Use Mezzanine's branding for the admin nav title - Stephen McDonald
* Consistent message styling in admin - Stephen McDonald
* Mentioning ``PAGE_MENU_TEMPLATES_DEFAULT``. Updated the *Filtering Menus* section to mention the `PAGE_MENU_TEMPLATES_DEFAULT` setting which controls what entries get pre-selected in the admin section - Philip Mateescu
* Apply jquery chosen to other selects in the admin - Stephen McDonald
* Remove broken/unnecessary jquery resize plugin - Stephen McDonald
* Don't use sans-serif as the admin font (should fall back to Arial) - Eduardo Rivas
* Adjust CSS selector and colors for dark language selector. The dropdown in the admin login was being targeted as a dark dropdown - Eduardo Rivas
* Fix admin nav margin with alert messages - Stephen McDonald
* Use bigreason tinymce theme - Stephen McDonald
* Actually apply tinymce skin - Stephen McDonald
* Make admin panel collapsible to the left with a nice animation - Eduardo Rivas
* Make the admin panel hidden/show state persist in between page loads. This one uses localStorage instead of cookies - Eduardo Rivas
* Make the admin menu toggle panel a bit more subtle - Stephen McDonald
* Make sure the messages bar responds to panel toggling - Eduardo Rivas
* Fix regression in save bottom of change-list view - Eduardo Rivas
* Apply z-index to the whole side panel, not just the inner list - Eduardo Rivas
* Handle edge case of bottom controls in settings page - Eduardo Rivas
* Fix message margin with collapsed nav - Stephen McDonald
* Deal with POSTS in ssl middleware. Closes #975 - Stephen McDonald
* Fix POST handling in ssl middleware - Stephen McDonald
* Allow authentiated users to undo their ratings - Stephen McDonald
* Messages shouldn't cover admin nav when scrolling horizontally - Stephen McDonald
* Added support for search fields across model relations - Stephen McDonald
* Fix device handling for non-ascii user agents. Closes #976 - Stephen McDonald
* Bring back admin meta title - Eduardo Rivas
* Added distinct to search queryset, to prevent relation spanning search fields from producing duplicate results - Stephen McDonald
* Fix non-ascii form response CSV downloads on Python 3 - Stephen McDonald
* Update test Django version - Stephen McDonald
* Only attempt second phase cache render on valid http status. Closes #967 - Stephen McDonald
* Fix deprecated depth arg to ``select_related`` - Stephen McDonald
* Port over ``FORMS_EXTRA_WIDGETS`` feature from forms-builder - Stephen McDonald
* ``unicode_literals`` shouldn't be used in migrations. Because strings are passed to type(), which requires a non-unicode. string in python 2. Fixes #871 refs toastdriven/django-tastypie#1007 - Gavin Wahl
* Add ``FORMS_EXTRA_WIDGETS`` to Mezzanine's settings - Stephen McDonald
* Changed fabfile ``LIVE_HOSTNAME`` setting to DOMAINS, and handle multiple domains for a single project - Stephen McDonald
* Mention ``parent.page`` in the menu variables docs section - Stephen McDonald
* Only use ``RICHTEXT_WIDGET_CLASS`` if a RichTextField's widget is not. specified in the form's Meta - Alex Hill
* Add tests for RichTextField - Alex Hill
* update the migration files of blog and generic to use custom user model - Ziwei Zhou
* Handle removal of ``CurrentSiteManager._validate_field_name()`` in Django 1.7 - Stephen McDonald
* Better line break and HTML entities handling in form emails. Support line breaks in HTML email (so that they don't collapse when. rendered) and HTML entities in plain text email (unescape them to make. them legible) - Dominique Bischof
* Provide separate overridable email templates for the extra recipients in ``mezzanine.forms`` - Stephen McDonald
* added padding functionality to thumbnail tag - Bryan Clement
* removed rogue print statement - Bryan Clement
* Support hard-coded URLs in ``LOGIN_REDIRECT_URL``. Closes #992 - Stephen McDonald
* Port forms-builder fix for large file uploads - Stephen McDonald
* Allow subclasses of PageMiddleware to be used in page view check - Stephen McDonald
* Clean up thumbnail padding - Stephen McDonald
* Correctly handle 404 exceptions for static files during development - Stephen McDonald
* Store thumbnails in individual directories named after the original filename, so that we can accurately delete them from within filebrowser where necessary. Closes #995 - Stephen McDonald
* Update thumbnail test path - Stephen McDonald
* Disable the 'Add' option of comments in the admin, because the program crash when you try to create a new comment, is better delete this option for avoid this problem - Jesus Armando Anaya Orozco
* Add a new site. Add new site created with Mezzanine - Anthony
* converted ratios to floats. ratios were integer division, which didn't work as desired. casting the numerators to floats cures this ailment - lykkin
* added padding color option into thumbnail tag - lykkin
* Document optional thumbnail tag args - Stephen McDonald
* Added ``USE_L10N`` check for language dropdowns in admin - Rocky Meza
* Fix ``USE_L10N`` check for admin language selector - Stephen McDonald
* Handle null descriptions ofr settings in conf form - Stephen McDonald
* Catches exceptions in thumbnail ``image.convert`` - Doug Evenhouse
* Prevent some warnings during tests - Stephen McDonald
* Restructure content architecture docs - lead in with describing how Page/Displayable are built and used - Stephen McDonald
* Move ``short_url`` generation code from template tag to model, so we can use it for tweets - Stephen McDonald
* Added TweetableAdminMixin and applied to BlogPostAdmin - used for sending tweets from admin - Stephen McDonald
* Updated docs for twitter integration - document setup for sending tweets plus move to own section - Stephen McDonald
* Move the side-menu directly where it should be in the admin template so we don't have to juggle it with jQuery - Stephen McDonald
Version 3.0.9 (Feb 11, 2014)
----------------------------
* Add noindex tag to search results. Search results shouldn't normally be indexed, given that they can be generated for arbitrary queries. This patch adds a noindex tag to the head - Samir Shah
* Fix serving uploaded files during development - Stephen McDonald
* Fix static files handling - Stephen McDonald
* Support collapse classes in admin. Closes #943 - Stephen McDonald
* Add some HTML5 tags to ``RICHTEXT_ALLOWED_TAGS``. Hi,. This patch adds the following tags to ``RICHTEXT_ALLOWED_TAGS:`` * article. * aside. * figure. * caption. * header. * footer. * nav. * section. , all of which are becoming increasingly common, and should all be safe to allow. Thanks! - Samir Shah
Version 3.0.8 (Feb 05, 2014)
----------------------------
* Use binary mode when opening the image to be copied on a remote server - Sylvain Fankhauser
* Fixed regression when validating displayable content field against published status - Stephen McDonald
* Fix static proxy handling - Stephen McDonald
* Fix string checking in page processors. Closes #931 - Stephen McDonald
* Handle the different method of importing filebrowser urls when the upstream version is installed. Closes #925 - Stephen McDonald
* Rename account URL prefix to match Django's by adding the plural s. Catch and redirect any old urls to the new scheme - Sam Kingston
* Tidy up old account redirect view - Sam Kingston
* Added tests to ``static_proxy`` - Alejandro Peralta
* Handle next param in ``old_account_redirect`` - Stephen McDonald
* In Mezzanine's runserver, also serve up static files in ``STATIC_ROOT`` - Stephen McDonald
* Bump filebrowser-safe to 0.3.2 - Stephen McDonald
* Use ``file.name`` instead of ``file.url`` for getting name of file in GalleryImage. `file.name` is universal accross storages and can be used not only with. FileSystem storage but with S3 storage as well (`file.name` is used to. create the url). Also with using `name` instead of `url` we will not have. problems with encoding and python version - Venelin Stoykov
Version 3.0.7 (Feb 02, 2014)
----------------------------
* check if the user model is already registered. Fix usage of overwriting the UserProfileAdmin because it will be under ``mezzanine.accounts`` in ``INSTALLED_APPS`` - Sebastian Clemens
* check django version instead of ImportError. Closes ``https://github.com/stephenmcd/mezzanine/issues/893`` - Sebastian Clemens
* Use space indent instead of tab - Sebastian Clemens
* Do not show the ``in_menus`` field in page admin if ``PAGE_MENU_TEMPLATES`` is empty - Laurent Prodon
* Fix admin password reset page. Closes #909 - Stephen McDonald
* Clean up ``PAGE_MENU_TEMPLATES`` check in page admin - Stephen McDonald
* Fix failing account tests for foreignkey and date/datetime fields on user profile models - Stephen McDonald
* menu: include parent page in context - Laurent Prodon
* menu: modify doc accordingly - Laurent Prodon
* Handle multiple ip addresses in ``mezzanine.utils.views.ip_for_request`` - Stephen McDonald
* Fix handling for schemeless static urls in static proxy - Stephen McDonald
* fix on python3 loads() required string found bytes <- reads(). adding ``.decode("utf-8")`` to support python3 - Simone Federici
* Fixed bug in ``processor_for`` if it receives an unicode slug - Vindio
* Replaced unicode string for ``python3.x`` compatibility - Vindio
* Previous commit breaked test for ``python2.x`` - Vindio
* Previous commit broke test for ``python2.x`` - Vindio
* Dont show comments in blogpost list if they are not allowed - Laurent Prodon
* wrap ratings in a block in blogpost detail template - Laurent Prodon
* More Django 1.6 generic relation regressions - underlying sql has changed, returning duplicates, so apply distinct for correct results. Closes #918 - Stephen McDonald
* Fix tag cloud padding - Stephen McDonald
* Ensure filtering blog posts by keyword uses the correct content type - Stephen McDonald
* Much simpler keywords lookup fix - Stephen McDonald
* Don't assume static proxy url param contains a host. Closes #920 - Stephen McDonald
* Added test to check that /static/ as a prefix of url is removed - Alejandro Peralta
* Fix static proxy test for Python 3 and remove fb dependency from test - Stephen McDonald
Version 3.0.6 (Jan 17, 2014)
----------------------------
* Don't require specifying filebrowser urls separately in a project's urlconf - Stephen McDonald
* import the user model from settings - Sebastian Clemens
* Improved support for determining timezone with tzlocal lib - Stephen McDonald
* New setting ``EMAIL_FAIL_SILENTLY`` for controlling the default ``fail_silently`` arg in sending email - Stephen McDonald
Version 3.0.5 (Jan 12, 2014)
----------------------------
* Fix bytes/string handling in Python 3 ``static_proxy``. Closes #866 - Stephen McDonald
* Move the file browser url to i18n patterns - Sebastian Clemens
* Use the new template tag for url generation - Sebastian Clemens
* Add a given query string to url - Sebastian Clemens
* Move jQuery setup for ajax/csrf outside of ``document.ready`` handler - Stephen McDonald
* In overextends template tag, don't assume extends node is first in node list - Stephen McDonald
* Fix bytes/str handling in disqus SSO - Stephen McDonald
* Communicate the requirement for twitter credentials on changing the default query in the help text - Stephen McDonald
* Slight increase to font size throughout the admin - Stephen McDonald
* Add url field type to anyFieldsDirty in ``dynamic_inline.js`` - Adrian Carpenter
* Patch all migrations to remove generic fields - these break with Django 1.6 and aren't actually necessary with the latest version of south - Stephen McDonald
* Added two more HTML5 input types in ``dynamic_inline.js`` - Adrian Carpenter
* ``dynamic_inline.js`` updated for HTML5 input types in Django 1.6 - Adrian Carpenter
* Remove all the ``frozen_by_south`` hacks and use it to provide a warning for old migrations - Stephen McDonald
* Add some more html5 field types to dynamic inlines JavaScript - Stephen McDonald
* Update to use multiprocessing library - tyescott
* Use pytz to determine a closest matching timezone fro ``TIME_ZONE`` default - Stephen McDonald
* Have RSS/Atom feed link attribute go to homepage of site - David Tomaschik
* Don't hard code rss link url - Stephen McDonald
* Use ``FieldFile.url`` to get full image-url in gallery. Closes #877 - Denis Cornehl
* SS: Bumped requests and requests-oauthlib versions - Sachin Shende
* Fix tuple/list setting handling. Closes #883 - Stephen McDonald
* allow <a> tags inside <button> in TinyMCE - Neum
* Add back ``bootstrap-extras.js``. Menus stay open for a few hundred milliseconds after the cursor leaves them and the dropdowns in the main menu are useable when the menu is collapsed - Josh Cartmell
* Relative schemes for twitter avatar urls. Closes #878 - Stephen McDonald
* Fix some failing http status code tests that need to follow redirects when multiple languages defined - Stephen McDonald
* Make the label element optional for form fields. Labels for form fields can be disabled by setting them to an empty string. Previously this would produce the intended result visually, but left an empty label element in the HTML. This change causes the element to only be inserted if a label value exists - David Sanders
* Fix for uploading zip files to a homepage gallery - Jeff Fein-Worton
* Update to latest bleach/html5lib and enable for Python 3 - Stephen McDonald
* Fix admin menu app/model sorting for Python 3 - Stephen McDonald
* Bump version to 3.0.5 - Stephen McDonald
Version 3.0.4 (Dec 27, 2013)
----------------------------
* Shadow staticfiles runserver instead of ``django.core`` - Stephen McDonald
* Use local names for the language selector. Also dropping creation of the two variables LANGUAGES and ``LANGUAGE_CODE``. because they already exists - Sebastian Clemens
* Correctly handle serving files under ``MEDIA_ROOT`` during development on Windows. Closes #865 - Stephen McDonald
Version 3.0.3 (Dec 25, 2013)
----------------------------
* Skip randomly failing settings test on Python 3 - Stephen McDonald
* Unicode fix for gallery image descriptions from filenames - Stephen McDonald
* More gallery unicode fixes - Stephen McDonald
* Fix some jQuery namespacing regressions in the admin - Stephen McDonald
Version 3.0.2 (Dec 24, 2013)
----------------------------
* No changes listed.
Version 3.0.1 (Dec 24, 2013)
----------------------------
* Fix Python 2/3 str/bytes error in cache bypass util - Stephen McDonald
Version 3.0.0 (Dec 24, 2013)
----------------------------
* Python 2/3 port: be conservative: no magic super() imports - Ed Schofield
* Put ``__future__`` imports below the # encoding: utf-8 lines - Ed Schofield
* Correctly handle page slug lookups when ``APPEND_SLASH`` is False - Stephen McDonald
* disqus counts should follow the protocol of the original request, see: ``http://help.disqus.com/customer/portal/articles/542119`` - John Henry
* Fall back to Python 2 urllib imports if needed. * Also fix one bug triggered by passing a newstr to ``urllib.unquote`` - Ed Schofield
* Remove obsolete ``with_statement`` import from ``__future__`` - Ed Schofield
* Always pass a native string to first arg of 3-arg type() call in ``middleware.py`` - Ed Schofield
* Add ``absolute_import`` to prevent implicit relative import of ``html.py`` on Py2 - Ed Schofield
* Python 2/3 compatibility for types in the settings registry - Ed Schofield