Example #1
0
File: views.py Project: XI-lab/axel
 def get_form(self, form_class):
     """
     Returns an instance of the form to be used in this view.
     """
     self.model_name = self.kwargs["model_name"]
     model = _get_model_from_string(self.model_name)
     return form_class(model, **self.get_form_kwargs())
Example #2
0
File: views.py Project: XI-lab/axel
    def get_context_data(self, **kwargs):
        """Add nodes and links to the context"""
        context = super(NgramPOSView, self).get_context_data(**kwargs)
        model = _get_model_from_string(self.kwargs["model_name"])
        ct = ContentType.objects.get_for_model(model, for_concrete_model=False)

        rules_dict = self._parse_rules()

        relevant_ids = set(
            TaggedCollection.objects.filter(content_type=ct, is_relevant=True).values_list("object_id", flat=True)
        )
        irrelevant_ids = set(
            TaggedCollection.objects.filter(content_type=ct, is_relevant=False).values_list("object_id", flat=True)
        )

        all_tags = set()

        correct_data = defaultdict(lambda: 0)
        incorrect_data = defaultdict(lambda: 0)
        unjudged_data = defaultdict(lambda: 0)
        for obj in model.objects.all():
            max_pos_tag = " ".join(max(obj.pos_tag, key=lambda x: x[1])[0])
            tag = str(scores.compress_pos_tag(max_pos_tag, rules_dict))
            all_tags.add(tag)
            if obj.id in relevant_ids:
                correct_data[tag] += 1
            elif obj.id in irrelevant_ids:
                incorrect_data[tag] += 1
            else:
                unjudged_data[tag] += 1

        all_tags = sorted(all_tags)
        context["categories"] = all_tags
        context["top_relevant_data"] = [
            (tag, correct_data[tag], incorrect_data[tag], unjudged_data[tag])
            for tag in all_tags
            if int(correct_data[tag] / (incorrect_data[tag] + 0.1)) > 10
        ]

        context["top_irrelevant_data"] = [
            (tag, correct_data[tag], incorrect_data[tag], unjudged_data[tag])
            for tag in all_tags
            if int(incorrect_data[tag] / (correct_data[tag] + 0.1)) > 10
        ]

        context["correct_data"] = [correct_data[tag] for tag in all_tags]
        context["incorrect_data"] = [incorrect_data[tag] for tag in all_tags]
        context["unjudged_data"] = [unjudged_data[tag] for tag in all_tags]

        # Add regex groups to populate forms
        context["regex_groups"] = self.regex_groups

        return context
Example #3
0
File: views.py Project: XI-lab/axel
    def form_valid(self, form):
        """
        clear cache
        """
        attribute = form.cleaned_data["attr"]
        model = _get_model_from_string(self.model_name)
        for obj in model.objects.all():
            fields = obj.extra_fields
            if attribute in fields:
                del fields[attribute]
                obj.extra_fields = fields
                obj.save()

        next_url = self.request.GET.get("next", reverse("testcollection_model", args=[self.model_name]))
        return HttpResponseRedirect(next_url)
Example #4
0
 def get_context_data(self, **kwargs):
     context = super(AttributeFilterView, self).get_context_data(**kwargs)
     if not self.queryset:
         try:
             model = _get_model_from_string(self.kwargs[self.model_name])
             self.queryset = model.objects.all()
         except:
             raise ImproperlyConfigured(
                 "AttributeFilterView requires either a definition of "
                 "'queryset' or a 'model_name' kwarg attribute")
     fields = getattr(self.queryset.model, self.model_fields_attr)
     form = self._FilterForm(fields)(self.request.POST or None)
     if form.is_valid():
         filter_values = dict([(field, value) for field, value in form.cleaned_data.iteritems()])
         self.queryset = self.queryset.filter(**filter_values)
     context[self.context_form_name] = form
     return context
Example #5
0
File: views.py Project: XI-lab/axel
    def get_context_data(self, **kwargs):
        """Add data to context"""
        context = super(ConceptIndexStats, self).get_context_data(**kwargs)

        model = _get_model_from_string(self.kwargs["model_name"])
        global_word_set = cache.get(WORDS_SET)
        counts = defaultdict(lambda: 0)
        for word in global_word_set:
            counts[len(cache.get(CONCEPT_PREFIX + word))] += 1

        context["histogram_data"] = str(counts.items()).replace("(", "[").replace(")", "]")
        context["word_count"] = len(global_word_set)
        context["concept_count"] = model.objects.count()

        word_counts = defaultdict(lambda: 0)
        for collocation in model.objects.values_list("ngram", flat=True):
            word_counts[len(collocation.split())] += 1
        context["col_word_len_hist"] = str(word_counts.items()).replace("(", "[").replace(")", "]")
        return context