Changeset 42

Show
Ignore:
Timestamp:
01/30/07 21:37:41 (5 years ago)
Author:
tim
Message:

initial theme support (#16) -- testing and refinement required

Location:
trunk
Files:
11 added
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/cogplanet/admin/controller.py

    r41 r42  
    1515    id = HiddenField(name="id") 
    1616    name = TextField(name="name", attrs={'size':60}) 
     17    theme_package = TextField(name="theme_package", 
     18                              label="Theme Package", 
     19                              attrs={'size': 60}) 
    1720    display_entries = TextField(name="display_entries", 
    1821                                label="Entries to display", 
     
    9699        planet = Planet.selectone() 
    97100        planet.name = kw['name'] 
     101        planet.theme_package = kw['theme_package'] 
    98102        planet.display_entries = kw['display_entries'] 
    99103        planet.update_interval = kw['update_interval'] 
  • trunk/cogplanet/controllers.py

    r29 r42  
    44from cogplanet import json 
    55import cherrypy 
     6import pkg_resources 
    67from cherrypy import request, response 
    78from genshi.template import MarkupTemplate 
     
    3132from cogplanet.admin.controller import AdminController 
    3233 
    33 class PlanetController(controllers.Controller, Restful): 
     34class PlanetController(controllers.Controller): 
    3435    admin = AdminController() 
     36 
     37    @expose() 
     38    def default(self, *vpath, **params): 
     39        print vpath 
     40        if vpath[0] == "theme": 
     41            # TODO fix the content-type headers 
     42            try: 
     43                planet = Planet.selectone() 
     44                file_name = "static/" + "/".join(vpath[1:]) 
     45                str = pkg_resources.resource_stream(planet.theme_package, file_name).read() 
     46                cherrypy.response.headers['Content-Type'] = 'text/css' 
     47                return(str) 
     48            except IOError: 
     49                pass 
     50        raise cherrypy.NotFound 
     51             
    3552 
    3653    @expose(template="genshi:cogplanet.templates.index") 
     
    4461        return {"entries":entries, 
    4562                "feeds":feeds, 
    46                 "planet": planet} 
     63                "planet": planet, 
     64                "tg_template": "genshi:%s.index" % planet.theme_package} 
    4765 
    4866    @expose(template="genshi:cogplanet.templates.feeds") 
  • trunk/cogplanet/model.py

    r41 r42  
    3030        name = column(Unicode, nullable=False) 
    3131        display_entries = column(Integer, default=50, nullable=False) 
     32        theme_package = column(Unicode(255), default='cogplanet.templates', nullable=False) 
    3233        update_interval = column(Integer, default=1440, nullable=False) 
    3334        # TODO cascade='delete' (currently unsupported)