#3804 Replies to forum e-mails are starting new topics. [24481]

v1.0.0
closed
General
2015-08-20
2012-02-24
Chris Tsai
No

https://sourceforge.net/apps/trac/sourceforge/ticket/24481

Replies to Forum Topics are starting new topics instead of being added to the existing threads.

There does not seem to be anyway to restrict posts to being only made via the web-forum interface.

You can see the posts he's referring to here: https://sourceforge.net/p/vms-ports/discussion/administration/

When I tried testing, I ran into even worse problems, the replies just didn't even show up at all. There should be two replies here: https://sourceforge.net/p/fancypants/chat/general/thread/3888a3ed/

I received email notices of the replies, but they aren't displaying on the thread.

Related

Tickets: #3941

Discussion

  • Dave Brondsema

    Dave Brondsema - 2012-03-09
    • milestone: limbo --> forge-apr-06
     
  • Dave Brondsema

    Dave Brondsema - 2012-03-23
    • size: --> 4
     
  • Jenny Steele - 2012-03-28
    • status: open --> in-progress
    • assigned_to: Jenny Steele
     
  • Jenny Steele - 2012-04-03
    • status: in-progress --> code-review
    • qa: Tim Van Steenburgh
     
  • Jenny Steele - 2012-04-03

    On allura js/3804. To test:

    • Set up an allura sandbox with your email specified in "Emails to:"
    • Create a new project with a discussion tool
    • Log in as admin1 and subscribe to a forum
    • Create a topic in that forum
    • View the source of the email you are sent ("Show original" in gmail)
    • Take note of the Message-ID here
    • I can't get emails to work right on my sb, so I fake up an email reply like:

    ~~~~~~
    telnet localhost 50088
    helo myhostname.net
    mail FROM:jhoffmann@localhost
    rcpt TO:general@discussion.rrrr.p.jsteele-5019.sb.sf.net
    data
    MIME-Version: 1.0
    From: jhoffmann@localhost
    Subject: test this
    To: general@discussion.rrrr.p.jsteele-5019.sb.sf.net
    In-Reply-To: /p/rrrr/discussion/general/38c88cdd331bbada94bbd7b6b535aa5da2edbcbf.discussion@rrrr.p.sourceforge.net
    Message-ID: klksdfj@geek.net

    some text to test with
    .
    ^]
    ~~~~~

    • In-Reply-To should be the Message-ID you got in the original email
    • You need to fake up a new Message-ID for the reply every time you send one.
    • Now if you go to the thread you will see your response.
     
    • status: code-review --> in-progress
     
  • Two things:

    • The first reply worked, but when I replied to the reply, that message didn't show up in the thread. Did that work for you in your testing? Not sure if it's broken or if I did something wrong.
    • It would be great if we could get some kind of test around this code so we don't break it in the future.
     
  • Jenny Steele - 2012-04-09

    Replying to a reply does work for me. Do you see any errors in the log when it fails for you? I updated the existing test to have the correct message id so it tests the code more realistically.

     
  • Jenny Steele - 2012-04-09
    • status: in-progress --> code-review
     
    • status: code-review --> in-progress
     
  • Got this error running the tests:

    ERROR: allura.tests.functional.test_feeds:TestFeeds.test_ticket_feed
      vim +76   allura/tests/functional/test_feeds.py  # test_ticket_feed
        description='This is another description'), extra_environ=dict(username='root'))
      vim +360  esting/alluratest/validation.py  # post
        resp = super(ValidatingTestApp, self).post(*args, **kw)
      vim +307  esting/alluratest/validation.py  # post
        return super(PostParamCheckingTestApp, self).post(*args, **kwargs)
      vim +285  esting/alluratest/validation.py  # post
        return super(AntiSpamTestApp, self).post(*args, **kwargs)
      vim +814  /var/local/env-allura/lib/python2.7/site-packages/WebTest-1.3.1-py2.7.egg/webtest/app.py  # post
        content_type=content_type)
      vim +794  /var/local/env-allura/lib/python2.7/site-packages/WebTest-1.3.1-py2.7.egg/webtest/app.py  # _gen_request
        expect_errors=expect_errors)
      vim +1001 /var/local/env-allura/lib/python2.7/site-packages/WebTest-1.3.1-py2.7.egg/webtest/app.py  # do_request
        res = req.get_response(app, catch_exc_info=True)
      vim +1082 /var/local/env-allura/lib/python2.7/site-packages/WebOb-1.1.1-py2.7.egg/webob/request.py  # get_response
        application, catch_exc_info=True)
      vim +1058 /var/local/env-allura/lib/python2.7/site-packages/WebOb-1.1.1-py2.7.egg/webob/request.py  # call_application
        output.extend(app_iter)
      vim +274  /var/local/env-allura/lib/python2.7/site-packages/WebTest-1.3.1-py2.7.egg/webtest/lint.py  # next
        v = next(self.iterator)
      vim +409  /var/local/env-allura/lib/python2.7/site-packages/Paste-1.7.5.1-py2.7.egg/paste/registry.py  # streaming_iter
        for item in self.application(environ, start_response):
      vim +16   /var/local/env-allura/lib/python2.7/site-packages/Ming-0.3.1dev_20120323-py2.7.egg/ming/odm/middleware.py  # __call__
        result = self.app(environ, start_response)
      vim +41   allura/lib/custom_middleware.py  # __call__
        return self.app(environ, start_response)
      vim +65   /var/local/env-allura/lib/python2.7/site-packages/EasyWidgets-0.2dev_20110726-py2.7.egg/ew/middleware.py  # __call__
        result = self.app(environ, start_response)
      vim +162  allura/config/middleware.py  # AlluraGlobalsMiddleware
        return app(environ, start_response)
      vim +78   allura/lib/custom_middleware.py  # __call__
        self.app, environ, catch_exc_info=True)
      vim +48   /var/local/env-allura/lib/python2.7/site-packages/Pylons-1.0-py2.7.egg/pylons/util.py  # call_wsgi_application
        app_iter = application(environ, start_response)
      vim +150  /var/local/env-allura/lib/python2.7/site-packages/Pylons-1.0-py2.7.egg/pylons/middleware.py  # __call__
        self.app, environ, catch_exc_info=True)
      vim +48   /var/local/env-allura/lib/python2.7/site-packages/Pylons-1.0-py2.7.egg/pylons/util.py  # call_wsgi_application
        app_iter = application(environ, start_response)
      vim +156  /var/local/env-allura/lib/python2.7/site-packages/WebError-0.10.3-py2.7.egg/weberror/errormiddleware.py  # __call__
        return self.application(environ, start_response)
      vim +152  /var/local/env-allura/lib/python2.7/site-packages/Beaker-1.5.4-py2.7.egg/beaker/middleware.py  # __call__
        return self.wrap_app(environ, session_start_response)
      vim +131  /var/local/env-allura/lib/python2.7/site-packages/Routes-1.12.3-py2.7.egg/routes/middleware.py  # __call__
        response = self.app(environ, start_response)
      vim +107  /var/local/env-allura/lib/python2.7/site-packages/Pylons-1.0-py2.7.egg/pylons/wsgiapp.py  # __call__
        response = self.dispatch(controller, environ, start_response)
      vim +312  /var/local/env-allura/lib/python2.7/site-packages/Pylons-1.0-py2.7.egg/pylons/wsgiapp.py  # dispatch
        return controller(environ, start_response)
      vim +102  allura/controllers/test.py  # __call__
        return WsgiDispatchController.__call__(self, environ, start_response)
      vim +27   allura/lib/base.py  # __call__
        response = super(WsgiDispatchController, self).__call__(environ, start_response)
      vim +211  /var/local/env-allura/lib/python2.7/site-packages/Pylons-1.0-py2.7.egg/pylons/controllers/core.py  # __call__
        response = self._dispatch_call()
      vim +162  /var/local/env-allura/lib/python2.7/site-packages/Pylons-1.0-py2.7.egg/pylons/controllers/core.py  # _dispatch_call
        response = self._inspect_call(func)
      vim +105  /var/local/env-allura/lib/python2.7/site-packages/Pylons-1.0-py2.7.egg/pylons/controllers/core.py  # _inspect_call
        result = self._perform_call(func, args)
      vim +254  /var/local/env-allura/lib/python2.7/site-packages/TurboGears2-2.1.3-py2.7.egg/tg/controllers/dispatcher.py  # _perform_call
        r = self._call(func, params, remainder=remainder)
      vim +116  /var/local/env-allura/lib/python2.7/site-packages/TurboGears2-2.1.3-py2.7.egg/tg/controllers/decoratedcontroller.py  # _call
        output = controller(*remainder, **dict(params))
      vim +1049 /home/tvansteenburgh/tvansteenburgh-7029/forge/ForgeTracker/forgetracker/tracker_main.py  # update_ticket
        self._update_ticket(post_data)
      vim +1128 /home/tvansteenburgh/tvansteenburgh-7029/forge/ForgeTracker/forgetracker/tracker_main.py  # _update_ticket
        thread = self.ticket.discussion_thread
      vim +18   /var/local/env-allura/lib/python2.7/site-packages/Ming-0.3.1dev_20120323-py2.7.egg/ming/utils.py  # __get__
        result = obj.__dict__[self.__name__] = self._func(obj)
      vim +265  allura/model/artifact.py  # discussion_thread
        return self.get_discussion_thread()[0]
      vim +256  allura/model/artifact.py  # get_discussion_thread
        in_reply_to = data.get('in_reply_to', [])
    AttributeError: 'NoneType' object has no attribute 'get'
    
     
  • Jenny Steele - 2012-04-16

    Failing test fixed.

     
  • Jenny Steele - 2012-04-16
    • status: in-progress --> code-review
     
    • status: code-review --> closed
     
  • Tests pass now, and after rebuilding sandboxes again, I was finally able to reproduce the expected behavior. Merged to dev.

     

Log in to post a comment.