Added user actions services
This commit is contained in:
parent
9628ac7422
commit
0d89481d02
|
@ -26,9 +26,9 @@ def user_amiibo(request):
|
||||||
wishlisted = []
|
wishlisted = []
|
||||||
trading = []
|
trading = []
|
||||||
if request.user.is_authenticated():
|
if request.user.is_authenticated():
|
||||||
owned = UserAmiibo.objects.filter(own=True).values_list('id', flat=True)
|
owned = UserAmiibo.objects.filter(own=True).values_list('_amiibo__id', flat=True)
|
||||||
wishlisted = UserAmiibo.objects.filter(want=True).values_list('id', flat=True)
|
wishlisted = UserAmiibo.objects.filter(want=True).values_list('_amiibo__id', flat=True)
|
||||||
trading = UserAmiibo.objects.filter(trade=True).values_list('id', flat=True)
|
trading = UserAmiibo.objects.filter(trade=True).values_list('_amiibo__id', flat=True)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'USER_AMIIBO_OWNED': owned,
|
'USER_AMIIBO_OWNED': owned,
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from . import models
|
||||||
|
|
||||||
|
|
||||||
|
def user_add_owned(user, amiibo):
|
||||||
|
relation, created = models.UserAmiibo.objects.get_or_create(
|
||||||
|
_amiibo=amiibo, user=user)
|
||||||
|
relation.own = True
|
||||||
|
relation.want = False
|
||||||
|
relation.save()
|
||||||
|
|
||||||
|
def user_remove_owned(user, amiibo):
|
||||||
|
relation, created = models.UserAmiibo.objects.get_or_create(
|
||||||
|
_amiibo=amiibo, user=user)
|
||||||
|
relation.own = False
|
||||||
|
relation.save()
|
||||||
|
|
||||||
|
def user_add_wishlist(user, amiibo):
|
||||||
|
relation, created = models.UserAmiibo.objects.get_or_create(
|
||||||
|
_amiibo=amiibo, user=user)
|
||||||
|
relation.own = False
|
||||||
|
relation.want = True
|
||||||
|
relation.save()
|
||||||
|
|
||||||
|
def user_remove_wishlist(user, amiibo):
|
||||||
|
relation, created = models.UserAmiibo.objects.get_or_create(
|
||||||
|
_amiibo=amiibo, user=user)
|
||||||
|
relation.want = False
|
||||||
|
relation.save()
|
||||||
|
|
||||||
|
def user_add_trade(user, amiibo):
|
||||||
|
relation, created = models.UserAmiibo.objects.get_or_create(
|
||||||
|
_amiibo=amiibo, user=user)
|
||||||
|
relation.trade = True
|
||||||
|
relation.save()
|
||||||
|
|
||||||
|
def user_remove_trade(user, amiibo):
|
||||||
|
relation, created = models.UserAmiibo.objects.get_or_create(
|
||||||
|
_amiibo=amiibo, user=user)
|
||||||
|
relation.trade = False
|
||||||
|
relation.save()
|
||||||
|
|
||||||
|
def user_toggle_trade(user, amiibo):
|
||||||
|
relation, created = models.UserAmiibo.objects.get_or_create(
|
||||||
|
_amiibo=amiibo, user=user)
|
||||||
|
relation.trade = not relation.trade
|
||||||
|
relation.save()
|
|
@ -7,7 +7,8 @@ from django.utils.translation import ugettext_lazy as _
|
||||||
# home
|
# home
|
||||||
from .views import (
|
from .views import (
|
||||||
AmiiboView, AmiiboCardView, AmiiboFigureView,
|
AmiiboView, AmiiboCardView, AmiiboFigureView,
|
||||||
CollectionView, CollectionCardView, CollectionFigureView
|
CollectionView, CollectionCardView, CollectionFigureView,
|
||||||
|
UserAmiiboView
|
||||||
)
|
)
|
||||||
|
|
||||||
urlpatterns = patterns(
|
urlpatterns = patterns(
|
||||||
|
@ -31,4 +32,8 @@ urlpatterns = patterns(
|
||||||
url(_(r'^figures/(?P<collection>[\w\d\-]+)/(?P<amiibo>[\w\d\-]+)$'),
|
url(_(r'^figures/(?P<collection>[\w\d\-]+)/(?P<amiibo>[\w\d\-]+)$'),
|
||||||
AmiiboFigureView.as_view(),
|
AmiiboFigureView.as_view(),
|
||||||
name='figure-detail'),
|
name='figure-detail'),
|
||||||
|
|
||||||
|
url(_(r'^amiibo/(?P<amiibo>\d+)/(?P<action>[\w\+\-\=]+)$'),
|
||||||
|
UserAmiiboView.as_view(),
|
||||||
|
name='user-action'),
|
||||||
)
|
)
|
||||||
|
|
|
@ -2,16 +2,17 @@
|
||||||
|
|
||||||
# django
|
# django
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
|
from django.http import HttpResponseRedirect
|
||||||
from django.shortcuts import render, get_object_or_404
|
from django.shortcuts import render, get_object_or_404
|
||||||
from django.views.generic.base import View
|
from django.views.generic.base import View
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
# amiibo
|
# amiibo
|
||||||
from amiibofindr.apps.amiibo.models import (
|
from .models import (
|
||||||
Collection, Amiibo,
|
Collection, Amiibo,
|
||||||
AmiiboFigure, AmiiboCard
|
AmiiboFigure, AmiiboCard
|
||||||
)
|
)
|
||||||
|
from . import services
|
||||||
|
|
||||||
class HomeModel:
|
class HomeModel:
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
|
@ -76,3 +77,55 @@ class AmiiboCardView(AmiiboView):
|
||||||
template = 'amiibo/amiibo-card.html'
|
template = 'amiibo/amiibo-card.html'
|
||||||
type = Amiibo.CARD
|
type = Amiibo.CARD
|
||||||
model = AmiiboCard
|
model = AmiiboCard
|
||||||
|
|
||||||
|
|
||||||
|
class UserAmiiboView(View):
|
||||||
|
actions = {
|
||||||
|
'+owned': 'add_owned',
|
||||||
|
'-owned': 'remove_owned',
|
||||||
|
'+wishlist': 'add_wishlist',
|
||||||
|
'-wishlist': 'remove_wishlist',
|
||||||
|
'+trade': 'add_trade',
|
||||||
|
'-trade': 'remove_trade',
|
||||||
|
'=trade': 'toggle_trade',
|
||||||
|
}
|
||||||
|
|
||||||
|
def get(self, request, amiibo, action):
|
||||||
|
obj = get_object_or_404(Amiibo, pk=amiibo)
|
||||||
|
amiibo = obj.as_type()
|
||||||
|
if action in self.actions:
|
||||||
|
method = getattr(self, self.actions[action], None)
|
||||||
|
if method:
|
||||||
|
result = method(request, amiibo)
|
||||||
|
if result:
|
||||||
|
return result
|
||||||
|
|
||||||
|
return HttpResponseRedirect(amiibo.get_absolute_url())
|
||||||
|
|
||||||
|
def add_wishlist(self, request, amiibo):
|
||||||
|
services.user_add_wishlist(request.user, amiibo)
|
||||||
|
# TODO: Add message
|
||||||
|
|
||||||
|
def remove_wishlist(self, request, amiibo):
|
||||||
|
services.user_remove_wishlist(request.user, amiibo)
|
||||||
|
# TODO: Add message
|
||||||
|
|
||||||
|
def add_trade(self, request, amiibo):
|
||||||
|
services.user_add_trade(request.user, amiibo)
|
||||||
|
# TODO: Add message
|
||||||
|
|
||||||
|
def remove_trade(self, request, amiibo):
|
||||||
|
services.user_remove_trade(request.user, amiibo)
|
||||||
|
# TODO: Add message
|
||||||
|
|
||||||
|
def toggle_trade(self, request, amiibo):
|
||||||
|
services.user_toggle_trade(request.user, amiibo)
|
||||||
|
# TODO: Add message
|
||||||
|
|
||||||
|
def add_owned(self, request, amiibo):
|
||||||
|
services.user_add_owned(request.user, amiibo)
|
||||||
|
# TODO: Add message
|
||||||
|
|
||||||
|
def remove_owned(self, request, amiibo):
|
||||||
|
services.user_remove_owned(request.user, amiibo)
|
||||||
|
# TODO: Add message
|
||||||
|
|
|
@ -39,19 +39,19 @@ AMIIBO FIGURE
|
||||||
</div>
|
</div>
|
||||||
<div class="eight wide column right aligned">
|
<div class="eight wide column right aligned">
|
||||||
{% if amiibo.pk in USER_AMIIBO_OWNED %}
|
{% if amiibo.pk in USER_AMIIBO_OWNED %}
|
||||||
<a href="#" class="ui button {% if amiibo.pk in USER_AMIIBO_TRADE %}teal{% endif %}">
|
<a href="{% url 'amiibo:user-action' amiibo=amiibo.pk action='=trade' %}" class="ui button {% if amiibo.pk in USER_AMIIBO_TRADE %}teal{% endif %}">
|
||||||
<i class="{% if amiibo.pk in USER_AMIIBO_TRADE %}check{% else %}cancel{% endif %} icon"></i> Available for trade
|
<i class="{% if amiibo.pk in USER_AMIIBO_TRADE %}check{% else %}cancel{% endif %} icon"></i> Available for trade
|
||||||
</a>
|
</a>
|
||||||
<a href="#" class="ui button red">I do not have it</a>
|
<a href="{% url 'amiibo:user-action' amiibo=amiibo.pk action='-owned' %}" class="ui button red">I do not have it</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="ui buttons">
|
<div class="ui buttons">
|
||||||
{% if amiibo.pk in USER_AMIIBO_WISHLIST %}
|
{% if amiibo.pk in USER_AMIIBO_WISHLIST %}
|
||||||
<a class="ui button yellow">I do not want this</a>
|
<a href="{% url 'amiibo:user-action' amiibo=amiibo.pk action='-wishlist' %}" class="ui button yellow">I do not want this</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="ui button">I want this</a>
|
<a href="{% url 'amiibo:user-action' amiibo=amiibo.pk action='+wishlist' %}" class="ui button">I want this</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="or" data-text="{% trans 'or' %}"></div>
|
<div class="or" data-text="{% trans 'or' %}"></div>
|
||||||
<a class="ui positive button">I have this</a>
|
<a href="{% url 'amiibo:user-action' amiibo=amiibo.pk action='+owned' %}" class="ui positive button">I have this</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue