示例#1
0
def index(request):
    if request.user.is_anonymous() or request.method != 'POST':
        return HttpResponseRedirect('/search/?group=words')

    form = WordForm(request.POST)
    if form.is_valid():
        word = Word(
            word=form.cleaned_data['word'],
            creator=request.user
        )
        word.save()
        if request.user.is_words_created_public and request.user.is_profile_public:
            visibility = ActivityVisibilityChoices.PUBLIC
        elif request.user.is_words_created_public and not request.user.is_profile_public:
            visibility = ActivityVisibilityChoices.LIMITED
        else:
            visibility = ActivityVisibilityChoices.PRIVATE

        db.activities.insert({
            'user': {
                'username': request.user.username,
                'id': request.user.id,
                'facebook_id': request.user.facebook_id,
            },
            'type': ActivityTypeChoices.CREATED_WORD,
            'word': word.word,
            'created_at': datetime.utcnow(),
            'visibility': visibility
        })
        return HttpResponseRedirect(reverse('words:word', args=(word.word,)))
    return HttpResponseRedirect('/search/?group=words')
示例#2
0
    def test_saving_and_retrieving_items(self):
        word_ = Word()
        word_.save()
        first_item = Item()
        first_item.text = 'kaizen'
        first_item.word = word_
        first_item.save()

        second_item = Item()
        second_item.text = 'genki'
        second_item.word = word_
        second_item.save()

        saved_words = Word.objects.first()
        self.assertEqual(saved_words, word_)

        saved_items = Item.objects.all()
        self.assertEqual(2, saved_items.count())

        first_saved_item = saved_items[0]
        second_saved_item = saved_items[1]

        self.assertEqual(first_saved_item.text, 'kaizen')
        self.assertEqual(second_saved_item.text, 'genki')
        self.assertEqual(first_saved_item.word, word_)
        self.assertEqual(second_saved_item.word, word_)
示例#3
0
def add(request):
    if request.POST.get('word'):
        word_text = request.POST.get('word')
        if not Word.objects.filter(text = word_text):
            word = Word(text=request.POST.get('word'))
            word.save()
        context = get_context(request)
        return HttpResponse(json.dumps(context))
    else:
        return HttpResponseBadRequest("bad request")
示例#4
0
文件: views.py 项目: corbands/mydict
    def post(self, request, *args, **kwargs):
        username = kwargs.get('username')

        # TODO: вынести обработку в forms.py
        en = request.POST['english']
        ru = request.POST['russian']

        if len(en) != 0 or len(ru) != 0:
            w = Word(english=en, russian=ru, pub_date=timezone.now(), user=request.user)
            w.save()
        return redirect('users:account', username = username)
示例#5
0
    def handle(self, *args, **options):
        Word.objects.all().delete()

        files_list = [
            f for f in listdir(settings.STATIC_AUDIO)
            if isfile(join(settings.STATIC_AUDIO, f))
        ]
        for file_path in files_list:
            new_word = Word(
                word=file_path.split('.')[0],
                transcription='[...]',
                audio_path=os.path.join(settings.STATIC_AUDIO, file_path),
            )
            new_word.save()
示例#6
0
 def loadtext(self, fulltext):
     try:
         print_log('Start load text for file: ' + str(self.id))
         lines = fulltext.splitlines()
         c_lines = 1
         c_words = 1
         c_sentence = 1
         filewords = []
         add_string = ''
         words = Word.objects.all().values_list('value', 'id')
         dwords = dict(list(words))
         for line in lines:
             wordset = line.split()
             add_string += '\n'
             #filewords = []
             for word_value in wordset:
                 new_word = FileWord(file=self)
                 new_word.lineno = c_lines
                 new_word.wordno = c_words
                 new_word.sentenceno = c_sentence
                 new_word.word_original = add_string + word_value.decode(
                     "utf-8")
                 add_string = ''
                 word_fixed = Word.fix_word_str(word_value)
                 # Check the dictionary of words before adding word to DB
                 if dwords.get(word_fixed):
                     #print 'exists - ' + str(word_fixed)
                     word_id = dwords[word_fixed]
                 else:
                     #print 'CREATING - ' + str(word_fixed)
                     word_id = Word.get_word(word_fixed).id
                     dwords[word_fixed] = word_id
                 new_word.word_id = word_id  #Word.get_word(word_fixed)   #Word.get_word(re.sub('[^A-Za-z0-9]+', '', word_value))
                 #new_word.save()
                 filewords.append(new_word)
                 c_words += 1
                 if Word.is_end_of_sentence(word_value): c_sentence += 1
                 if len(filewords) > 998:
                     try:
                         FileWord.objects.bulk_create(filewords)
                     except MySQLdb.Warning, e:
                         print_error(e, level='DEBUG')
                         pass
                     filewords = []
             c_lines += 1
         print_log('End load text for file: ' + str(self.id))
         self.fileloaded = True
         self.save()
示例#7
0
def word_anagrams(request):
    '''
	list all anagrams for given word
	'''
    word = request.GET.get('word')

    matches = Word.get_anagrams(str(word))
    setup = {'matches': matches}
    return Response(setup)
示例#8
0
    def save(self, *args, **kwargs):
        try:
            if not self.pk:
                try:
                    word_value = kwargs.pop('word_value', None)
                    if word_value:
                        #print 'FileWord save - checking word'
                        self.word = Word.get_word(word_value)
                except:
                    pass
        except Exception as e:
            print_error(e)

        super(FileWord, self).save(*args, **kwargs)
示例#9
0
文件: views.py 项目: emef/dictman
def add_word(request):
    try:
        w_obj = json.loads(request.POST['w_obj'])
        # first add word object
        w = Word(spelling = w_obj['spelling'], 
                 level = w_obj['level'])
        w.save()
        #add meaning
        for m in w_obj['meanings']:
            w.meaning_set.create(text = m['text'],
                                 pos = m['pos'],
                                 example = m['example'])
        #add derivatives
        for d in w_obj['derivatives']:
            deriv = w.derivative_set.create(spelling = d['spelling'])
            for m in d['meanings']:
                deriv.meaning_set.create(text = m['text'],
                                         pos = m['pos'],
                                         example = m['example'])

        #now synonyms
        [w.synonym_set.create(text=syn) for syn in w_obj['synonyms']]

        #antonyms
        [w.antonym_set.create(text=syn) for syn in w_obj['antonyms']]
        
        def get_or_default(lst, i, default):
            try:
                return lst[i].text
            except IndexError:
                return default
        
        return HttpResponse(json.dumps({'spelling': w.spelling, 
                                                'meaning': get_or_default(list(w.meaning_set.all()), 0, ''), 
                                                'id': w.id}))
    except json.decoder.JSONDecodeError:
        return HttpResponse("false")
示例#10
0
 def parse(self,links,save=False):
    strwords = []
    for link in links:
       #get html
       with urllib.request.urlopen(link) as url:
          page = url.read()
       #beautiful soup object
       soup = BeautifulSoup(page)
       #extract and combine paragraphs
       paragraphs = soup.find_all('p')
       for x in paragraphs:
          #separate all words (returns list)
          strwords = strwords + x.getText().split()
       
    #test regex
    regex = r'\.$|\W$'
    self.filtered = parse.test_regex(strwords,regex)
    #parse words. 
    #regex: \.$ is periods at the end of string OR \W$ is special chars at end 
    #of string (which also includes special chars alone.
    #still need work on apostrophies, missed spaces after periods and word?word
    #leaves empty strings instead of deleting, I think
    #this should be made into a method.
    strwords[:] = [re.sub(regex,'',x) for x in strwords]
    #returns a dictionary object
    strwords = Counter(strwords)
    for name,count in strwords.items():
       #could also use dict defaultset()
       if name in self.words:
          self.words[name].incr_count(count) 
       else:
          blankword = Word()
          blankword.create(name=name,count=count)
          self.words[name] = blankword
       if save is True:
          self.words[name].save()
示例#11
0
    def handle(self, *args, **options):
        with open(path.join(path.dirname(path.abspath(__file__)), 'lexicon'), 'r') as f:
            contents = f.readlines()[1:]
            contents = map(lambda x: x.split("\t"), contents)
            contents = map(lambda x: x + [''] * (10 - len(x)), contents)

            words = map(lambda x: Word(
                word=x[0],
                prefix=x[1],
                stem=x[2],
                tone=x[3],
                POS=x[4],
                word_class=x[5],
                gloss=x[6],
                no=int(x[7]),
                note=x[8],
                dialect=x[9]
            ), contents)
            Word.objects.bulk_create(words)
示例#12
0
def populate():
    f = open("/home/mrunmayi/wordify-new/wordsadd.txt", "r")
    wrd = True
    str1 = ""
    count = 0
    finalcount = 0
    l1 = []
    for line in f:
        if (line != "\n") and wrd == True:
            word = line.split("\n")[0]
            # print word
            if Word.objects.filter(word=word).exists():
                print word, "aahe"
            else:
                obj = Word(word=word)
                obj.save()
                print word, "add zala"
                count += 1
                finalcount += 1
                l1.append(word)
        if (line == "\n") and wrd == True:
            pkey = 0
            wrd = False
            continue
        if line != "\n" and wrd == False:
            line = line.split("; ")
            str1 = ""
            for i in range(len(line)):
                str1 = str1 + "\n" + str(i + 1) + ")" + str(line[i])

            print pkey, str1

            obj = Word.objects.get(word=l1[pkey])
            obj.mean = str1
            obj.save()
            pkey += 1
        if line == "\n" and wrd == False:
            wrd = True
            count = 0
            l1 = []
            continue
示例#13
0
    words = {}

    for row in reader:
        word = dict(text=row['Word'], language=english, frequency=int(row['Frequency']))
        if word['text'] not in words:
            words[word['text']] = word
        else:
            words[word['text']]['frequency'] += int(word['frequency'])

    words = words.values()
    words = sorted(words, key=lambda w: w['frequency'], reverse=True)
    existing_words_objects = {word.text: word for word in Word.objects.all()}
    existing_words_text = [word.text for word in existing_words_objects.values()]
    for word in words:
        if word['text'] not in existing_words_text:
            word['word'] = Word(text=word['text'])
            word['word'].save()
        else:
            word['word'] = existing_words_objects[word['text']]

    raw_words = [word['word'] for word in words if word['text'] not in existing_words_text]
    for i in range(len(words)):
        words[i]['rank'] = i + 1
    for word in words:
        print(word['rank'], word['text'], word['frequency'])

    word_entries = []

    for word in words:
        word_entry = WordEntry(word=word['word'], language=english, frequency=word['frequency'], rank=word['rank'])
        word_entries.append(word_entry)
示例#14
0
def get_context(request):
    word_obj = Word()
    words = word_obj.get_all()
    context = {'words':  words, 'csrftoken': get_csrf_token(request)}
    return context
示例#15
0
 def __yield_words(self, dictionary):
     for key in dictionary.keys():
         yield Word(lemma=key, description=dictionary[key])
示例#16
0
def test_word_guess_category():
    """
    Should guess and set the word category
    """
    word = Word()
    word.word = 'word'
    word.save()

    assert word.category == 'word'

    word = Word()
    word.word = 'come up with'
    word.save()

    assert word.category == 'phrasal_verb'

    word = Word()
    word.word = 'get over'
    word.save()

    assert word.category == 'phrasal_verb'

    word = Word()
    word.word = 'to put it mildly'
    word.save()

    assert word.category == 'phrase'
示例#17
0
        line = f.readline()  # 每次读取一行
        lst = line.split()  # 切分成列表
        size = len(lst)
        if not line:
            break
        # 至少应含有两项:名称和释义
        # 找到第一个释义项的位置,释义一定含有"."因为要指明词汇类型,如"v."
        k = 0
        for k in range(size):
            if lst[k].find(".") != -1:
                break
        # 从第一个释义项之前的所有项合在一起是name
        name = ""
        for i in range(k):
            if i != 0:
                name += " "
            name += lst[i]
        # 从第一个释义项到结尾合在一起是explian
        explain = ""
        for i in range(k, size):
            if i != k:
                explain += " "
            explain += lst[i]
        # 保存到数据库
        word = Word()
        word.name = name
        word.explain = explain
        word.save()

print("生成完成,见words_word表")
示例#18
0
文件: cmd.py 项目: emef/dictman
def add_word():
    w = Word()
    w.spelling = raw_input('::: word spelling ::: >> ')
    w.level = get_level('::: word level ::: >> ')
    
    #get meanings
    meanings = []
    def meaning_prompt(lst, spelling):
        if len(lst) == 0:
            return 'add a meaning to %s? >> ' % spelling
        else:
            return 'add another meaning to %s? >> ' % spelling
        
    while(get_bool(meaning_prompt(meanings, w.spelling))):
        meanings.append(get_meaning('::: POS ::: >> ', 
                                    '::: meaning ::: >> ', 
                                    '::: example ::: >> '))

    #get derivatives
    derivatives = []
    def derivative_prompt():
        if len(derivatives) == 0:
            return 'add a derivative to %s >> ' % w.spelling
        else:
            return 'add another derivative to %s >> ' % w.spelling

    while(get_bool(derivative_prompt())):
        d = Derivative()
        d.spelling = raw_input('::: derivative spelling ::: >> ')
        
        d_meanings = []
        while(get_bool(meaning_prompt(d_meanings, d.spelling))):
            d_meanings.append(get_meaning('::: POS ::: >> ',
                                          '::: meaning ::: >> ', 
                                          '::: example ::: >> '))

        derivatives.append((d, d_meanings))

    # confirm adding word
    print ''
    print '%s:\nlevel %d\n' % (w.spelling, w.level)
    for m in meanings:
        print_meaning(m.pos, m.text, m.example, '    ')

    for d, ms in derivatives:
        prefix = '    '
        print '%s%s:\n' % (prefix, d.spelling)
        for m in ms:
            print_meaning(m.pos, m.text, m.example, 2*prefix)

    if get_bool('add this word to the database? >> '):
        w.save()
        for m in meanings:
            w.meaning_set.add(m)
        for d, ms in derivatives:
            d.parent = w
            d.save()
            for m in ms:
                d.meaning_set.add(m)
            w.derivative_set.add(d)
        print '%s added to database successfuly\n' % w.spelling
示例#19
0
def _save_data_to_db(word, spelling, raw_json):
    new_word = Word()
    new_word.value = word
    new_word.spelling = spelling
    new_word.raw_od_article = raw_json
    new_word.save()