Show
Ignore:
Timestamp:
08/21/07 19:12:16 (11 months ago)
Author:
Tarek Ziad?? <tarek@…>
Message:

fixes

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • classifier/storage.py

    r159 r162  
    2525lang = Table('classifier_lang', _metadata, 
    2626             Column('iso', String(3), primary_key=True), 
    27              Column('user', String(40))) 
     27             Column('user', String(40), primary_key=True)) 
    2828 
    2929word = Table('classifier_word', _metadata, 
     
    3131            Column('lang_iso', String(3), ForeignKey('classifier_lang.iso')), 
    3232            Column('count', Integer), 
    33             Column('user', String(40)) 
     33            Column('user', String(40), primary_key=True) 
    3434            ) 
    3535 
     
    3737                 Column('name', String(50), primary_key=True), 
    3838                 Column('description', String(300)), 
    39                  Column('user', String(40))) 
     39                 Column('user', String(40), primary_key=True)) 
    4040 
    4141 
    4242word_category = Table('classifier_word_category', _metadata, 
    43                  Column('id', Integer, primary_key=True), 
     43                 #Column('id', Integer, primary_key=True), 
    4444                 Column('word_value', String(200), 
    45                         ForeignKey('classifier_word.value')), 
     45                        ForeignKey('classifier_word.value'), primary_key=True), 
    4646                 Column('count', Integer), 
    4747                 Column('category_name', String(50), 
    48                         ForeignKey('classifier_category.name')), 
    49                  Column('user', String(40))) 
     48                        ForeignKey('classifier_category.name'), primary_key=True), 
     49                 Column('user', String(40), primary_key=True)) 
    5050 
    5151 
     
    151151        sel = word.select(and_(word.c.value==the_word, 
    152152                               word.c.user==self._user)) 
    153         selection = sel.execute().fetchall() 
     153        selection = sel.execute().fetchone() 
    154154        cat_insert = word_category.insert() 
    155155 
    156  
    157         if len(selection) == 0: 
     156        if selection is None: 
    158157            # new word, let's add it 
    159158            res = word.insert().execute(value=the_word, count=1, 
     
    169168            res = word.update(and_(word.c.value==the_word, 
    170169                                   word.c.user==self._user)) 
    171             res.execute(count=selection[0].count+1) 
    172  
    173             sl = and_(word_category.c.word_value==the_word, 
    174                       word_category.c.user==self._user) 
    175             cat = word_category.select(sl) 
    176             cat = cat.execute().fetchall() 
     170            res.execute(count=selection.count+1) 
     171 
     172            #sl = and_(word_category.c.word_value==the_word, 
     173            #         word_category.c.user==self._user) 
     174            #cat = word_category.select(sl) 
     175            #cat = cat.execute().fetchall() 
    177176 
    178177            #for old_cat in cat: 
     
    185184            #        word_category.delete(sl).execute() 
    186185 
     186            existing_cats = self.list_categories() 
    187187            for category in categories: 
    188188                # let's check if the category exists in category 
    189                 if category not in self.list_categories(): 
     189                if category not in existing_cats: 
    190190                    self.add_category(category) 
    191191 
     
    194194                          word_category.c.word_value==the_word) 
    195195                cat = word_category.select(sl) 
    196                 cat = cat.execute().fetchall() 
    197  
    198                 if cat == []: 
     196 
     197                cat = cat.execute().fetchone() 
     198                if cat is None: 
    199199                    cat_insert.execute(word_value=the_word, 
    200200                                       category_name=category, 
     
    202202 
    203203                else: 
    204                     cat_count = cat[0].count 
    205                     id_ = cat[0].id 
    206                     up = word_category.update(word_category.c.id==id_) 
    207                     up.execute(count=cat_count+1) 
     204                    up = word_category.update(and_(word_category.c.user==cat.user, 
     205                                   word_category.c.word_value==cat.word_value, 
     206                                   word_category.c.category_name==cat.category_name)) 
     207                    up.execute(count=cat.count+1) 
    208208 
    209209 
     
    213213        selection = and_(word_category.c.word_value == word_value, 
    214214                         word_category.c.user==self._user) 
    215         catwords = word_category.select(selection).execute().fetchall() 
     215 
     216        catwords = word_category.select(selection).execute() 
     217 
    216218        word_sel =  and_(word.c.value == word_value, 
    217                          word_category.c.user==self._user) 
     219                         word.c.user==self._user) 
     220 
    218221        langs = [the_word.lang_iso for the_word in 
    219                  word.select(word_sel).execute().fetchall()] 
     222                 word.select(word_sel).execute()] 
    220223 
    221224        cats = {} 
     
    240243        """Remove a word""" 
    241244        sl = and_(word.c.value==the_word, word.c.user==self._user) 
    242         results = word.select(sl).execute().fetchall() 
    243  
    244         if len(results) == 0: 
     245        the_word = word.select(sl).execute().fetchone() 
     246 
     247        if the_word is None: 
    245248            return None 
    246  
    247         the_word = results[0] 
    248249 
    249250        # picking up categorized words to work with 
    250251        if categories is None: 
    251252            sl = word_category.c.word_value == the_word.value 
    252             catwords = word_category.select(sl).execute(user=self._user).fetchall() 
     253            catwords = word_category.select(sl).execute(user=self._user) 
    253254        else: 
    254255            categories = _tuplify(categories) 
    255             sl =  word_category.c.word_id == word.id 
     256            sl =  word_category.c.word_value == the_word.value 
    256257            sl2 =  word_category.c.category_name.in_(*categories) 
    257258            sl = and_(sl, sl2) 
    258             catwords = \ 
    259                 word_category.select(sl).execute(user=self._user).fetchall() 
     259            catwords = word_category.select(sl).execute(user=self._user) 
    260260 
    261261        # remove categorized words 
     
    272272                word_category.delete(sl).execute() 
    273273            else: 
    274                 rs = word_category.select(sl).execute().fetchall() 
    275                 if rs != []: 
     274                rs = word_category.select(sl).execute().fetchone() 
     275                rs_count = rs.count 
     276                rs.close() 
     277                if rs is not None: 
    276278                    sl2 = word_category.update(sl) 
    277                     sl2.execute(count=rs.count-1, user=self._user) 
     279                    sl2.execute(count=rs_count-1, user=self._user) 
    278280 
    279281        # remove empty categories 
    280282        for category in categories: 
    281             sl = and_(word_category.c.category_name == category, 
     283            sl = and_(word_category.c.category_name==category, 
    282284                      word_category.c.user==self._user) 
    283285 
    284             current_cat = word_category.select(sl).execute().fetchall() 
    285             if len(current_cat) > 0: 
    286                 current_cat = current_cat[0] 
     286            current_cat = word_category.select(sl).execute().fetchone() 
     287            if current_cat is not None: 
    287288                if current_cat.count == 0: 
    288                      word_category.delete(sl).execute() 
    289         else: 
    290             # remove categories 
    291             sl = and_(word_category.c.word_value==the_word.value, 
    292                       word_category.c.user==self._user) 
    293             word_category.delete(sl).execute() 
     289                    current_cat.close() 
     290                    word_category.delete(sl).execute() 
     291        #else: 
     292        #    # remove categories 
     293        #    sl = and_(word_category.c.word_value==the_word.value, 
     294        #              word_category.c.user==self._user) 
     295        #    word_category.delete(sl).execute() 
    294296 
    295297        # removing word if none use it 
    296298        sl = and_(word.c.value==the_word.value, word.c.user==self._user) 
    297  
    298         #if word.select(sl).execute().fetchall()[0].count == 0: 
    299         word.delete(sl).execute() 
     299        if word.select(sl).execute().fetchone().count == 0: 
     300            word.delete(sl).execute() 
    300301 
    301302    def word_count(self, category=None, language=None): 
    302  
    303303        if category is None: 
    304304            if language is None: 
    305305                sl = word.c.user == self._user 
    306                 return len(word.select(sl).execute().fetchall()) 
     306                #return len(word.select(sl).execute().fetchall()) 
     307                return word.select(sl).count().execute().fetchone()[0] 
    307308            else: 
    308309                sl = and_(word.c.user == self._user, 
    309310                          word.c.lang_iso == language) 
    310                 return len(word.select(sl).execute().fetchall()) 
     311                return word.select(sl).count().execute().fetchone()[0] 
     312                #return len(word.select(sl).execute().fetchall()) 
    311313        else: 
    312314            categories = _tuplify(category) 
    313315            in_ = word_category.c.category_name.in_(*categories) 
    314316            sl = and_(in_, word_category.c.user == self._user) 
    315             res = word_category.select(in_).execute() 
    316             return len(res.fetchall()) 
     317            return word_category.select(sl).count().execute().fetchone()[0] 
     318            #res = word_category.select(sl).execute() 
     319            #return len(res.fetchall()) 
    317320 
    318321