Example #1
0
    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]
Example #2
0
 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
Example #3
0
    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." )
Example #4
0
    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)] 
Example #5
0
 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
Example #6
0
 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"
Example #7
0
 def recompute_top_choices(self):
     rec = dbRecomender()
     rec.recompute_top_choices()
     return "Successfully recomputed top choices"