Exemple #1
0
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')
Exemple #2
0
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",
    )
Exemple #3
0
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')
Exemple #4
0
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",
    )