There are known issues with this patch. 1. The @noticelink is not quite working. I can't figure out how to make the @noticelink visible to the validate process. So it is always nil in validate.
2. There is no subject for the invitation email. 3. There are extra lines in the invitation email where there is conditional text. If the condition is not met, a blank line is inserted. Patches welcome. Almost ready to disable the mock email processing. Craig > On Nov 11, 2017, at 8:29 PM, c...@apache.org wrote: > > This is an automated email from the ASF dual-hosted git repository. > > clr pushed a commit to branch master > in repository https://gitbox.apache.org/repos/asf/whimsy.git > > > The following commit(s) were added to refs/heads/master by this push: > new 7f42752 Add more detail to project/icla application > new e6ecd4a Merge branch 'master' of github.com:apache/whimsy > 7f42752 is described below > > commit 7f427528a099ce450d036b4ec9b2936399f3d62e > Author: Craig L Russell <craig.russ...@oracle.com> > AuthorDate: Sat Nov 11 20:28:56 2017 -0800 > > Add more detail to project/icla application > --- > www/project/icla/main.rb | 19 ++++---- > www/project/icla/views/actions/validate.json.rb | 58 ++++++++++++++++++++----- > www/project/icla/views/app.html.rb | 2 +- > www/project/icla/views/pages/invite.js.rb | 37 +++++++++++----- > 4 files changed, 85 insertions(+), 31 deletions(-) > > diff --git a/www/project/icla/main.rb b/www/project/icla/main.rb > index 679bb65..bd710ac 100755 > --- a/www/project/icla/main.rb > +++ b/www/project/icla/main.rb > @@ -1,5 +1,5 @@ > # > -# Server side setup > +# Server side setup for whimsy/project > # > > require 'whimsy/asf' > @@ -23,16 +23,19 @@ end > get '/invite' do > @view = 'invite' > > - # get a complete list of PMCs > + # get a complete list of PMC and PPMC names > @pmcs = ASF::Committee.pmcs.map(&:name).sort > + @ppmcs = ASF::Podling.list > + .select {|podling| podling.status == 'current'} > + .map(&:name).sort > > - # for non ASF members, limit PMCs to ones for which the user is a > - # member of the PMC. > + # allow user to invite contributors for PMCs of which the user is a member, > + # or for podlings if the user is a member of the IPMC. > user = ASF::Person.find(env.user) > - unless user.asf_member? > - committees = user.committees.map(&:name) > - @pmcs.select! {|pmc| committees.include?(pmc)} > - end > + committees = user.committees.map(&:name) > + ipmc = committees.include?('incubator') > + @pmcs.select! {|pmc| committees.include?(pmc)} > + @ppmcs.select! {|ppmc| committees.include?('incubator') | > committees.include?(ppmc)} > > # render the HTML for the application > _html :app > diff --git a/www/project/icla/views/actions/validate.json.rb > b/www/project/icla/views/actions/validate.json.rb > index d6bf07b..d91116a 100644 > --- a/www/project/icla/views/actions/validate.json.rb > +++ b/www/project/icla/views/actions/validate.json.rb > @@ -3,9 +3,50 @@ require 'net/http' > require 'pathname' > > # find pmc and user information > +# all ppmcs are also pmcs but not all pmcs are ppmcs > + > pmc = ASF::Committee.find(@pmc) > +ppmc = ASF::Podling.find(@pmc) > +pmc_type = if ppmc then 'PPMC' else 'PMC' end > + > user = ASF::Person.find(env.user) > > +# prototype mail text > +prototype_contributor = > +"Based on your contributions to #{pmc.name}, you are invited to submit an > ICLA > +to The Apache Software Foundation, using the following form. Please see > +http://apache.org/licenses for details. > +" > + > +prototype_committer = > +"Congratulations! The #{pmc.name} #{pmc_type} hereby offers you committer > privileges > +to the #{pmc.name} project. > + > +These privileges are offered on the understanding that you'll use them > +reasonably and with common sense. We like to work on trust rather than > +unnecessary constraints. > + > +Being a committer enables you to more easily make changes without needing to > +go through the patch submission process. > + > +Being a committer does not require you to participate any more than you > already > +do. It does tend to make one even more committed ;-) You willprobably find > that > +you spend more time here. > + > +Of course, you can decline and instead remain as a contributor, participating > +as you do now. > + > +This personal invitation is a chance for you to accept or decline in private. > +Either way, please let us know in reply to the private@#{pmc.name}.apache.org > +address only. > +" > + > +prototype_pmc = > +"You are also invited to become a member of the #{pmc.name} #{pmc_type}. > +Being a #{pmc_type} member enables you to help guide the direction of the > project. > +If you accept, you will have binding votes on releases and new committers. > +" > + > # validate email address > begin > Socket.getaddrinfo(@iclaemail[/@(.*)/, 1].untaint, 'smtp') > @@ -40,12 +81,6 @@ if @votelink and not @votelink.empty? > _focus :votelink > end > > - # verify that the user submitting the form is on the PMC in question > - unless pmc and pmc.owners.include? user > - _error "You must be on the #@pmc PMC to submit a vote link" > - _focus :pmc > - end > - > end > > # add user and pmc emails to the response > @@ -62,12 +97,13 @@ link = "#{scheme}://#{env['HTTP_HOST']}#{path}" > _token token > _invitation %{Dear #{@iclaname}, > > -Based on your contributions, you are invited to submit an ICLA to The Apache > -Software Foundation, using the following form. Please see > -http://apache.org/licenses for details. > - > +#{prototype_contributor if @votelink.empty?} > +#{prototype_committer if not @votelink.empty?} > +#{prototype_pmc if @noticelink} > +Click on this link to accept: > #{link} > > -Thanks, > +Regards, > #{user.public_name if user} > +On behalf of the #{pmc.name} project > } > diff --git a/www/project/icla/views/app.html.rb > b/www/project/icla/views/app.html.rb > index c606522..b357df9 100755 > --- a/www/project/icla/views/app.html.rb > +++ b/www/project/icla/views/app.html.rb > @@ -373,7 +373,7 @@ _html lang: 'en', _width: '80' do > _script src: 'app.js' > > _.render '#main' do > - _Main data: {pmcs: @pmcs}, view: @view > + _Main data: {pmcs: @pmcs, ppmcs: @ppmcs}, view: @view > end > end > end > diff --git a/www/project/icla/views/pages/invite.js.rb > b/www/project/icla/views/pages/invite.js.rb > index b39adc1..6c38fb3 100644 > --- a/www/project/icla/views/pages/invite.js.rb > +++ b/www/project/icla/views/pages/invite.js.rb > @@ -8,6 +8,7 @@ class Invite < Vue > @iclaemail = '' > @pmc = '' > @votelink = '' > + @noticelink = '' > end > > def render > @@ -43,22 +44,31 @@ class Invite < Vue > end > > _div.form_group do > - _label "PMC", for: 'pmc' > + _label "PMC/PPMC", for: 'pmc' > _select.form_control.pmc! required: true, onChange: self.setPMC, value: > @pmc do > _option '' > Server.data.pmcs.each do |pmc| > _option pmc > end > + _option '---' > + Server.data.ppmcs.each do |ppmc| > + _option ppmc > + end > end > end > > _p %{ > - Fill the following field only if the person was voted by the PMC to > become > - a committer, or the person is an initial committer on a new project > - accepted for incubation, or the person has been voted as a committer > - on a podling. For new incubator projects use the > - http://wiki.apache.org/incubator/XXXProposal link; for existing > projects > - link to the [RESULT][VOTE] message in the mail archives. > + For PMCs: Fill the following field only if the person was voted by the > PMC > + to become a committer. > + Link to the [RESULT][VOTE] message in the mail archives. > + } > + _p %{ > + For PPMCs: Fill the following field only if the person is an initial > + committer on a new project accepted for incubation, or the person > + has been voted as a committer on a podling. > + For new incubator projects use the > + http://wiki.apache.org/incubator/XXXProposal link; for existing > + podlings link to the [RESULT][VOTE] message in the mail archives. > } > _ 'Navigate to ' > _a "ponymail", href: "https://lists.apache.org" > @@ -73,10 +83,13 @@ class Invite < Vue > end > > _p %{ > - Fill the following field only if the person was voted by the PMC to > become > - a PMC member, or voted by the PPMC to be a PPMC member. For existing > - projects, link to the [NOTICE] message sent to the board. > - For PPMCs, link to the [NOTICE] message sent to the incubator PMC. > + For PMCs: Fill the following field only if the person was voted by the > PMC > + to become a PMC member. Link to the [NOTICE] message sent to the board. > + The message must have been in the archives for at least 72 hours. > + } > + _p %{ > + For PPMCs: Fill the following field only if the person was voted by the > + PPMC to be a PPMC member. Link to the [NOTICE] message sent to the > incubator PMC. > The message must have been in the archives for at least 72 hours. > } > > @@ -197,6 +210,7 @@ class Invite < Vue > iclaemail: @iclaemail, > pmc: @pmc, > votelink: @votelink > + #noticelink: @noticelink > } > > @disabled = true > @@ -224,6 +238,7 @@ class Invite < Vue > FormData.email = @iclaemail > FormData.pmc = @pmc > FormData.votelink = @votelink > + FormData.noticelink = @noticelink > > # for demo purposes advance to the interview. Note: the below line > # updates the URL in a way that breaks the back button. > > -- > To stop receiving notification emails like this one, please contact > ['"comm...@whimsical.apache.org" <comm...@whimsical.apache.org>']. Craig L Russell Secretary, Apache Software Foundation c...@apache.org http://db.apache.org/jdo