PK 68Իeazcalendar/compat.pyc; sN( sTsintstypessappends_[1]szipsrowstsvsinitsEvent(sclssrowsts_[1]sinitsTsvstypes((s4build/bdist.darwin-8.0.1-x86/egg/azcalendar/event.pys parse_rows  !<c Csdk} |i}|i}|djo d} n d|} dhdt|<dt|<d| <}|i ||i }gi} |D]} | ti| q~ SdS( s Given a time window = %(time_beg)s AND time_begin < %(time_end)s) OR (time_begin < %(time_beg)s AND time_end >= %(time_end)s ) stime_begstime_endsselector(stimesenvs get_db_cnxsdbscursorsusersselectorsintsstamp1sstamp2ssqlsexecutesfetchallsrowssappends_[1]srowsEvents parse_row( sclssenvsstamp1sstamp2suserscursorsrowsssqlsdbsselectors_[1]stimesrow((s4build/bdist.darwin-8.0.1-x86/egg/azcalendar/event.pysevents_betweens      1  (s__name__s __module__sTablesColumnsTruesIndexs_schemas__init__sget_ids get_authorsget_time_updatesget_time_insertsget_time_begins get_time_ends get_titles get_prioritysget_types set_prioritysset_types set_titles set_authors set_time_endsset_time_beginsset_time_updates get_events classmethodsupdatessavesdeletes parse_rowsevents_between(((s4build/bdist.darwin-8.0.1-x86/egg/azcalendar/event.pysEvents6                      ( senumstrac.dbsTablesColumnsIndexsEnums EventPrioritys EventTypesEvent(sIndexsColumns EventTypesenumsEventsTables EventPriority((s4build/bdist.darwin-8.0.1-x86/egg/azcalendar/event.pys?s PK6xCH--azcalendar/__init__.py# Calendar module from azcalendar import * PK 68`4KKazcalendar/azcalendar.pyc; rEFc@sdkZdkTdklZlZlZdklZdkl Z l Z dk l Z dk lZdklZlZlZlZlZdklZdkZdkZdkZd efd YZdS( N(s*(sINavigationContributorsITemplateProvidersadd_stylesheet(sIRequestHandler(sescapesMarkup(sIEnvironmentSetupParticipant(sIPermissionRequestor(sschemasschema_versionsEvents EventPrioritys EventType(s schema_to_sqlsUserbaseModulecBstZeeeeeedZdZ dZ dZ dZ dZ dZdZd Zd Zd Zd Zd ZdZdZRS(NcCsdSdS(Ns azcalendar((sselfsreq((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pysget_active_navigation_itemsccs&ddtd|iiifVdS(Nsmainnavs azcalendarsAzcalendar(sMarkupsselfsenvshrefs azcalendar(sselfsreq((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pysget_navigation_itemss cCsd|ijSdS(Ns azcalendar(sreqs path_info(sselfsreq((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pys match_request$sc Cst|d|idjo|iidoftidti|idd|id    >cCs|d|df\}}||}|djo+|d8}|dtti|7}nL|dtti|jo+|dtti|8}|d7}nti t |t |d}|SdS(Niiiims%Y%j( s week_startsd_yearsd_doys which_daysdoysintscalendarsisleapstimesstrptimesstrsday(s week_starts which_daysd_doysdaysd_yearsdoy((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pys relative_dayXs   ! "cCsti|dSdS(Ni(stimes localtimesstamp(sstamp((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pys stamp_dowdscCs'ti|}|d|ddSdS(Niif60.0(stimes localtimesstampst(sstampst((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pysstamp_floattimegsics(dk}|i|tSdS(N(smathsfloorsxsDIVsfloat(sxsmath(sDIV(s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pys round_beginms cs(dk}|i|tSdS(N(smathsceilsxsDIVsfloat(sxsmath(sDIV(s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pys round_endqs sdates%Y%m%diiiii<sazcalendar.events.%d.date.yearsazcalendar.events.%d.date.monthisazcalendar.events.%d.date.dayf0.0f24.0s!azcalendar.events.%d.events.%d.%ds.ids.titles .prioritys .brd_begins.brd_ends%d.%m.%Y %H:%Ms%H:%Ms .time_begins .time_endii is %04d%02d%02dsazcalendar.prev_datesazcalendar.today_datesazcalendar.next_datesazcalendar.months.%d.monthsazcalendar.months.%d.yearsazcalendar.months.%d.firstdaysazcalendar.months.%d.numdayssazcalendar.months.%d.impdays.%dsazcalendar.divsCalendarstitleshw/css/azcalendar.csss azcalendar.cs(Vsget_weeks get_months relative_days stamp_dowsstamp_floattimesDIVs round_begins round_endstimesstrptimesreqsargssdates localtimesappends_[1]sxranges_scweeks week_rangesmktimesbgsensEventsevents_betweensselfsenvsauthnamesevsmaxsget_time_beginsbeginsmins get_time_endsendsds week_startsevtss cal_layoutslayouts day_layoutsslenstodays today_stampstomorrow_stampshdfslsget_idsbases get_titlesstrs EventPrioritys get_prioritysintsroundsfmtsstrftimesdisplay_monthssdm_yearsdm_months prev_years prev_monthsprev_dayscalendars monthranges next_years next_monthsnext_daysrangesistuples month_rangesinteresting_dayssprioritysdayskeyssinteresting_days_lsmsmonthsyearsimpdayssnumdayssweekdaysfirstdaysadd_stylesheetsNone(3sselfsreqs round_beginsensprev_days next_monthsls prev_monthstomorrow_stampsimpdayssyearsDIVsevs prev_yearsprioritysendscweeks round_ends week_rangesdays today_stamps get_months week_starts next_yearsinteresting_dayssget_weeksdisplay_monthsstodaysnext_daysbeginsbgs month_rangesinteresting_days_lsevtssfmtsfirstdaysstamp_floattimesbasesdm_monthsdatesmonths_sdm_yearsdsisms day_layoutss_[1]s relative_daysnumdayss stamp_dow((sDIVs9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pys process_show9s     - ,  6      !!!& ,8       F,      A     cCs|iidokdk}|id}|id| o|i|Snti |i |id}|i |i n|i |SdS(Nsids[0-9]+(sreqsargsshas_keysresxidsmatchsselfsprocess_invalidsEvents get_eventsenvsevtsdeletes process_show(sselfsreqsxidsresevt((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pysprocess_deletes  cCsFt|d|idjo|iidoti|i|id}|id|i d<|i |i d<|i |i d>> from enum import Enum >>> Colours = Enum('red', 'blue', 'green') >>> Weekdays = Enum('mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun') The return value is an immutable sequence object with a value for each of the string arguments. Each value is also available as an attribute named from the corresponding string argument:: >>> pizza_night = Weekdays[4] >>> shirt_colour = Colours.green The values are constants that can be compared only with values from the same enumeration; comparison with other values will invoke Python's fallback comparisons:: >>> pizza_night == Weekdays.fri True >>> shirt_colour > Colours.red True >>> shirt_colour == "green" False Each value from an enumeration exports its sequence index as an integer, and can be coerced to a simple string matching the original arguments used to create the enumeration:: >>> str(pizza_night) 'fri' >>> shirt_colour.index 2 """ __author_name__ = "Ben Finney" __author_email__ = "ben+python@benfinney.id.au" __author__ = "%s <%s>" % (__author_name__, __author_email__) __date__ = "2006-10-13" __copyright__ = "Copyright © %s %s" % ( __date__.split('-')[0], __author_name__ ) __license__ = "Choice of GPL or Python license" __url__ = "http://cheeseshop.python.org/pypi/enum/" __version__ = "0.4.2" class EnumException(Exception): """ Base class for all exceptions in this module """ def __init__(self): if self.__class__ is EnumException: raise NotImplementedError, \ "%s is an abstract class for subclassing" % self.__class__ class EnumEmptyError(AssertionError, EnumException): """ Raised when attempting to create an empty enumeration """ def __str__(self): return "Enumerations cannot be empty" class EnumBadKeyError(TypeError, EnumException): """ Raised when creating an Enum with non-string keys """ def __init__(self, key): self.key = key def __str__(self): return "Enumeration keys must be strings: %s" % (self.key,) class EnumImmutableError(TypeError, EnumException): """ Raised when attempting to modify an Enum """ def __init__(self, *args): self.args = args def __str__(self): return "Enumeration does not allow modification" class EnumValue(object): """ A specific value of an enumerated type """ def __init__(self, enumtype, index, key): """ Set up a new instance """ self.__enumtype = enumtype self.__index = index self.__key = key def __get_enumtype(self): return self.__enumtype enumtype = property(__get_enumtype) def __get_key(self): return self.__key key = property(__get_key) def __str__(self): return "%s" % (self.key) def __get_index(self): return self.__index index = property(__get_index) def __repr__(self): return "EnumValue(%s, %s, %s)" % ( repr(self.__enumtype), repr(self.__index), repr(self.__key), ) def __hash__(self): return hash(self.__index) def __cmp__(self, other): result = NotImplemented self_type = self.enumtype try: assert self_type == other.enumtype result = cmp(self.index, other.index) except (AssertionError, AttributeError): result = NotImplemented return result class Enum(object): """ Enumerated type """ def __init__(self, *keys, **kwargs): """ Create an enumeration instance """ value_type = kwargs.get('value_type', EnumValue) if not keys: raise EnumEmptyError() keys = tuple(keys) values = [None] * len(keys) for i, key in enumerate(keys): value = value_type(self, i, key) values[i] = value try: super(Enum, self).__setattr__(key, value) except TypeError, e: raise EnumBadKeyError(key) super(Enum, self).__setattr__('_keys', keys) super(Enum, self).__setattr__('_values', values) def __setattr__(self, name, value): raise EnumImmutableError(name) def __delattr__(self, name): raise EnumImmutableError(name) def __len__(self): return len(self._values) def __getitem__(self, index): return self._values[index] def __setitem__(self, index, value): raise EnumImmutableError(index) def __delitem__(self, index): raise EnumImmutableError(index) def __iter__(self): return iter(self._values) def __contains__(self, value): is_member = False if isinstance(value, basestring): is_member = (value in self._keys) else: try: is_member = (value in self._values) except EnumValueCompareError, e: is_member = False return is_member PK 68bؠi i azcalendar/cal_layout.pyc; scCst|i|iS(N(scmpsasget_time_beginsb(sasb((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/cal_layout.pys ssLinecBstZdZRS(NcCsd|_g|_dS(Ni(sselfscursorsevents(sself((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/cal_layout.pys__init__s (s__name__s __module__s__init__(((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/cal_layout.pysLinescCst|i|iS(N(scmpsascursorsb(sasb((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/cal_layout.pysscCs!t|di|diS(Ni(scmpsl1sget_time_beginsl2(sl1sl2((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/cal_layout.pys.sN(s start_rounders end_rounderslistseventsssortsLineslinessevsget_time_begins start_times get_time_endsend_timesNonesfoundslscursorsappends_[1]sret( seventss start_rounders end_roundersliness start_timeslsrets_[1]send_timesfoundsLinesev((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/cal_layout.pyslayouts8      *N(sNoneslayout(slayout((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/cal_layout.pys?sPK 68((azcalendar/upgrade.pyc; = %(time_beg)s AND time_begin < %(time_end)s) OR (time_begin < %(time_beg)s AND time_end >= %(time_end)s ) """ % {'time_beg' : int(stamp1), 'time_end' : int(stamp2), 'selector' : selector} cursor.execute(sql) rows = cursor.fetchall() return [Event.parse_row (row) for row in rows] events_between = classmethod(events_between) PK6B:44azcalendar/upgrade.py"""Methods for schema upgrades.""" from compat import schema_to_sql """ This map contains transition function for each new schema version. Each transition function should contain a docstring with short summary of what's happening, they'll get printed on stdout during the environment upgrade. """ map = {} PK 68 azcalendar/__init__.pyo; Azcalendar(sMarkupsselfsenvshrefs azcalendar(sselfsreq((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pysget_navigation_itemss cCsd|ijSdS(Ns azcalendar(sreqs path_info(sselfsreq((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pys match_request$sc Cst|d|idjo|iidoftidti|idd|id    >cCs|d|df\}}||}|djo+|d8}|dtti|7}nL|dtti|jo+|dtti|8}|d7}nti t |t |d}|SdS(Niiiims%Y%j( s week_startsd_yearsd_doys which_daysdoysintscalendarsisleapstimesstrptimesstrsday(s week_starts which_daysd_doysdaysd_yearsdoy((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pys relative_dayXs   ! "cCsti|dSdS(Ni(stimes localtimesstamp(sstamp((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pys stamp_dowdscCs'ti|}|d|ddSdS(Niif60.0(stimes localtimesstampst(sstampst((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pysstamp_floattimegsics(dk}|i|tSdS(N(smathsfloorsxsDIVsfloat(sxsmath(sDIV(s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pys round_beginms cs(dk}|i|tSdS(N(smathsceilsxsDIVsfloat(sxsmath(sDIV(s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pys round_endqs sdates%Y%m%diiiii<sazcalendar.events.%d.date.yearsazcalendar.events.%d.date.monthisazcalendar.events.%d.date.dayf0.0f24.0s!azcalendar.events.%d.events.%d.%ds.ids.titles .prioritys .brd_begins.brd_ends%d.%m.%Y %H:%Ms%H:%Ms .time_begins .time_endii is %04d%02d%02dsazcalendar.prev_datesazcalendar.today_datesazcalendar.next_datesazcalendar.months.%d.monthsazcalendar.months.%d.yearsazcalendar.months.%d.firstdaysazcalendar.months.%d.numdayssazcalendar.months.%d.impdays.%dsazcalendar.divsCalendarstitleshw/css/azcalendar.csss azcalendar.cs(Vsget_weeks get_months relative_days stamp_dowsstamp_floattimesDIVs round_begins round_endstimesstrptimesreqsargssdates localtimesappends_[1]sxranges_scweeks week_rangesmktimesbgsensEventsevents_betweensselfsenvsauthnamesevsmaxsget_time_beginsbeginsmins get_time_endsendsds week_startsevtss cal_layoutslayouts day_layoutsslenstodays today_stampstomorrow_stampshdfslsget_idsbases get_titlesstrs EventPrioritys get_prioritysintsroundsfmtsstrftimesdisplay_monthssdm_yearsdm_months prev_years prev_monthsprev_dayscalendars monthranges next_years next_monthsnext_daysrangesistuples month_rangesinteresting_dayssprioritysdayskeyssinteresting_days_lsmsmonthsyearsimpdayssnumdayssweekdaysfirstdaysadd_stylesheetsNone(3sselfsreqs round_beginsensprev_days next_monthsls prev_monthstomorrow_stampsimpdayssyearsDIVsevs prev_yearsprioritysendscweeks round_ends week_rangesdays today_stamps get_months week_starts next_yearsinteresting_dayssget_weeksdisplay_monthsstodaysnext_daysbeginsbgs month_rangesinteresting_days_lsevtssfmtsfirstdaysstamp_floattimesbasesdm_monthsdatesmonths_sdm_yearsdsisms day_layoutss_[1]s relative_daysnumdayss stamp_dow((sDIVs9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pys process_show9s     - ,  6      !!!& ,8       F,      A     cCs|iidokdk}|id}|id| o|i|Snti |i |id}|i |i n|i |SdS(Nsids[0-9]+(sreqsargsshas_keysresxidsmatchsselfsprocess_invalidsEvents get_eventsenvsevtsdeletes process_show(sselfsreqsxidsresevt((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/azcalendar.pysprocess_deletes  cCsFt|d|idjo|iidoti|i|id}|id|i d<|i |i d<|i |i d>> from enum import Enum >>> Colours = Enum('red', 'blue', 'green') >>> Weekdays = Enum('mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun') The return value is an immutable sequence object with a value for each of the string arguments. Each value is also available as an attribute named from the corresponding string argument:: >>> pizza_night = Weekdays[4] >>> shirt_colour = Colours.green The values are constants that can be compared only with values from the same enumeration; comparison with other values will invoke Python's fallback comparisons:: >>> pizza_night == Weekdays.fri True >>> shirt_colour > Colours.red True >>> shirt_colour == "green" False Each value from an enumeration exports its sequence index as an integer, and can be coerced to a simple string matching the original arguments used to create the enumeration:: >>> str(pizza_night) 'fri' >>> shirt_colour.index 2 s Ben Finneysben+python@benfinney.id.aus%s <%s>s 2006-10-13sCopyright © %s %ss-isChoice of GPL or Python licenses'http://cheeseshop.python.org/pypi/enum/s0.4.2s EnumExceptioncBstZdZdZRS(s. Base class for all exceptions in this module cCs(|itjotd|indS(Ns'%s is an abstract class for subclassing(sselfs __class__s EnumExceptionsNotImplementedError(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__init__@s(s__name__s __module__s__doc__s__init__(((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys EnumException>s sEnumEmptyErrorcBstZdZdZRS(s7 Raised when attempting to create an empty enumeration cCsdSdS(NsEnumerations cannot be empty((sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__str__Hs(s__name__s __module__s__doc__s__str__(((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pysEnumEmptyErrorEs sEnumBadKeyErrorcBs tZdZdZdZRS(s3 Raised when creating an Enum with non-string keys cCs ||_dS(N(skeysself(sselfskey((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__init__NscCsd|ifSdS(Ns$Enumeration keys must be strings: %s(sselfskey(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__str__Qs(s__name__s __module__s__doc__s__init__s__str__(((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pysEnumBadKeyErrorKs  sEnumImmutableErrorcBs tZdZdZdZRS(s* Raised when attempting to modify an Enum cGs ||_dS(N(sargssself(sselfsargs((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__init__WscCsdSdS(Ns'Enumeration does not allow modification((sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__str__Zs(s__name__s __module__s__doc__s__init__s__str__(((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pysEnumImmutableErrorTs  s EnumValuecBsztZdZdZdZeeZdZeeZdZ dZ ee Z dZ dZ dZRS( s( A specific value of an enumerated type cCs||_||_||_dS(s Set up a new instance N(senumtypesselfs_EnumValue__enumtypesindexs_EnumValue__indexskeys_EnumValue__key(sselfsenumtypesindexskey((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__init__as  cCs |iSdS(N(sselfs_EnumValue__enumtype(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__get_enumtypegscCs |iSdS(N(sselfs_EnumValue__key(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys __get_keykscCsd|iSdS(Ns%s(sselfskey(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__str__oscCs |iSdS(N(sselfs_EnumValue__index(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys __get_indexrscCs0dt|it|it|ifSdS(NsEnumValue(%s, %s, %s)(sreprsselfs_EnumValue__enumtypes_EnumValue__indexs_EnumValue__key(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__repr__vscCst|iSdS(N(shashsselfs_EnumValue__index(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__hash__}scCsit}|i}y0||ijptt|i|i}Wntt fj o t}nX|SdS(N( sNotImplementedsresultsselfsenumtypes self_typesothersAssertionErrorscmpsindexsAttributeError(sselfsothers self_typesresult((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__cmp__s  (s__name__s __module__s__doc__s__init__s_EnumValue__get_enumtypespropertysenumtypes_EnumValue__get_keyskeys__str__s_EnumValue__get_indexsindexs__repr__s__hash__s__cmp__(((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys EnumValue^s           sEnumcBs_tZdZdZdZdZdZdZdZdZ dZ d Z RS( s Enumerated type c Os|idt}| o tnt|}tgt|}xwt |D]i\}}||||}|||>> from enum import Enum >>> Colours = Enum('red', 'blue', 'green') >>> Weekdays = Enum('mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun') The return value is an immutable sequence object with a value for each of the string arguments. Each value is also available as an attribute named from the corresponding string argument:: >>> pizza_night = Weekdays[4] >>> shirt_colour = Colours.green The values are constants that can be compared only with values from the same enumeration; comparison with other values will invoke Python's fallback comparisons:: >>> pizza_night == Weekdays.fri True >>> shirt_colour > Colours.red True >>> shirt_colour == "green" False Each value from an enumeration exports its sequence index as an integer, and can be coerced to a simple string matching the original arguments used to create the enumeration:: >>> str(pizza_night) 'fri' >>> shirt_colour.index 2 s Ben Finneysben+python@benfinney.id.aus%s <%s>s 2006-10-13sCopyright © %s %ss-isChoice of GPL or Python licenses'http://cheeseshop.python.org/pypi/enum/s0.4.2s EnumExceptioncBstZdZdZRS(s. Base class for all exceptions in this module cCs(|itjotd|indS(Ns'%s is an abstract class for subclassing(sselfs __class__s EnumExceptionsNotImplementedError(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__init__@s(s__name__s __module__s__doc__s__init__(((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys EnumException>s sEnumEmptyErrorcBstZdZdZRS(s7 Raised when attempting to create an empty enumeration cCsdSdS(NsEnumerations cannot be empty((sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__str__Hs(s__name__s __module__s__doc__s__str__(((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pysEnumEmptyErrorEs sEnumBadKeyErrorcBs tZdZdZdZRS(s3 Raised when creating an Enum with non-string keys cCs ||_dS(N(skeysself(sselfskey((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__init__NscCsd|ifSdS(Ns$Enumeration keys must be strings: %s(sselfskey(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__str__Qs(s__name__s __module__s__doc__s__init__s__str__(((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pysEnumBadKeyErrorKs  sEnumImmutableErrorcBs tZdZdZdZRS(s* Raised when attempting to modify an Enum cGs ||_dS(N(sargssself(sselfsargs((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__init__WscCsdSdS(Ns'Enumeration does not allow modification((sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__str__Zs(s__name__s __module__s__doc__s__init__s__str__(((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pysEnumImmutableErrorTs  s EnumValuecBsztZdZdZdZeeZdZeeZdZ dZ ee Z dZ dZ dZRS( s( A specific value of an enumerated type cCs||_||_||_dS(s Set up a new instance N(senumtypesselfs_EnumValue__enumtypesindexs_EnumValue__indexskeys_EnumValue__key(sselfsenumtypesindexskey((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__init__as  cCs |iSdS(N(sselfs_EnumValue__enumtype(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__get_enumtypegscCs |iSdS(N(sselfs_EnumValue__key(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys __get_keykscCsd|iSdS(Ns%s(sselfskey(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__str__oscCs |iSdS(N(sselfs_EnumValue__index(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys __get_indexrscCs0dt|it|it|ifSdS(NsEnumValue(%s, %s, %s)(sreprsselfs_EnumValue__enumtypes_EnumValue__indexs_EnumValue__key(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__repr__vscCst|iSdS(N(shashsselfs_EnumValue__index(sself((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__hash__}scCsRt}|i}yt|i|i}Wntt fj o t}nX|SdS(N( sNotImplementedsresultsselfsenumtypes self_typescmpsindexsothersAssertionErrorsAttributeError(sselfsothers self_typesresult((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys__cmp__s  (s__name__s __module__s__doc__s__init__s_EnumValue__get_enumtypespropertysenumtypes_EnumValue__get_keyskeys__str__s_EnumValue__get_indexsindexs__repr__s__hash__s__cmp__(((s3build/bdist.darwin-8.0.1-x86/egg/azcalendar/enum.pys EnumValue^s           sEnumcBs_tZdZdZdZdZdZdZdZdZ dZ d Z RS( s Enumerated type c Os|idt}| o tnt|}tgt|}xwt |D]i\}}||||}|||sN( sTsintstypessappends_[1]szipsrowstsvsinitsEvent(sclssrowsts_[1]sinitsTsvstypes((s4build/bdist.darwin-8.0.1-x86/egg/azcalendar/event.pys parse_rows  !<c Csdk} |i}|i}|djo d} n d|} dhdt|<dt|<d| <}|i ||i }gi} |D]} | ti| q~ SdS( s Given a time window = %(time_beg)s AND time_begin < %(time_end)s) OR (time_begin < %(time_beg)s AND time_end >= %(time_end)s ) stime_begstime_endsselector(stimesenvs get_db_cnxsdbscursorsusersselectorsintsstamp1sstamp2ssqlsexecutesfetchallsrowssappends_[1]srowsEvents parse_row( sclssenvsstamp1sstamp2suserscursorsrowsssqlsdbsselectors_[1]stimesrow((s4build/bdist.darwin-8.0.1-x86/egg/azcalendar/event.pysevents_betweens      1  (s__name__s __module__sTablesColumnsTruesIndexs_schemas__init__sget_ids get_authorsget_time_updatesget_time_insertsget_time_begins get_time_ends get_titles get_prioritysget_types set_prioritysset_types set_titles set_authors set_time_endsset_time_beginsset_time_updates get_events classmethodsupdatessavesdeletes parse_rowsevents_between(((s4build/bdist.darwin-8.0.1-x86/egg/azcalendar/event.pysEvents6                      ( senumstrac.dbsTablesColumnsIndexsEnums EventPrioritys EventTypesEvent(sIndexsColumns EventTypesenumsEventsTables EventPriority((s4build/bdist.darwin-8.0.1-x86/egg/azcalendar/event.pys?s PK 68 azcalendar/__init__.pyc; scCst|i|iS(N(scmpsasget_time_beginsb(sasb((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/cal_layout.pys ssLinecBstZdZRS(NcCsd|_g|_dS(Ni(sselfscursorsevents(sself((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/cal_layout.pys__init__s (s__name__s __module__s__init__(((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/cal_layout.pysLinescCst|i|iS(N(scmpsascursorsb(sasb((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/cal_layout.pysscCs!t|di|diS(Ni(scmpsl1sget_time_beginsl2(sl1sl2((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/cal_layout.pys.sN(s start_rounders end_rounderslistseventsssortsLineslinessevsget_time_begins start_times get_time_endsend_timesNonesfoundslscursorsappends_[1]sret( seventss start_rounders end_roundersliness start_timeslsrets_[1]send_timesfoundsLinesev((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/cal_layout.pyslayouts8      *N(sNoneslayout(slayout((s9build/bdist.darwin-8.0.1-x86/egg/azcalendar/cal_layout.pys?sPK6VJazcalendar/compat.py# Copyright (C) 2006 Christopher Lenz # All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms # are also available at http://bitten.cmlenz.net/wiki/License. """Various methods for backwards compatibility with older Trac versions.""" def schema_to_sql(env, db, table): try: # Trac >= 0.10 from trac.db import DatabaseManager connector, _ = DatabaseManager(env)._get_connector() return connector.to_sql(table) except ImportError: # Trac 0.9.x return db.to_sql(table) PKj604@4@azcalendar/azcalendar.py# -*-coding:utf-8-*- import textwrap from trac.core import * from trac.web.chrome import INavigationContributor, ITemplateProvider, add_stylesheet from trac.web.main import IRequestHandler from trac.util import escape, Markup from trac.env import IEnvironmentSetupParticipant from trac.perm import IPermissionRequestor from schema import schema, schema_version, Event, EventPriority, EventType from compat import schema_to_sql import time import calendar import cal_layout class UserbaseModule(Component): implements(INavigationContributor, IRequestHandler, ITemplateProvider, IEnvironmentSetupParticipant, IPermissionRequestor) # INavigationContributor methods def get_active_navigation_item(self, req): return 'azcalendar' def get_navigation_items(self, req): yield 'mainnav', 'azcalendar', Markup('Azcalendar', self.env.href.azcalendar()) # IRequestHandler methods def match_request(self, req): return "azcalendar" in req.path_info def process_add(self, req): add_stylesheet (req, 'hw/css/azcalendar.css') if req.method == 'GET' and req.args.has_key('date'): req.hdf['azcalendar.time_begin'] = time.strftime("%Y/%m/%d",(time.strptime(req.args['date'],"%Y%m%d"))) req.hdf['azcalendar.time_end'] = time.strftime("%Y/%m/%d",(time.strptime(req.args['date'],"%Y%m%d"))) return 'add_event.cs', None elif req.method == 'GET' and req.args.has_key('new_event'): begin_t = int(time.mktime(time.strptime(req.args['time_begin'],"%Y/%m/%d %H:%M"))) end_t = int(time.mktime(time.strptime(req.args['time_end'],"%Y/%m/%d %H:%M"))) date = time.strftime("%Y%m%d",(time.strptime(req.args['time_begin'],"%Y/%m/%d %H:%M"))) req.hdf['redir_url'] = str(self.env.href.azcalendar()) + "?date=%s" % date current_time = int(time.time()) #id = 0 -> its autocreated by DB author = req.authname evt = Event(0,author,current_time, current_time, begin_t, end_t, req.args['type'], req.args['priority'], req.args['title']) return evt.save( self.env, req ) def process_show(self, req): def get_week(date): # If there is a simpler way to do this, let me know. For now... d_year, d_doy, d_dow = date[0], date[-2], date[-3] doy_start = d_doy - d_dow y_start = d_year if doy_start < 1: y_start -= 1 doy_start += 365 + int (calendar.isleap (y_start)) doy_end = d_doy - d_dow + 7 y_end = d_year if doy_end > 365 + int (calendar.isleap (y_end)): doy_end -= 365 + int (calendar.isleap (y_end)) y_end += 1 week_start = time.strptime (str(y_start) + str(doy_start), "%Y%j") week_end = time.strptime (str(y_end) + str(doy_end), "%Y%j") return week_start, week_end def get_month(date): d_year, d_month = date[0], date[1] month_start = tuple([d_year, d_month, 1] + [0 for _ in date[3:]]) d_month = d_month + 1 if d_month > 12: d_year += 1 d_month = 1 month_end = tuple([d_year, d_month, 1] + [0 for _ in date[3:]]) return month_start, month_end def relative_day(week_start, which_day): d_year, d_doy = week_start[0], week_start[-2] doy = d_doy + which_day if doy < 1: d_year -= 1 doy += 365 + int (calendar.isleap (d_year)) elif doy > 365 + int (calendar.isleap (d_year)): doy -= 365 + int (calendar.isleap (d_year)) d_year += 1 day = time.strptime (str(d_year) + str(doy), "%Y%j") return day def stamp_dow (stamp): return time.localtime(stamp)[6] def stamp_floattime (stamp): t = time.localtime(stamp) return t[3] + t[4]/60.0 DIV = 4 def round_begin (x): import math return math.floor (x * DIV) / float (DIV) def round_end (x): import math return math.ceil (x * DIV) / float (DIV) try: date = time.strptime(req.args['date'],"%Y%m%d") except: date = time.localtime () cweek = [[] for _ in xrange(7)] week_range = get_week(date) bg, en = time.mktime(week_range[0]), time.mktime(week_range[1]) for ev in Event.events_between (self.env, bg, en,req.authname): begin = max (bg, ev.get_time_begin ()) end = min (en, ev.get_time_end ()) - 1 for d in xrange(stamp_dow(begin), stamp_dow(end)+1): cweek[d].append(ev) week_start = week_range[0] day_layouts = [cal_layout.layout (evts, round_begin, round_end) for evts in cweek] for d in xrange (len (day_layouts)): today = relative_day(week_start, d) today_stamp = time.mktime (today) tomorrow_stamp = today_stamp + 24 * 60 * 60 req.hdf['azcalendar.events.%d.date.year' % d] = today[0] req.hdf['azcalendar.events.%d.date.month' % d] = today[1] req.hdf['azcalendar.events.%d.date.day' % d] = today[2] for l in xrange (len (day_layouts[d])): for ev in day_layouts[d][l]: begin = ev.get_time_begin () if begin < today_stamp: begin = 0.0 else: begin = round_begin (stamp_floattime (begin)) end = ev.get_time_end () if end >= tomorrow_stamp: end = 24.0 else: end = round_end (stamp_floattime (end)) base = 'azcalendar.events.%d.events.%d.%d' % (d, l, ev.get_id ()) req.hdf[base + '.id'] = ev.get_id () req.hdf[base + '.title'] = ev.get_title () req.hdf[base + '.priority'] = str(EventPriority[ev.get_priority ()]) req.hdf[base + '.brd_begin'] = int (round (begin * DIV)) req.hdf[base + '.brd_end'] = int (round (end * DIV)) if ev.get_time_begin () < today_stamp or ev.get_time_end () > tomorrow_stamp: fmt = "%d.%m.%Y %H:%M" else: fmt = "%H:%M" req.hdf[base + '.time_begin'] = time.strftime (fmt, time.localtime (ev.get_time_begin())) req.hdf[base + '.time_end'] = time.strftime (fmt, time.localtime (ev.get_time_end())) display_months = [] dm_year, dm_month = get_month (week_start)[0][:2] prev_year, prev_month, prev_day = date[:3] prev_month -= 1 if prev_month < 1: prev_month += 12 prev_year -= 1 prev_day = min (calendar.monthrange (prev_year, prev_month)[1], prev_day) next_year, next_month, next_day = date[:3] next_month += 1 if next_month > 12: next_month -= 12 next_year += 1 next_day = min (calendar.monthrange (next_year, next_month)[1], next_day) for i in range(3): month_range = get_month (tuple([dm_year, dm_month, 1] + [0 for i in range(6)])) interesting_days = {} bg, en = time.mktime(month_range[0]), time.mktime(month_range[1]) evts = Event.events_between (self.env, bg, en, req.authname) for ev in evts: begin = ev.get_time_begin() if begin < bg: begin = 1 else: begin = time.localtime(begin)[2] end = ev.get_time_end() if end > en: end = calendar.monthrange(dm_year, dm_month)[1] else: end = time.localtime(end)[2] priority = ev.get_priority() # Mark interesting days. for day in range (begin, end + 1): if day not in interesting_days or interesting_days[day] < priority: interesting_days[day] = priority interesting_days_l = [(day, str(EventPriority[interesting_days[day]])) for day in interesting_days.keys()] display_months.append ((dm_month - 1, dm_year, interesting_days_l)) dm_month += 1 if dm_month > 12: dm_year += 1 dm_month = 1 req.hdf['azcalendar.prev_date'] = "%04d%02d%02d" % (prev_year, prev_month, prev_day) req.hdf['azcalendar.today_date'] = time.strftime ("%Y%m%d") req.hdf['azcalendar.next_date'] = "%04d%02d%02d" % (next_year, next_month, next_day) for m in xrange (len (display_months)): month, year, impdays = display_months[m] _, numdays = calendar.monthrange (year, month + 1) firstday = calendar.weekday(year, month + 1, 1) req.hdf['azcalendar.months.%d.month' % m] = month req.hdf['azcalendar.months.%d.year' % m] = year req.hdf['azcalendar.months.%d.firstday' % m] = firstday req.hdf['azcalendar.months.%d.numdays' % m] = numdays for d in xrange (len (impdays)): day, priority = impdays[d] req.hdf['azcalendar.months.%d.impdays.%d' % (m, day)] = priority req.hdf['azcalendar.div'] = str(DIV) req.hdf['title'] = "Calendar" add_stylesheet (req, 'hw/css/azcalendar.css') return 'azcalendar.cs', None def process_delete(self, req): if req.args.has_key('id'): import re xid = req.args['id']; if not re.match (r"[0-9]+", xid): return self.process_invalid(req) evt = Event.get_event(self.env,req.args['id']) evt.delete(self.env) return self.process_show(req) def process_event(self, req): add_stylesheet (req, 'hw/css/azcalendar.css') if req.method == 'GET' and req.args.has_key('id'): evt = Event.get_event(self.env,req.args['id']) req.hdf['azcalendar.evid'] = req.args['id'] req.hdf['azcalendar.title'] = evt.get_title() req.hdf['azcalendar.author'] = evt.get_author() req.hdf['azcalendar.time_begin'] = time.strftime("%Y/%m/%d %H:%M",time.localtime(evt.get_time_begin())) req.hdf['azcalendar.time_end'] = time.strftime("%Y/%m/%d %H:%M",time.localtime(evt.get_time_end())) req.hdf['azcalendar.event.'+str(EventType[evt.get_type()])] = 1 req.hdf['azcalendar.priority.'+str(EventPriority[evt.get_priority()])] = 1 req.hdf['azcalendar.last_update'] = time.strftime("%Y/%m/%d %H:%M:%S",time.localtime(evt.get_time_update())) return 'azevent.cs', None elif req.method == 'GET' and req.args.has_key('update_event'): evt = Event.get_event(self.env,req.args['evid']) #evt.set_author(req.authname) evt.set_type(req.args['type']) evt.set_priority(req.args['priority']) evt.set_time_update(int(time.time())) evt.set_time_begin(int(time.mktime(time.strptime(req.args['time_begin'],"%Y/%m/%d %H:%M")))) evt.set_time_end(int(time.mktime(time.strptime(req.args['time_end'],"%Y/%m/%d %H:%M")))) evt.set_title(req.args['title']) date = time.strftime("%Y%m%d",(time.strptime(req.args['time_begin'],"%Y/%m/%d %H:%M"))) req.hdf['redir_url'] = str(self.env.href.azcalendar()) + "?date=%s" % date return evt.update(self.env, req) elif req.method == 'GET' and req.args.has_key('delete_event'): evt = Event.get_event(self.env,req.args['evid']) date = time.strftime("%Y%m%d",(time.strptime(req.args['time_begin'],"%Y/%m/%d %H:%M"))) req.hdf['redir_url'] = str(self.env.href.azcalendar()) + "?date=%s" % date return evt.delete(self.env) def process_invalid(self, req): add_stylesheet (req, 'hw/css/azcalendar.css') req.hdf['title'] = "Calendar: Error" req.hdf['azcalendar.reason'] = "Invalid request." return 'azerror.cs', None def process_request(self, req): KEY = "/azcalendar" query = req.path_info[req.path_info.index (KEY):] import re if not re.match ("%s(/add|/delete|/event)?($|\?.*)" % KEY, query): return self.process_invalid(req) elif KEY + "/add" in query: return self.process_add(req) elif KEY + "/delete" in query: return self.process_delete(req) elif KEY + "/event" in query: return self.process_event(req) else: return self.process_show(req) # ITemplateProvider methods def get_templates_dirs(self): """Return a list of directories containing the provided ClearSilver templates. """ from pkg_resources import resource_filename return [resource_filename(__name__, 'templates')] def get_htdocs_dirs(self): """Return a list of directories with static resources (such as style sheets, images, etc.) Each item in the list must be a `(prefix, abspath)` tuple. The `prefix` part defines the path in the URL that requests to these resources are prefixed with. The `abspath` is the absolute path to the directory containing the resources on the local file system. """ from pkg_resources import resource_filename return [('hw', resource_filename(__name__, 'htdocs'))] # IEnvironmentSetupParticipant methods def environment_created(self): """Called when a new Trac environment is created.""" db = self.env.get_db_cnx() cursor = db.cursor() # Insert a global version flag cursor.execute("INSERT INTO system (name,value) " "VALUES ('azcalendar_version',%s)", (schema_version,)) # Create the required tables for table in schema: for stmt in schema_to_sql(self.env, db, table): cursor.execute(stmt) db.commit() def environment_needs_upgrade(self, db): """Called when Trac checks whether the environment needs to be upgraded. Should return `True` if this participant needs an upgrade to be performed, `False` otherwise. """ cursor = db.cursor() cursor.execute("SELECT value FROM system WHERE name='azcalendar_version'") row = cursor.fetchone() if not row or int(row[0]) < schema_version: return True else: return False def upgrade_environment(self, db): """Actually perform an environment upgrade. Implementations of this method should not commit any database transactions. This is done implicitly after all participants have performed the upgrades they need without an error being raised. """ cursor = db.cursor() cursor.execute("SELECT value FROM system WHERE name='azcalendar_version'") row = cursor.fetchone() if not row: self.environment_created() else: current_version = int(row[0]) import upgrade for version in range(current_version + 1, schema_version + 1): for function in upgrade.map.get(version): print textwrap.fill(inspect.getdoc(function)) function(self.env, db) print 'Done.' cursor.execute("UPDATE system SET value=%s WHERE " "name='azcalendar_version'", (schema_version,)) self.log.info('Upgraded Aztech Calendar tables from version %d to %d', current_version, schema_version) # IPermissionRequestor methods def get_permission_actions(self): actions = [('CAL_ADMIN', ('CAL_EDIT',)), ('CAL_EDIT', ('CAL_VIEW',)), 'CAL_VIEW'] return actions PK6 ̗azcalendar/cal_layout.pydef layout (events, start_rounder = None, end_rounder = None): """ Calendar layout. Takes a bunch of events defined by start and end stamps, and distributes them into several lines, so that no events in one line overlap. """ if not start_rounder: start_rounder = lambda x:x if not end_rounder: end_rounder = lambda x:x events = list (events) events.sort (lambda a, b: cmp (a.get_time_begin(), b.get_time_begin())) class Line: def __init__ (self): self.cursor = 0 self.events = [] lines = [] for ev in events: start_time = start_rounder (ev.get_time_begin()) end_time = end_rounder (ev.get_time_end()) # Look if there is a line whose last filled cell is before # start_time of this event. If there are more, choose the # tightest fit. lines.sort (lambda a, b: cmp (a.cursor, b.cursor)) found = None for l in lines: if l.cursor <= start_time: found = l else: break # No line fits? Add new! if not found: found = Line () lines.append (found) # Enter the event into the line. found.cursor = end_time found.events.append (ev) ret = [l.events for l in lines] ret.sort (lambda l1, l2: cmp (l1[0].get_time_begin(), l2[0].get_time_begin())) return ret PK6zjj"azcalendar/htdocs/images/aztec.jpgJFIFC     "" $(4,$&1'-=-157:::#+?D?8C49:7C 7%%77777777777777777777777777777777777777777777777777_"G !1AQ"a#q$25Rt3BCTbS7c0!1AQ"q#2a3R ?@X5t JV(4]E ni:9dPՅ1G 25DE(rkJ+zq;PPҙ3P hqt5öGg♨>Ri/$h~?OLp9ןGXMO%DK,x' J1|d9R\0|UP!T&$<gy `. #H n)#w@#F ѩRoT@ ۍD'1H}D`#I>zpoNk:&IupI,a24g> QSV[$2y9:_ANZ rvpaǘ#}@KK\T ,;"w= hk`m$h 0?'@KrZ ?h n|wO$#^j.Rżk`ku*^zƩ@~~'\T׷VOda*>gʚTSTCL/iWv%G~!w7O%֘OgU(aC'<ud4pCÚJ8fkEDe}#'%]s墽IS]&&p΀9ƠZiCrLJq ;j-F 憢f"RXȇkNx4hƮH]Z*C]Z&bYmky'Ђ{1"}@Due#EB~"203%jG "I8=|7!O~12S*0Ǟ}Nn8M+O׋[<X. Wk&F +*0HϞ5n+PT R 5U#▩2@| =]u0{Zdc8 .q@RhWj~lc5/:A#X5IyS~߿H?eWolàT} 1\}Xio7P)R:[s8 '~FoնBN ǧ0tκB\IJ퐧>p =_3(]D#!\8s呝|4 ʮƗJ@OFg6TӁQ]$eRTd wОj0KHe7BI;NUyՔ,jRnay=OEZ+*D1N9O0@aЌƧafX۰l\L[C 3"zz/7 W)nTSDdm2?e<}Y5uz 'Zi X $98ny&KudU 2Ki3+$1۟M Z)g 7clZv@VR[V1F3#6AfjeZOI<aW (f rAQ롗NeɶIĪ0_'.țQ)m^)@򻕲Gp~z#Q/Yh@ff)bĝm`t.i:Kth,T Ǔ j5; OGvaQTVS* E*_۪'0Jd3[(wF) jB,:-@-9oEoPL;~2~HuecݞigFhbɿ2~^)i' ˜).Q{D\kujdČH!PLdЍ@[\%,E2߰;}֪E9i_n3܁sy˰Gi^#GFFt\]I\>Z`i@X3g@(i⦮ b;G߸V~ZK\nxܿhņNAh,UҶR\ *OpCpqzJۖP嫪NcicOU90\dyDzg *q؁FV&rՔ%|HdE@+ ,C,soRL ۂOi JO4:ȕū#v!60OO|w^VM=+gÚBShܮ?ͽWAuMBUQ'C}t(`Z믚 ku[TUjdH8Sih>EHnG4W봡*>E`ѯe֪;P=m]4*GA=xyы?KS:7 Rd̠gi'FH N!ZKX`JfIWSdr>Z =Xbc ? 0A~~zbiOF(/4-*O;r 1ʓ#.ǒEb.#kzzYTSnnA#A=/C O$w߭|/<)0@ )Zvy,ӘtK$>+dwѡUΛ.D9Ɋ!ʐ"E{>Άnhߩ'“].\dUoyu +m׎:ˑ;HԂ]y&;1dbyA>\JV I PYW'>åR쨼8Ieixx98$Van?]UYjmtkWSM G۸|ʏAfRB*A1$g(B9#8jNG-m,5O  ؐoiKKGdF(C*>pw Nx>^L\ ꣻzX0ۏN4iޘ{]3l;+t2.х "(क़+aq,G٭5bLo YX.2Ju 2& *1`H=vkty2srǃTy18]:VI`-㾕DH)ޏCZv*%)f*Q:f$eQ8=r~E|*⤨i6ܭfٞ4:S,;~VH|翠\URu;}ʏFZ.M1gn|@O]U^Kie ˜r1Q 9g2, 3`y]0 Smt2KSQ FgЁw_Y\c~4؈k~WnrZᣨ Oᝎ6?W?ݣ=HWtviC1t­4)N d/%IΦ][Fvg<;sNwi ":O/-iT ,[509CE6 e 8@zps1ό,t3!m1T>-ئݨZuQrץc+e { P/Ek]tuzjmSt C݊2ՑvևQߖ$ҫr@k5ƻPCGHu

Comments:

  • Last update: by
PKj6Ē(Vazcalendar/templates/azerror.cs
An error has occured: .
PKB6py!azcalendar/templates/azweekcal.cs
+= 4 ?>
1 ?> 0 ?> 0 ?>
  -
  
 
PK6V"azcalendar/templates/azcalendar.cs PK6_+rrazcalendar/templates/azdays.csMonTueWedThuFriSatSunDay JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecemberMonth PK6`UĔ azcalendar/templates/redirect.cs

Working...

PK6K"azcalendar/templates/azmonthcal.cs
  class='' class='day' >  
 
PK6c!azcalendar/templates/add_event.cs
--







PK682EGG-INFO/zip-safe PK68R zzEGG-INFO/SOURCES.txtsetup.py AztechCalendar.egg-info/PKG-INFO AztechCalendar.egg-info/SOURCES.txt AztechCalendar.egg-info/dependency_links.txt AztechCalendar.egg-info/entry_points.txt AztechCalendar.egg-info/top_level.txt azcalendar/__init__.py azcalendar/azcalendar.py azcalendar/cal_layout.py azcalendar/compat.py azcalendar/enum.py azcalendar/event.py azcalendar/schema.py azcalendar/upgrade.py PK68 z>>EGG-INFO/entry_points.txt[trac.plugins] azcalendar.azcalendar = azcalendar.azcalendar PK682EGG-INFO/dependency_links.txt PK68J}""EGG-INFO/PKG-INFOMetadata-Version: 1.0 Name: AztechCalendar Version: 0.1 Summary: Calendar for Trac Home-page: http://www.trac-hacks.org/wiki/CalendarPlugin Author: Petr Machata, Jiří Moskovčák Author-email: pmachata@gmail.com License: BSD Description: UNKNOWN Keywords: trac calendar Platform: UNKNOWN PK68|P EGG-INFO/top_level.txtazcalendar PK 68Իeazcalendar/compat.pycPK 689ᐫ((azcalendar/event.pyoPK6xCH--+azcalendar/__init__.pyPK 68`4KK),azcalendar/azcalendar.pycPK 68Իe.xazcalendar/compat.pyoPK6ό4{azcalendar/enum.pyPK 68bؠi i azcalendar/cal_layout.pycPK 68((azcalendar/upgrade.pycPK 68ׇ azcalendar/schema.pyoPKj6%azcalendar/event.pyPK6B:44azcalendar/upgrade.pyPK 68 azcalendar/__init__.pyoPK68`4KKazcalendar/azcalendar.pyoPK 68ׇ azcalendar/schema.pycPK 68JoC((azcalendar/enum.pycPK6]]-azcalendar/schema.pyPK 68((.azcalendar/upgrade.pyoPK 68iD''/azcalendar/enum.pyoPK 689ᐫ((Xazcalendar/event.pycPK 68 Ӏazcalendar/__init__.pycPK68bؠi i azcalendar/cal_layout.pyoPK6VJPazcalendar/compat.pyPKj604@4@azcalendar/azcalendar.pyPK6 ̗oazcalendar/cal_layout.pyPK6zjj"<azcalendar/htdocs/images/aztec.jpgPK66Cǃ$azcalendar/htdocs/css/azcalendar.cssPK6azcalendar/templates/azevent.csPKj6Ē(Vazcalendar/templates/azerror.csPKB6py!azcalendar/templates/azweekcal.csPK6V"zazcalendar/templates/azcalendar.csPK6_+rrazcalendar/templates/azdays.csPK6`UĔ azcalendar/templates/redirect.csPK6K"Vazcalendar/templates/azmonthcal.csPK6c!"azcalendar/templates/add_event.csPK682)EGG-INFO/zip-safePK68R zz)EGG-INFO/SOURCES.txtPK68 z>>+EGG-INFO/entry_points.txtPK682 ,EGG-INFO/dependency_links.txtPK68J}""I,EGG-INFO/PKG-INFOPK68|P -EGG-INFO/top_level.txtPK(( -