yaml2ical was using a very old version that started to break with
newer Python, so it's time to upgrade. This requires a few adjustments
to quiet new warnings.
Change-Id: Ib081dcfeca7c40f877059793dab58d00a7b0d53e
The openstacksdks team meets on the
third thursday of each month. We could
use a a monthly third-week option.
Signed-off-by: Goutham Pacha Ravi <gouthampravi@gmail.com>
Change-Id: I9eee4582506274a18e7146f6c241cf56fb585075
The iCalendar spec expects a meeting vEvent to include a datetime stamp
and a unique ID for each instance. This adds these values to the
generated output.
Minor cleanup also included since I was touching code around them and
noticed little nits.
Change-Id: I4753571850665a2f28a6799b84ead4c31a275cc7
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
Add a new property to the recurrence that can be used to generate
grammatically correct versions of phrases like 'Monthly on the first
Thursday'.
Change-Id: I2ebfd60ebfbbc499ed08f6f63e91cbb87c8691b1
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
Add an abstract base class for the recurrence rules so it is clear
which methods are required.
Change-Id: I7f2395bf3073b205a280d05f7f844f43a0e85ded
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
Add a recurrence option for meetings that repeat monthly. Instantiate
the ones for the first weekdays of the month for now.
Change-Id: I0fa95653594dc5a28008630f57bee67b92537d29
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This allows for by weekly meetings to be run at alternate
times.
Change-Id: Ief437e53719c123399de8874469ef16540d3b3fd
Signed-off-by: Graham Hayes <gr@ham.ie>
For the irc-meetings we would like to list the possiblity of a meeting
but not actually formally schedule it. This change allows for an AdHoc
meeting which is essentially a noop in the ical generation
Change-Id: I843b5b3f2a6e5a74b85b13b86c8d16125a1ac7c7
Update the hacking test-requirement to match openstack/requirements
global-requirements.txt
Fix errors caught by new version of hacking.
Change-Id: I90e9e9ed106b13b155b0b88fa2800736a9203814
Fix an off by one error in the batch_messages function. And add some
unit tests for the batch_messages function.
Also handle if batch_size is less than or equal to zero. In that case
just return the input messages.
Change-Id: Id7be110379c212104fba70588b647dfd3a13e765
Closes-Bug: #1570446
Created and export, to jinja2, a batch_meetings fuction that will pivot
the sorted list of meetings into a number of colums. This can be used
in a jinja template like:
{% for column in batch_meetings(meetings, 4)|batch(4) %}
So the list:
[A, B, C, D, E, F , G, H]
Dsisplays as:
A C E G
B D F H
Rather than:
A B C D
E F G H
Change-Id: I9d7c6ad9c14a9d6ec3d402a67b73fafae575d369
Rather than silently removing the skipped meeting from the calendar as
is the default behavious of exdate add a one off calendar entry for
each skipped meeting.
The aim is to show that the slot is generally consumed just that the
meeting has been explictly cancelled/skipped.
Change-Id: Idd9eb1a04fe9c9661e87978c0128a292bb8e89a4
In the OpenStack community it's common to cancel meetings while the
summit happens.
Add the ability to add a list of dates to skip. These will then be
included in the iCal
Change-Id: I1dd5ca6f3e5d6d257489fdc14bbe108abc7436e6
start_date defines when a meeting series begins. start_date
is used in lieu of the current date when rebuilding the calendar.
This will ultimately let us move away from needing to have
biweekly-odd and biweekly-even.
I also added an example.yaml with a start_date
Change-Id: I0c5f6e5951b6c15b949f599182f48aa132b76abb
While yaml2ical is clearly driven by the needs of the OpenStack
community, there is nothing inherently "OpenStack" about the job it
does.
Also, the README doesn't need to describe what the tool wants to do,
since it has, in fact, accomplished its goal.
Change-Id: I7cf026858bc52eacd7650d9eb9d4b357deb5624f
We currently hardcode the meeting duration to be one hour. This change
allows the user to specify an optional meeting duration (in minutes)
for shorter or longer meetings.
Change-Id: Ib41d56abc0e866ca50e45469e7cd57d726b053df
Consider the following meetings (both at the same venue)
Meeting1: Monday at 2330 for 1 hour
Meeting2: Tuesday at 0000 for 1 hour
It's clear that these meetings conflict. The current conflicts() check
will return no conflict becuase we explictly check the start day.
Also there is a special case where day1 is Sunday so handle that case.
Fix this by converting the day into a date and including that in the conflicts
check.
Change-Id: I06f1f2ab644bf2f6aeb0e62258884a5ff85b6706
Add an 'outfile' member variable to the meeting class. This will store
the base name of the output filename that would be generated.
Change-Id: Id9354b3565c91fd1e143b3826da15ae38aa112aa
agenda_url is already used in the meeting file template, now it will
be attached to every calendar event.
The new key project_url is for the page describing the overall
project and it too, if present will be in the calendar event.
Closes: https://storyboard.openstack.org/#!/story/2000288
Change-Id: Ic9f823bf744b27f42359858e55557b36fcab8f0a
Signed-off-by: Brian (bex) Exelbierd <bex@pobox.com>
Previously the calendar was missing a name and description
which means that some ical clients retain the URL rather
than having a human readable view.
This change introduces two new command line options
-n|--name and -d|--description for suppling the relevant
fields.
This implements the X-WR-CALNAME and X-WR-CALDESC ical
extension properties.
Change-Id: I97d44a2c924699ef362b7c053a637ace89b94fe2
Signed-off-by: Dave Walker (Daviey) <email@daviey.com>
Besides looking for the required values, allow any extra values to be
saved and referenced from templates.
Change-Id: I7395a92f447aee943da54aa0439dd0c683da176a
Adding optional parameters -t and -w used to generate an index of
meetings using a Jinja2 template.
Refactor output file/dir preparation so that index generation can make
use of it.
Expose UTC time in the Schedule object and human-friendly description of
the recurrence in the Recurrence objects, so that they are directly
usable in the templates.
Change-Id: I103ac552f43a02a0b6e2e3ad6e5f52a6877efa68
Handle undefined values gracefully in the Meeting and
Scheduler definitions. Refactor the Meeting class with improved
initialization and clean up the creation of the meetings
list.
Change-Id: Iad6a712c4b05c8af440c1f89966ae81102bb3e4e
Start recurring events on the same day as the generation, since that day
is not really fully in the past yet.
Change-Id: I167fdd2d20b38b3c77029854fa3df191fb127181
Fix conflict detection by providing finer rules. Meetings on alternating
weeks no longer conflict. Meetings on overlapping times now conflict.
Add proper tests to check all combinations.
Change-Id: I069cdd40fecb5fd7a2ab828a495bdf627ca1a811
Abstract recurrence styles as classes in recurrence.py, to make it
easier to add other recurrence styles.
Fix "biweekly" recurrences so that they use ISO week numbers (instead of
week number in the month, which prevents alternating meetings).
Change-Id: Ie786a545276c1aaf829daa93bc93245642f308a6
In case of conflict, report the names of the two files at the origin of
the conflict (instead of $PROJECT-$HASH). Generate the ICS files under
the same name as the source YAML file, since those are unique anyway.
Change-Id: I7c9d5165c1327556ad19a592398f1312e4ac4ba3
extract_meeting_info was mostly duplicating accessing the properties of
the Schedule object. Get rid of it and implement schedule comparison at
object level.
Change-Id: I1e6a6853b510f5733490107407ffe20139cf5966
Make better use of Meetings objects by refactoring functions applying to
them as object methods.
Clean up superfluous argument value copy in cli.py as well.
Change-Id: Ib60597cec617ce296c4937c9bb3a086d4f61d48a
Reorganize modules in yaml2ical so that:
- Reading meetings from YAML (and checking conflicts) is in meeting.py
- Functions to produce iCal output are in ical.py
- Date recurrence functions are in recurrence.py
There is no need for a generic utils.py anymore.
Further refactoring of functions and object classes is coming.
Change-Id: I35d2833f5eac088c13e684bf094a455591135dff
Declare a yaml2ical entry point to replace convert.py.
Clean up the useless const.py and move the only remaining constant to
meeting.py.
Change-Id: I6204aa2c9d96640e50167a9df78686a1cd25e9ec
We'll need to upload this module to PyPI in order to properly integrate
with the OpenStack Infrastructure. Unfortunately, there is already a
module there going by the 'arbiter' name. This switches the module name
to 'yaml2ical', which is not sounding nice, but at least is functionally
correct.
The git repository itself shall be renamed once this is merged.
Change-Id: I896bcbe7be8c6a017015b428c6ff0d39a4974a04