def new_ratingprofile(request): ''' {'title':"thetitle", 'dimensions':[ {'dimension' :"firstdimensiontext", 'is_text': boolean}, {'dimension':"seconddimensiontext", 'is_text': boolean}, ] ...} ''' # Profiles must have titles if 'title' not in request.POST: return HttpResponse("") profile = request.user.businessprofile if request.method != 'POST': return HttpResponseRedirect(reverse("business_manage_employees")) rp = RatingProfile(title=request.POST['title'], business=profile) rp.save() for dim in json.loads(request.POST['dimensions']): dim = RatedDimension(title=dim['dimension'], is_text=dim['is_text'], rating_profile=rp) dim.save() return HttpResponse(json.dumps( {'rating_profiles': _list_rating_profiles(profile.id)}, cls=views.RatingProfileEncoder), mimetype='application/json')
def new_ratingprofile(request): """ {'title':"thetitle", 'dimensions':[ {'dimension' :"firstdimensiontext", 'is_text': boolean}, {'dimension':"seconddimensiontext", 'is_text': boolean}, ] ...} """ # Profiles must have titles if "title" not in request.POST: return HttpResponse("") profile = request.user.businessprofile if request.method != "POST": return HttpResponseRedirect(reverse("business_manage_employees")) rp = RatingProfile(title=request.POST["title"], business=profile) rp.save() for dim in json.loads(request.POST["dimensions"]): dim = RatedDimension(title=dim["dimension"], is_text=dim["is_text"], rating_profile=rp) dim.save() return HttpResponse( json.dumps({"rating_profiles": _list_rating_profiles(profile.id)}, cls=views.RatingProfileEncoder), mimetype="application/json", )
def manage_ratingprofiles(request): ''' {'profile_id':#, 'insert':"asdfasdfasdf", 'remove':--, 'remove_dim':dimid, 'is_text': 'true' | 'false', 'replace_dim':dimid, 'with_dim':"newtext" 'deactivate_dim':dimid, 'activate_dim':dimid ''' if len( set([ 'insert', 'remove', 'replace_dim', 'remove_dim', 'deactivate_dim', 'activate_dim' ]) & set(request.POST.keys())) == 0: return HttpResponse( json.dumps( {'error': "No valid JSON dictionary key sent to this view."})) try: rating_profile = RatingProfile.objects.get( id=int(request.POST['profile_id'])) except RatingProfile.DoesNotExist: return HttpResponse( json.dumps({'error': "Rating profile did not exist."})) # Insert one dimension if 'insert' in request.POST and request.POST['insert']: dim = RatedDimension( title=request.POST['insert'], is_text=True if request.POST['is_text'] == 'true' else False, rating_profile=rating_profile) dim.save() # Delete the rating profile and all associated data. Warn the user # before doing this! if 'remove' in request.POST: alldims = rating_profile.rateddimension_set.all() for dim in alldims: dim.rating_set.all().delete() alldims.delete() rating_profile.delete() # Remove one dimension if 'remove_dim' in request.POST: dim = RatedDimension.objects.get(id=int(request.POST['remove_dim'])) dim.delete() if 'replace_dim' in request.POST and request.POST['with_dim']: # Step 1: Change the title in all the ratings for this dimension dim = RatedDimension.objects.get(id=int(request.POST['replace_dim'])) for rating in dim.rating_set.all(): rating.title = request.POST['with_dim'] # Convert to using rating_text, if there wasn't already something there if request.POST['is_text'] == 'true' and not rating.rating_text: rating.rating_text = str(rating.rating_value) rating.save() # Step 2: Change the ratingprofile itself dim.title = request.POST['with_dim'] dim.is_text = True if request.POST['is_text'] == 'true' else False dim.save() if 'deactivate_dim' in request.POST: dim = RatedDimension.objects.get( id=int(request.POST['deactivate_dim'])) dim.is_active = False dim.save() if 'activate_dim' in request.POST: dim = RatedDimension.objects.get(id=int(request.POST['activate_dim'])) dim.is_active = True dim.save() return HttpResponse(json.dumps( { 'rating_profiles': _list_rating_profiles(request.user.businessprofile.id) }, cls=views.RatingProfileEncoder), mimetype='application/json')
def manage_ratingprofiles(request): """ {'profile_id':#, 'insert':"asdfasdfasdf", 'remove':--, 'remove_dim':dimid, 'is_text': 'true' | 'false', 'replace_dim':dimid, 'with_dim':"newtext" 'deactivate_dim':dimid, 'activate_dim':dimid """ if ( len( set(["insert", "remove", "replace_dim", "remove_dim", "deactivate_dim", "activate_dim"]) & set(request.POST.keys()) ) == 0 ): return HttpResponse(json.dumps({"error": "No valid JSON dictionary key sent to this view."})) try: rating_profile = RatingProfile.objects.get(id=int(request.POST["profile_id"])) except RatingProfile.DoesNotExist: return HttpResponse(json.dumps({"error": "Rating profile did not exist."})) # Insert one dimension if "insert" in request.POST and request.POST["insert"]: dim = RatedDimension( title=request.POST["insert"], is_text=True if request.POST["is_text"] == "true" else False, rating_profile=rating_profile, ) dim.save() # Delete the rating profile and all associated data. Warn the user # before doing this! if "remove" in request.POST: alldims = rating_profile.rateddimension_set.all() for dim in alldims: dim.rating_set.all().delete() alldims.delete() rating_profile.delete() # Remove one dimension if "remove_dim" in request.POST: dim = RatedDimension.objects.get(id=int(request.POST["remove_dim"])) dim.delete() if "replace_dim" in request.POST and request.POST["with_dim"]: # Step 1: Change the title in all the ratings for this dimension dim = RatedDimension.objects.get(id=int(request.POST["replace_dim"])) for rating in dim.rating_set.all(): rating.title = request.POST["with_dim"] # Convert to using rating_text, if there wasn't already something there if request.POST["is_text"] == "true" and not rating.rating_text: rating.rating_text = str(rating.rating_value) rating.save() # Step 2: Change the ratingprofile itself dim.title = request.POST["with_dim"] dim.is_text = True if request.POST["is_text"] == "true" else False dim.save() if "deactivate_dim" in request.POST: dim = RatedDimension.objects.get(id=int(request.POST["deactivate_dim"])) dim.is_active = False dim.save() if "activate_dim" in request.POST: dim = RatedDimension.objects.get(id=int(request.POST["activate_dim"])) dim.is_active = True dim.save() return HttpResponse( json.dumps( {"rating_profiles": _list_rating_profiles(request.user.businessprofile.id)}, cls=views.RatingProfileEncoder ), mimetype="application/json", )