def post(self, request, *args, **kwargs):
        try:
            rs = ReadingSystem.objects.get(id=kwargs['pk'])
        except ReadingSystem.DoesNotExist:
            return render(request, "404.html", {})

        try:
            rset = ResultSet.objects.get(id=kwargs['rset'])
        except ResultSet.DoesNotExist:
            return render(request, "404.html", {})

        can_edit = permissions.user_can_edit_accessibility_result_set(request.user, rset)
        if can_edit == False:
            messages.add_message(request, messages.INFO, 'You do not have permission to edit that evaluation.')
            return redirect("/manage/")
        result_set = rset 
        formset = ResultFormSet(request.POST, instance=result_set)

        metadata = result_set.get_metadata()
        print metadata
        result_set_meta_form = ResultSetMetadataForm(request.POST, instance = result_set.get_metadata())
        
        formset.save()
        result_set.save()
        result_set_meta_form.save()

        return redirect("/rs/{0}/eval/accessibility/".format(rs.id))
    def get(self, request, *args, **kwargs):
        try:
            rs = ReadingSystem.objects.get(id=kwargs['pk'])
        except ReadingSystem.DoesNotExist:
            return render(request, "404.html", {})

        testsuite = TestSuite.objects.get_most_recent_testsuite_of_type(common.TESTSUITE_TYPE_ACCESSIBILITY)
        create_flag = False
        if kwargs.has_key('rset'):
            try:
                rset = ResultSet.objects.get(id=kwargs['rset'])
            except ResultSet.DoesNotExist:
                return render(request, "404.html", {})
        else:
            if permissions.user_can_create_accessibility_result_set(request.user, rs):
                create_flag = True
                rset = ResultSet.objects.create_result_set(rs, testsuite, request.user)
                # add dummy metadata
                rset.add_metadata("", common.INPUT_TYPE_KEYBOARD, False, False)
                m = rset.get_metadata()
                print "meta {0}".format(m)
            else:
                messages.add_message(request, messages.INFO, 'You do not have permission to create an accessibility evaluation.')
                return redirect("/manage/")

        action_url = "/rs/{0}/eval/accessibility/{1}".format(rs.id, rset.id)
        category_pages = []
        top_level_categories = testsuite.get_top_level_categories()
        
        # default to the first category
        cat = top_level_categories[0]

        cat_option = '-1'
        if kwargs.has_key('cat'):
            cat_option = kwargs['cat']

        for c in top_level_categories:
            # check if we are starting at a different category
            if c.id == int(cat_option):
                cat = c
            # collect category list data for other categories
            category_pages.append({"link": "{0}{1}".format(action_url, c.id), "name": c.name, "id": c.id})

        idx = 0
        next = "/rs/{0}/eval/accessibility/".format(rs.id)

        data = helper_functions.category_to_dict(cat)
        result_set = rs.get_result_set_by_id(rset.id)
        results_form = ResultFormSet(instance = result_set, queryset=result_set.get_results_for_category(cat))
        at_type_form = ResultSetMetadataForm(instance = result_set.get_metadata())

        if create_flag == False:
            can_edit = permissions.user_can_edit_accessibility_result_set(request.user, result_set)
            if can_edit == False:
                messages.add_message(request, messages.INFO, 'You do not have permission to edit that evaluation.')
                return redirect("/manage/")

        return render(request, self.template_name,
            {'results_form': results_form, 'data': data,
            'rs': rs, "action_url": action_url, "category_pages": category_pages, 'next': next, 'result_set': result_set,
            'result_set_metadata_form': at_type_form.as_ul()})