def test_add_several(self): rec = dbRecomender() rec.add_row([4,5,6]) for item in Session.query(model.Suggestable).all(): print "weight: ", item.name, print item.weight assert item.weight == 1 high = [] low = [] for item in Session.query(model.Suggestion).all(): print item print "high: ", item.high_choice_id, print "low: ", item.low_choice_id high.append(item.high_choice) low.append(item.low_choice) assert not item.high_choice.id < item.low_choice.id high = map(lambda x: int(x.id), high) low = map(lambda x: int(x.id), low) high.sort() low.sort() print high print low assert high == [2,3,3] assert low == [1,1,2]
def ajax(self): selected = request.POST.getone("selected").lower() deselected = request.POST.getone("deselected").lower() print "---!!!###!!!---" print selected print deselected sid_hash = request.POST.getone("sid_hash") recomender = dbRecomender() if selected: recomender.add_by_sid(sid_hash, selected) if deselected: print "$$$$$$$$$$$\ndeselecting%s\n$$$$$$$$$$$$$$$" % deselected recomender.remove_by_sid(sid_hash, deselected) recomendations = recomender.recomend_by_sid(sid_hash) c.recs = map(lambda x: x[0], recomendations) c.recs = c.recs[:3] c.avail = [] for selection in Session.query(model.Interaction).filter_by(sid_hash=sid_hash).first().choices: for avail in selection.available_choices: if avail.choice.id not in c.recs: c.avail.append(avail.choice.id) response.content_type = "text/xml" r = render("/xml_recs.mak") print r return r
def parse_choices(self): known_names = {} if 'unknown_aliases' in session: for unknown_alias in session['unknown_aliases']: if unknown_alias in request.POST: if request.POST.getone(unknown_alias) == '': known_names[unknown_alias] = None continue new_alias = model.Alias() new_alias.name = unknown_alias new_alias.refers_to_id = request.POST[unknown_alias] print "uk: %s; id: %s " % (unknown_alias, request.POST[unknown_alias]) meta.Session.add(new_alias) meta.Session.commit() if 'choices' in request.POST: choices_lines = request.POST.getone('choices').replace('\r','') choices_lines = choices_lines.split('\n') elif 'lines_to_parse' in session: choices_lines = session['lines_to_parse'] else: return "Nothing to parse." rec = dbRecomender() known_names = {} c.categories = defaultdict(list) for category in meta.Session.query(model.Category): for item in category.members: known_names[item.name] = item.id c.categories[category].append(item) for item in meta.Session.query(model.Alias): known_names[item.name] = item.refers_to.id c.unknown_aliases = set() unknown_lines = [] for line in choices_lines: line_choices = [] unknown_line_aliases = set() for item in line.split(): if item in known_names: if known_names[item] == None: continue line_choices.append(known_names[item]) else: unknown_line_aliases.add(item) if unknown_line_aliases: c.unknown_aliases = c.unknown_aliases.union( unknown_line_aliases ) unknown_lines.append(line) else: rec.add_row(line_choices) if c.unknown_aliases: session['lines_to_parse'] = unknown_lines session['unknown_aliases'] = c.unknown_aliases session.save() return( render('add_aliases.mak') ) else: return( "Choices Updated." )
def test_recomend(self): rec = dbRecomender() rec.add_row(['z','a','b','c','d']) rec.add_row(['z','a','b','d']) rec.add_row(['z','a']) s = {} for item in Session.query(model.Suggestable).all(): print item s[item.name] = item.id for sug in Session.query(model.Suggestion).all(): print sug recomendations = rec.recomend([s['z'],s['b']]) print recomendations assert recomendations == [(1, 1.0), (5, 1.0), (3, 0.83333333333333326)]
def test_add_one(self): rec = dbRecomender() rec.add(1,[]) one = Session.query(model.Suggestable).filter_by(id=1).first() print one.weight assert one.weight == 1
def doit(self): rec = dbRecomender() for file in glob.glob("./toimport/*.recdat"): rec.load_data(file, g.identifiers, 4) shutil.move(file, "./imported/") return "import successful"
def recompute_top_choices(self): rec = dbRecomender() rec.recompute_top_choices() return "Successfully recomputed top choices"