[Twisted-web] newbie question
arun chhetri
uhcops at gmail.com
Mon Aug 18 11:15:46 EDT 2008
So, does this means that twisted.web can only handle one request at a
time,,,,, why It should do that.
thanks
On Sat, Aug 16, 2008 at 4:46 PM, Graeme Glass <graemeglass at gmail.com> wrote:
> On Sat, Aug 16, 2008 at 12:24 AM, arun chhetri <uhcops at gmail.com> wrote:
>
>> hi,
>> I have developed some twisted.web application. It connects to the other
>> server (CalDav) and then it displays back using twisted.web.
>> My problem is when a user logs into my website which is made using
>> twisted.web there is some data fetched from CALDAV server. When another =
user
>> logs into my website, even his data is downloaded from CalDav server but
>> this data overwrites the data of previous server. I think I am not able =
to
>> fork the process on each request. This is my just guess.
>>
>> The Code is given below
>>
>> from twisted.web import resource, static, server
>> import vobject
>> import calendarWebUtilities
>> import Calendar
>> import datetime
>> import re,calendar
>> import Month
>> import Week
>> import Day
>> import socket
>>
>>
>> class HomePage(resource.Resource):
>> def render(self,request):
>> return"""
>> <html>
>> <head>
>> <title>VCalendar</title>
>> </head>
>> <body>
>> <form action=3D/optional method=3D"post">
>> User Name <input type=3D"text" name=3D"username"><br/>
>> Pass Word <input type=3D"password" name=3D"pswd"><br/>
>> ServerAdd <input type=3D"text" name=3D"server"><br/>
>> <input type=3D"submit" Value=3D"Submit"><br/>
>> </form>
>> </body>
>> </html>"""
>>
>>
>> class Optional(resource.Resource):
>> def __init__(self):
>> resource.Resource.__init__(self)
>> self.CalendarData =3D {}
>> self.account =3D {}
>> def render(self,request):
>> user =3D request.args["username"]
>> pswd =3D request.args["pswd"]
>> server =3D request.args["server"]
>> if user !=3D None:
>> if pswd !=3D None:
>> if server !=3D None:
>> CalendarSource =3D None
>> CalendarSource =3D
>> Calendar.CalendarObject(user[0],pswd[0],server[0])
>> todayDate =3D datetime.datetime.now()
>> start =3D
>> datetime.datetime((todayDate.year-1),01,01,00,00)
>> end =3D
>> datetime.datetime((todayDate.year+1),12,31,23,59,59)
>> self.CalendarData['value'] =3D
>> CalendarSource.readCalendarComponent(start,end)
>> self.account['value'] =3D CalendarSource
>> self.index =3D 1
>> request.redirect("/optional/Calendar")
>> return " "
>>
>> def getChild(self,path,request):
>> return MainCalendar(self.index,self.CalendarData,self.account)
>>
>>
>>
>> class MainCalendar(resource.Resource):
>> def __init__(self,index,CalendarData,account):
>> resource.Resource.__init__(self)
>> self.index =3D index
>> self.CalendarData =3D CalendarData
>> self.account =3D account
>>
>> self.putChild('Add',AddCalendarComponent(self.CalendarData,self.account))
>>
>> def render(self,request):
>> global Calendarata
>> global account
>> if request.path =3D=3D "/optional/Calendar" :
>> request.redirect("/optional/Calendar/Month")
>> return " "
>>
>>
>>
>> def getChild(self,path,request):
>> if request.path =3D=3D "/optional/Calendar/Month":
>> return Month.month(self.CalendarData,self.index)
>> elif request.path =3D=3D "/optional/Calendar/Week":
>> return Week.Week(self.CalendarData,self.index)
>> elif request.path =3D=3D "/optional/Calendar/Day":
>> return Day.Day(self.CalendarData,self.index)
>>
>>
>> class AddCalendarComponent(resource.Resource):
>> def __init__(self,CalendarData,account):
>> resource.Resource.__init__(self)
>> self.CalendarData =3D CalendarData
>> self.account =3D account
>>
>> def render (self,request):
>> #if request.args !=3D None:
>> queryString =3D len(request.args)
>> if queryString !=3D0:
>> try :
>> summary1 =3D request.args['summary']
>> location1 =3D request.args['location']
>> startDate1 =3D request.args['startDate']
>> endDate1 =3D request.args['endDate']
>> CalendarSource =3D self.account['value']
>> event =3D
>> CalendarSource.convertToProperFormatAndAddToCalendar(summary1,location1,=
startDate1,endDate1)
>> (self.CalendarData['value']).append(event)
>> #CalendarData =3D {}
>> #print "New Data Created"
>> #print NewCalendar
>> #CalendarData['value'] =3D NewCalendar
>> request.redirect("/optional/Calendar")
>> return " "
>> except KeyError:
>> request.args =3D {}
>> request.redirect('/optional/Calendar/Month/Add')
>> else:
>> return"""
>> <html>
>> <head>
>> </head>
>> <body>
>>
>> <form action=3D"/optional/Calendar/Add" method=3D"post">
>> Summary =3D <INPUT type=3D"text" name=3D"summary"></br>
>> Location =3D <input type=3D"text" name=3D"location"></br>
>> Start Date =3D <input type=3D"text" name=3D"startDate">Should Be=
in
>> format year/MM/date/HH/MM</br>
>> End Date =3D <input type=3D"text" name=3D"endDate">Should Be in =
format
>> year/MM/date/HH/MM</br>
>> <input type=3D"submit">
>> </form>
>> </body>
>> </html>
>> """
>>
>>
>>
>>
>> if __name__ =3D=3D "__main__":
>> from twisted.internet import reactor
>> root =3D resource.Resource()
>> root.putChild('',HomePage())
>> root.putChild('optional',Optional())
>> site =3D server.Site(root)
>> reactor.listenTCP(8000,site)
>> reactor.run()
>>
>> I can guess there should be some method by which I can fork the root for
>> different request,, Please help.
>>
>> Thanks
>>
>>
>>
>> _______________________________________________
>> Twisted-web mailing list
>> Twisted-web at twistedmatrix.com
>> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
>>
>>
> Try using a factory for your session storage instead of storing it in the
> actually resource, that way you will be able to access your session
> information from the resources without overriding it on every request. Ta=
ke
> a look at twisted.internet.protocol.ServerFactory.
>
> HTH
>
> G
>
> _______________________________________________
> Twisted-web mailing list
> Twisted-web at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-web/attachments/20080818/d1=
213144/attachment.htm
More information about the Twisted-web
mailing list