partition tickets by event
This commit is contained in:
parent
d73bebd5de
commit
41b71bd51a
8 changed files with 85 additions and 20 deletions
|
@ -1,4 +1,4 @@
|
|||
from django.urls import path
|
||||
from django.urls import re_path
|
||||
from django.contrib.auth.decorators import permission_required
|
||||
from rest_framework import routers, viewsets
|
||||
from rest_framework.decorators import api_view, permission_classes
|
||||
|
@ -40,7 +40,9 @@ def search_items(request, event_slug, query):
|
|||
@permission_classes([IsAuthenticated])
|
||||
def item(request, event_slug):
|
||||
try:
|
||||
event = Event.objects.get(slug=event_slug)
|
||||
event = None
|
||||
if event_slug != 'none':
|
||||
event = Event.objects.get(slug=event_slug)
|
||||
if request.method == 'GET':
|
||||
if not request.user.has_event_perm(event, 'view_item'):
|
||||
return Response(status=403)
|
||||
|
@ -99,8 +101,8 @@ router.register(r'boxes', ContainerViewSet, basename='boxes')
|
|||
router.register(r'box', ContainerViewSet, basename='boxes')
|
||||
|
||||
urlpatterns = router.urls + [
|
||||
path('<event_slug>/items/', item),
|
||||
path('<event_slug>/items/<query>/', search_items),
|
||||
path('<event_slug>/item/', item),
|
||||
path('<event_slug>/item/<id>/', item_by_id),
|
||||
re_path(r'^(?P<event_slug>[\w-]+)/items/$', item, name='item'),
|
||||
re_path(r'^(?P<event_slug>[\w-]+)/items/(?P<query>[-A-Za-z0-9+/]*={0,3})/$', search_items, name='search_items'),
|
||||
re_path(r'^(?P<event_slug>[\w-]+)/item/$', item, name='item'),
|
||||
re_path(r'^(?P<event_slug>[\w-]+)/item/(?P<id>\d+)/$', item_by_id, name='item_by_id'),
|
||||
]
|
||||
|
|
|
@ -39,10 +39,12 @@ class ItemSerializer(serializers.ModelSerializer):
|
|||
box = serializers.SerializerMethodField()
|
||||
file = serializers.SerializerMethodField()
|
||||
returned = serializers.SerializerMethodField(required=False)
|
||||
event = serializers.SlugRelatedField(slug_field='slug', queryset=Event.objects.all(),
|
||||
allow_null=True, required=False)
|
||||
|
||||
class Meta:
|
||||
model = Item
|
||||
fields = ['cid', 'box', 'uid', 'description', 'file', 'dataImage', 'returned']
|
||||
fields = ['cid', 'box', 'uid', 'description', 'file', 'dataImage', 'returned', 'event']
|
||||
read_only_fields = ['uid']
|
||||
|
||||
def get_cid(self, instance):
|
||||
|
|
|
@ -30,7 +30,7 @@ class ItemTestCase(TestCase):
|
|||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.json(),
|
||||
[{'uid': 1, 'description': '1', 'box': 'BOX', 'cid': self.box.cid, 'file': None,
|
||||
'returned': False}])
|
||||
'returned': False, 'event': self.event.slug}])
|
||||
|
||||
def test_members_with_file(self):
|
||||
import base64
|
||||
|
@ -40,7 +40,7 @@ class ItemTestCase(TestCase):
|
|||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.json(),
|
||||
[{'uid': 1, 'description': '1', 'box': 'BOX', 'cid': self.box.cid, 'file': file.hash,
|
||||
'returned': False}])
|
||||
'returned': False, 'event': self.event.slug}])
|
||||
|
||||
def test_multi_members(self):
|
||||
Item.objects.create(container=self.box, event=self.event, description='1')
|
||||
|
@ -55,7 +55,7 @@ class ItemTestCase(TestCase):
|
|||
self.assertEqual(response.status_code, 201)
|
||||
self.assertEqual(response.json(),
|
||||
{'uid': 1, 'description': '1', 'box': 'BOX', 'cid': self.box.cid, 'file': None,
|
||||
'returned': False})
|
||||
'returned': False, 'event': self.event.slug})
|
||||
self.assertEqual(len(Item.objects.all()), 1)
|
||||
self.assertEqual(Item.objects.all()[0].uid, 1)
|
||||
self.assertEqual(Item.objects.all()[0].description, '1')
|
||||
|
@ -86,7 +86,7 @@ class ItemTestCase(TestCase):
|
|||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.json(),
|
||||
{'uid': 1, 'description': '2', 'box': 'BOX', 'cid': self.box.cid, 'file': None,
|
||||
'returned': False})
|
||||
'returned': False, 'event': self.event.slug})
|
||||
self.assertEqual(len(Item.objects.all()), 1)
|
||||
self.assertEqual(Item.objects.all()[0].uid, 1)
|
||||
self.assertEqual(Item.objects.all()[0].description, '2')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue