| @@ 977-1054 (lines=78) @@ | ||
| 974 | ||
| 975 | return self._send_xml_command(cmd) |
|
| 976 | ||
| 977 | def create_schedule( |
|
| 978 | self, |
|
| 979 | name: str, |
|
| 980 | icalendar: str, |
|
| 981 | timezone: str, |
|
| 982 | *, |
|
| 983 | comment: Optional[str] = None, |
|
| 984 | ) -> Any: |
|
| 985 | """Create a new schedule based in `iCalendar`_ data. |
|
| 986 | ||
| 987 | Example: |
|
| 988 | Requires https://pypi.org/project/icalendar/ |
|
| 989 | ||
| 990 | .. code-block:: python |
|
| 991 | ||
| 992 | import pytz |
|
| 993 | ||
| 994 | from datetime import datetime |
|
| 995 | ||
| 996 | from icalendar import Calendar, Event |
|
| 997 | ||
| 998 | cal = Calendar() |
|
| 999 | ||
| 1000 | cal.add('prodid', '-//Foo Bar//') |
|
| 1001 | cal.add('version', '2.0') |
|
| 1002 | ||
| 1003 | event = Event() |
|
| 1004 | event.add('dtstamp', datetime.now(tz=pytz.UTC)) |
|
| 1005 | event.add('dtstart', datetime(2020, 1, 1, tzinfo=pytz.utc)) |
|
| 1006 | ||
| 1007 | cal.add_component(event) |
|
| 1008 | ||
| 1009 | gmp.create_schedule( |
|
| 1010 | name="My Schedule", |
|
| 1011 | icalendar=cal.to_ical(), |
|
| 1012 | timezone='UTC' |
|
| 1013 | ) |
|
| 1014 | ||
| 1015 | ||
| 1016 | Arguments: |
|
| 1017 | name: Name of the new schedule |
|
| 1018 | icalendar: `iCalendar`_ (RFC 5545) based data. |
|
| 1019 | timezone: Timezone to use for the icalender events e.g |
|
| 1020 | Europe/Berlin. If the datetime values in the icalendar data are |
|
| 1021 | missing timezone information this timezone gets applied. |
|
| 1022 | Otherwise the datetime values from the icalendar data are |
|
| 1023 | displayed in this timezone |
|
| 1024 | comment: Comment on schedule. |
|
| 1025 | ||
| 1026 | Returns: |
|
| 1027 | The response. See :py:meth:`send_command` for details. |
|
| 1028 | ||
| 1029 | .. _iCalendar: |
|
| 1030 | https://tools.ietf.org/html/rfc5545 |
|
| 1031 | """ |
|
| 1032 | if not name: |
|
| 1033 | raise RequiredArgument( |
|
| 1034 | function=self.create_schedule.__name__, argument='name' |
|
| 1035 | ) |
|
| 1036 | if not icalendar: |
|
| 1037 | raise RequiredArgument( |
|
| 1038 | function=self.create_schedule.__name__, argument='icalendar' |
|
| 1039 | ) |
|
| 1040 | if not timezone: |
|
| 1041 | raise RequiredArgument( |
|
| 1042 | function=self.create_schedule.__name__, argument='timezone' |
|
| 1043 | ) |
|
| 1044 | ||
| 1045 | cmd = XmlCommand("create_schedule") |
|
| 1046 | ||
| 1047 | cmd.add_element("name", name) |
|
| 1048 | cmd.add_element("icalendar", icalendar) |
|
| 1049 | cmd.add_element("timezone", timezone) |
|
| 1050 | ||
| 1051 | if comment: |
|
| 1052 | cmd.add_element("comment", comment) |
|
| 1053 | ||
| 1054 | return self._send_xml_command(cmd) |
|
| 1055 | ||
| 1056 | def modify_schedule( |
|
| 1057 | self, |
|
| @@ 3178-3255 (lines=78) @@ | ||
| 3175 | ||
| 3176 | return self._send_xml_command(cmd) |
|
| 3177 | ||
| 3178 | def create_schedule( |
|
| 3179 | self, |
|
| 3180 | name: str, |
|
| 3181 | icalendar: str, |
|
| 3182 | timezone: str, |
|
| 3183 | *, |
|
| 3184 | comment: Optional[str] = None, |
|
| 3185 | ) -> Any: |
|
| 3186 | """Create a new schedule based in `iCalendar`_ data. |
|
| 3187 | ||
| 3188 | Example: |
|
| 3189 | Requires https://pypi.org/project/icalendar/ |
|
| 3190 | ||
| 3191 | .. code-block:: python |
|
| 3192 | ||
| 3193 | import pytz |
|
| 3194 | ||
| 3195 | from datetime import datetime |
|
| 3196 | ||
| 3197 | from icalendar import Calendar, Event |
|
| 3198 | ||
| 3199 | cal = Calendar() |
|
| 3200 | ||
| 3201 | cal.add('prodid', '-//Foo Bar//') |
|
| 3202 | cal.add('version', '2.0') |
|
| 3203 | ||
| 3204 | event = Event() |
|
| 3205 | event.add('dtstamp', datetime.now(tz=pytz.UTC)) |
|
| 3206 | event.add('dtstart', datetime(2020, 1, 1, tzinfo=pytz.utc)) |
|
| 3207 | ||
| 3208 | cal.add_component(event) |
|
| 3209 | ||
| 3210 | gmp.create_schedule( |
|
| 3211 | name="My Schedule", |
|
| 3212 | icalendar=cal.to_ical(), |
|
| 3213 | timezone='UTC' |
|
| 3214 | ) |
|
| 3215 | ||
| 3216 | ||
| 3217 | Arguments: |
|
| 3218 | name: Name of the new schedule |
|
| 3219 | icalendar: `iCalendar`_ (RFC 5545) based data. |
|
| 3220 | timezone: Timezone to use for the icalender events e.g |
|
| 3221 | Europe/Berlin. If the datetime values in the icalendar data are |
|
| 3222 | missing timezone information this timezone gets applied. |
|
| 3223 | Otherwise the datetime values from the icalendar data are |
|
| 3224 | displayed in this timezone |
|
| 3225 | comment: Comment on schedule. |
|
| 3226 | ||
| 3227 | Returns: |
|
| 3228 | The response. See :py:meth:`send_command` for details. |
|
| 3229 | ||
| 3230 | .. _iCalendar: |
|
| 3231 | https://tools.ietf.org/html/rfc5545 |
|
| 3232 | """ |
|
| 3233 | if not name: |
|
| 3234 | raise RequiredArgument( |
|
| 3235 | function=self.create_schedule.__name__, argument='name' |
|
| 3236 | ) |
|
| 3237 | if not icalendar: |
|
| 3238 | raise RequiredArgument( |
|
| 3239 | function=self.create_schedule.__name__, argument='icalendar' |
|
| 3240 | ) |
|
| 3241 | if not timezone: |
|
| 3242 | raise RequiredArgument( |
|
| 3243 | function=self.create_schedule.__name__, argument='timezone' |
|
| 3244 | ) |
|
| 3245 | ||
| 3246 | cmd = XmlCommand("create_schedule") |
|
| 3247 | ||
| 3248 | cmd.add_element("name", name) |
|
| 3249 | cmd.add_element("icalendar", icalendar) |
|
| 3250 | cmd.add_element("timezone", timezone) |
|
| 3251 | ||
| 3252 | if comment: |
|
| 3253 | cmd.add_element("comment", comment) |
|
| 3254 | ||
| 3255 | return self._send_xml_command(cmd) |
|
| 3256 | ||
| 3257 | def modify_schedule( |
|
| 3258 | self, |
|