Changeset 29

Show
Ignore:
Timestamp:
06/20/08 13:06:32 (7 months ago)
Author:
betabug
Message:

Cleaned up get_source() method, to handle both text display (in browser)
and proper mimetyped download.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/CodeSharingZ/CodeSharingZ.py

    r28 r29  
    188188 
    189189    security.declareProtected('View','get_source') 
    190     def get_source(self, REQUEST): 
     190    def get_source(self, text=None, REQUEST=None): 
    191191        """ 
    192192        Show the file as it's source, no html/whatever formatting. 
     
    194194        """ 
    195195 
    196         source_code_lang = self.get_lang_by_id(self.lang) 
    197         source_code_mime = self.get_mimetype(src=self.src, 
    198                                              lexer=source_code_lang.lexer) 
    199  
    200         print 'sourcecodemime ', source_code_mime 
    201          
    202         source_code_extension = mimetypes.guess_all_extensions(source_code_mime) 
    203  
    204         if source_code_extension: 
    205             source_code_extension = source_code_extension[0] 
     196        if text is None: 
     197            lang = self.get_lang_by_id(self.lang) 
     198            mime = self.get_mimetype(src=self.src, lexer=lang.lexer) 
     199            ext = mimetypes.guess_all_extensions(mime) 
     200            ext = ext and ext[0] or '.txt' 
    206201        else: 
    207             source_code_extension = 'txt' 
    208  
    209         REQUEST.RESPONSE.setHeader('Content-type',"%s; charset=utf-8" % source_code_mime) 
    210         REQUEST.RESPONSE.setHeader('Content-Disposition', 
    211                                    'attachment; filename="' + str(self.id) + source_code_extension + '"') 
    212                                     
    213         # return self.src 
    214         return self.source_src_zpt(src=self.src) 
    215      
     202            mime='text/plain' 
     203            ext='.txt' 
     204 
     205        r = REQUEST.RESPONSE 
     206        r.setHeader('Content-type',"%s; charset=utf-8" % mime) 
     207        r.setHeader('Content-length',len(self.src)) 
     208        if text is None: 
     209            r.setHeader('Content-Disposition', 
     210                        'attachment; filename="' + self.getId() + ext + '"') 
     211 
     212        return self.src 
     213 
    216214manage_addSourceCode_form = PageTemplateFile(_www+'/manage_src_addform.zpt', globals()) 
    217215 
     
    271269    security.declarePrivate('source_zpt') 
    272270    source_zpt = PageTemplateFile(_www+'/templates/source.zpt', globals()) 
    273     security.declarePrivate('source_src_zpt') 
    274     source_src_zpt = PageTemplateFile(_www+'/templates/source_src.zpt', globals()) 
    275271 
    276272    # media objects (like images and css files 
     
    546542        # and as every lexer has a list of available mimetypes, 
    547543        # we return only the first one 
    548         print 'mimetypes ', plexer.mimetypes 
    549544        if plexer.mimetypes: 
    550545            return plexer.mimetypes[0] 
  • trunk/CodeSharingZ/www/templates/source.zpt

    r27 r29  
    1616    <p> 
    1717      <a href="get_source">Get original format</a><br /> 
    18       <a href="get_source">Get in txt</a><br /> 
     18      <a href="get_source?text=1">Get in txt</a><br /> 
    1919    </p> 
    2020  </div>