Пример #1
0
    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
Пример #2
0
 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()
Пример #3
0
    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()
Пример #4
0
    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()
Пример #5
0
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()
Пример #6
0
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()
Пример #7
0
    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'], 'Джон Доу')
Пример #8
0
    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"], "Джон Доу")
Пример #9
0
 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')
Пример #10
0
 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",
     )
Пример #11
0
 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'
     )
Пример #12
0
    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'],
                         'Джон Доу')
Пример #13
0
 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()
Пример #14
0
 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())
Пример #15
0
 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())
Пример #16
0
 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'),
     }
Пример #17
0
 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'),
     }