def ok_verse_cb(self, *a): all_verse = self.verse_all_bfr.get_text( self.verse_all_bfr.get_start_iter(), self.verse_all_bfr.get_end_iter(), False ).decode("utf8") verse0 = self.verse_prog_bfr.get_text( self.verse_prog_bfr.get_start_iter(), self.verse_prog_bfr.get_end_iter(), False ).decode("utf8") rawi0 = daw_araby.NAMES[daw_tools.rawi_poem(verse0.strip())] verse1 = self.verse_usr_bfr.get_text( self.verse_usr_bfr.get_start_iter(), self.verse_usr_bfr.get_end_iter(), False ).decode("utf8") if verse1 == u"": return rawi1 = daw_araby.NAMES[daw_tools.rawi_poem(verse1.strip())] first1 = daw_araby.NAMES[verse1.strip()[0]] if first1 != rawi0: daw_customs.erro(self.parent, "البيت يبدأ بحرف غير الذي انتهى به الأول\nحاول مجددا .") return if self.db.is_verse(verse1): if daw_araby.fuzzy_plus(verse1) in daw_araby.fuzzy_plus(all_verse): daw_customs.erro(self.parent, "البيت مستخدم مسبقا\nحاول مجددا .") return else: daw_customs.info(self.parent, "أحسنت") self.verse_all_bfr.insert(self.verse_all_bfr.get_end_iter(), u"\nالمستخدم : " + verse1.strip()) d = int(self.lab_answer_user.get_label()) + 1 self.lab_answer_user.set_label(str(d)) self.next_verse(rawi1) else: daw_customs.erro(self.parent, "البيت غير موجود في قاعدة بيانات البرنامج\nحاول مجددا .") return daw_customs.with_tag(self.verse_all_bfr, self.verse_all_tag, ["البرنامج : "]) self.verse_all.scroll_to_iter(self.verse_all_bfr.get_end_iter(), 0, 1, 1, 1)
def next_verse(self, rawi): all_verse = self.verse_all_bfr.get_text( self.verse_all_bfr.get_start_iter(), self.verse_all_bfr.get_end_iter(), False ).decode("utf8") if rawi == u"همزة": r = u"أ" elif rawi == u"ألف": r = u"ا" else: r = rawi[0] verses = self.db.first_in_verse(r) random.shuffle(verses) if len(verses) == 0: daw_customs.erro(self.parent, "لا يوجد بيت جديد يبدأ بحرف {}".format(rawi)) return else: for a in verses: if daw_araby.fuzzy_plus(a[0]) not in daw_araby.fuzzy_plus(all_verse): self.verse_prog_bfr.set_text(a[0].strip()) self.verse_all_bfr.insert(self.verse_all_bfr.get_end_iter(), u"\nالبرنامج : " + a[0].strip()) d = int(self.lab_answer_prog.get_label()) + 1 self.lab_answer_prog.set_label(str(d)) self.verse_usr_bfr.set_text("") i = self.db.id_poet(a[1]) self.lab_speaker0.set_label(self.db.name_poet(i)[1]) if a[0] == None: return r = self.db.rawi_poem(a[1]) rawi = daw_araby.NAMES[daw_tools.rawi_poem(a[0].strip())] self.lab_rawi.set_label(rawi) return daw_customs.erro(self.parent, "لا يوجد بيت جديد يبدأ بحرف {}".format(rawi))
def search(self, text, dict_perf, selected_list): self.text = text self.cursive = dict_perf['cursive'] text = text.replace('"','') text = text.replace("'","") ls_term = [] if dict_perf['with_tachkil'] == True: cond = 'nasse LIKE ?' else: cond = 'fuzzy(nasse) LIKE ?' text = daw_araby.fuzzy_plus(text) if dict_perf['identical'] == True: pfx, sfx = '% ', ' %' else: pfx, sfx = '%', '%' if dict_perf['cursive'] == True: self.condition = 'fuzzy(nasse) LIKE ?' ls_term.append(pfx+text+sfx) else: for a in text.split(u' '): ls_term.append(pfx+a+sfx) #if dict_perf['one_verse'] == True: # self.condition = u'fuzzy(nasse) LIKE ?' # ls_term = ['%'+u'%[.+]%'.join(text.split(u' '))+u'%',] #else: if dict_perf['one_term'] == True: self.condition = ' OR '.join([cond]*len(ls_term)) else : self.condition = ' AND '.join([cond]*len(ls_term)) n = 0 for a in selected_list: ls = self.parent.db.poems_id(a) for b in ls: check = self.parent.db.search(b, self.condition, ls_term) if check == True: n += 1 self.results_store.append([b, n, self.parent.db.name_poem(b), self.parent.db.name_poet(self.parent.db.id_poet(b))[1], daw_tools.get_name(daw_tools.elbehor, self.parent.db.get_id_baher(b)), daw_tools.get_name(daw_tools.elgharadh, self.parent.db.gharadh_poem(b)), daw_tools.get_name(daw_tools.elrawi, self.parent.db.rawi_poem(b)),]) self.results_list.append([b, n, self.parent.db.name_poem(b), self.parent.db.name_poet(self.parent.db.id_poet(b))[1], daw_tools.get_name(daw_tools.elbehor, self.parent.db.get_id_baher(b)), daw_tools.get_name(daw_tools.elgharadh, self.parent.db.gharadh_poem(b)), daw_tools.get_name(daw_tools.elrawi, self.parent.db.rawi_poem(b)),]) else: pass if len(self.results_list)>0: output = open(join(daw_customs.HOME_DIR,'آخر بحث.pkl'), 'wb') cPickle.dump(self.results_list, output) output.close()
def is_verse(self, verse): self.cur.execute('SELECT id_poem FROM kassaid WHERE fuzzy(nasse) LIKE ? OR fuzzy(nasse) LIKE ? LIMIT 1', (daw_araby.fuzzy_plus('%\n'+verse+'\n%'), daw_araby.fuzzy_plus(verse+'\n%'))) verses = self.cur.fetchall() if len(verses) > 0: return True else: return False