2016-08-24 19:49:46 +00:00
|
|
|
from django.core.exceptions import PermissionDenied
|
2016-08-19 21:24:23 +00:00
|
|
|
from ajax_select import register, LookupChannel
|
|
|
|
|
|
|
|
from core.views.site import search_user
|
2016-08-20 20:12:46 +00:00
|
|
|
from core.models import User, Group
|
|
|
|
from club.models import Club
|
2016-08-19 21:24:23 +00:00
|
|
|
from counter.models import Product, Counter
|
2016-08-24 17:50:22 +00:00
|
|
|
from accounting.models import ClubAccount, Company
|
2016-08-19 21:24:23 +00:00
|
|
|
|
2016-09-28 08:53:27 +00:00
|
|
|
def check_token(request):
|
2016-09-27 20:57:06 +00:00
|
|
|
return ('counter_token' in request.session.keys() and
|
|
|
|
request.session['counter_token'] and
|
|
|
|
Counter.objects.filter(token=request.session['counter_token']).exists())
|
|
|
|
|
2016-08-24 19:49:46 +00:00
|
|
|
class RightManagedLookupChannel(LookupChannel):
|
|
|
|
def check_auth(self, request):
|
2016-09-28 08:53:27 +00:00
|
|
|
if not request.user.subscribed and not check_token(request):
|
2016-08-24 19:49:46 +00:00
|
|
|
raise PermissionDenied
|
|
|
|
|
2016-08-19 21:24:23 +00:00
|
|
|
@register('users')
|
2016-08-24 19:49:46 +00:00
|
|
|
class UsersLookup(RightManagedLookupChannel):
|
2016-08-19 21:24:23 +00:00
|
|
|
model = User
|
|
|
|
|
|
|
|
def get_query(self, q, request):
|
|
|
|
return search_user(q)
|
|
|
|
|
|
|
|
def format_match(self, obj):
|
|
|
|
return obj.get_mini_item()
|
|
|
|
|
|
|
|
def format_item_display(self, item):
|
|
|
|
return item.get_display_name()
|
|
|
|
|
2016-08-20 20:12:46 +00:00
|
|
|
@register('groups')
|
2016-08-24 19:49:46 +00:00
|
|
|
class GroupsLookup(RightManagedLookupChannel):
|
2016-08-20 20:12:46 +00:00
|
|
|
model = Group
|
|
|
|
|
|
|
|
def get_query(self, q, request):
|
|
|
|
return self.model.objects.filter(name__icontains=q)[:50]
|
|
|
|
|
|
|
|
def format_match(self, obj):
|
|
|
|
return obj.name
|
|
|
|
|
|
|
|
def format_item_display(self, item):
|
|
|
|
return item.name
|
|
|
|
|
|
|
|
@register('clubs')
|
2016-08-24 19:49:46 +00:00
|
|
|
class ClubLookup(RightManagedLookupChannel):
|
2016-08-20 20:12:46 +00:00
|
|
|
model = Club
|
|
|
|
|
|
|
|
def get_query(self, q, request):
|
|
|
|
return self.model.objects.filter(name__icontains=q)[:50]
|
|
|
|
|
|
|
|
def format_match(self, obj):
|
|
|
|
return obj.name
|
|
|
|
|
|
|
|
def format_item_display(self, item):
|
|
|
|
return item.name
|
|
|
|
|
2016-08-19 21:24:23 +00:00
|
|
|
@register('counters')
|
2016-08-24 19:49:46 +00:00
|
|
|
class CountersLookup(RightManagedLookupChannel):
|
2016-08-19 21:24:23 +00:00
|
|
|
model = Counter
|
|
|
|
|
|
|
|
def get_query(self, q, request):
|
|
|
|
return self.model.objects.filter(name__icontains=q)[:50]
|
|
|
|
|
|
|
|
def format_item_display(self, item):
|
|
|
|
return item.name
|
|
|
|
|
|
|
|
@register('products')
|
2016-08-24 19:49:46 +00:00
|
|
|
class ProductsLookup(RightManagedLookupChannel):
|
2016-08-19 21:24:23 +00:00
|
|
|
model = Product
|
|
|
|
|
|
|
|
def get_query(self, q, request):
|
2016-09-04 13:49:25 +00:00
|
|
|
return (self.model.objects.filter(name__icontains=q) |
|
|
|
|
self.model.objects.filter(code__icontains=q)).filter(archived=False)[:50]
|
2016-08-19 21:24:23 +00:00
|
|
|
|
|
|
|
def format_item_display(self, item):
|
2016-10-04 14:40:43 +00:00
|
|
|
return "%s (%s)" % (item.name, item.code)
|
2016-08-24 17:50:22 +00:00
|
|
|
|
|
|
|
@register('club_accounts')
|
2016-08-24 19:49:46 +00:00
|
|
|
class ClubAccountLookup(RightManagedLookupChannel):
|
2016-08-24 17:50:22 +00:00
|
|
|
model = ClubAccount
|
|
|
|
|
|
|
|
def get_query(self, q, request):
|
|
|
|
return self.model.objects.filter(name__icontains=q)[:50]
|
|
|
|
|
|
|
|
def format_item_display(self, item):
|
|
|
|
return item.name
|
|
|
|
|
|
|
|
@register('companies')
|
2016-08-24 19:49:46 +00:00
|
|
|
class CompaniesLookup(RightManagedLookupChannel):
|
2016-08-24 17:50:22 +00:00
|
|
|
model = Company
|
|
|
|
|
|
|
|
def get_query(self, q, request):
|
|
|
|
return self.model.objects.filter(name__icontains=q)[:50]
|
|
|
|
|
|
|
|
def format_item_display(self, item):
|
|
|
|
return item.name
|