def create(self, request, *args, **kwargs): form = CollectionForm(request.POST) if not form.is_valid(): data = json.dumps({"errors": form.errors}) return HttpResponse(data, content_type="json") clean_form = form.cleaned_data new_collection = Collection(title=clean_form['title'], comment=clean_form['comment'], creator=request.user, created=datetime.datetime.now(pytz.utc), updated=datetime.datetime.now(pytz.utc)) new_collection.save() if clean_form['permission'] == "Public": new_collection.public = True else: new_collection.public = False # If the collection is not empty, populate it from if not clean_form["initialize_empty"]: # Grab the pieces and movements from the cart pieces, movements = self.get_cart_pieces_and_movements(request) # Add the pieces and movements to the collection for piece in pieces: new_collection.pieces.add(piece) for movement in movements: new_collection.movements.add(movement) new_collection.save() return HttpResponseRedirect("/collection/{0}".format(new_collection.id))
def collection_update(request, *args, **kwargs): """ Given a PATCH request, update a collection. :param request: :param args: :param kwargs: :return: """ patch_data = request.data # Extract form data and validate form = CollectionForm(patch_data) if not form.is_valid(): data = json.dumps({"errors": form.errors}) return HttpResponse(content=data, content_type="application/json", status=status.HTTP_400_BAD_REQUEST) # Update the collection collection = Collection.objects.get(id=int(kwargs['pk'])) if "title" in patch_data: collection.title = patch_data["title"] if "permission" in patch_data: collection.public = patch_data["permission"] == "Public" if "comment" in patch_data: collection.comment = patch_data["comment"] collection.save() # Prepare a response data = json.dumps({'success': True, 'id': collection.id, 'url': "/collection/{0}".format(collection.id)}) return HttpResponse(data, content_type="json")