Django Schedule

Sun 09 Nov 2008 10:29 PM

Tags: django documentation project

Django-schedule has just been released, supporting recurring events. Doing this required a paradigm switch. In this post I will describe the paradigm switch as well as explaining some features.

Events and Occurrences

The new idea is to think of Events as a thing that a person would like to track, and an Occurrence as a instance of an event with a specific time and date. It works best if we think about it with an example. You have a 'Weekly Staff Meeting', this is an Event. Its a meeting that happens every week. Now 'Tuesday's Staff Meeting' is an Occurrence. It is a specific instance of the Event 'Weekly Staff Meeting'. So now lets look at how this works with the code.

>>> user = User.objects.get(username='thauber')
>>> start = datetime.datetime(2008,1,1,14,0)
>>> end = datetime.datetime(2008,1,1,15,0)
>>> rule = Rule.objects.get(name = "Weekly")
>>> event = Event(title = 'Staff Meeting',
...           start = start,
...           end = end,
...           rule = rule,
...           description = "description")
>>> event.create_relation(user)

What we just created here was an event called "Staff Meeting." Don't worry about the create_relation line we will deal with that in Relations. Now we can worry about getting the Occurrences. Lets say that you want all occurrences of that event from today to a week from today.

>>> start = datetime.datetime.now()
>>> end = start + datetime.timedelta(days=7)
>>> event.get_occurrence(start, end)

This would return all of the occurrences of this event between start and end.

Periods

So now you have a list of events, and you would like all of the occurrences for that list. You can do this with the Period class.

>>> events = Event.objects.get_for_object(user)
>>> period = Period(events, start, end)
>>> period.get_occurrences()

If you are wondering why there is a class for this there are several reasons.

1) It is useful to know which events start in this period, end in this period, or are just continued in this period. To deal with this there is a function, get_occurrence_partials, which returns what I like to call Occurrence Partials. Meaning Occurrences relevant to to a discrete period of time. Each element in the returned list is a dictionary {'event': event, 'class': 0} the classes are as follows:

  • 0: The event begins in this period
  • 1: The event begins and ends in this period
  • 2: The event doesn't begin or end in this period, but it exists in this period (AKA it continues during this period)
  • 3: The event ends during this period

2) It can be subclassed so that special functionality can be added to special periods. Some subclasses that are included out-of-the-box are Month, Week, and Day. These subclasses have some specific functionality that you may find helpful, for example Month has get_weeks, which returns the Week periods for that specific Month period. Month, Week, and Day are all initialized by a date or a datetime object.

>>> date = datetime.datetime(2008,5,20)
>>> month = Month(date)
>>> month.start
datetime.datetime(2008,5,1,0,0)
>>> month.end
datetime.datetime(2008,6,1,0,0)

Notice that the end of a period is not inclusive in the period.

To see more information on the Period class you should view the source.

Rules

Rules are how you define the recurrence pattern of an Event. This uses the rrule in the dateutil module (not included with python). For more information on rrule you should see the documentation. Rule is a model so it can be created through the admin interface. As of now the fields are

Name
The name of the recurrence pattern (ie Weekly, Every other Month)
Description
A more verbose definition of the recurrence pattern.
Frequency
Defines the frequency set for the rrule. Must be YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY.
Params
This field holds the params that allow you to customize the rrule. It is key value pairs seperated by semi-colons(;) the key value pairs are seperated by colons(:). The value must be integers, or list of integers. An example would be count:2;byweekday:0,1,2; (see source for more help).

Eventually the admin will be easier to work with for this model, and it will come with some builtin Rules, like Weekly, Monthly, Yearly, Every Weekday, etc.

Relations

There is a built in relationship table for relating events to generic objects. This also works with calendars. You do not need to worry about the relationship table as it all happens behind the scene. Lets say you want to relate a calendar to a Group, which represents a group of users. This is really simple to do.

>>> group = Group.objects.get(name = "Pythonistas")
>>> cal = Calendar.objects.get(name = "Pythonistas' Calendar")
>>> cal.create_relation(group)
# Now to get that calendar
>>> Calendar.objects.get_calendars_for_object(group)

Both Calendar and Event have create_relation functions. If you know that there should only be one Calendar you can use get_calendar_for_object. It will return one Calendar or raise Calendar.DoesNotExist. Or if you only want there to be one calendar, but you don't know if there is one you can use get_or_create_calendar.

>>> Calendar.objects.get_or_create_calendar(group, name = "Pythonistas' Calendar")

As you can see there is an optional keyword name. If the Calendar needs to be created it will get the name name.

Conclusion

There is some work that still needs to be done. I would like upgraded forms, templatetags, and I am always looking for more features to be implemented. If you have an comments you can let us know at the Django-schedule page.

A special thanks to Yann Malet for his help getting event recursion working

UPDATE fixed some typos, see yml's and Guenter's post below.

Comments:

yml
Excellent post Tony. I would like to spot two typos in your post : * The package that contains rrule is dateutil and not docutils * My last name is with one L (Malet). :-)
Lee Hinde
in the homepage.html file, in the sample, about line 38 {% endtemplateblock %} should be {% endblocktrans %}
Doug Napoleone
This is fantastic!!! It's going to make a great (and desperately needed) addition to Pinax!!
James
AWESOME! :D Can't wait to try it out :)
Chris Pratt said:
You're a godsend. I have a project where I've been dreading implementing just this functionality. Thanks a million.
Tony Hauber said:
Thank you all, I appreciate the kind words.
Guenter Walser
Thanks for the App, looks great. I was just in need of something like this and will try asap. 2 remarks: Maybe a typo in the Periods example? >>> events = Event.objects.get_for_object(user) >>> period = Period(event, start, end) Shouldn't it be Period(events, start, end)? Date tag would be helpful to see freshness of article and comments Reasoning is that If I see that the article is a few month old then it might be no value to send typos - if its new and fresh then it helps.
Jay
This is awesome!!!
HÃ¥kan
Great work! I need this in one of my projects, and was just about to invent something on my own.
omtv said:
It's really a useful application. Thanks so much for sharing!
ShyGirl

this is really good
:D luv it. :)

Mauro Ciaccio said:
Hi, Congratulations on django-schedule. We got it up and running in less than a day! Before we continue though, could you please clarify if your calendar supports the iCalendar format. We are implemeting events in our site, and someone suggested we should consider supporting iCalendar. To be honest we are not familiar with the standard, so thought it best to ask you first. Thanks.
Jesper Noehr said:

Great job, Tony. I've seen a lot of people try and fix this niche before, but this seems like a well thought-out, thorough implementation.

Looking forward to taking it for a spin!

Finn Gruwier Larsen said:
Two comments concerning get_or_create_calender_for_object: 1: It is incorrectly called get_or_create_calender in the documentation above. 2: It does not tage a slug as an argument though the slug is a required attribute.
Skylar Saveland said:
I can't wait to try it!
Koxp said:
there going to be an updated version of this snippet mybe
vtunnel said:
Great article <a href="http://www.youtubekaydet.com" title="youtube">youtube</a> thank you very much Great article <a href="http://www.youtubekaydet.com" title="vtunnel">vtunnel</a> thank you very much
youtube said:
tHANKS
koxp said:
<a href="http://www.kaoskoxp.org">Koxp</a> <a href="http://www.kaoskoxp.org">Koxp 1728</a> <a href="http://www.kaoskoxp.org">Koxp 1729</a>
Emlaklar said:
Good news edit
Emo Resimleri said:
Thank You thauber Family
Koxp said:
this is really good
ekin turkmen said:
sagol
Koxp said:
i think that's fantastic
koxp said:
www.level83.blogspot.com
wholesale jewelry said:
Good website,nice post.
J. Heasly
The view calendar_by_periods has a default template of schedule/calendar_by_period.html but this doesn't seem to exist. Is this intentional or is it a template left to the user to construct?
Metin2 said:
thank you admin
Video izle said:
thank very much
paul said:
xP1ScV hfN2cnPosa82GhrpCayYr
nataly said:
5lsRY8 ghUnxCczpf72ndOqi20g
wdefrg said:
efrgt <a href=" http://ecotect.com/user/5609 ">youporno jordan</a> gehrjey <a href=" http://ecotect.com/user/5610 ">youporne asian</a>
efsrgt said:
ergthy <a href=" http://ecotect.com/user/5611 ">paris hilton sex tape youporn</a> fgetyjum <a href=" http://ecotect.com/user/5612 ">watch youjizz</a>
wdefr said:
efrgthb <a href=" http://ecotect.com/user/5615 ">www xtube comn</a> grehghe5 <a href=" http://ecotect.com/user/5616 ">xnxx porn site</a>
wdef said:
wefrg <a href=" http://ecotect.com/user/5623 ">tiava sex</a> egrehrjy <a href=" http://ecotect.com/user/5624 ">thumbzilla movie</a>
efsr said:
efrgtg <a href=" http://ecotect.com/user/5621 ">8 glass tube</a> fgregth <a href=" http://ecotect.com/user/5622 ">www tube8 com www</a>
efrg said:
wefdrgtb <a href=" http://ecotect.com/user/5627 ">shufuni wife</a> gregrg <a href=" http://ecotect.com/user/5628 ">sextube home</a>
wefrg said:
wefrgdth <a href=" http://ecotect.com/user/5619 ">uporn site</a> egrhth <a href=" http://ecotect.com/user/5620 ">shay laren twisty</a>
wer said:
wdefrg <a href=" http://ecotect.com/user/5625 ">thehun nert</a> wfrthnyj <a href=" http://ecotect.com/user/5626 ">www spankwire comm</a>
defr said:
wdefrgth <a href=" http://ecotect.com/user/5613 ">xvideos com tflix com</a> wrgthyj <a href=" http://ecotect.com/user/5614 ">x tube girlfriend</a>
wdefr said:
wefrg <a href=" http://ecotect.com/user/5640 ">www redtub eocm</a> wefgtyn <a href=" http://ecotect.com/user/5641 ">ww porntube com</a>
wadefr said:
wdefsrgt <a href=" http://ecotect.com/user/5638 ">red tube sexy</a> aefwrghtn <a href=" http://ecotect.com/user/5639 ">redtube ccom</a>
wefr said:
efrgtgbn <a href=" http://ecotect.com/user/5607 ">yuvutu the home</a> rfrehgyj <a href=" http://ecotect.com/user/5608 ">youtubeporno</a>
efrgt said:
efrgt <a href=" http://ecotect.com/user/5642 ">pornotv nl</a> grhtehyj <a href=" http://ecotect.com/user/5643 ">pornotube cojm</a>
efrgt said:
efrgdth <a href=" http://ecotect.com/user/5644 ">pornotube forum</a> egyumj <a href=" http://ecotect.com/user/5645 ">pornotub com</a>
wefrg said:
wefrgt <a href=" http://ecotect.com/user/5648 ">porn hub co</a> egnymj <a href=" http://ecotect.com/user/5649 ">dvd pornhub</a>
efrg said:
wdefgb <a href=" http://ecotect.com/user/5652 ">nude tube top</a> rgthyjn <a href=" http://ecotect.com/user/5653 ">nexxx om</a>
wadesfr said:
efgb <a href=" http://ecotect.com/user/5650 ">pinkworld video</a> rgthynh <a href=" http://ecotect.com/user/5651 ">pichunter ocm</a>
gvbjgvvhc said:
wdefdrgt <a href=" http://ecotect.com/user/5659 ">www kaktuz net</a> ergthny <a href=" http://ecotect.com/user/5661 ">imagefap cum clothes</a>
wefrg said:
efgefsr <a href=" http://ecotect.com/user/5656 ">madthumbs movies</a> wfergthn <a href=" http://ecotect.com/user/5658 ">literotica massage</a>
wafesrg said:
wefrgt <a href=" http://ecotect.com/user/5654 ">megarotic wikipedia</a> rrgthyjnm <a href=" http://ecotect.com/user/5655 ">maxporn videos</a>
wdaef said:
jgyyig <a href=" http://ecotect.com/user/5664 ">hot tube service</a> uftjvhcf <a href=" http://ecotect.com/user/5665 ">frogsex anal</a>
hhvbkv said:
hgvcyhjgh <a href=" http://ecotect.com/user/5662 ">hq tube com</a> gbyjhgvgv <a href=" http://ecotect.com/user/5663 ">www hqtube com index</a>
efrg said:
efsrgt <a href=" http://ecotect.com/user/5668 ">show on efukt</a> wfegrbt <a href=" http://ecotect.com/user/5669 ">on the boob tube i m</a>
gobiz said:
good material thanks <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11266 ">underage lolita sites</a> 90352 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11267 ">underage lolitas having sex</a> 003863 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11268 ">preteen lolitas bbs galleries cute little girls</a> bkrv <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11269 ">illegal fuck pics. lolita</a> %-[[[ <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11270 ">little nude lolita pussy</a> ficn <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11271 ">taboo underage bbs preteen illegal very young virgin pedo lolis sex</a> =OOO <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11272 ">preteen lolita teen bbs</a> :[[[
Tony said:
Cool site goodluck :) <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11273 ">preeteen lolitas</a> >:-]]] <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11274 ">lolita hussyfan videos</a> 688 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11275 ">preteen girl models nymphet lolita tgp bbs illegal underage</a> 741 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11276 ">child lolita nude</a> 85259 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11277 ">putas gravidas</a> %) <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11278 ">illegal porn tgp</a> 334 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11279 ">12 year old kid sex</a> 489767
Lioncool said:
Very Good Site <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11273 ">lolita pree-teens in panties</a> 916196 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11274 ">lolita no nude art preteen photos</a> %]] <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11275 ">lolita home</a> 446926 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11276 ">little girl lolita pussy</a> rqhxqg <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11277 ">model art preteen</a> 90550 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11278 ">preteen porn sex</a> 284249 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11279 ">preteen sexy models</a> yqqw
bobber said:
It's funny goodluck <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11259 ">child lolitas</a> 793 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11260 ">loli girls</a> 2027 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11261 ">underage prelolitas porn pics</a> 812648 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11262 ">lolita cp porn</a> kax <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11263 ">lolita sites bbs</a> >:PPP <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11264 ">little underground russian lolitas</a> quvpk <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11265 ">young lolitas nude</a> sdtwdb
Nilson said:
Very funny pictures <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11259 ">ls magazine lolitas bbs</a> >:OO <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11260 ">russian lolita preteen</a> =-]] <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11261 ">free preteen lolita mpegs</a> :]]] <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11262 ">sexy preteen lolitas</a> ylrtaq <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11263 ">lolita teen porn bbs</a> %[[ <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11264 ">top 50 lolita sites</a> 836112 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11265 ">illegal dark little lolita porn</a> >:[[[
flyman said:
Cool site goodluck :) <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11297 ">ls magazine video</a> ycuxo <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11300 ">mrs. starr</a> bwnp <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11301 ">nudism preteen girls</a> 843 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11302 ">preteen body art</a> 8-OOO <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11303 ">young naked preteens</a> :]] <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11304 ">free nudest boys naked kids</a> bwotp <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11305 ">nudist camp photo gallery kids</a> 897738
freeman said:
Cool site goodluck :) <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11314 ">mmm100 vod torrent</a> eyejlk <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11315 ">preteen nude children naked</a> amdu <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11316 ">pre teen hardcore sex</a> 583105 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11317 ">preteen sex, illegal sex</a> 3949 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11318 ">pedo pic</a> >:OO <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11320 ">naked bbs preteen verry young little virgin</a> gnmdqp <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11321 ">pthc sites</a> =]]]
eblanned said:
Cool site goodluck :) <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11297 ">pre teen asian sex</a> yqfz <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11300 ">ryoko mitake</a> 42259 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11301 ">bbs preteen illegal very young virgin sex videos</a> nvtbg <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11302 ">underage nudists</a> 3702 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11303 ">pedo bbs</a> >:[ <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11304 ">rihanna nuda</a> 883 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11305 ">free illegal porn</a> 106
freeman said:
Excellent work, Nice Design <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11314 ">naked kids playing</a> :-D <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11315 ">illegal boys porn</a> 526 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11316 ">pedo little boys</a> 456507 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11317 ">tanga.cl</a> :-DD <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11318 ">ewa sonet</a> hwgr <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11320 ">sweet nymphets</a> %-O <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11321 ">art body preteen pubescent</a> aqulud
greenwood said:
good material thanks <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11297 ">mashasworld. sleepy sex</a> qawylb <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11300 ">illegal very young virgin bbs preteen sex</a> 8P <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11301 ">henati</a> =PP <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11302 ">sexdu movie</a> 67237 <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11303 ">nude art kids</a> =-PP <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11304 ">nude camp for kids pics</a> sqgia <a href=" http://www.talkas.lv/?page=6&forum=viewtopic&id=11305 ">naked preteen boys</a> =-]]
jvcjkhb said:
dcrytc <a href=" http://ecotect.com/user/5705 ">russian porn</a> fvyhcytgc <a href=" http://ecotect.com/user/5706 ">free xxx movies</a>
fcgh said:
gfch <a href=" http://ecotect.com/user/5709 ">big cock</a> egrteb <a href=" http://ecotect.com/user/5710 ">nude paradise hotel</a>
dfv said:
hcfghg <a href=" http://ecotect.com/user/5711 ">mp4 porn</a> uguyf <a href=" http://ecotect.com/user/5712 ">free anal sex movies</a>
jhgv said:
tyrcytf <a href=" http://ecotect.com/user/5713 ">sexy moms</a> yigufyc <a href=" http://ecotect.com/user/5714 ">amatuer sex videos</a>
vvs said:

http://zenway.ru

hgcf said:
ghcfgxd <a href=" http://ecotect.com/user/5715 ">hayden panettiere nude</a> vccyhjgf <a href=" http://ecotect.com/user/5716 ">child pornography</a>
byugv said:
tytrgc <a href=" http://ecotect.com/user/5717 ">vanessa anne hudgens nude pic</a> uhygjvgjv <a href=" http://ecotect.com/user/5719 ">kinky sex</a>
ZK@Web Marketing Blog said:
One feature of virtualenv I always like to exploit: easy_install in a virtualenv looks into your PYTHONPATH to find already installed packages in it and just links to them (so no duplication). Using the multiversion flag for easy_install you could even choose between different version and share them between projects.
renommiertes Casino said:
I admit, I have not been on this webpage in a long time... however it was another joy to see It is such an important topic and ignored by so many, even professionals. I thank you to help making people more aware of possible issues.
wdaefsr said:
efrgdtb <a href=" http://ecotect.com/user/5742 ">home fuck fest</a> weghrtn <a href=" http://ecotect.com/user/5743 ">youtube sex</a>
wdaesfr said:
wefdrg <a href=" http://ecotect.com/user/5740 ">preteen links</a> wefgrthbn <a href=" http://ecotect.com/user/5741 ">redhead sex</a>
wdfes said:
wdefsr <a href=" http://ecotect.com/user/5758 ">throatfucking</a> wefgrth <a href=" http://ecotect.com/user/5759 ">small bikini</a>
wdafe said:
wefdrg <a href=" http://ecotect.com/user/5756 ">teen blowjob</a> rfegrthbn <a href=" http://ecotect.com/user/5757 ">incest xxx</a>
wdafes said:
frgtdb <a href=" http://ecotect.com/user/5754 ">nakedwives</a> wefgrthnyf <a href=" http://ecotect.com/user/5755 ">amature pics</a>
wae said:
waefsrgf <a href=" http://ecotect.com/user/5760 ">human sexuality</a> wfegrdthbg <a href=" http://ecotect.com/user/5761 ">porn models</a>
efrg said:
esrng <a href=" http://ecotect.com/user/5764 ">micro bikinis contest</a> wgehrt <a href=" http://ecotect.com/user/5772 ">justin timberlake nude</a>
wesfr said:
wefrg <a href=" http://ecotect.com/user/5774 ">dickflash</a> egrhtny <a href=" http://ecotect.com/user/5775 ">pornoinside</a>

Please Leave a Comment: