Files
procat2/catalogedit/views.py
2019-05-03 17:32:29 -07:00

69 lines
2.0 KiB
Python

from django.contrib import messages
from django.http import HttpResponseRedirect, HttpResponse, JsonResponse
from django.shortcuts import render, get_object_or_404
from django.urls import reverse
from django.utils.translation import gettext as _
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_http_methods
import json
import logging
from lazysignup.decorators import allow_lazy_user
from account.decorators import login_required
from procat2.models import Catalog, Season, Region
log = logging.getLogger(__name__)
@login_required
def catalogedit(request, id=0):
regions = Region.objects.order_by('ordering')
seasons = Season.objects.order_by('ordering')
context = {
'catalogID': id,
'regions': [r.serialize() for r in regions],
'seasons': [s.serialize() for s in seasons],
}
return render(request, 'catalogedit/catalogedit.html', context)
@login_required
def get_catalog(request, id):
cat = get_object_or_404(Catalog, id=id)
return JsonResponse(cat.data, safe=False)
@csrf_exempt
@login_required
@require_http_methods(["POST"])
def save_catalog(request):
body = request.body
if not body or len(body) < 1:
return HttpResponse('Bad request: no data', status=400)
data = json.loads(body.decode('utf-8'))
id = data.get('id')
if id:
log.debug('saving existing catalog, id {}'.format(id))
cat = get_object_or_404(Catalog, id=id, owner=request.user)
else:
season = Season.objects.get(id=data.get('season'))
region = Region.objects.get(id=data.get('region'))
cat = Catalog(owner=request.user, season=season, region=region)
log.debug('saving new catalog, season {}, region {}'.format(season, region))
cat.data = data
cat.update_metadata()
cat.save()
if not id:
# new catalog: update id in json and resave
cat.data['id'] = cat.id
cat.save()
return JsonResponse(cat.data, safe=False)