You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2018/05/09 15:16:54 UTC

[1/2] allura git commit: [#1699] Remove redundant parameter from find_page method

Repository: allura
Updated Branches:
  refs/heads/master 5d37665f6 -> 1587b2ee2


[#1699] Remove redundant parameter from find_page method


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/1587b2ee
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/1587b2ee
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/1587b2ee

Branch: refs/heads/master
Commit: 1587b2ee23d8d13838b34d20f21736897593f840
Parents: 93a40e6
Author: deshanigtk <de...@cse.mrt.ac.lk>
Authored: Wed May 9 08:00:44 2018 +0530
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed May 9 11:11:59 2018 -0400

----------------------------------------------------------------------
 ForgeWiki/forgewiki/model/wiki.py | 21 ++++++---------------
 1 file changed, 6 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/1587b2ee/ForgeWiki/forgewiki/model/wiki.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/model/wiki.py b/ForgeWiki/forgewiki/model/wiki.py
index 7e31ebb..9df36e9 100644
--- a/ForgeWiki/forgewiki/model/wiki.py
+++ b/ForgeWiki/forgewiki/model/wiki.py
@@ -227,22 +227,13 @@ class Page(VersionedArtifact, ActivityObject):
             return ss
 
     @classmethod
-    def find_page(cls, title, version=None):
+    def find_page(cls, title):
         """Find page with `title`"""
-        if version is None:
-            # Check for existing page object
-            obj = cls.query.get(
-                app_config_id=context.app.config._id,
-                title=title)
-            return obj
-        else:
-            pg = cls.find_page(title)
-            if pg is not None:
-                HC = cls.__mongometa__.history_class
-                ss = HC.query.find(
-                    {'artifact_id': pg._id, 'version': int(version)}).one()
-                return ss
-            return pg
+        # Check for existing page object
+        obj = cls.query.get(
+            app_config_id=context.app.config._id,
+            title=title)
+        return obj
 
     @classmethod
     def attachment_class(cls):


[2/2] allura git commit: [#1699] Fix incoming email for wiki pages with space in the title, Adds test functionality for handle_message method

Posted by br...@apache.org.
[#1699] Fix incoming email for wiki pages with space in the title, Adds test functionality for handle_message method


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/93a40e6f
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/93a40e6f
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/93a40e6f

Branch: refs/heads/master
Commit: 93a40e6f48389396ac0259227e89d41d5eb99b99
Parents: 5d37665
Author: deshanigtk <de...@cse.mrt.ac.lk>
Authored: Sat May 5 01:08:13 2018 +0530
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed May 9 11:11:59 2018 -0400

----------------------------------------------------------------------
 ForgeWiki/forgewiki/model/wiki.py     | 19 ++++++++++++++
 ForgeWiki/forgewiki/tests/test_app.py | 40 +++++++++++++++++++++++++++++-
 ForgeWiki/forgewiki/wiki_main.py      | 10 +++++---
 3 files changed, 64 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/93a40e6f/ForgeWiki/forgewiki/model/wiki.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/model/wiki.py b/ForgeWiki/forgewiki/model/wiki.py
index 4c79045..7e31ebb 100644
--- a/ForgeWiki/forgewiki/model/wiki.py
+++ b/ForgeWiki/forgewiki/model/wiki.py
@@ -175,6 +175,7 @@ class Page(VersionedArtifact, ActivityObject):
     def email_address(self):
         if context.app.config.options.get('AllowEmailPosting', True):
             domain = self.email_domain
+            self.title.replace(' ', '_')
             return '%s@%s%s' % (self.title.replace('/', '.'), domain, config.common_suffix)
         else:
             return tg_config.get('forgemail.return_path')
@@ -226,6 +227,24 @@ class Page(VersionedArtifact, ActivityObject):
             return ss
 
     @classmethod
+    def find_page(cls, title, version=None):
+        """Find page with `title`"""
+        if version is None:
+            # Check for existing page object
+            obj = cls.query.get(
+                app_config_id=context.app.config._id,
+                title=title)
+            return obj
+        else:
+            pg = cls.find_page(title)
+            if pg is not None:
+                HC = cls.__mongometa__.history_class
+                ss = HC.query.find(
+                    {'artifact_id': pg._id, 'version': int(version)}).one()
+                return ss
+            return pg
+
+    @classmethod
     def attachment_class(cls):
         return WikiAttachment
 

http://git-wip-us.apache.org/repos/asf/allura/blob/93a40e6f/ForgeWiki/forgewiki/tests/test_app.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/tests/test_app.py b/ForgeWiki/forgewiki/tests/test_app.py
index 98d6d5f..086d258 100644
--- a/ForgeWiki/forgewiki/tests/test_app.py
+++ b/ForgeWiki/forgewiki/tests/test_app.py
@@ -121,4 +121,42 @@ class TestBulkExport(object):
 
         assert pages[3]['attachments'][0].get('path', None) is None
         assert pages[3]['attachments'][0]['url'] != 'wiki/{}/test_file'.format(self.page._id)
-        assert not os.path.exists(os.path.join(temp_dir, 'wiki', str(self.page._id), 'test_file'))
\ No newline at end of file
+        assert not os.path.exists(os.path.join(temp_dir, 'wiki', str(self.page._id), 'test_file'))
+
+
+class TestEmail(object):
+
+    def setUp(self):
+        setup_basic_test()
+        setup_global_objects()
+        self.setup_with_tools()
+
+    @td.with_wiki
+    def setup_with_tools(self):
+        self.project = M.Project.query.get(shortname='test')
+        self.wiki = self.project.app_instance('wiki')
+        page = WM.Page.upsert('A New Hope')
+        page.text = 'Star Wars Episode IV: A New Hope'
+        page.mod_date = datetime.datetime(2013, 7, 5)
+        page.labels = ['star wars', 'movies']
+        page.commit()
+        page.discussion_thread.add_post(text='Embrace the Dark Side')
+        page.discussion_thread.add_post(text='Nope')
+        page = WM.Page.upsert('The Empire Strikes Back')
+        page.text = 'Star Wars Episode V: The Empire Strikes Back'
+        page.commit()
+        page = WM.Page.upsert('Return of the Jedi')
+        page.text = 'Star Wars Episode VI: Return of the Jedi'
+        page.commit()
+        page = WM.Page.query.get(
+            app_config_id=self.wiki.config._id, title='Home')
+        page.deleted = True
+        page.commit()
+
+    def test_inbound_email(self):
+        message_id = '1'
+        message = 'test message'
+        msg = dict(payload=message, message_id=message_id, headers={'Subject': 'test'})
+        self.wiki.handle_message('A_New_Hope', msg)
+        post = M.Post.query.get(_id=message_id)
+        assert_equal(post["text"], message)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/93a40e6f/ForgeWiki/forgewiki/wiki_main.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/wiki_main.py b/ForgeWiki/forgewiki/wiki_main.py
index 12e2e6e..e3a8cfb 100644
--- a/ForgeWiki/forgewiki/wiki_main.py
+++ b/ForgeWiki/forgewiki/wiki_main.py
@@ -127,11 +127,13 @@ class ForgeWikiApp(Application):
         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:
+        page = WM.Page.find_page(topic)
+        if page is None:
+            page = WM.Page.find_page(topic.replace('_', ' '))
+        if page is not None:
+            self.handle_artifact_message(page, message)
+        else:
             log.exception('Error getting artifact %s', topic)
-        self.handle_artifact_message(page, message)
 
     @property
     def root_page_name(self):