From ac97c1f1c7da00879ca94ee6bc338c058e490fde Mon Sep 17 00:00:00 2001 From: Erik Hollembeak Date: Fri, 24 May 2019 11:15:57 -0700 Subject: [PATCH] Extract email bodies to Jinja templates Change-Id: If64c075b4a799574bc51ccd13019d472ee9a4b0e Story: 2005571 Task: 30757 --- openstack_election/cmds/template_emails.py | 412 +----------------- .../templates/ptl_election_season.j2 | 24 + .../templates/ptl_end_nominations.j2 | 16 + .../templates/ptl_nominations_kickoff.j2 | 35 ++ .../templates/ptl_nominations_last_days.j2 | 23 + .../templates/ptl_voting_kickoff.j2 | 38 ++ .../templates/ptl_voting_last_days.j2 | 9 + .../templates/tc_campaigning_kickoff.j2 | 21 + .../templates/tc_election_season.j2 | 19 + .../templates/tc_end_nominations.j2 | 11 + .../templates/tc_nominations_kickoff.j2 | 45 ++ .../templates/tc_nominations_last_days.j2 | 13 + .../templates/tc_voting_kickoff.j2 | 39 ++ .../templates/tc_voting_last_days.j2 | 33 ++ 14 files changed, 336 insertions(+), 402 deletions(-) create mode 100644 openstack_election/templates/ptl_election_season.j2 create mode 100644 openstack_election/templates/ptl_end_nominations.j2 create mode 100644 openstack_election/templates/ptl_nominations_kickoff.j2 create mode 100644 openstack_election/templates/ptl_nominations_last_days.j2 create mode 100644 openstack_election/templates/ptl_voting_kickoff.j2 create mode 100644 openstack_election/templates/ptl_voting_last_days.j2 create mode 100644 openstack_election/templates/tc_campaigning_kickoff.j2 create mode 100644 openstack_election/templates/tc_election_season.j2 create mode 100644 openstack_election/templates/tc_end_nominations.j2 create mode 100644 openstack_election/templates/tc_nominations_kickoff.j2 create mode 100644 openstack_election/templates/tc_nominations_last_days.j2 create mode 100644 openstack_election/templates/tc_voting_kickoff.j2 create mode 100644 openstack_election/templates/tc_voting_last_days.j2 diff --git a/openstack_election/cmds/template_emails.py b/openstack_election/cmds/template_emails.py index 8c5a0197..4fc4ce01 100644 --- a/openstack_election/cmds/template_emails.py +++ b/openstack_election/cmds/template_emails.py @@ -2,6 +2,7 @@ from __future__ import print_function from __future__ import unicode_literals import argparse +import jinja2 import os from openstack_election.cmds import render_statistics as stats @@ -59,404 +60,6 @@ else: )) -def ptl_election_season(): - email_text = """ -Election details: https://governance.openstack.org/election/ - -Please read the stipulations and timelines for candidates and -electorate contained in this governance documentation. - -Please note, if only one candidate is nominated as PTL for a program -during the PTL nomination period, that candidate will win by acclaim, -and there will be no poll. There will only be a poll if there is more -than one candidate stepping forward for a program's PTL position. - -There will be further announcements posted to the mailing list as -action is required from the electorate or candidates. This email -is for information purposes only. - -If you have any questions which you feel affect others please reply -to this email thread. - -If you have any questions that you which to discuss in private please -email any of the election officials[1] so that we may address your -concerns. - -Thank you, - -[1] https://governance.openstack.org/election/#election-officials""" - - print(email_text) - - -def ptl_nominations_kickoff(): - email_text = """ -Nominations for OpenStack PTLs (Program Team Leads) are now open -and will remain open until %(end_nominations)s. - -All nominations must be submitted as a text file to the -openstack/election repository as explained at -https://governance.openstack.org/election/#how-to-submit-a-candidacy - -Please make sure to follow the new candidacy file naming -convention: candidates///. - -In order to be an eligible candidate (and be allowed to vote) in -a given PTL election, you need to have contributed to the corresponding -team[0] during the %(time_frame)s timeframe (%(start_release)s to %(end_release)s). You must also be an OpenStack -Foundation Individual Member in good standing. To check if your membership -is up to date, go to https://www.openstack.org/community/members and -search for your name. - -Additional information about the nomination process can be found here: -https://governance.openstack.org/election/ - -Shortly after election officials approve candidates, they will be listed here: -https://governance.openstack.org/election/#%(release)s-ptl-candidates - -The electorate is requested to confirm their email address in gerrit[1], -prior to %(email_deadline)s so that the emailed ballots are mailed to the correct email -address. This email address should match that which was provided in your -foundation member profile[2] as well. - -Happy running, - -[0] https://governance.openstack.org/tc/reference/projects/ -[1] https://review.openstack.org/#/settings/contact -[2] https://www.openstack.org/profile/""" # noqa - - print(email_text % (fmt_args)) - - -def ptl_nominations_last_days(): - email_text = """ -A quick reminder that we are in the last hours for PTL candidate -nominations. - -If you want to stand for PTL, don't delay, follow the instructions -at [1] to make sure the community knows your intentions. - -Make sure your nomination has been submitted to the openstack/election -repository and approved by election officials. - -Election statistics[2]: -%(election_summary_stats)s - -This means that with approximately 2 days left, %(leaderless_count)s projects will -be deemed leaderless. In this case the TC will oversee PTL selection as -described by [3]. - -Thank you, - -[1] https://governance.openstack.org/election/#how-to-submit-a-candidacy -[2] Any open reviews at - https://review.openstack.org/#/q/is:open+project:openstack/election - have not been factored into these stats. -[3] %(leaderless_url)s""" # noqa - - print(email_text % (fmt_args)) - - -def ptl_end_nominations(): - email_text = """ -The PTL Nomination period is now over. The official candidate list -is available on the election website[0]. - -There are %(leaderless_count)s projects without candidates, so according to this -resolution[1], the TC will have to decide how the following -projects will proceed: %(list_of_leaderless_projects)s - -There are %(election_count)s projects that will have elections: %(list_of_elections)s. The details -for those will be posted shortly after we setup the CIVS system. - -Thank you, - -[0] https://governance.openstack.org/election/#%(release)s-ptl-candidates -[1] %(leaderless_url)s""" # noqa - - print(email_text % (fmt_args)) - - -def ptl_voting_kickoff(): - email_text = """ -Polls for PTL elections are now open and will remain open for you to -cast your vote until %(election_end)s. - -We are having elections for %(list_of_elections)s. - -If you are a Foundation individual member and had a commit in -one of the program's projects[0] over the %(time_frame)s timeframe -(%(start_release)s to %(end_release)s) then you are eligible to vote. You should find your -email with a link to the Condorcet page to cast your vote in the -inbox of your gerrit preferred email[1]. - -What to do if you don't see the email and have a commit in at -least one of the programs having an election: -* check the trash or spam folders of your gerrit Preferred - Email address, in case it went into trash or spam -* wait a bit and check again, in case your email server is a bit slow -* find the sha of at least one commit from the program - project repos[0] and email the election officials. - -If we can confirm that you are entitled to vote, we will add you -to the voters list for the appropriate election. - -Our democratic process is important to the health of OpenStack, -please exercise your right to vote! - -Candidate statements/platforms can be found linked to Candidate -names on this page: -https://governance.openstack.org/election/#%(release)s-ptl-candidates - -Happy voting, - -[0] The list of the program projects eligible for electoral status: - %(reference_url)s - -[1] Sign into review.openstack.org: - Go to Settings > Contact Information. - Look at the email listed as your Preferred Email. - That is where the ballot has been sent.""" # noqa - - print(email_text % (fmt_args)) - - -def ptl_voting_last_days(): - email_text = """ -Hello %(list_of_elections)s contributors, - -Just a quick reminder that elections are closing soon, if you haven't -already you should use your right to vote and pick your favourite -candidate! - -You have until %(election_end)s. - -Thanks for your time!""" - - print(email_text % (fmt_args)) - - -def tc_election_season(): - email_text = """ -Election details: https://governance.openstack.org/election/ - -Please read the stipulations and timelines for candidates and -electorate contained in this governance documentation. - -There will be further announcements posted to the mailing list as -action is required from the electorate or candidates. This email -is for information purposes only. - -If you have any questions which you feel affect others please reply -to this email thread. - -If you have any questions that you which to discuss in private please -email any of the election officials[1] so that we may address your -concerns. - -Thank you, - -[1] https://governance.openstack.org/election/#election-officials""" - - print(email_text) - - -def tc_nominations_kickoff(): - email_text = """ -Nominations for the Technical Committee positions (%(seats)s positions) -are now open and will remain open until %(end_nominations)s. - -All nominations must be submitted as a text file to the -openstack/election repository as explained on the election website[1]. - -Please note that the name of the file should match an email -address in the foundation member profile of the candidate. - -Also for TC candidates election officials refer to the community -member profiles at [2] please take this opportunity to ensure that -your profile contains current information. - -Candidates for the Technical Committee Positions: Any Foundation -individual member can propose their candidacy for an available, -directly-elected TC seat. - -The election will be held from %(election_start)s through to %(election_end)s. The electorate -are the Foundation individual members that are also committers -for one of the official teams[3] over the %(time_frame)s timeframe (%(start_release)s to -%(end_release)s, as well as the extra-ATCs who are acknowledged by the TC[4]. - -Please see the website[5] for additional details about this election. -Please find below the timeline: - -TC nomination starts @ %(start_nominations)s -TC nomination ends @ %(end_nominations)s -TC campaigning starts @ %(campaign_start)s -TC campaigning ends @ %(campaign_end)s -TC elections starts @ %(election_start)s -TC elections ends @ %(election_end)s - -If you have any questions please be sure to either ask them on the -mailing list or to the elections officials[6]. - -Thank you, - -[1] https://governance.openstack.org/election/#how-to-submit-a-candidacy -[2] https://www.openstack.org/community/members/ -[3] https://governance.openstack.org/tc/reference/projects/ -[4] https://releases.openstack.org/%(last_release)s/schedule.html#p-extra-atcs -[5] https://governance.openstack.org/election/ -[6] https://governance.openstack.org/election/#election-officials""" # noqa - - print(email_text % (fmt_args)) - - -def tc_nominations_last_days(): - email_text = """ -A quick reminder that we are in the last hours for TC -candidate announcements. Nominations are open until %(end_nominations)s. - -If you want to stand for TC, don't delay, follow the -instructions at [1] to make sure the community knows your -intentions. - -Make sure your nomination has been submitted to the -openstack/election repository and approved by election officials. - -Thank you, - -[1] https://governance.openstack.org/election/#how-to-submit-a-candidacy""" - print(email_text % (fmt_args)) - - -def tc_end_nominations(): - email_text = """ -TC Nomination period is now over. The official candidate list is -available on the election website[0]. - -Now begins the campaigning period where candidates and -electorate may debate their statements. - -Polling will start %(election_start)s. - -Thank you, - -[0] https://governance.openstack.org/election/#%(release)s-tc-candidates""" - - print(email_text % (fmt_args)) - - -def tc_campaigning_kickoff(): - email_text = """ -Developers, - The TC Election Campaigning Period has now started [1]. During the next -couple days, you are all encouraged to ask the candidates questions about -their platforms [2], opinions on OpenStack, community governance, and anything -else that will help you to better determine how you will vote. This is the -time to raise any issues you wish the future TC to consider, and to evaluate -the opinions of the nominees prior to their election. - -Candidates, - Each of you has posted a platform [2], and announced your nomination to -the developers. From this point, you are encouraged to ask each other -questions about the posted platforms, and begin discussion of any points -that you feel are particularly important during the next cycle. While you -are not yet TC members, your voices and opinions about the issues raised in -your platforms and questions raised by the wider community will help ensure -that the future TC has the widest possible input on the matters of community -concern, and the electorate has the best information to determine the ideal -TC composition to address these and other issues that may arise. - -[1] https://governance.openstack.org/election/ -[2] https://git.openstack.org/cgit/openstack/election/tree/candidates/%(release)s/TC -""" # noqa - - print(email_text % (fmt_args)) - - -def tc_voting_kickoff(): - email_text = """ -The poll for the TC Election is now open and will remain open until %(election_end)s. - -We are selecting %(seats)s TC members, please rank all candidates in -your order of preference. - -You are eligible to vote if you are a Foundation individual member[1] -that also has committed to one of the official programs projects[2] -over the %(time_frame)s timeframe (%(start_release)s to %(end_release)s) or if you are one of the -extra-atcs.[3] - -What to do if you don't see the email and have a commit in at least -one of the official programs projects[2]: -* check the trash or spam folder of your gerrit Preferred Email -address[4], in case it went into trash or spam -* wait a bit and check again, in case your email server is a bit slow -* find the sha of at least one commit from the program project -repos[2] and email the election officials[1]. - -If we can confirm that you are entitled to vote, we will -add you to the voters list and you will be emailed a ballot. - -Our democratic process is important to the health of OpenStack, -please exercise your right to vote. - -Candidate statements/platforms can be found linked to Candidate -names[6]. - -Happy voting! - -Thank you, - -[1] https://www.openstack.org/community/members/ -[2] %(reference_url)s -[3] Look for the extra-atcs element in [2] -[4] Sign into review.openstack.org: Go to Settings > Contact Information. Look - at the email listed as your preferred email. That is where the ballot has - been sent. -[5] https://governance.openstack.org/election/#election-officials -[6] https://governance.openstack.org/election/#%(release)s-tc-candidates""" # noqa - - print(email_text % (fmt_args)) - - -def tc_voting_last_days(): - email_text = """ -We are coming down to the last hours for voting in the TC -election. Voting ends %(election_end)s. - -Search your gerrit preferred email address[0] for the following subject: - Poll: %(poll_name)s - -That is your ballot and links you to the voting application. Please -vote. If you have voted, please encourage your colleagues to vote. - -Candidate statements are linked to the names of all confirmed -candidates: -https://governance.openstack.org/election/#%(release)s-tc-candidates - -What to do if you don't see the email and have a commit in at least -one of the official programs projects[1]: -* check the trash of your gerrit Preferred Email address[0], in - case it went into trash or spam -* wait a bit and check again, in case your email server is a bit slow -* find the sha of at least one commit from the program project - repos[1] and email the election officials[2]. - -If we can confirm that you are entitled to vote, we will add you -to the voters list and you will be emailed a ballot. - -Please vote! - -Thank you, - -[0] Sign into review.openstack.org: Go to Settings > Contact - Information. Look at the email listed as your Preferred Email. - That is where the ballot has been sent. -[1] %(reference_url)s -[2] https://governance.openstack.org/election/#election-officials""" - - print(email_text % (fmt_args)) - - def main(): parser = argparse.ArgumentParser('Tool to generate form emails') parser.add_argument('template', choices=template_names) @@ -465,9 +68,14 @@ def main(): func_name = ('%(election_type)s_%(template)s' % (dict(election_type=conf['election_type'], template=args.template))) - if func_name in globals(): - func = globals()[func_name] - if callable(func): - func() + env = jinja2.Environment( + loader=jinja2.PackageLoader('openstack_election', 'templates'), + autoescape=jinja2.select_autoescape(['html', 'xml']) + ) + try: + template = env.get_template('%s.j2' % func_name) + print(template.render(fmt_args)) + except jinja2.exceptions.TemplateNotFound: + pass return 0 diff --git a/openstack_election/templates/ptl_election_season.j2 b/openstack_election/templates/ptl_election_season.j2 new file mode 100644 index 00000000..6678d63f --- /dev/null +++ b/openstack_election/templates/ptl_election_season.j2 @@ -0,0 +1,24 @@ +Election details: https://governance.openstack.org/election/ + +Please read the stipulations and timelines for candidates and +electorate contained in this governance documentation. + +Please note, if only one candidate is nominated as PTL for a program +during the PTL nomination period, that candidate will win by acclaim, +and there will be no poll. There will only be a poll if there is more +than one candidate stepping forward for a program's PTL position. + +There will be further announcements posted to the mailing list as +action is required from the electorate or candidates. This email +is for information purposes only. + +If you have any questions which you feel affect others please reply +to this email thread. + +If you have any questions that you which to discuss in private please +email any of the election officials[1] so that we may address your +concerns. + +Thank you, + +[1] https://governance.openstack.org/election/#election-officials diff --git a/openstack_election/templates/ptl_end_nominations.j2 b/openstack_election/templates/ptl_end_nominations.j2 new file mode 100644 index 00000000..eefadc50 --- /dev/null +++ b/openstack_election/templates/ptl_end_nominations.j2 @@ -0,0 +1,16 @@ +The PTL Nomination period is now over. The official candidate list +is available on the election website[0]. + +There are {{ leaderless_count }} projects without candidates, so according to this +resolution[1], the TC will have to decide how the following +projects will proceed: {{ list_of_leaderless_projects }} + +There are {{ election_count }} projects that will have elections: {{ list_of_elections }}. The details +for those will be posted shortly after we setup the CIVS system. + +Thank you, + +[0] https://governance.openstack.org/election/#{{ release }}-ptl-candidates +[1] {{ leaderless_url }} + + diff --git a/openstack_election/templates/ptl_nominations_kickoff.j2 b/openstack_election/templates/ptl_nominations_kickoff.j2 new file mode 100644 index 00000000..f0e077e9 --- /dev/null +++ b/openstack_election/templates/ptl_nominations_kickoff.j2 @@ -0,0 +1,35 @@ +Nominations for OpenStack PTLs (Program Team Leads) are now open +and will remain open until {{ end_nominations }}. + +All nominations must be submitted as a text file to the +openstack/election repository as explained at +https://governance.openstack.org/election/#how-to-submit-a-candidacy + +Please make sure to follow the new candidacy file naming +convention: candidates///. + +In order to be an eligible candidate (and be allowed to vote) in +a given PTL election, you need to have contributed to the corresponding +team[0] during the {{ time_frame }} timeframe ({{ start_release }} to {{ end_release }}). You must also be an OpenStack +Foundation Individual Member in good standing. To check if your membership +is up to date, go to https://www.openstack.org/community/members and +search for your name. + +Additional information about the nomination process can be found here: +https://governance.openstack.org/election/ + +Shortly after election officials approve candidates, they will be listed here: +https://governance.openstack.org/election/#{{ release }}-ptl-candidates + +The electorate is requested to confirm their email address in gerrit[1], +prior to {{ email_deadline }} so that the emailed ballots are mailed to the correct email +address. This email address should match that which was provided in your +foundation member profile[2] as well. + +Happy running, + +[0] https://governance.openstack.org/tc/reference/projects/ +[1] https://review.openstack.org/#/settings/contact +[2] https://www.openstack.org/profile/ + + diff --git a/openstack_election/templates/ptl_nominations_last_days.j2 b/openstack_election/templates/ptl_nominations_last_days.j2 new file mode 100644 index 00000000..aa7929e8 --- /dev/null +++ b/openstack_election/templates/ptl_nominations_last_days.j2 @@ -0,0 +1,23 @@ +A quick reminder that we are in the last hours for PTL candidate +nominations. + +If you want to stand for PTL, don't delay, follow the instructions +at [1] to make sure the community knows your intentions. + +Make sure your nomination has been submitted to the openstack/election +repository and approved by election officials. + +Election statistics[2]: +{{ election_summary_stats }} + +This means that with approximately 2 days left, {{ leaderless_count }} projects will +be deemed leaderless. In this case the TC will oversee PTL selection as +described by [3]. + +Thank you, + +[1] https://governance.openstack.org/election/#how-to-submit-a-candidacy +[2] Any open reviews at + https://review.openstack.org/#/q/is:open+project:openstack/election + have not been factored into these stats. +[3] {{ leaderless_url }} diff --git a/openstack_election/templates/ptl_voting_kickoff.j2 b/openstack_election/templates/ptl_voting_kickoff.j2 new file mode 100644 index 00000000..09a1ec22 --- /dev/null +++ b/openstack_election/templates/ptl_voting_kickoff.j2 @@ -0,0 +1,38 @@ +Polls for PTL elections are now open and will remain open for you to +cast your vote until {{ election_end }}. + +We are having elections for {{ list_of_elections }}. + +If you are a Foundation individual member and had a commit in +one of the program's projects[0] over the {{ time_frame }} timeframe +({{ start_release }} to {{ end_release }}) then you are eligible to vote. You should find your +email with a link to the Condorcet page to cast your vote in the +inbox of your gerrit preferred email[1]. + +What to do if you don't see the email and have a commit in at +least one of the programs having an election: +* check the trash or spam folders of your gerrit Preferred + Email address, in case it went into trash or spam +* wait a bit and check again, in case your email server is a bit slow +* find the sha of at least one commit from the program + project repos[0] and email the election officials. + +If we can confirm that you are entitled to vote, we will add you +to the voters list for the appropriate election. + +Our democratic process is important to the health of OpenStack, +please exercise your right to vote! + +Candidate statements/platforms can be found linked to Candidate +names on this page: +https://governance.openstack.org/election/#{{ release }}-ptl-candidates + +Happy voting, + +[0] The list of the program projects eligible for electoral status: + {{ reference_url }} + +[1] Sign into review.openstack.org: + Go to Settings > Contact Information. + Look at the email listed as your Preferred Email. + That is where the ballot has been sent. diff --git a/openstack_election/templates/ptl_voting_last_days.j2 b/openstack_election/templates/ptl_voting_last_days.j2 new file mode 100644 index 00000000..ec55a67e --- /dev/null +++ b/openstack_election/templates/ptl_voting_last_days.j2 @@ -0,0 +1,9 @@ +Hello {{ list_of_elections }} contributors, + +Just a quick reminder that elections are closing soon, if you haven't +already you should use your right to vote and pick your favourite +candidate! + +You have until {{ election_end }}. + +Thanks for your time! diff --git a/openstack_election/templates/tc_campaigning_kickoff.j2 b/openstack_election/templates/tc_campaigning_kickoff.j2 new file mode 100644 index 00000000..6468a0a6 --- /dev/null +++ b/openstack_election/templates/tc_campaigning_kickoff.j2 @@ -0,0 +1,21 @@ +Developers, + The TC Election Campaigning Period has now started [1]. During the next +couple days, you are all encouraged to ask the candidates questions about +their platforms [2], opinions on OpenStack, community governance, and anything +else that will help you to better determine how you will vote. This is the +time to raise any issues you wish the future TC to consider, and to evaluate +the opinions of the nominees prior to their election. + +Candidates, + Each of you has posted a platform [2], and announced your nomination to +the developers. From this point, you are encouraged to ask each other +questions about the posted platforms, and begin discussion of any points +that you feel are particularly important during the next cycle. While you +are not yet TC members, your voices and opinions about the issues raised in +your platforms and questions raised by the wider community will help ensure +that the future TC has the widest possible input on the matters of community +concern, and the electorate has the best information to determine the ideal +TC composition to address these and other issues that may arise. + +[1] https://governance.openstack.org/election/ +[2] https://git.openstack.org/cgit/openstack/election/tree/candidates/{{ release }}/TC diff --git a/openstack_election/templates/tc_election_season.j2 b/openstack_election/templates/tc_election_season.j2 new file mode 100644 index 00000000..0e0a31e2 --- /dev/null +++ b/openstack_election/templates/tc_election_season.j2 @@ -0,0 +1,19 @@ +Election details: https://governance.openstack.org/election/ + +Please read the stipulations and timelines for candidates and +electorate contained in this governance documentation. + +There will be further announcements posted to the mailing list as +action is required from the electorate or candidates. This email +is for information purposes only. + +If you have any questions which you feel affect others please reply +to this email thread. + +If you have any questions that you which to discuss in private please +email any of the election officials[1] so that we may address your +concerns. + +Thank you, + +[1] https://governance.openstack.org/election/#election-officials diff --git a/openstack_election/templates/tc_end_nominations.j2 b/openstack_election/templates/tc_end_nominations.j2 new file mode 100644 index 00000000..1fccee26 --- /dev/null +++ b/openstack_election/templates/tc_end_nominations.j2 @@ -0,0 +1,11 @@ +TC Nomination period is now over. The official candidate list is +available on the election website[0]. + +Now begins the campaigning period where candidates and +electorate may debate their statements. + +Polling will start {{ election_start }}. + +Thank you, + +[0] https://governance.openstack.org/election/#{{ release }}-tc-candidates diff --git a/openstack_election/templates/tc_nominations_kickoff.j2 b/openstack_election/templates/tc_nominations_kickoff.j2 new file mode 100644 index 00000000..f8adb3cc --- /dev/null +++ b/openstack_election/templates/tc_nominations_kickoff.j2 @@ -0,0 +1,45 @@ +Nominations for the Technical Committee positions ({{ seats }} positions) +are now open and will remain open until {{ end_nominations }}. + +All nominations must be submitted as a text file to the +openstack/election repository as explained on the election website[1]. + +Please note that the name of the file should match an email +address in the foundation member profile of the candidate. + +Also for TC candidates election officials refer to the community +member profiles at [2] please take this opportunity to ensure that +your profile contains current information. + +Candidates for the Technical Committee Positions: Any Foundation +individual member can propose their candidacy for an available, +directly-elected TC seat. + +The election will be held from {{ election_start }} through to {{ election_end }}. The electorate +are the Foundation individual members that are also committers +for one of the official teams[3] over the {{ time_frame }} timeframe ({{ start_release }} to +{{ end_release }}, as well as the extra-ATCs who are acknowledged by the TC[4]. + +Please see the website[5] for additional details about this election. +Please find below the timeline: + +TC nomination starts @ {{ start_nominations }} +TC nomination ends @ {{ end_nominations }} +TC campaigning starts @ {{ campaign_start }} +TC campaigning ends @ {{ campaign_end }} +TC elections starts @ {{ election_start }} +TC elections ends @ {{ election_end }} + +If you have any questions please be sure to either ask them on the +mailing list or to the elections officials[6]. + +Thank you, + +[1] https://governance.openstack.org/election/#how-to-submit-a-candidacy +[2] https://www.openstack.org/community/members/ +[3] https://governance.openstack.org/tc/reference/projects/ +[4] https://releases.openstack.org/{{ last_release }}/schedule.html#p-extra-atcs +[5] https://governance.openstack.org/election/ +[6] https://governance.openstack.org/election/#election-officials + + diff --git a/openstack_election/templates/tc_nominations_last_days.j2 b/openstack_election/templates/tc_nominations_last_days.j2 new file mode 100644 index 00000000..486072f5 --- /dev/null +++ b/openstack_election/templates/tc_nominations_last_days.j2 @@ -0,0 +1,13 @@ +A quick reminder that we are in the last hours for TC +candidate announcements. Nominations are open until {{ end_nominations }}. + +If you want to stand for TC, don't delay, follow the +instructions at [1] to make sure the community knows your +intentions. + +Make sure your nomination has been submitted to the +openstack/election repository and approved by election officials. + +Thank you, + +[1] https://governance.openstack.org/election/#how-to-submit-a-candidacy diff --git a/openstack_election/templates/tc_voting_kickoff.j2 b/openstack_election/templates/tc_voting_kickoff.j2 new file mode 100644 index 00000000..cc244ef7 --- /dev/null +++ b/openstack_election/templates/tc_voting_kickoff.j2 @@ -0,0 +1,39 @@ +The poll for the TC Election is now open and will remain open until {{ election_end }}. + +We are selecting {{ seats }} TC members, please rank all candidates in +your order of preference. + +You are eligible to vote if you are a Foundation individual member[1] +that also has committed to one of the official programs projects[2] +over the {{ time_frame }} timeframe ({{ start_release }} to {{ end_release }}) or if you are one of the +extra-atcs.[3] + +What to do if you don't see the email and have a commit in at least +one of the official programs projects[2]: +* check the trash or spam folder of your gerrit Preferred Email +address[4], in case it went into trash or spam +* wait a bit and check again, in case your email server is a bit slow +* find the sha of at least one commit from the program project +repos[2] and email the election officials[1]. + +If we can confirm that you are entitled to vote, we will +add you to the voters list and you will be emailed a ballot. + +Our democratic process is important to the health of OpenStack, +please exercise your right to vote. + +Candidate statements/platforms can be found linked to Candidate +names[6]. + +Happy voting! + +Thank you, + +[1] https://www.openstack.org/community/members/ +[2] {{ reference_url }} +[3] Look for the extra-atcs element in [2] +[4] Sign into review.openstack.org: Go to Settings > Contact Information. Look + at the email listed as your preferred email. That is where the ballot has + been sent. +[5] https://governance.openstack.org/election/#election-officials +[6] https://governance.openstack.org/election/#{{ release }}-tc-candidates diff --git a/openstack_election/templates/tc_voting_last_days.j2 b/openstack_election/templates/tc_voting_last_days.j2 new file mode 100644 index 00000000..58e7b1ea --- /dev/null +++ b/openstack_election/templates/tc_voting_last_days.j2 @@ -0,0 +1,33 @@ +We are coming down to the last hours for voting in the TC +election. Voting ends {{ election_end }}. + +Search your gerrit preferred email address[0] for the following subject: + Poll: {{ poll_name }} + +That is your ballot and links you to the voting application. Please +vote. If you have voted, please encourage your colleagues to vote. + +Candidate statements are linked to the names of all confirmed +candidates: +https://governance.openstack.org/election/#{{ release }}-tc-candidates + +What to do if you don't see the email and have a commit in at least +one of the official programs projects[1]: +* check the trash of your gerrit Preferred Email address[0], in + case it went into trash or spam +* wait a bit and check again, in case your email server is a bit slow +* find the sha of at least one commit from the program project + repos[1] and email the election officials[2]. + +If we can confirm that you are entitled to vote, we will add you +to the voters list and you will be emailed a ballot. + +Please vote! + +Thank you, + +[0] Sign into review.openstack.org: Go to Settings > Contact + Information. Look at the email listed as your Preferred Email. + That is where the ballot has been sent. +[1] {{ reference_url }} +[2] https://governance.openstack.org/election/#election-officials