On 2/9/06, James Y Knight <foom@fuhm.net> wrote:
> from twisted.application import strports, service
> from twisted.web2 import static, server, http, wsgi, resource
>
> import sys
> sys.path.append("./myproject")
> from django.core.handlers.wsgi import WSGIHandler
> import os
> os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
>
> class toplevel(wsgi.WSGIResource):
>
>
>     def child_media(self, ctx):
>         return static.File("./myproject/media")
>
>
> root = toplevel(WSGIHandler())
> application = service.Application("web")
> site = server.Site(root)
> s = strports.service('tcp:8000', http.HTTPFactory(site))
> s.setServiceParent(application)

That won't work -- what you want is to nest the resources rather than
subclass them. Something like this resource should do you (untested,
wrote in email client). It says: if the path starts with media,
return the static File and pass it the remaining pieces of the path,
otherwise pass the entire path onto wsgi for its processing.

class toplevel(object):
   implements(IResource)

   def __init__(self):
     self.wsgi = wsgi.WSGIResource(WSGIHandler())
     self.media = static.File("./myproject/media"

   def locateChild(self, req, segs):
     if segs[0] == 'media':
       return self.media, segs[1:]
     return self.wsgi, segs

   def renderHTTP(self, req):
     return self.wsgi

James

_______________________________________________
Twisted-web mailing list
Twisted-web@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
The final solution I came up with is..

from twisted.application import strports, service
from twisted.web2 import static, server, http, wsgi, resource

import sys
sys.path.append("./myproject")
from django.core.handlers.wsgi import WSGIHandler
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'

wsgi = wsgi.WSGIResource(WSGIHandler())

root = wsgi
application = service.Application("web")
site = server.Site(root)
s = strports.service('tcp:8000', http.HTTPFactory(site))
s.setServiceParent(application)

media = static.File("./myproject/media")
site2 = server.Site(media)
m = strports.service('tcp:8080', http.HTTPFactory(site2))
m.setServiceParent(application)

But what you show is awesome, been looking at how to do something like that. Thanks for all the help, this issue is officially solved..

ToddB