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())
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
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)
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
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