def test_07_get_words(self):
     self.assertEqual(
         get_words(
             u" Saint-Saëns: 'Hommage' à Martinů's dad SS34 "),
         [u'saint',
          u'saens',
          u'hommage',
          u'a',
          u"martinu's",
          u'dad',
          u'ss',
          u'34'])
Пример #2
0
def edit_vocabulary(request, app_name=None, model_name=None, instance_pk=None):
    template_name = 'babelsearch/edit-vocabulary.html'

    meanings_data = None
    text = None

    if request.method == 'POST':
        words_form = WordsForm(request.POST, prefix='words')
        meanings_formset = MeaningsFormset(request.POST, prefix='meanings')
        if meanings_formset.is_valid():
            meanings_formset.save()
            meanings_data = [d for d in meanings_formset.cleaned_data if d]
            old_meaning_pks = [meaning['meaning'] for meaning in meanings_data
                               if meaning]

            if words_form.is_valid():
                words = words_form.cleaned_data['words'].split()
                new_meanings = Meaning.objects.filter(
                    words__normalized_spelling__in=words).distinct()
                for meaning in new_meanings:
                    if meaning.pk not in old_meaning_pks:
                        meanings_data.append(_make_meaning_data(meaning))
                meanings_formset = MeaningsFormset(initial=meanings_data,
                                                   prefix='meanings')
    else:
        if app_name and model_name and instance_pk:
            # pre-populate formset with meanings of the given indexed
            # model instance
            model = get_model(app_name, model_name)
            instance = model._default_manager.get(pk=instance_pk)
            text = get_instance_text(instance)
            words = get_words(text)
            ordered_meanings, found_words = Meaning.objects.lookup_ordered(
                words, create_missing=False)
            meanings_data = []
            for word in ordered_meanings:
                for meaning in word:
                    meanings_data.append(_make_meaning_data(meaning))
        words_form = WordsForm(prefix='words')
        meanings_formset = MeaningsFormset(initial=meanings_data,
                                           prefix='meanings')

    return render_to_response(template_name,
                              {'words_form': words_form,
                               'meanings_formset': meanings_formset,
                               'analyzed_text': text},
                              RequestContext(request));
Пример #3
0
 def lookup_sentence(self, sentence):
     return self.lookup_ordered(get_words(sentence))