def convert_to_calendar(data): dict_calendar = { "format": CALENDAR, } pattern_frequence = '' if data['frequence'] == EVERYMONTH: pattern_frequence = MONTHLY elif data['frequence'] == EVERYWEEK: pattern_frequence = WEEKLY elif data['frequence'] == EVERYDAY: pattern_frequence = DAILY calendar_event = Event() rule_pattern = { 'freq': pattern_frequence, 'byhour': data["time"].hour, 'byminute': data["time"].minute, } if pattern_frequence == MONTHLY: rule_pattern['bymonthday'] = data["date"] elif pattern_frequence == WEEKLY: rule_pattern['byday'] = CALENDAR_DAY_DICT[data["day"]] calendar_event.add('rrule', rule_pattern) dict_calendar['pattern'] = calendar_event.to_ical() return dict_calendar
def icalForEvent(self, row): cal = Event() cal['title'] = row['title'] cal['summary'] = row['summary'] cal['description'] = row['description'] cal.add('dtstart', row['dtStart']) return cal.to_ical().replace('\r\n', '\n').strip()
def to_ical(self): """Returns the iCal event representation of an employee hire date. Currently, the event only contains the following fields: - ``title`` - ``dtstart`` - ``dtend`` The event is an all-day event because dates are specified vs. dates and times. Returns: str: The iCal event representation of an employee hire date. """ current_year = date.today().year event = Event() event.add('uid', uuid.uuid4()) event.add('summary', '{} {} (Started: {})'.format( self.preferred_name or self.first_name, self.last_name, self.hire_date.strftime('%Y-%m-%d'))) event.add('dtstamp', datetime(current_year, self.hire_date.month, self.hire_date.day)) event.add('dtstart', date(current_year, self.hire_date.month, self.hire_date.day)) return event.to_ical()
def export_event(self): """Exports the event to ics""" cal = Eve() cal.add('summary', str(self.categories)) cal.add('description', self.label) cal.add('dtstart', vDatetime(self.start)) cal.add('dtend', vDatetime(self.end)) return cal.to_ical()
def as_vevent(value): """Conver an event in to a vevent string""" event = Event() event.add('dtstamp', value.start) event.add('dtstart', value.start) event.add('duration', timezone.timedelta(hours=2, minutes=30)) event.add('summary', value.title) event.add('description', value.presstext) return event.to_ical()
def test_unicode_param(self): cal_address = vCalAddress('mailto:[email protected]') cal_address.params["CN"] = "Джон Доу" vevent = Event() vevent['ORGANIZER'] = cal_address self.assertEqual( vevent.to_ical().decode('utf-8'), u'BEGIN:VEVENT\r\n' u'ORGANIZER;CN="Джон Доу":mailto:[email protected]\r\n' u'END:VEVENT\r\n') self.assertEqual(vevent['ORGANIZER'].params['CN'], 'Джон Доу')
def test_unicode_param(self): cal_address = vCalAddress("mailto:[email protected]") cal_address.params["CN"] = "Джон Доу" vevent = Event() vevent["ORGANIZER"] = cal_address self.assertEqual( vevent.to_ical().decode("utf-8"), u"BEGIN:VEVENT\r\n" u'ORGANIZER;CN="Джон Доу":mailto:[email protected]\r\n' u"END:VEVENT\r\n", ) self.assertEqual(vevent["ORGANIZER"].params["CN"], "Джон Доу")
def _test_quoting(self, cn_param, cn_quoted): """ @param cn_param: CN parameter value to test for quoting @param cn_quoted: expected quoted parameter in icalendar format """ vevent = Event() attendee = vCalAddress('*****@*****.**') attendee.params['CN'] = cn_param vevent.add('ATTENDEE', attendee) self.assertEqual( vevent.to_ical(), b'BEGIN:VEVENT\r\nATTENDEE;CN=' + cn_quoted.encode('utf-8') + b':[email protected]\r\nEND:VEVENT\r\n')
def _test_quoting(self, cn_param, cn_quoted): """ @param cn_param: CN parameter value to test for quoting @param cn_quoted: expected quoted parameter in icalendar format """ vevent = Event() attendee = vCalAddress("*****@*****.**") attendee.params["CN"] = cn_param vevent.add("ATTENDEE", attendee) self.assertEqual( vevent.to_ical(), b"BEGIN:VEVENT\r\nATTENDEE;CN=" + cn_quoted.encode("utf-8") + b":[email protected]\r\nEND:VEVENT\r\n", )
def _test_quoting(self, cn_param, cn_quoted): """ @param cn_param: CN parameter value to test for quoting @param cn_quoted: expected quoted parameter in icalendar format """ vevent = Event() attendee = vCalAddress('*****@*****.**') attendee.params['CN'] = cn_param vevent.add('ATTENDEE', attendee) self.assertEqual( vevent.to_ical(), b'BEGIN:VEVENT\r\nATTENDEE;CN=' + cn_quoted.encode('utf-8') + b':[email protected]\r\nEND:VEVENT\r\n' )
def test_unicode_param(self): cal_address = vCalAddress('mailto:[email protected]') cal_address.params["CN"] = "Джон Доу" vevent = Event() vevent['ORGANIZER'] = cal_address self.assertEqual( vevent.to_ical().decode('utf-8'), u'BEGIN:VEVENT\r\n' u'ORGANIZER;CN="Джон Доу":mailto:[email protected]\r\n' u'END:VEVENT\r\n' ) self.assertEqual(vevent['ORGANIZER'].params['CN'], 'Джон Доу')
def to_ical(self): if self.ical: return self.ical else: ev = Event() rrule = {} ev.add('dtstart', self.start_datetime_in_utc.datetime) if self.end_datetime_in_utc: ev.add('dtend', self.end_datetime_in_utc.datetime) if self.count: rrule['count'] = self.count if self.interval: rrule['interval'] = self.interval if self.frequency: rrule['freq'] = self.frequency if rrule: ev.add('rrule', rrule) return ev.to_ical()
def __init__(self, name, description, events): Calendar.__init__(self) self.add("prodid", "-//roco ical exporter//roco.com//") self.add("version", "2.0") self.add("calscale", "GREGORIAN") self.add("method", "PUBLISH") self.add("x-wr-calname", name) self.add("x-original-url", "http://cal.roco.com") self.add("x-wr-caldesc", description) for event in events: ev = Event() self.add_component(ev) ev.add("summary", event["summary"]) ev.add("dtstart", pytz.timezone("America/New_York").localize(event["start"])) if "end" in event: ev.add("dtend", pytz.timezone("America/New_York").localize(event["end"])) ev.add("location", event["location"]) ev.add("description", event["description"]) ev.add("uid", hashlib.sha224(ev.to_ical(sorted=True)).hexdigest())
def __init__(self, name, description, events): Calendar.__init__(self) self.add('prodid', '-//roco ical exporter//roco.com//') self.add('version', '2.0') self.add('calscale','GREGORIAN') self.add('method','PUBLISH') self.add('x-wr-calname', name) self.add('x-original-url','http://cal.roco.com') self.add('x-wr-caldesc', description) for event in events: ev = Event() self.add_component(ev) ev.add('summary', event['summary']) ev.add('dtstart', pytz.timezone('America/New_York').localize(event['start'])) if 'end' in event: ev.add('dtend', pytz.timezone('America/New_York').localize(event['end'])) ev.add('location', event['location']) ev.add('description', event['description']) ev.add('uid', hashlib.sha224(ev.to_ical(sorted=True)).hexdigest())
def populate_content_with_event( self, content: Content, event: iCalendarEvent, event_name: str, ) -> None: """ Populate Content content instance from iCalendarEvent event attributes. :param content: content to populate :param event: event with data to insert in content :param event_name: Event name (ID) like 20160602T083511Z-18100-1001-1-71_Bastien-20160602T083516Z.ics :return: given content """ content.label = event.get('summary') content.description = event.get('description') content.properties = { 'name': event_name, 'location': event.get('location'), 'raw': event.to_ical().decode("utf-8"), 'start': event.get('dtend').dt.strftime('%Y-%m-%d %H:%M:%S%z'), 'end': event.get('dtstart').dt.strftime('%Y-%m-%d %H:%M:%S%z'), }