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
>               <><
>



-- 
*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

Reply via email to