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')
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_)
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")
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)
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()
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()
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)
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)
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")
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()
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)
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
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)
def get_context(request): word_obj = Word() words = word_obj.get_all() context = {'words': words, 'csrftoken': get_csrf_token(request)} return context
def __yield_words(self, dictionary): for key in dictionary.keys(): yield Word(lemma=key, description=dictionary[key])
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'
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表")
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
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()