-class UserDataHandler(BaseHandler):
- model = BookUserData
- fields = ('state', 'username', 'premium')
- allowed_methods = ('GET', 'POST')
-
- def read(self, request, slug=None):
- if not request.user.is_authenticated():
- return rc.FORBIDDEN
- if slug is None:
- return {'username': request.user.username, 'premium': user_is_subscribed(request.user)}
- try:
- book = Book.objects.get(slug=slug)
- except Book.DoesNotExist:
- return rc.NOT_FOUND
- try:
- data = BookUserData.objects.get(book=book, user=request.user)
- except BookUserData.DoesNotExist:
- return {'state': 'not_started'}
- return data
-
- def create(self, request, slug, state):
- try:
- book = Book.objects.get(slug=slug)
- except Book.DoesNotExist:
- return rc.NOT_FOUND
- if not request.user.is_authenticated():
- return rc.FORBIDDEN
- if state not in ('reading', 'complete'):
- return rc.NOT_FOUND
- data, created = BookUserData.objects.get_or_create(book=book, user=request.user)
- data.state = state
- data.save()
- return data
-
-