Hi Deshani,

I merged the request already, but have now realized I didn't test it thoroughly
enough.  In the email_address property, self.title.replace(' ', '_') doesn't do
anything on its own.  It needs to be saved to a variable and use that, or
chained onto the existing replace('/', '.')

Want to make another merge request?

Thanks!

On 5/7/18 6:07 PM, Dave Brondsema wrote:
> Sorry for the delays, I will try to get this tomorrow and post feedback on the
> merge request tomorrow.
> 
> This is a good opportunity to say that delays and time to discuss & coordinate
> are inevitable.  Its a good reason to keep units of work small enough, and
> during "fulltime" work on Allura expect to switch gears to a different tasks 
> on
> different branches while waiting for feedback.
> 
> Thanks though and hope to post feedback tomorrow!
> 
> On 5/4/18 3:47 PM, Deshani Geethika wrote:
>> Hi Dave,
>>
>> I've fixed the issue and added a merge request
>> <https://forge-allura.apache.org/p/allura/git/merge-requests/252/>.
>>
>> Please review it and let me know any improvements.
>>
>> Regards!
>>
>> On Fri, May 4, 2018 at 3:13 AM, Dave Brondsema <d...@brondsema.net> wrote:
>>
>>> I think this method, handling inbound emails to wiki pages, is probably
>>> not used
>>> very much :)  I haven't tried it but it does seem like that would let
>>> people
>>> create new wiki pages just by emailing to the address.
>>>
>>> 1) We probably don't need to allow that.  Just allow emails to make
>>> comments on
>>> *existing* wiki pages (which I believe handle_artifact_message does)
>>>
>>> 2) If you look at `git blame` for handle_message you can see that it is
>>> quite
>>> old.  Some of the very early work on Allura doesn't make perfect sense any
>>> more.
>>> So in this case it probably would be fine to remove the try/except since
>>> as you
>>> say upsert() shouldn't raise any exception.  And I don't think the
>>> underlying
>>> get() and upsert() calls within upsert() would raise any either.
>>>
>>> -Dave
>>>
>>> On 5/3/18 11:20 AM, Deshani Geethika wrote:
>>>> Hi Dave,
>>>>
>>>> Let's continue the discussion related to the above issue in this thread.
>>>>
>>>> I have few confusions on the forgewiki.wiki_main.
>>> ForgeWikiApp#handle_message
>>>> *[1]* method. Inside this method, Page.upsert method *[2]* is called, and
>>>> upsert method will update page with 'title' or insert new page with that
>>>> name. Does that means, if somebody sends an email to 'Foo_Baz@123' and
>>> if
>>>> that page is not available, a new page with the title 'Foo_Baz' will be
>>>> created? If so, we have some problems.
>>>>
>>>>    1. We can't validate the title
>>>>    2. 'upsert' method will never throw an exception (But in
>>> handle_message
>>>>    method exception is handled)
>>>>
>>>>
>>>> *[1]*    def handle_message(self, topic, message):
>>>>         log.info('Message from %s (%s)',
>>>>                  topic, self.config.options.mount_point)
>>>>         log.info('Headers are: %s', message['headers'])
>>>>         try:
>>>>             page = WM.Page.upsert(topic)
>>>>         except:
>>>>             log.exception('Error getting artifact %s', topic)
>>>>         self.handle_artifact_message(page, message)
>>>>
>>>> *[2]* @classmethod
>>>>     def upsert(cls, title, version=None):
>>>>         """Update page with `title` or insert new page with that name"""
>>>>         if version is None:
>>>>             # Check for existing page object
>>>>             obj = cls.query.get(
>>>>                 app_config_id=context.app.config._id,
>>>>                 title=title)
>>>>             if obj is None:
>>>>                 obj = cls(
>>>>                     title=title,
>>>>                     app_config_id=context.app.config._id,
>>>>                 )
>>>>                 Thread.new(discussion_id=obj.app_config.discussion_id,
>>>>                            ref_id=obj.index_id())
>>>>             return obj
>>>>         else:
>>>>             pg = cls.upsert(title)
>>>>             HC = cls.__mongometa__.history_class
>>>>             ss = HC.query.find(
>>>>                 {'artifact_id': pg._id, 'version': int(version)}).one()
>>>>             return ss
>>>>
>>>> Regards!
>>>>
>>>> On Thu, May 3, 2018 at 3:21 AM, Dave Brondsema <d...@brondsema.net>
>>> wrote:
>>>>
>>>>> On 5/2/18 11:24 AM, Deshani Geethika wrote:
>>>>>> Hi Dave,
>>>>>>
>>>>>> Thanks for the information. I have few questions to be clarified.
>>>>>>
>>>>>> I think replacing spaces with underscores would be a good way to do it,
>>>>>> since on many wikis they are
>>>>>> interchangable.  (They aren't for allura, but we could move towards
>>>>> that).
>>>>>>
>>>>>> Here do you mean that spaces and underscores in a title are considered
>>> as
>>>>>> same characters?
>>>>>>
>>>>>> For example : "The Title" is considered same as "The_Title".
>>>>>
>>>>> Yes that's what I was thinking.
>>>>>
>>>>>>
>>>>>> In this situation, users should not be allowed to create 2 wikis with
>>>>> above
>>>>>> titles, because we can't handle inbound emails for both scenarios.
>>>>>
>>>>> Good point, I hadn't thought of that.  That does make this more
>>>>> complicated.
>>>>> Maybe it could be a followup step to prevent creating a page that
>>>>> conflicts with
>>>>> another one.  And then even later on we could make URLs handle spaces
>>> and
>>>>> underscores interchangably.
>>>>>
>>>>> Anyone else have ideas about what would be best?
>>>>>
>>>>>>
>>>>>> Also, we have another problem here.
>>>>>>
>>>>>> Then this handle_message method could try finding a page for that
>>>>> message,
>>>>>> and if it
>>>>>> doesn't exist, it can convert any underscores back to spaces and then
>>> try
>>>>>> find
>>>>>> the wiki page under that name.
>>>>>>
>>>>>> Here do I need to check for all the possible number of combinations of
>>>>>> underscores and spaces to find out the exact wiki page?
>>>>>
>>>>>
>>>>> I was thinking if an email comes in for "Foo_Bar_Baz" first look for one
>>>>> titled
>>>>> "Foo_Bar_Baz" and then one titled "Foo Bar Baz".  Trying every
>>> combination
>>>>> could
>>>>> get crazy.
>>>>>
>>>>>>
>>>>>> Regards!
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, May 2, 2018 at 7:17 AM, Dave Brondsema <d...@brondsema.net>
>>>>> wrote:
>>>>>>
>>>>>>> Cool.  That email_address property should be the main one and changing
>>>>> it
>>>>>>> should
>>>>>>> reflect in the outgoing emails that are sent to subscribers after
>>>>>>> commenting or
>>>>>>> editing a wiki page.
>>>>>>>
>>>>>>> Allura also supports *inbound* emails on most artifacts including wiki
>>>>>>> pages.
>>>>>>> So someone could reply to the wiki email and it would be received by
>>>>>>> Allura and
>>>>>>> added as a comment on the wiki page.  The
>>>>>>> forgewiki.wiki_main.ForgeWikiApp#handle_message method is what is
>>>>>>> responsible
>>>>>>> for that.  So that code should be updated as well.  I think replacing
>>>>>>> spaces
>>>>>>> with underscores would be a good way to do it, since on many wikis
>>> they
>>>>> are
>>>>>>> interchangable.  (They aren't for allura, but we could move towards
>>>>>>> that).  Then
>>>>>>> this handle_message method could try finding a page for that message,
>>>>> and
>>>>>>> if it
>>>>>>> doesn't exist, it can convert any underscores back to spaces and then
>>>>> try
>>>>>>> find
>>>>>>> the wiki page under that name.
>>>>>>>
>>>>>>> To test the inbound mails, I'm unfortunately not seeing any tests in
>>> the
>>>>>>> code.
>>>>>>> You could add some.  The ForgeWiki/forgewiki/tests/test_app.py file
>>>>> has a
>>>>>>> TestBulkExport class and you could copy most of its setup, and then
>>> add
>>>>> a
>>>>>>> test_email test case that calls wiki.handle_message.
>>>>>>>
>>>>>>> The other way is to use telnet or other tools like that to send the
>>> mail
>>>>>>> into
>>>>>>> the "inmail" docker compose container, or `paster smtp_server` service
>>>>> if
>>>>>>> you
>>>>>>> aren't using docker.  There's an example of doing that in the middle
>>> of
>>>>>>> this
>>>>>>> page: https://forge-allura.apache.org/p/allura/wiki/Notes/
>>>>>>>
>>>>>>> Hope that helps!  It sounds a little more complex of a ticket than I
>>>>>>> initially
>>>>>>> thought it would be.  Let us know if you have any more questions or
>>> get
>>>>>>> stuck on
>>>>>>> anything.
>>>>>>>
>>>>>>> -Dave
>>>>>>>
>>>>>>> On 5/1/18 12:45 PM, Deshani Geethika wrote:
>>>>>>>> Hi all,
>>>>>>>>
>>>>>>>> During last few days, I spent time on reading the Allura
>>> documentation
>>>>>>> and
>>>>>>>> on getting familiarized with Allura codebase.
>>>>>>>>
>>>>>>>> Then, I have started to work on the ticket - #1699 Fix incoming email
>>>>> for
>>>>>>>> wiki pages with space in the title
>>>>>>>> <https://forge-allura.apache.org/p/allura/tickets/1699/>. According
>>> to
>>>>>>> my
>>>>>>>> understanding, it is required to replace the spaces in the title with
>>>>>>> null
>>>>>>>> string (or with some character). Therefore, the getter method for
>>>>>>>> email_address which is in Page.class in
>>> ForgeWiki/forgewiki/model/wiki
>>>>>>> .py
>>>>>>>> should be changed as below.
>>>>>>>>
>>>>>>>>
>>>>>>>> @property
>>>>>>>> def email_address(self):
>>>>>>>>        if context.app.config.options.get('AllowEmailPosting', True):
>>>>>>>>                domain = self.email_domain
>>>>>>>>     * self.title.replace(‘ ‘,’’) // Added line*
>>>>>>>>                return '%s@%s%s' % (self.title.replace('/', '.'),
>>>>> domain,
>>>>>>>> config.common_suffix)
>>>>>>>>        else:
>>>>>>>>                return tg_config.get('forgemail.return_path')
>>>>>>>>
>>>>>>>> Could you tell me whether, do I need to modify any method other than
>>>>> the
>>>>>>>> above one?
>>>>>>>>
>>>>>>>>
>>>>>>>> Regards!
>>>>>>>>
>>>>>>>> On Wed, Apr 25, 2018 at 10:30 PM, Deshani Geethika <
>>>>>>>> deshanigeeth...@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Hi Dave,
>>>>>>>>>
>>>>>>>>> Thanks for the detailed explanation. I will start working on this
>>> and
>>>>>>> come
>>>>>>>>> back to you with my progress
>>>>>>>>>
>>>>>>>>> Regards!
>>>>>>>>>
>>>>>>>>> On Wed, Apr 25, 2018 at 9:55 PM, Dave Brondsema <d...@brondsema.net
>>>>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> On 4/24/18 11:14 AM, Deshani Geethika wrote:
>>>>>>>>>>> Hi Dave,
>>>>>>>>>>>
>>>>>>>>>>> As per GSoC official time-line, from 23rd April to 14th May period
>>>>> is
>>>>>>>>>>> considered as "Community Bonding Period".
>>>>>>>>>>>
>>>>>>>>>>> During this period I would like to finalize my design and separate
>>>>> my
>>>>>>>>>>> project into several tickets. Also, I would like to get more
>>>>>>>>>> familiarized
>>>>>>>>>>> with Allura code-base and Allura team.
>>>>>>>>>>>
>>>>>>>>>>> Could you guide me what would be the best way to start off with.
>>>>>>>>>>>
>>>>>>>>>>> Regards!
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Sounds like good goals for the community bonding period.
>>>>>>>>>>
>>>>>>>>>> I've added you as a developer on our self-hosted Allura project
>>>>>>>>>> https://forge-allura.apache.org/p/allura/ which means you can
>>> assign
>>>>>>>>>> tickets to
>>>>>>>>>> yourself, make new ones, update existing ones, etc.  I'd recommend
>>>>>>> having
>>>>>>>>>> many
>>>>>>>>>> small incremental tickets (perhaps even smaller pieces of work than
>>>>> you
>>>>>>>>>> outlined
>>>>>>>>>> in the project proposal), so that its easy to manage them and
>>> review
>>>>>>>>>> them.  And
>>>>>>>>>> of course you don't need to make them all right away :)
>>>>>>>>>>
>>>>>>>>>> To familiarize yourself with Allura, you can read more of the
>>>>>>>>>> documentation -
>>>>>>>>>> assuming you haven't read it all already ;)
>>>>>>>>>> https://forge-allura.apache.org/docs/
>>>>>>>>>>
>>>>>>>>>> And working on Allura code itself is best.  Find an existing ticket
>>>>> or
>>>>>>>>>> anything
>>>>>>>>>> you notice that could be made better, and make a fix for it.  A
>>>>> really
>>>>>>>>>> easy one
>>>>>>>>>> that I could suggest is https://forge-allura.apache.or
>>>>>>>>>> g/p/allura/tickets/1699/
>>>>>>>>>>
>>>>>>>>>> I've also noticed that our test suite has failed the past few
>>> times:
>>>>>>>>>> https://builds.apache.org/blue/organizations/jenkins/
>>> Allura/activity
>>>>>>> It
>>>>>>>>>> probably is related to the "Make debug pages and post permalinks
>>> work
>>>>>>>>>> correctly
>>>>>>>>>> when behind a proxy" commit.  You could take a look at fixing that
>>> if
>>>>>>> you
>>>>>>>>>> want.
>>>>>>>>>> Otherwise I will soon.
>>>>>>>>>>
>>>>>>>>>> Lastly, reviewing other people's work is a good way to get familiar
>>>>>>> with
>>>>>>>>>> the
>>>>>>>>>> code and best practices.  I will have a fix for
>>>>>>>>>> https://forge-allura.apache.org/p/allura/tickets/6353/ coming
>>> soon,
>>>>> so
>>>>>>>>>> watch out
>>>>>>>>>> for that.  You won't be able to merge my branch to master, but it
>>> can
>>>>>>> be
>>>>>>>>>> a good
>>>>>>>>>> way for you to learn from others.  And any constructive feedback
>>>>> would
>>>>>>> be
>>>>>>>>>> welcome too, of course.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Dave Brondsema : d...@brondsema.net
>>>>>>>>>> http://www.brondsema.net : personal
>>>>>>>>>> http://www.splike.com : programming
>>>>>>>>>>               <><
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> *Deshani Geethika*
>>>>>>>>> Undergraduate at Department of Computer Science and Engineering
>>>>>>>>> Faculty of Engineering - University of Moratuwa Sri Lanka
>>>>>>>>> LinkedIn <https://www.linkedin.com/in/deshanigeethika/> | GitHub
>>>>>>>>> <https://github.com/deshanigtk> | Mobile - +94776383034
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Dave Brondsema : d...@brondsema.net
>>>>>>> http://www.brondsema.net : personal
>>>>>>> http://www.splike.com : programming
>>>>>>>               <><
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Dave Brondsema : d...@brondsema.net
>>>>> http://www.brondsema.net : personal
>>>>> http://www.splike.com : programming
>>>>>               <><
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Dave Brondsema : d...@brondsema.net
>>> http://www.brondsema.net : personal
>>> http://www.splike.com : programming
>>>               <><
>>>
>>
>>
>>
> 
> 
> 



-- 
Dave Brondsema : d...@brondsema.net
http://www.brondsema.net : personal
http://www.splike.com : programming
              <><

Reply via email to