From 16539861fd1d3a75d50618b65fcd4f8463e580bb Mon Sep 17 00:00:00 2001 From: Gavin Reich Date: Tue, 9 Jan 2018 16:24:42 +0000 Subject: [PATCH 01/19] updated font-awesome icons. updated mimetype->content_type. --- favit/static/favit/js/favorite.js | 6 +++--- favit/templates/favit/button.html | 2 +- favit/views.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/favit/static/favit/js/favorite.js b/favit/static/favit/js/favorite.js index c3bd14d..43ae1c9 100644 --- a/favit/static/favit/js/favorite.js +++ b/favit/static/favit/js/favorite.js @@ -1,4 +1,4 @@ -$(document).ready(function() { +jQuery(document).ready(function() { $('.btn.favorite').click(function() { var $obj = $(this); var target_id = $obj.attr('id').split('_')[1]; @@ -10,9 +10,9 @@ $(document).ready(function() { target_object_id: target_id}, success: function(response) { if (response.status == 'added') { - $obj.children().removeClass('icon-heart-empty').addClass('icon-heart');} + $obj.children().removeClass('fa-heart-o').addClass('fa-heart');} else { - $obj.children().removeClass('icon-heart').addClass('icon-heart-empty'); + $obj.children().removeClass('fa-heart').addClass('fa-heart-o'); } $obj.parent('.favit').children('.fav-count').text(response.fav_count); $obj.prop('disabled', false); diff --git a/favit/templates/favit/button.html b/favit/templates/favit/button.html index 4ddffe4..d2b7062 100644 --- a/favit/templates/favit/button.html +++ b/favit/templates/favit/button.html @@ -1,6 +1,6 @@
{{ fav_count }}
diff --git a/favit/views.py b/favit/views.py index 90043b4..21dbb12 100644 --- a/favit/views.py +++ b/favit/views.py @@ -37,7 +37,7 @@ def add_or_remove(request): return HttpResponse( json.dumps(response, ensure_ascii=False), - mimetype='application/json' + content_type='application/json' ) From 1e9c92291aeccb9b12b8c47c4f0fa8960ba5e519 Mon Sep 17 00:00:00 2001 From: Gavin Reich Date: Tue, 9 Jan 2018 16:26:18 +0000 Subject: [PATCH 02/19] added missing $ --- favit/static/favit/js/favorite.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/favit/static/favit/js/favorite.js b/favit/static/favit/js/favorite.js index 43ae1c9..d93eccd 100644 --- a/favit/static/favit/js/favorite.js +++ b/favit/static/favit/js/favorite.js @@ -1,4 +1,4 @@ -jQuery(document).ready(function() { +jQuery(document).ready(function($) { $('.btn.favorite').click(function() { var $obj = $(this); var target_id = $obj.attr('id').split('_')[1]; From f8165e417d89827690d8392a0b97d984eb182b90 Mon Sep 17 00:00:00 2001 From: Gavin Reich Date: Tue, 9 Jan 2018 16:43:22 +0000 Subject: [PATCH 03/19] js & css tweaks --- favit/static/favit/css/favorite.css | 8 ++++++++ favit/static/favit/js/favorite.js | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/favit/static/favit/css/favorite.css b/favit/static/favit/css/favorite.css index 223a5e6..f6c2831 100644 --- a/favit/static/favit/css/favorite.css +++ b/favit/static/favit/css/favorite.css @@ -1,3 +1,11 @@ +.favit.fa-heart { + color: red; +} + +.favit.fa-heart-o { + color: black; +} + .fav-count { font-size: .8em; padding: 2px 5px 2px 4px; diff --git a/favit/static/favit/js/favorite.js b/favit/static/favit/js/favorite.js index d93eccd..c7e1e3b 100644 --- a/favit/static/favit/js/favorite.js +++ b/favit/static/favit/js/favorite.js @@ -14,7 +14,7 @@ jQuery(document).ready(function($) { else { $obj.children().removeClass('fa-heart').addClass('fa-heart-o'); } - $obj.parent('.favit').children('.fav-count').text(response.fav_count); + //$obj.parent('.favit').children('.fav-count').text(response.fav_count); $obj.prop('disabled', false); } }); From 58f3fb6d87d88e0038a05846014202dfe0b25f21 Mon Sep 17 00:00:00 2001 From: Gavin Reich Date: Tue, 9 Jan 2018 16:50:32 +0000 Subject: [PATCH 04/19] css update --- favit/static/favit/css/favorite.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/favit/static/favit/css/favorite.css b/favit/static/favit/css/favorite.css index f6c2831..22cad30 100644 --- a/favit/static/favit/css/favorite.css +++ b/favit/static/favit/css/favorite.css @@ -1,5 +1,5 @@ -.favit.fa-heart { - color: red; +.favit i.fa-heart { + color: #CB3D3D; } .favit.fa-heart-o { From 304fb5e4dfdc2ce7b837e84ae83d0ca8a051a162 Mon Sep 17 00:00:00 2001 From: carderm Date: Fri, 19 Jan 2018 14:45:50 +1100 Subject: [PATCH 05/19] Added data-add/remove-fav-icon --- .gitignore | 1 + favit/static/favit/js/favorite.js | 39 +++++++++++++++++++++---------- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index a204982..ec7b198 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.idea *.pyc build/ dist/ diff --git a/favit/static/favit/js/favorite.js b/favit/static/favit/js/favorite.js index c7e1e3b..affce22 100644 --- a/favit/static/favit/js/favorite.js +++ b/favit/static/favit/js/favorite.js @@ -2,21 +2,36 @@ jQuery(document).ready(function($) { $('.btn.favorite').click(function() { var $obj = $(this); var target_id = $obj.attr('id').split('_')[1]; + + var add_fav_icon = $obj.attr('data-add-fav-icon'); + if (typeof add_fav_icon !== typeof undefined && add_fav_icon !== false) { + add_fav_icon = "fa-heart-o"; + } + + var remove_fav_icon = $obj.attr('data-remove-fav-icon'); + if (typeof remove_fav_icon !== typeof undefined && remove_fav_icon !== false) { + remove_fav_icon = "fa-heart"; + } + + $obj.prop('disabled', true); $.ajax({ - url: $obj.attr('href'), - type: 'POST', - data: {target_model: $obj.attr('model'), - target_object_id: target_id}, - success: function(response) { - if (response.status == 'added') { - $obj.children().removeClass('fa-heart-o').addClass('fa-heart');} - else { - $obj.children().removeClass('fa-heart').addClass('fa-heart-o'); + url: $obj.attr('href'), + type: 'POST', + data: { + target_model: $obj.attr('model'), + target_object_id: target_id + }, + success: function (response) { + if (response.status == 'added') { + $obj.children().removeClass(add_fav_icon).addClass(remove_fav_icon); + } + else { + $obj.children().removeClass(remove_fav_icon).addClass(add_fav_icon); + } + //$obj.parent('.favit').children('.fav-count').text(response.fav_count); + $obj.prop('disabled', false); } - //$obj.parent('.favit').children('.fav-count').text(response.fav_count); - $obj.prop('disabled', false); - } }); }); From 1325c42fe574f7af9fe79a400d7ccfee04c96b84 Mon Sep 17 00:00:00 2001 From: carderm Date: Fri, 19 Jan 2018 15:09:02 +1100 Subject: [PATCH 06/19] JS fix for icon --- favit/static/favit/js/favorite.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/favit/static/favit/js/favorite.js b/favit/static/favit/js/favorite.js index affce22..3f4db9a 100644 --- a/favit/static/favit/js/favorite.js +++ b/favit/static/favit/js/favorite.js @@ -4,12 +4,12 @@ jQuery(document).ready(function($) { var target_id = $obj.attr('id').split('_')[1]; var add_fav_icon = $obj.attr('data-add-fav-icon'); - if (typeof add_fav_icon !== typeof undefined && add_fav_icon !== false) { + if (typeof add_fav_icon === typeof undefined || add_fav_icon === false) { add_fav_icon = "fa-heart-o"; } var remove_fav_icon = $obj.attr('data-remove-fav-icon'); - if (typeof remove_fav_icon !== typeof undefined && remove_fav_icon !== false) { + if (typeof remove_fav_icon === typeof undefined || remove_fav_icon === false) { remove_fav_icon = "fa-heart"; } From c26e68b752685c5a67b9f005bb94f32a4772c33e Mon Sep 17 00:00:00 2001 From: carderm Date: Fri, 19 Jan 2018 15:24:12 +1100 Subject: [PATCH 07/19] JS update to change button title --- favit/static/favit/js/favorite.js | 105 +++++++++++++++--------------- 1 file changed, 53 insertions(+), 52 deletions(-) diff --git a/favit/static/favit/js/favorite.js b/favit/static/favit/js/favorite.js index 3f4db9a..6a4aa8d 100644 --- a/favit/static/favit/js/favorite.js +++ b/favit/static/favit/js/favorite.js @@ -1,58 +1,59 @@ -jQuery(document).ready(function($) { - $('.btn.favorite').click(function() { - var $obj = $(this); - var target_id = $obj.attr('id').split('_')[1]; +jQuery(document).ready(function ($) { + $('.btn.favorite').click(function () { + var $obj = $(this); + var target_id = $obj.attr('id').split('_')[1]; - var add_fav_icon = $obj.attr('data-add-fav-icon'); - if (typeof add_fav_icon === typeof undefined || add_fav_icon === false) { - add_fav_icon = "fa-heart-o"; - } + var add_fav_icon = $obj.attr('data-add-fav-icon') || "fa-heart-o"; + var remove_fav_icon = $obj.attr('data-remove-fav-icon') || "fa-heart"; - var remove_fav_icon = $obj.attr('data-remove-fav-icon'); - if (typeof remove_fav_icon === typeof undefined || remove_fav_icon === false) { - remove_fav_icon = "fa-heart"; - } + var add_fav_title = $obj.attr('data-add-fav-title') || "Add to Favourites"; + var remove_fav_title = $obj.attr('data-remove-fav-title') || "Remove from Favourites"; + $obj.prop('disabled', true); + $.ajax({ + url: $obj.attr('href'), + type: 'POST', + data: { + target_model: $obj.attr('model'), + target_object_id: target_id + }, + success: function (response) { + if (response.status == 'added') { + $obj.children().removeClass(add_fav_icon).addClass(remove_fav_icon); + if ($obj.attr('title') && $obj.title === add_fav_title) { + $obj.title = remove_fav_title; + } + } + else { + $obj.children().removeClass(remove_fav_icon).addClass(add_fav_icon); + if ($obj.attr('title') && $obj.title === remove_fav_title) { + $obj.title = add_fav_title; + } + } + //$obj.parent('.favit').children('.fav-count').text(response.fav_count); + $obj.prop('disabled', false); + } + }); + }); - $obj.prop('disabled', true); - $.ajax({ - url: $obj.attr('href'), - type: 'POST', - data: { - target_model: $obj.attr('model'), - target_object_id: target_id - }, - success: function (response) { - if (response.status == 'added') { - $obj.children().removeClass(add_fav_icon).addClass(remove_fav_icon); - } - else { - $obj.children().removeClass(remove_fav_icon).addClass(add_fav_icon); - } - //$obj.parent('.favit').children('.fav-count').text(response.fav_count); - $obj.prop('disabled', false); - } - }); - }); - - $('.btn.unfave').click(function() { - var $obj = $(this); - $obj.prop('disabled', true); - $.ajax({ - url: $obj.attr('href'), - type: 'POST', - data: { - target_model: $obj.data('model'), - target_object_id: $obj.data('id') - }, - success: function(response) { - if (response.status == 'deleted') { - $obj.parent().remove(); - } - }, - complete: function(response) { - $obj.prop('disabled', false); - } + $('.btn.unfave').click(function () { + var $obj = $(this); + $obj.prop('disabled', true); + $.ajax({ + url: $obj.attr('href'), + type: 'POST', + data: { + target_model: $obj.data('model'), + target_object_id: $obj.data('id') + }, + success: function (response) { + if (response.status == 'deleted') { + $obj.parent().remove(); + } + }, + complete: function (response) { + $obj.prop('disabled', false); + } + }); }); - }); }); From 645e832f608f568a95badd32b967dbcbc9414e39 Mon Sep 17 00:00:00 2001 From: carderm Date: Fri, 19 Jan 2018 15:28:17 +1100 Subject: [PATCH 08/19] JS update to change button title --- favit/static/favit/js/favorite.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/favit/static/favit/js/favorite.js b/favit/static/favit/js/favorite.js index 6a4aa8d..d74f13a 100644 --- a/favit/static/favit/js/favorite.js +++ b/favit/static/favit/js/favorite.js @@ -20,13 +20,13 @@ jQuery(document).ready(function ($) { success: function (response) { if (response.status == 'added') { $obj.children().removeClass(add_fav_icon).addClass(remove_fav_icon); - if ($obj.attr('title') && $obj.title === add_fav_title) { + if ($obj.attr('title') && $obj.attr('title') === add_fav_title) { $obj.title = remove_fav_title; } } else { $obj.children().removeClass(remove_fav_icon).addClass(add_fav_icon); - if ($obj.attr('title') && $obj.title === remove_fav_title) { + if ($obj.attr('title') && $obj.attr('title') === remove_fav_title) { $obj.title = add_fav_title; } } From 67600a12a13e0e4a54838b57b8340851603a07f0 Mon Sep 17 00:00:00 2001 From: carderm Date: Fri, 19 Jan 2018 15:49:20 +1100 Subject: [PATCH 09/19] Fix for context being overwritten. --- favit/templatetags/favit_tags.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/favit/templatetags/favit_tags.py b/favit/templatetags/favit_tags.py index 30dddba..e7e8d85 100644 --- a/favit/templatetags/favit_tags.py +++ b/favit/templatetags/favit_tags.py @@ -25,14 +25,14 @@ def favorite_button(context, target): if Favorite.objects.get_favorite(user, target): undo = True - return render_to_string( - 'favit/button.html', { - 'target_model': target_model, - 'target_object_id': target.id, - 'undo': undo, - 'fav_count': Favorite.objects.for_object(target).count() - } - ) + context.update({ + 'target_model': target_model, + 'target_object_id': target.id, + 'undo': undo, + 'fav_count': Favorite.objects.for_object(target).count() + }) + + return render_to_string('favit/button.html', context) @register.simple_tag(takes_context=True) @@ -48,12 +48,11 @@ def unfave_button(context, target): target_model = '.'.join((target._meta.app_label, target._meta.object_name)) - return render_to_string( - 'favit/unfave-button.html', { - 'target_model': target_model, - 'target_object_id': target.id, - } - ) + context.update({ + 'target_model': target_model, + 'target_object_id': target.id, + }) + return render_to_string('favit/unfave-button.html', context) @register.filter From 8cfe388e9f087c90531e97430e5c60d4578cf017 Mon Sep 17 00:00:00 2001 From: carderm Date: Fri, 19 Jan 2018 15:56:56 +1100 Subject: [PATCH 10/19] Fix for JS title --- favit/static/favit/js/favorite.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/favit/static/favit/js/favorite.js b/favit/static/favit/js/favorite.js index d74f13a..38ff8e1 100644 --- a/favit/static/favit/js/favorite.js +++ b/favit/static/favit/js/favorite.js @@ -20,14 +20,14 @@ jQuery(document).ready(function ($) { success: function (response) { if (response.status == 'added') { $obj.children().removeClass(add_fav_icon).addClass(remove_fav_icon); - if ($obj.attr('title') && $obj.attr('title') === add_fav_title) { - $obj.title = remove_fav_title; + if ($obj.attr('title') && $obj.attr('title') === remove_fav_title) { + $obj.title = add_fav_title; } } else { $obj.children().removeClass(remove_fav_icon).addClass(add_fav_icon); - if ($obj.attr('title') && $obj.attr('title') === remove_fav_title) { - $obj.title = add_fav_title; + if ($obj.attr('title') && $obj.attr('title') === add_fav_title) { + $obj.title = remove_fav_title; } } //$obj.parent('.favit').children('.fav-count').text(response.fav_count); From f028dc0ba32df22793ee3c34037fc6b834bdd5f7 Mon Sep 17 00:00:00 2001 From: carderm Date: Fri, 19 Jan 2018 16:33:25 +1100 Subject: [PATCH 11/19] Fix for JS title --- favit/static/favit/js/favorite.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/favit/static/favit/js/favorite.js b/favit/static/favit/js/favorite.js index 38ff8e1..6dcaf7e 100644 --- a/favit/static/favit/js/favorite.js +++ b/favit/static/favit/js/favorite.js @@ -20,14 +20,14 @@ jQuery(document).ready(function ($) { success: function (response) { if (response.status == 'added') { $obj.children().removeClass(add_fav_icon).addClass(remove_fav_icon); - if ($obj.attr('title') && $obj.attr('title') === remove_fav_title) { - $obj.title = add_fav_title; + if ($obj.attr('title') && $obj.attr('title') === add_fav_title) { + $obj.attr('title', remove_fav_title); } } else { $obj.children().removeClass(remove_fav_icon).addClass(add_fav_icon); - if ($obj.attr('title') && $obj.attr('title') === add_fav_title) { - $obj.title = remove_fav_title; + if ($obj.attr('title') && $obj.attr('title') === remove_fav_title) { + $obj.attr('title', add_fav_title); } } //$obj.parent('.favit').children('.fav-count').text(response.fav_count); From f32e2fa875dd79f407fdb775fc2daf808266aeb1 Mon Sep 17 00:00:00 2001 From: Gavin Reich Date: Mon, 5 Feb 2018 05:12:43 +0000 Subject: [PATCH 12/19] Update for Django 1.9: django.contrib.contenttypes.generic removed --- favit/models.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/favit/models.py b/favit/models.py index 1bea546..61dc31c 100644 --- a/favit/models.py +++ b/favit/models.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- -from django.contrib.contenttypes import generic +#from django.contrib.contenttypes import generic +from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.db import models from django.conf import settings @@ -15,7 +16,7 @@ class Favorite(models.Model): user = models.ForeignKey(getattr(settings, 'AUTH_USER_MODEL', 'auth.User')) target_content_type = models.ForeignKey(ContentType) target_object_id = models.PositiveIntegerField() - target = generic.GenericForeignKey('target_content_type', 'target_object_id') + target = GenericForeignKey('target_content_type', 'target_object_id') timestamp = models.DateTimeField(auto_now_add=True, db_index=True) objects = FavoriteManager() From ac0d84c8cb58ff2be2ec1e1b9edee7c7a2608bc0 Mon Sep 17 00:00:00 2001 From: carderm Date: Thu, 12 Apr 2018 13:26:10 +1000 Subject: [PATCH 13/19] Added Migrations to stop missing auth_user error message. --- favit/migrations/0001_initial.py | 36 ++++++++++++++++++++++++++++++++ favit/migrations/__init__.py | 0 2 files changed, 36 insertions(+) create mode 100644 favit/migrations/0001_initial.py create mode 100644 favit/migrations/__init__.py diff --git a/favit/migrations/0001_initial.py b/favit/migrations/0001_initial.py new file mode 100644 index 0000000..a415289 --- /dev/null +++ b/favit/migrations/0001_initial.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models +from django.conf import settings + + +class Migration(migrations.Migration): + + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Favorite', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('target_object_id', models.PositiveIntegerField()), + ('timestamp', models.DateTimeField(auto_now_add=True, db_index=True)), + ('target_content_type', models.ForeignKey(to='contenttypes.ContentType')), + ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)), + ], + options={ + 'ordering': ['-timestamp'], + 'get_latest_by': 'timestamp', + 'verbose_name': 'favorite', + 'verbose_name_plural': 'favorites', + }, + ), + migrations.AlterUniqueTogether( + name='favorite', + unique_together=set([('user', 'target_content_type', 'target_object_id')]), + ), + ] diff --git a/favit/migrations/__init__.py b/favit/migrations/__init__.py new file mode 100644 index 0000000..e69de29 From bfe3e66c209cabada22232c78a3b443575627f8b Mon Sep 17 00:00:00 2001 From: carderm Date: Tue, 1 May 2018 15:20:17 +1000 Subject: [PATCH 14/19] Django 1.11 updates. --- favit/managers.py | 8 ++++---- favit/models.py | 1 - favit/templatetags/favit_tags.py | 1 - favit/urls.py | 11 +++++------ favit/views.py | 4 ++-- 5 files changed, 11 insertions(+), 14 deletions(-) diff --git a/favit/managers.py b/favit/managers.py index ad79a90..3a87073 100644 --- a/favit/managers.py +++ b/favit/managers.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- from django.contrib.contenttypes.models import ContentType from django.db import models -from django.db.models import get_model +from django.apps import apps def _get_content_type_and_obj(obj, model=None): if isinstance(model, basestring): - model = get_model(*model.split(".")) + model = apps.get_model(*model.split(".")) if isinstance(obj, (int, long)): obj = model.objects.get(pk=obj) @@ -41,7 +41,7 @@ def for_user(self, user, model=None): if model: if isinstance(model, basestring): - model = get_model(*model.split(".")) + model = apps.get_model(*model.split(".")) content_type = ContentType.objects.get_for_model(model) qs = qs.filter(target_content_type=content_type) @@ -62,7 +62,7 @@ def for_model(self, model): # if model is an app_label.model string make it a Model class if isinstance(model, basestring): - model = get_model(*model.split(".")) + model = apps.get_model(*model.split(".")) content_type = ContentType.objects.get_for_model(model) diff --git a/favit/models.py b/favit/models.py index 61dc31c..2404956 100644 --- a/favit/models.py +++ b/favit/models.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -#from django.contrib.contenttypes import generic from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.db import models diff --git a/favit/templatetags/favit_tags.py b/favit/templatetags/favit_tags.py index e7e8d85..cd595b6 100644 --- a/favit/templatetags/favit_tags.py +++ b/favit/templatetags/favit_tags.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- from django import template -from django.db.models import get_model from django.template.loader import render_to_string from ..models import Favorite diff --git a/favit/urls.py b/favit/urls.py index ebdc3f1..8c9634a 100644 --- a/favit/urls.py +++ b/favit/urls.py @@ -1,7 +1,6 @@ -from django.conf.urls import patterns, url +from django.conf.urls import url - -urlpatterns = patterns('favit.views', - url(r'^add-or-remove$', 'add_or_remove'), - url(r'^remove$', 'remove'), -) +urlpatterns = [ + url(r'^add-or-remove$', 'favit.views.add_or_remove'), + url(r'^remove$', 'favit.views.remove'), +] diff --git a/favit/views.py b/favit/views.py index 21dbb12..5ecaa92 100644 --- a/favit/views.py +++ b/favit/views.py @@ -11,7 +11,7 @@ def add_or_remove(request): if not request.is_ajax(): - return HttpResponseNotAllowed() + return HttpResponseNotAllowed([]) user = request.user @@ -45,7 +45,7 @@ def add_or_remove(request): def remove(request): if not request.is_ajax(): - return HttpResponseNotAllowed() + return HttpResponseNotAllowed([]) user = request.user From a9341308b6a30565b76491726e67dac4740e5893 Mon Sep 17 00:00:00 2001 From: carderm Date: Tue, 1 May 2018 19:02:08 +1000 Subject: [PATCH 15/19] Django 1.11 updates. --- favit/urls.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/favit/urls.py b/favit/urls.py index 8c9634a..b2b4273 100644 --- a/favit/urls.py +++ b/favit/urls.py @@ -1,6 +1,8 @@ from django.conf.urls import url +from favit.views import * + urlpatterns = [ - url(r'^add-or-remove$', 'favit.views.add_or_remove'), - url(r'^remove$', 'favit.views.remove'), + url(r'^add-or-remove$', add_or_remove), + url(r'^remove$', remove), ] From b56db941fb503127e03dbe91becd217e51c80490 Mon Sep 17 00:00:00 2001 From: carderm Date: Thu, 3 May 2018 13:46:48 +1000 Subject: [PATCH 16/19] Use flatten_context(context) for Django 1.11 --- favit/templatetags/favit_tags.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/favit/templatetags/favit_tags.py b/favit/templatetags/favit_tags.py index cd595b6..0e25998 100644 --- a/favit/templatetags/favit_tags.py +++ b/favit/templatetags/favit_tags.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from django import template from django.template.loader import render_to_string - +from classytags.utils import flatten_context from ..models import Favorite @@ -24,6 +24,7 @@ def favorite_button(context, target): if Favorite.objects.get_favorite(user, target): undo = True + context = flatten_context(context) context.update({ 'target_model': target_model, 'target_object_id': target.id, @@ -47,6 +48,7 @@ def unfave_button(context, target): target_model = '.'.join((target._meta.app_label, target._meta.object_name)) + context = flatten_context(context) context.update({ 'target_model': target_model, 'target_object_id': target.id, From 4480f2e541fc7ad7fc5bf41fadb824dd2f7b8767 Mon Sep 17 00:00:00 2001 From: carderm Date: Thu, 3 May 2018 15:42:26 +1000 Subject: [PATCH 17/19] Added named views to the urls.py --- favit/urls.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/favit/urls.py b/favit/urls.py index b2b4273..6ffca0a 100644 --- a/favit/urls.py +++ b/favit/urls.py @@ -3,6 +3,6 @@ urlpatterns = [ - url(r'^add-or-remove$', add_or_remove), - url(r'^remove$', remove), + url(r'^add-or-remove$', add_or_remove, name='favit.views.add_or_remove'), + url(r'^remove$', remove, name='favit.views.remove'), ] From 5b2595a3c586174e70c43affaef269e824dfb2a0 Mon Sep 17 00:00:00 2001 From: carderm Date: Fri, 1 Feb 2019 17:12:44 +1100 Subject: [PATCH 18/19] Py3 updates to remove basestring --- favit/managers.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/favit/managers.py b/favit/managers.py index 3a87073..797492c 100644 --- a/favit/managers.py +++ b/favit/managers.py @@ -2,10 +2,11 @@ from django.contrib.contenttypes.models import ContentType from django.db import models from django.apps import apps +from builtins import str def _get_content_type_and_obj(obj, model=None): - if isinstance(model, basestring): + if isinstance(model, str): model = apps.get_model(*model.split(".")) if isinstance(obj, (int, long)): @@ -40,7 +41,7 @@ def for_user(self, user, model=None): qs = self.get_query_set().filter(user=user) if model: - if isinstance(model, basestring): + if isinstance(model, str): model = apps.get_model(*model.split(".")) content_type = ContentType.objects.get_for_model(model) @@ -61,7 +62,7 @@ def for_model(self, model): """ # if model is an app_label.model string make it a Model class - if isinstance(model, basestring): + if isinstance(model, str): model = apps.get_model(*model.split(".")) content_type = ContentType.objects.get_for_model(model) From 41a0b46fece17466e0c7f92556144953d9da659b Mon Sep 17 00:00:00 2001 From: carderm Date: Fri, 1 Feb 2019 17:15:43 +1100 Subject: [PATCH 19/19] PY3 Remove long type --- favit/managers.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/favit/managers.py b/favit/managers.py index 797492c..ad648e1 100644 --- a/favit/managers.py +++ b/favit/managers.py @@ -3,13 +3,14 @@ from django.db import models from django.apps import apps from builtins import str +from builtins import int def _get_content_type_and_obj(obj, model=None): if isinstance(model, str): model = apps.get_model(*model.split(".")) - if isinstance(obj, (int, long)): + if isinstance(obj, int): obj = model.objects.get(pk=obj) return ContentType.objects.get_for_model(type(obj)), obj