def update_known_kanji(request): updates = request.POST.get("updates", False) if updates == None: return HttpResponseBadRequest("Parameter 'updates' not found or invalid") # assuming there's an authenticated user up = request.user.get_profile() kd = KanjiDic() d = simplejson.loads(updates) learned = string.join((k[u"literal"] for k in d if k[u"known"]), u"") unlearned = string.join((k[u"literal"] for k in d if not k[u"known"]), u"") # we put the random symbol 'k' to avoid changes # in the logic when we have no unlearned kanji up.known_kanji = re.sub(u"[k%s]" % unlearned, "", up.known_kanji) + learned up.save() # clear the cache for the learned kanjis sp = FileSentenceProvider() sp.clear_cache() return HttpResponse()
def get_sentences(request): kanji = request.GET.get('kanji', False) if not kanji or len(kanji) != 1 or not Restructurer.is_kanji(kanji): return HttpResponseBadRequest("Paramater 'kanji' is invalid") try: page = int( request.GET.get('page', '') ) if page < 0: raise ValueError except ValueError: return HttpResponseBadRequest("Paramater 'page' is invalid") up = request.user.get_profile() sp = FileSentenceProvider() ss = sp.get_sentences(kanji, 1, page, up.known_kanji) # hardcoding items_per_page to 1 for now if not ss: return HttpResponseBadRequest("No sentences left for kanji '%s' in page %d" % (kanji, page)) sentences = [] for bun in ss: sentences.append( { 'sentence' : bun[0], 'structure' : bun[1], 'translations' : bun[2], 'pronunciations' : get_pronunciations( bun[0] ) } ) return HttpResponse(simplejson.dumps(sentences), mimetype = "application/json")