Changeset 2379


Ignore:
Timestamp:
05/12/08 19:32:50 (12 years ago)
Author:
jukka
Message:

Fixed #1514, for some reason catalog searches using queryCatalog gave zero results when call came from different folder and so people got smaller scores than they should.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LargeSectionFolder.py

    r2378 r2379  
    5656    top3_categories={'top3_tags':'getTags', 'top3_languages':'Language'} 
    5757 
     58 
     59    ######### HOSTING SCRIPTS ################ 
    5860 
    5961 
     
    9698        return '\n'.join(response)   
    9799 
    98  
    99  
    100100    security.declareProtected(MANAGE_PORTAL, 'update_all_schemas') 
    101101    def update_all_schemas(self, start=0, end=0): 
     
    130130        return '\n'.join(response)   
    131131 
    132     def CountPieces(self): 
     132    security.declareProtected(MANAGE_PORTAL, 'recalculate_all_scores') 
     133    def recalculate_all_scores(self, REQUEST=None): 
     134        """run private recalc script""" 
     135        for o in self.objectValues(SEARCHABLE_TYPES): 
     136            o.recalculateScore() 
     137            print '%s : %s' % (o.id, o.score) 
     138        if REQUEST: 
     139            return REQUEST.RESPONSE.redirect(self.absolute_url()) 
     140 
     141 
     142    security.declareProtected(MANAGE_PORTAL, 'recalculate_all_authors') 
     143    def recalculate_all_authors(self, REQUEST=None): 
     144        """run private recalc script""" 
     145        for o in  self.objectValues(CONTENT_TYPES): 
     146            o.recalculateAuthors() 
     147        if REQUEST: 
     148            return REQUEST.RESPONSE.redirect(self.absolute_url()) 
     149 
     150 
     151    security.declareProtected(MANAGE_PORTAL, 'countPieces') 
     152    def countPieces(self): 
    133153        """ just do it please """ 
    134154        pc = getToolByName(self, 'portal_catalog') 
     
    151171 
    152172 
     173    security.declareProtected(MANAGE_PORTAL, 'checkPresentations') 
    153174    def CheckPresentations(self): 
    154175        """ just do it please """ 
     
    235256#        print 'type: %s' % type(item) 
    236257 
     258    ############### Misc. useful getters ##################### 
     259 
    237260    def getAllContentTypes(self): 
    238261        """ returns a list of all content types """ 
     
    267290        """ Should be called on resource contexts, so NO """ 
    268291        return False  
     292 
     293 
     294    def prettyMethodNameDictionary(self): 
     295        """ Helper method for finding displayable names for search fields """ 
     296        # better to do this in config.. 
     297        return FIELD_METHODS_DISPLAY_STRINGS                      
     298 
     299 
     300    def getNameOfResourceType(self,restype): 
     301        """Get human-readable name of resource - first try TYPE_NAMES, then TEMPLATES""" 
     302        if restype in TYPE_NAMES.keys(): 
     303            return TYPE_NAMES[restype][0].lower() 
     304        else: 
     305            for t in TEMPLATES.values(): 
     306                if t['meta_type'] == restype: 
     307                    if t['title'].isupper(): 
     308                        return t['title'] 
     309                    else: 
     310                        return t['title'].lower() 
     311        return "" 
     312 
     313    def getSectionFolder(self): 
     314        """ return this """ 
     315        return self 
     316 
     317 
     318    def getMetadataFieldsToShowInEditor(self, object): 
     319        """ gets fields which are shown in metadata edit area """ 
     320        type = object.meta_type 
     321        shownFieldsList = SHOW_METADATA_FIELDS[type] 
     322        shownFields = [] 
     323        fields = object.Schemata()['metadata'].fields() 
     324        # At this point, the method can return a list of all metadata 
     325        if 'all' in shownFieldsList: 
     326            return fields 
     327        else: 
     328            for field in fields: 
     329                if field.getName() in shownFieldsList: 
     330                    shownFields.append(field) 
     331            return shownFields 
     332 
     333    def amIManager(self): 
     334        """Check whether I'm a manager.""" 
     335        return 'Manager' in self.portal_membership.getAuthenticatedMember().getRoles() 
     336 
     337    def canIModerate(self): 
     338        roles = self.portal_membership.getAuthenticatedMember().getRolesInContext(self) 
     339        return 'Manager' in roles or 'Reviewer' in roles 
     340 
     341    def whoami(self): 
     342        return self.portal_membership.getAuthenticatedMember().getId()         
     343 
     344    def getMember(self,uname=None): 
     345        if not uname: 
     346            uname=self.whoami() 
     347        try: 
     348            return self.lemill_usertool.getLeMillMemberFolder(uname) 
     349        except AttributeError: 
     350            return None 
     351 
     352    def url_quote(self,word): 
     353        return urllib.quote(word) 
     354 
     355 
     356    def getDefaultIcon(self, meta_type, obj=None): 
     357        """ general method for getting proper icon for object, used when only catalog-metadata is available """         
     358        address=DEFAULT_ICONS[meta_type] 
     359        if address!='piece': 
     360            return address 
     361        else: 
     362            try: 
     363                # getObject verified 
     364                obj=obj.getObject() 
     365                return obj.getDefaultIcon() 
     366            except (AttributeError, KeyError): 
     367                return DEFAULT_ICONS['Piece'] 
     368 
     369 
     370 
     371    ################# Object creation #################### 
    269372 
    270373    # Override initializeArchetype to turn on syndication by default 
     
    311414 
    312415 
     416    def checkTitle(self, obj=None ,title='', objtype=''): 
     417        """ check if title is not used anywhere in not(deleted, redirector) object, return false if it is """ 
     418        lt=getToolByName(self, 'lemill_tool') 
     419        return lt.checkTitle(self,obj=obj, title=title, objtype=objtype) 
     420 
     421 
     422    ################ Translation creation ############################# 
    313423 
    314424    security.declareProtected(ADD_CONTENT_PERMISSION,'start_translation') 
     
    328438 
    329439 
    330     def prettyMethodNameDictionary(self): 
    331         """ Helper method for finding displayable names for search fields """ 
    332         # better to do this in config.. 
    333         return FIELD_METHODS_DISPLAY_STRINGS                      
    334  
    335  
    336     def getNameOfResourceType(self,restype): 
    337         """Get human-readable name of resource - first try TYPE_NAMES, then TEMPLATES""" 
    338         if restype in TYPE_NAMES.keys(): 
    339             return TYPE_NAMES[restype][0].lower() 
     440 
     441    ##############         Resource conversion      ###################### 
     442 
     443    security.declareProtected(ModerateContent, 'convertResource') 
     444    def convertResource(self, REQUEST): 
     445        """ Copy values of some fields to new object and redirect old references """ 
     446        allowed_types={'LeMillReference':'content','Tool':'tools','Activity':'methods','MultimediaMaterial':'content', 'ExerciseMaterial':'content'} 
     447        plone_utils=getToolByName(self, 'plone_utils') 
     448 
     449        # Check if we have everything we need and raise error if not 
     450        from_obj_id=REQUEST.get('from_obj_id', '') 
     451        to_obj_type=REQUEST.get('to_obj_type', '') 
     452        trial_run=REQUEST.get('trial_run', True) 
     453 
     454        if trial_run: 
     455            if trial_run=='False' or trial_run=='0': 
     456                trial_run=False 
     457 
     458        from_obj=getattr(self, from_obj_id,None) 
     459        if not from_obj: 
     460            raise "base object for resource conversion doesn't exist" 
     461 
     462        from_obj_type=from_obj.portal_type 
     463        if from_obj_type not in allowed_types.keys(): 
     464            raise "cannot convert from type %s" % from_obj_type 
     465        if to_obj_type not in allowed_types.keys(): 
     466            raise "cannot transfer to type %s" % to_obj_type 
     467 
     468        # Create to_obj 
     469        to_folder = getattr(self.aq_parent, allowed_types[to_obj_type]) 
     470        to_obj = self._lemill_invokeFactory(to_folder, to_obj_type, do_create=True) 
     471 
     472        from_schema=from_obj.schema 
     473        to_schema=to_obj.schema 
     474          
     475        import copy 
     476        ignored_fields=['translation', 'translation_of','id','groups'] 
     477 
     478        # trial run, report fields that have content but cannot be converted 
     479        if trial_run: 
     480            problems=False 
     481            for k in from_schema.keys(): 
     482                from_accessor = from_schema[k].getEditAccessor(from_obj) 
     483                if k not in ignored_fields and  k not in to_schema.keys() and from_accessor and from_accessor(): 
     484                    #stupid exceptions 
     485                    if k=='address' and from_accessor()=='http://': 
     486                        continue 
     487                    if k=='address' and 'location' in to_schema.keys(): 
     488                        continue 
     489                    if k=='location' and 'address' in to_schema.keys(): 
     490                        continue 
     491                    if k=='video' and len(from_accessor())<5: 
     492                        continue 
     493                    problems=True 
     494                    plone_utils.addPortalMessage(_(u'Cannot convert %s.' % k)) 
     495            to_folder._delObject(to_obj.id) 
     496            if not problems: 
     497                plone_utils.addPortalMessage(_(u"Checked conversion and it will be fine. Click 'Convert resource' to do the conversion.")) 
     498            if problems: 
     499                plone_utils.addPortalMessage(_(u"Indicated fields have text that cannot be copied to other resource type. Click 'Convert resource' if you want to do the conversion anyway.")) 
     500            return REQUEST.RESPONSE.redirect('%s/manage_convert?trial_run=False&from_obj_id=%s&to_obj_type=%s' % (from_obj.absolute_url(), from_obj.id, to_obj_type)) 
     501 
     502 
     503        # Helper method for copying fields 
     504        def copyvalue(from_accessor, to_mutator, k): 
     505            if not from_accessor: 
     506                return 
     507            val = from_accessor() 
     508            if k=='bodyText': 
     509                if from_obj_type == 'ExerciseMaterial': 
     510                    if to_obj_type == 'MultimediaMaterial': 
     511                        new_val=[] 
     512                        for (chapter, c_type) in val: 
     513                            if c_type in ['multiple_choices','fill_in_the_blanks','open_ended']: 
     514                                new_val.append((chapter, 'text_block')) 
     515                            else: 
     516                                new_val.append((chapter, c_type)) 
     517                        val=new_val 
     518                    else: 
     519                        val=from_obj.getOnlyRawText() 
     520                elif from_obj_type == 'MultimediaMaterial': 
     521                    if to_obj_type == 'ExerciseMaterial': 
     522                        if val[0][0]=='text_block': 
     523                            val[0][0]='guidelines' 
     524                    else: 
     525                        val=from_obj.getOnlyRawText() 
     526            copied_val = None 
     527            try: 
     528                copied_val = copy.copy(val) 
     529            except TypeError: 
     530                copied_val = copy.copy(val.aq_base) 
     531            to_mutator(copied_val) 
     532 
     533        # Copy fields with same name 
     534        for k in from_schema.keys(): 
     535            # list all fields here that shouldn't be copyied to new object 
     536            if k not in to_schema.keys() or k in ignored_fields: 
     537                continue 
     538            from_accessor = from_schema[k].getEditAccessor(from_obj) 
     539            to_mutator = to_schema[k].getMutator(to_obj) 
     540            copyvalue(from_accessor, to_mutator, k) 
     541 
     542        # Check convertable pairs of exceptions: 
     543        for (k,l) in [('address','location')]: 
     544            if k in from_schema.keys() and l in to_schema.keys(): 
     545                from_accessor = from_schema[k].getEditAccessor(from_obj) 
     546                to_mutator = to_schema[l].getMutator(to_obj) 
     547                copyvalue(from_accessor, to_mutator, k) 
     548            elif l in from_schema.keys() and k in to_schema.keys(): 
     549                from_accessor = from_schema[l].getEditAccessor(from_obj) 
     550                to_mutator = to_schema[k].getMutator(to_obj) 
     551                copyvalue(from_accessor, to_mutator, k) 
     552 
     553        # LeMillReferences use descriptions instead of bodytexts while they still have bodytexts: 
     554        if to_obj_type=='LeMillReference': 
     555            k='bodyText' 
     556            from_accessor=from_schema['bodyText'].getEditAccessor(from_obj) 
     557            to_mutator = to_schema['description'].getMutator(to_obj) 
     558            copyvalue(from_accessor, to_mutator, k) 
     559        if from_obj_type=='LeMillReference': 
     560            k='description' 
     561            from_accessor=from_schema['description'].getEditAccessor(from_obj) 
     562            to_mutator = to_schema['bodyText'].getMutator(to_obj) 
     563            copyvalue(from_accessor, to_mutator, k) 
     564 
     565 
     566        # Look for references to this object 
     567        rc=getToolByName(self, 'reference_catalog') 
     568        uc=getToolByName(self, 'uid_catalog') 
     569        results=rc({'targetUID':from_obj.UID()}) 
     570 
     571        # Get object with certain reference and fix it 
     572        for refobj in results: 
     573            res=uc({'UID':refobj.sourceUID}) 
     574            if res: 
     575                # getObject verified 
     576                obj=res[0].getObject() 
     577                if refobj.relationship=='relatesToContent': 
     578                    obj.delContent(from_obj_id) 
     579                elif refobj.relationship=='relatesToMethods': 
     580                    obj.delMethods(from_obj_id) 
     581                elif refobj.relationship=='relatesToTools': 
     582                    obj.delTools(from_obj_id) 
     583                if obj.portal_type=='Collection': 
     584                    obj.addRefsToResources(to_obj.UID()) 
     585 
     586        # Copy references to pieces 
     587        if from_obj_type in ['MultimediaMaterial','ExerciseMaterial'] and to_obj_type in ['MultimediaMaterial','ExerciseMaterial']: 
     588            results=rc({'sourceUID':from_obj.UID()}) 
     589            for refobj in results: 
     590                rc.addReference(to_obj, refobj.targetUID, 'uses')         
     591 
     592        # Copy history 
     593        from_history=from_obj.getHistory() 
     594        to_obj.setHistory(copy.copy(from_history)) 
     595 
     596        # Run post_edits 
     597        to_obj.post_edit_rename() 
     598        to_obj.recalculateAuthors() 
     599        to_obj.recalculateScore() 
     600        to_obj.reindexObject() 
     601 
     602        # Delete old object 
     603        self._delObject(from_obj_id) 
     604 
     605        # Return new object 
     606        plone_utils.addPortalMessage(_(u'Resource converted succesfully.'))         
     607        if to_obj.portal_type in MATERIAL_TYPES: 
     608            return REQUEST.RESPONSE.redirect('%s/view' % to_obj.absolute_url())             
    340609        else: 
    341             for t in TEMPLATES.values(): 
    342                 if t['meta_type'] == restype: 
    343                     if t['title'].isupper(): 
    344                         return t['title'] 
    345                     else: 
    346                         return t['title'].lower() 
    347         return "" 
    348  
    349     def getSectionFolder(self): 
    350         """ return this """ 
    351         return self 
    352  
    353     def checkTitle(self, obj=None ,title='', objtype=''): 
    354         """ check if title is not used anywhere in not(deleted, redirector) object, return false if it is """ 
    355         lt=getToolByName(self, 'lemill_tool') 
    356         return lt.checkTitle(self,obj=obj, title=title, objtype=objtype) 
     610            return REQUEST.RESPONSE.redirect(to_obj.absolute_url())             
     611 
    357612         
    358     def getMetadataFieldsToShowInEditor(self, object): 
    359         """ gets fields which are shown in metadata edit area """ 
    360         type = object.meta_type 
    361         shownFieldsList = SHOW_METADATA_FIELDS[type] 
    362         shownFields = [] 
    363         fields = object.Schemata()['metadata'].fields() 
    364         # At this point, the method can return a list of all metadata 
    365         if 'all' in shownFieldsList: 
    366             return fields 
    367         else: 
    368             for field in fields: 
    369                 if field.getName() in shownFieldsList: 
    370                     shownFields.append(field) 
    371             return shownFields 
    372  
    373     def amIManager(self): 
    374         """Check whether I'm a manager.""" 
    375         return 'Manager' in self.portal_membership.getAuthenticatedMember().getRoles() 
    376  
    377     def canIModerate(self): 
    378         roles = self.portal_membership.getAuthenticatedMember().getRolesInContext(self) 
    379         return 'Manager' in roles or 'Reviewer' in roles 
    380  
    381     def whoami(self): 
    382         return self.portal_membership.getAuthenticatedMember().getId()         
    383  
    384     def getMember(self,uname=None): 
    385         if not uname: 
    386             uname=self.whoami() 
    387         try: 
    388             return self.lemill_usertool.getLeMillMemberFolder(uname) 
    389         except AttributeError: 
    390             return None 
     613 
     614 
     615 
     616 
     617 
     618    ################      Featured items      ########################### 
    391619 
    392620    def getSamples(self, search_results, language_dependant=True): 
     
    622850            return [] 
    623851 
    624     def url_quote(self,word): 
    625         return urllib.quote(word) 
     852 
     853    ##############################      Clouds      ########################   
    626854 
    627855    def getTitleCloud(self, search_results, browse_type): 
     
    7821010 
    7831011 
    784     def getDefaultIcon(self, meta_type, obj=None): 
    785         """ general method for getting proper icon for object, used when only catalog-metadata is available """         
    786         address=DEFAULT_ICONS[meta_type] 
    787         if address!='piece': 
    788             return address 
    789         else: 
    790             try: 
    791                 # getObject verified 
    792                 obj=obj.getObject() 
    793                 return obj.getDefaultIcon() 
    794             except (AttributeError, KeyError): 
    795                 return DEFAULT_ICONS['Piece'] 
    796  
    797     security.declareProtected(MANAGE_PORTAL, 'recalculate_all_scores') 
    798     def recalculate_all_scores(self, REQUEST=None): 
    799         """run private recalc script""" 
    800         for o in self.objectValues(SEARCHABLE_TYPES): 
    801             o.recalculateScore() 
    802             print '%s : %s' % (o.id, o.score) 
    803         if REQUEST: 
    804             return REQUEST.RESPONSE.redirect(self.absolute_url()) 
    805  
    806     ################################# 
    807     ### Resource conversion stuff ### 
    808     ################################# 
    809  
    810     security.declareProtected(ModerateContent, 'convertResource') 
    811     def convertResource(self, REQUEST): 
    812         """ Copy values of some fields to new object and redirect old references """ 
    813         allowed_types={'LeMillReference':'content','Tool':'tools','Activity':'methods','MultimediaMaterial':'content', 'ExerciseMaterial':'content'} 
    814         plone_utils=getToolByName(self, 'plone_utils') 
    815  
    816         # Check if we have everything we need and raise error if not 
    817         from_obj_id=REQUEST.get('from_obj_id', '') 
    818         to_obj_type=REQUEST.get('to_obj_type', '') 
    819         trial_run=REQUEST.get('trial_run', True) 
    820  
    821         if trial_run: 
    822             if trial_run=='False' or trial_run=='0': 
    823                 trial_run=False 
    824  
    825         from_obj=getattr(self, from_obj_id,None) 
    826         if not from_obj: 
    827             raise "base object for resource conversion doesn't exist" 
    828  
    829         from_obj_type=from_obj.portal_type 
    830         if from_obj_type not in allowed_types.keys(): 
    831             raise "cannot convert from type %s" % from_obj_type 
    832         if to_obj_type not in allowed_types.keys(): 
    833             raise "cannot transfer to type %s" % to_obj_type 
    834  
    835         # Create to_obj 
    836         to_folder = getattr(self.aq_parent, allowed_types[to_obj_type]) 
    837         to_obj = self._lemill_invokeFactory(to_folder, to_obj_type, do_create=True) 
    838  
    839         from_schema=from_obj.schema 
    840         to_schema=to_obj.schema 
    841           
    842         import copy 
    843         ignored_fields=['translation', 'translation_of','id','groups'] 
    844  
    845         # trial run, report fields that have content but cannot be converted 
    846         if trial_run: 
    847             problems=False 
    848             for k in from_schema.keys(): 
    849                 from_accessor = from_schema[k].getEditAccessor(from_obj) 
    850                 if k not in ignored_fields and  k not in to_schema.keys() and from_accessor and from_accessor(): 
    851                     #stupid exceptions 
    852                     if k=='address' and from_accessor()=='http://': 
    853                         continue 
    854                     if k=='address' and 'location' in to_schema.keys(): 
    855                         continue 
    856                     if k=='location' and 'address' in to_schema.keys(): 
    857                         continue 
    858                     if k=='video' and len(from_accessor())<5: 
    859                         continue 
    860                     problems=True 
    861                     plone_utils.addPortalMessage(_(u'Cannot convert %s.' % k)) 
    862             to_folder._delObject(to_obj.id) 
    863             if not problems: 
    864                 plone_utils.addPortalMessage(_(u"Checked conversion and it will be fine. Click 'Convert resource' to do the conversion.")) 
    865             if problems: 
    866                 plone_utils.addPortalMessage(_(u"Indicated fields have text that cannot be copied to other resource type. Click 'Convert resource' if you want to do the conversion anyway.")) 
    867             return REQUEST.RESPONSE.redirect('%s/manage_convert?trial_run=False&from_obj_id=%s&to_obj_type=%s' % (from_obj.absolute_url(), from_obj.id, to_obj_type)) 
    868  
    869  
    870         # Helper method for copying fields 
    871         def copyvalue(from_accessor, to_mutator, k): 
    872             if not from_accessor: 
    873                 return 
    874             val = from_accessor() 
    875             if k=='bodyText': 
    876                 if from_obj_type == 'ExerciseMaterial': 
    877                     if to_obj_type == 'MultimediaMaterial': 
    878                         new_val=[] 
    879                         for (chapter, c_type) in val: 
    880                             if c_type in ['multiple_choices','fill_in_the_blanks','open_ended']: 
    881                                 new_val.append((chapter, 'text_block')) 
    882                             else: 
    883                                 new_val.append((chapter, c_type)) 
    884                         val=new_val 
    885                     else: 
    886                         val=from_obj.getOnlyRawText() 
    887                 elif from_obj_type == 'MultimediaMaterial': 
    888                     if to_obj_type == 'ExerciseMaterial': 
    889                         if val[0][0]=='text_block': 
    890                             val[0][0]='guidelines' 
    891                     else: 
    892                         val=from_obj.getOnlyRawText() 
    893             copied_val = None 
    894             try: 
    895                 copied_val = copy.copy(val) 
    896             except TypeError: 
    897                 copied_val = copy.copy(val.aq_base) 
    898             to_mutator(copied_val) 
    899  
    900         # Copy fields with same name 
    901         for k in from_schema.keys(): 
    902             # list all fields here that shouldn't be copyied to new object 
    903             if k not in to_schema.keys() or k in ignored_fields: 
    904                 continue 
    905             from_accessor = from_schema[k].getEditAccessor(from_obj) 
    906             to_mutator = to_schema[k].getMutator(to_obj) 
    907             copyvalue(from_accessor, to_mutator, k) 
    908  
    909         # Check convertable pairs of exceptions: 
    910         for (k,l) in [('address','location')]: 
    911             if k in from_schema.keys() and l in to_schema.keys(): 
    912                 from_accessor = from_schema[k].getEditAccessor(from_obj) 
    913                 to_mutator = to_schema[l].getMutator(to_obj) 
    914                 copyvalue(from_accessor, to_mutator, k) 
    915             elif l in from_schema.keys() and k in to_schema.keys(): 
    916                 from_accessor = from_schema[l].getEditAccessor(from_obj) 
    917                 to_mutator = to_schema[k].getMutator(to_obj) 
    918                 copyvalue(from_accessor, to_mutator, k) 
    919  
    920         # LeMillReferences use descriptions instead of bodytexts while they still have bodytexts: 
    921         if to_obj_type=='LeMillReference': 
    922             k='bodyText' 
    923             from_accessor=from_schema['bodyText'].getEditAccessor(from_obj) 
    924             to_mutator = to_schema['description'].getMutator(to_obj) 
    925             copyvalue(from_accessor, to_mutator, k) 
    926         if from_obj_type=='LeMillReference': 
    927             k='description' 
    928             from_accessor=from_schema['description'].getEditAccessor(from_obj) 
    929             to_mutator = to_schema['bodyText'].getMutator(to_obj) 
    930             copyvalue(from_accessor, to_mutator, k) 
    931  
    932  
    933         # Look for references to this object 
    934         rc=getToolByName(self, 'reference_catalog') 
    935         uc=getToolByName(self, 'uid_catalog') 
    936         results=rc({'targetUID':from_obj.UID()}) 
    937  
    938         # Get object with certain reference and fix it 
    939         for refobj in results: 
    940             res=uc({'UID':refobj.sourceUID}) 
    941             if res: 
    942                 # getObject verified 
    943                 obj=res[0].getObject() 
    944                 if refobj.relationship=='relatesToContent': 
    945                     obj.delContent(from_obj_id) 
    946                 elif refobj.relationship=='relatesToMethods': 
    947                     obj.delMethods(from_obj_id) 
    948                 elif refobj.relationship=='relatesToTools': 
    949                     obj.delTools(from_obj_id) 
    950                 if obj.portal_type=='Collection': 
    951                     obj.addRefsToResources(to_obj.UID()) 
    952  
    953         # Copy references to pieces 
    954         if from_obj_type in ['MultimediaMaterial','ExerciseMaterial'] and to_obj_type in ['MultimediaMaterial','ExerciseMaterial']: 
    955             results=rc({'sourceUID':from_obj.UID()}) 
    956             for refobj in results: 
    957                 rc.addReference(to_obj, refobj.targetUID, 'uses')         
    958  
    959         # Copy history 
    960         from_history=from_obj.getHistory() 
    961         to_obj.setHistory(copy.copy(from_history)) 
    962  
    963         # Run post_edits 
    964         to_obj.post_edit_rename() 
    965         to_obj.recalculateAuthors() 
    966         to_obj.recalculateScore() 
    967         to_obj.reindexObject() 
    968  
    969         # Delete old object 
    970         self._delObject(from_obj_id) 
    971  
    972         # Return new object 
    973         plone_utils.addPortalMessage(_(u'Resource converted succesfully.'))         
    974         if to_obj.portal_type in MATERIAL_TYPES: 
    975             return REQUEST.RESPONSE.redirect('%s/view' % to_obj.absolute_url())             
    976         else: 
    977             return REQUEST.RESPONSE.redirect(to_obj.absolute_url())             
    978  
    979  
     1012 
     1013##################### Subclasses        ################################ 
    9801014 
    9811015 
     
    9921026    featured_types=list(MATERIAL_TYPES)+['LeMillReference'] 
    9931027    top3_categories={'top3languages':'Language', 'top3tags':'getTags', 'top3subject_areas':'getSubject_area', 'top3target_groups':'getTarget_group'} 
    994  
    995  
    996     security.declareProtected(MANAGE_PORTAL, 'recalculate_all_authors') 
    997     def recalculate_all_authors(self, REQUEST=None): 
    998         """run private recalc script""" 
    999         for o in  self.objectValues(CONTENT_TYPES): 
    1000             o.recalculateAuthors() 
    1001         if REQUEST: 
    1002             return REQUEST.RESPONSE.redirect(self.absolute_url()) 
    10031028 
    10041029 
  • trunk/MemberFolder.py

    r2358 r2379  
    487487        """ Get resources from subject of this memberfolder by using general portfolio-topic """ 
    488488        public_results = [] 
     489        pcatalog=getToolByName(self, 'portal_catalog') 
    489490        if filter is None: 
    490             results=self.portfolio.queryCatalog(Creator=creator) 
    491         else: 
    492             results=self.portfolio.queryCatalog(meta_type=filter, Creator=creator) 
     491            results=pcatalog({'Creator':creator}) 
     492        else: 
     493            results=pcatalog({'meta_type':filter, 'Creator':creator}) 
    493494        if as_dict: 
    494495            # Make a dictionary with following keys: 'Content','Activities','Tools','Collections' 
     
    637638        score = 0 
    638639        member = self.getMemberId() 
     640 
    639641        all_resources = self.getResources(member, as_dict=True) 
    640642        # Get pieces and filter out References 
     
    647649        stories = [c for c in collections if c.getGoodStory()] 
    648650        # Get all posts by member 
    649         posts = self.queryCatalog({'review_state':'public', 'meta_type':('BlogPost',), 'Creator':member}) 
     651        pcatalog=getToolByName(self, 'portal_catalog') 
     652        posts = pcatalog({'review_state':'public', 'meta_type':'BlogPost', 'Creator':member}) 
     653 
    650654        # Get people that have this member as contact 
    651655        contacts = self.getRelatedContacts() 
  • trunk/Resources.py

    r2377 r2379  
    202202    security.declarePrivate('post_edit_credit_author') 
    203203    def post_edit_credit_author(self): 
    204         mtool = getToolByName(self, 'portal_membership') 
    205         memberfolder=mtool.getHomeFolder() 
    206         if memberfolder!=None: 
     204        lutool = getToolByName(self, 'lemill_usertool') 
     205        memberfolder=lutool.getLeMillMemberFolder() 
     206        if memberfolder: 
    207207            memberfolder.recalculateScore() 
     208            memberfolder.reindexObject() 
    208209 
    209210    security.declarePrivate('post_edit_rename') 
Note: See TracChangeset for help on using the changeset viewer.