X-Git-Url: https://git.ucc.asn.au/?p=frenchie%2Ficalparse.git;a=blobdiff_plain;f=parserrules.py;h=7db0413af970c2ecdf0fd5b99e17fd9d1ec32eb5;hp=4bb0dd5136c208be08f159c01cdc69e9bf2c63f9;hb=HEAD;hpb=553b97883f1e72ba2d5857c8c7222dd6bb25f40d diff --git a/parserrules.py b/parserrules.py index 4bb0dd5..7db0413 100644 --- a/parserrules.py +++ b/parserrules.py @@ -34,11 +34,14 @@ ruleConfig["defaultTZ"] = "UTC" def facebookOrganiser(cal): '''Adds organiser details to the body of facebook calendars.''' - if cal.contents.has_key(u'prodid'): + if 'prodid' in cal.contents: if not "Facebook" in cal.prodid.value: return cal + if 'vevent_list' not in dir(cal): + return cal + for event in cal.vevent_list: - if not event.contents.has_key(u'organizer'): continue + if 'organizer' not in event.contents: continue try: a = event.organizer.cn_paramlist organizer = "Organised by: " + event.organizer.cn_param + " (" @@ -52,16 +55,24 @@ def facebookOrganiser(cal): def whatPrivacy(cal): '''Marks events public so google calendar doesn't have a sad about them.''' + if 'vevent_list' not in dir(cal): + return cal + for event in cal.vevent_list: - if event.contents.has_key(u'class'): + if 'class' in event.contents: # Bit of a hack as class is a reserved word in python - del event.contents[u'class'] + del event.contents['class'] event.add('class').value = "PUBLIC" return cal def dropAttributes(cal): '''Removing unwanted metadata''' + if "facebook" in ruleConfig: + if ruleConfig["facebook"] == True: return cal + + if 'vevent_list' not in dir(cal): + return cal eventBlacklist = [x.lower() for x in [ "X-ALT-DESC", @@ -94,7 +105,7 @@ def dropAttributes(cal): for event in cal.vevent_list: for blacklist in eventBlacklist: - if event.contents.has_key(blacklist): del event.contents[blacklist] + if blacklist in event.contents: del event.contents[blacklist] for blkl in mainBlacklist: while blkl in cal.contents: del cal.contents[blkl] @@ -103,6 +114,11 @@ def dropAttributes(cal): def exDate(cal): '''Replacing multi-value EXDATES with multiple single-value EXDATES''' + if "facebook" in ruleConfig: + if ruleConfig["facebook"] == True: return cal + + if 'vevent_list' not in dir(cal): + return cal from datetime import datetime from pytz import timezone @@ -110,16 +126,16 @@ def exDate(cal): default = timezone(ruleConfig["defaultTZ"]) for event in cal.vevent_list: - if not event.contents.has_key(u'exdate'): continue + if 'exdate' not in event.contents: continue dates = event.exdate.value - del event.contents[u'exdate'] + del event.contents['exdate'] for date in dates: if isinstance(date, datetime): if date.tzinfo is None: date = date.replace(tzinfo = default) date = date.astimezone(vobject.icalendar.utc) - entry = event.add(u'exdate') + entry = event.add('exdate') entry.value = [date] return cal @@ -128,6 +144,9 @@ def utcise(cal): '''Removing local timezones in favour of UTC. If the remote calendar specifies a timezone then use it, otherwise assume it's in the user-specified or default values''' + if 'vevent_list' not in dir(cal): + return cal + from datetime import datetime from pytz import timezone @@ -155,6 +174,9 @@ def unwantedParams(cal): "TZID" ] + if 'vevent_list' not in dir(cal): + return cal + for event in cal.vevent_list: for attr in event.contents: attr = getattr(event, attr)