Merge lp:~submarine/unity-scope-zotero/bug1174987 into lp:unity-scope-zotero

Proposed by Mark Tully
Status: Merged
Approved by: David Callé
Approved revision: 24
Merged at revision: 24
Proposed branch: lp:~submarine/unity-scope-zotero/bug1174987
Merge into: lp:unity-scope-zotero
Diff against target: 144 lines (+31/-18)
3 files modified
.bzrignore (+5/-0)
po/unity-scope-zotero.pot (+15/-6)
src/unity_zotero_daemon.py (+11/-12)
To merge this branch: bzr merge lp:~submarine/unity-scope-zotero/bug1174987
Reviewer Review Type Date Requested Status
David Callé Approve
PS Jenkins bot (community) continuous-integration Approve
Review via email: mp+169669@code.launchpad.net

Commit message

Updates SQL query to take into account zotero attachments

Description of the change

Updating SQL query to take into account that in Zotero 4, urls may not be included in the main entry of an article, but rather in an attachment. The query now uses the url in the article entry if it exists, or else uses the first url in the attachments.

Also escaping forbidden characters in the preview description which was preventing it from being displayed if the forbidden characters were in the description.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
David Callé (davidc3) wrote :

LGTM

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file '.bzrignore'
--- .bzrignore 1970-01-01 00:00:00 +0000
+++ .bzrignore 2013-06-16 00:37:28 +0000
@@ -0,0 +1,5 @@
1*.log
2*.substvars
3./build
4./debian/files
5./debian/unity-scope-zotero
06
=== modified file 'po/unity-scope-zotero.pot'
--- po/unity-scope-zotero.pot 2013-03-06 00:58:55 +0000
+++ po/unity-scope-zotero.pot 2013-06-16 00:37:28 +0000
@@ -8,7 +8,7 @@
8msgstr ""8msgstr ""
9"Project-Id-Version: PACKAGE VERSION\n"9"Project-Id-Version: PACKAGE VERSION\n"
10"Report-Msgid-Bugs-To: \n"10"Report-Msgid-Bugs-To: \n"
11"POT-Creation-Date: 2013-03-06 00:56+0000\n"11"POT-Creation-Date: 2013-06-16 01:19+0100\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"14"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,22 +17,27 @@
17"Content-Type: text/plain; charset=CHARSET\n"17"Content-Type: text/plain; charset=CHARSET\n"
18"Content-Transfer-Encoding: 8bit\n"18"Content-Transfer-Encoding: 8bit\n"
1919
20#: ../src/unity_zotero_daemon.py:33 ../data/zotero.scope.in.h:420#: ../src/unity_zotero_daemon.py:34 ../data/zotero.scope.in.h:4
21msgid "Search Zotero"21msgid "Search Zotero"
22msgstr ""22msgstr ""
2323
24#: ../src/unity_zotero_daemon.py:3424#: ../src/unity_zotero_daemon.py:35
25msgid "Sorry, there are no Zotero results that match your search."25msgid "Sorry, there are no Zotero results that match your search."
26msgstr ""26msgstr ""
2727
28#: ../src/unity_zotero_daemon.py:3528#: ../src/unity_zotero_daemon.py:36
29msgid "Powered by Zotero"29msgid "Powered by Zotero"
30msgstr ""30msgstr ""
3131
32#: ../src/unity_zotero_daemon.py:5932#: ../src/unity_zotero_daemon.py:62
33msgid "Articles"33msgid "Articles"
34msgstr ""34msgstr ""
3535
36#. Add the "View" action
37#: ../src/unity_zotero_daemon.py:158
38msgid "View Article"
39msgstr ""
40
36#: ../data/zotero.scope.in.h:141#: ../data/zotero.scope.in.h:1
37msgid "zotero;"42msgid "zotero;"
38msgstr ""43msgstr ""
@@ -42,5 +47,9 @@
42msgstr ""47msgstr ""
4348
44#: ../data/zotero.scope.in.h:349#: ../data/zotero.scope.in.h:3
45msgid "Find Zotero items"50msgid ""
51"This is an Ubuntu search plugin that enables information from Zotero to be "
52"searched and displayed in the Dash underneath the Reference header. If you "
53"do not wish to search this content source, you can disable this search "
54"plugin."
46msgstr ""55msgstr ""
4756
=== modified file 'src/unity_zotero_daemon.py'
--- src/unity_zotero_daemon.py 2013-04-29 15:49:22 +0000
+++ src/unity_zotero_daemon.py 2013-06-16 00:37:28 +0000
@@ -20,6 +20,7 @@
20import os.path20import os.path
21import shutil21import shutil
22import sqlite322import sqlite3
23import html
2324
24APP_NAME = 'unity-scope-zotero'25APP_NAME = 'unity-scope-zotero'
25LOCAL_PATH = '/usr/share/locale/'26LOCAL_PATH = '/usr/share/locale/'
@@ -40,11 +41,12 @@
40DEFAULT_RESULT_TYPE = Unity.ResultType.DEFAULT41DEFAULT_RESULT_TYPE = Unity.ResultType.DEFAULT
4142
42PATHS = [os.getenv("HOME") + "/.mozilla/firefox/", os.getenv("HOME") + "/.zotero/zotero/"]43PATHS = [os.getenv("HOME") + "/.mozilla/firefox/", os.getenv("HOME") + "/.zotero/zotero/"]
43QUERY = ''' SELECT title.value, url.value, pub.value, c1.lastName, c2.lastName, c3.lastName, c4.lastName, c5.lastName, abstract.value44QUERY = '''SELECT title.value, COALESCE(url.value, url2.value), pub.value, GROUP_CONCAT(COALESCE(c1.lastName, "") || ' ' || COALESCE(c2.lastName, "") || ' ' || COALESCE(c3.lastName, "") || ' ' || COALESCE(c4.lastName, "") || ' ' || COALESCE(c5.lastName, "")) as creator, abstract.value
44FROM items i45FROM items i
45INNER JOIN itemDataValues title ON title.valueID =(SELECT itemData.valueID FROM itemData WHERE itemData.fieldID =(SELECT fieldID FROM fields WHERE fields.fieldName = 'title' LIMIT 1) AND itemData.itemID=i.itemID LIMIT 1)46INNER JOIN itemDataValues title ON title.valueID =(SELECT itemData.valueID FROM itemData WHERE itemData.fieldID =(SELECT fieldID FROM fields WHERE fields.fieldName = 'title' LIMIT 1) AND itemData.itemID=i.itemID LIMIT 1)
46LEFT JOIN itemTypes t ON t.itemTypeID = i.itemTypeID47LEFT JOIN itemTypes t ON t.itemTypeID = i.itemTypeID
47LEFT JOIN itemDataValues url ON url.valueID =(SELECT itemData.valueID FROM itemData WHERE itemData.fieldID =(SELECT fieldID FROM fields WHERE fields.fieldName = 'url' LIMIT 1) AND itemData.itemID=i.itemID LIMIT 1)48LEFT JOIN itemDataValues url ON url.valueID = (SELECT itemData.valueID FROM itemData WHERE itemData.fieldID =(SELECT fieldID FROM fields WHERE fields.fieldName = 'url' LIMIT 1) AND itemData.itemID=i.itemID LIMIT 1)
49LEFT JOIN itemDataValues url2 on url2.valueID = (SELECT itemData.valueID FROM itemData WHERE itemData.fieldID =(SELECT fieldID FROM fields WHERE fields.fieldName = 'url' LIMIT 1) AND itemData.itemID = (SELECT itemAttachments.itemID FROM itemAttachments WHERE itemAttachments.sourceItemID = i.itemID) LIMIT 1)
48LEFT JOIN creatorData c1 ON c1.creatorDataID =(SELECT creatorDataID FROM creators WHERE creatorID =(SELECT creatorID FROM itemCreators WHERE itemID = i.itemID ORDER BY orderIndex LIMIT 0,1) LIMIT 1)50LEFT JOIN creatorData c1 ON c1.creatorDataID =(SELECT creatorDataID FROM creators WHERE creatorID =(SELECT creatorID FROM itemCreators WHERE itemID = i.itemID ORDER BY orderIndex LIMIT 0,1) LIMIT 1)
49LEFT JOIN creatorData c2 ON c2.creatorDataID =(SELECT creatorDataID FROM creators WHERE creatorID =(SELECT creatorID FROM itemCreators WHERE itemID = i.itemID ORDER BY orderIndex LIMIT 1,1) LIMIT 1)51LEFT JOIN creatorData c2 ON c2.creatorDataID =(SELECT creatorDataID FROM creators WHERE creatorID =(SELECT creatorID FROM itemCreators WHERE itemID = i.itemID ORDER BY orderIndex LIMIT 1,1) LIMIT 1)
50LEFT JOIN creatorData c3 ON c3.creatorDataID =(SELECT creatorDataID FROM creators WHERE creatorID =(SELECT creatorID FROM itemCreators WHERE itemID = i.itemID ORDER BY orderIndex LIMIT 2,1) LIMIT 1)52LEFT JOIN creatorData c3 ON c3.creatorDataID =(SELECT creatorDataID FROM creators WHERE creatorID =(SELECT creatorID FROM itemCreators WHERE itemID = i.itemID ORDER BY orderIndex LIMIT 2,1) LIMIT 1)
@@ -53,7 +55,8 @@
53LEFT JOIN itemDataValues pub ON pub.valueID =(SELECT itemData.valueID FROM itemData WHERE itemData.fieldID =(SELECT fieldID FROM fields WHERE fields.fieldName = 'publicationTitle' LIMIT 1) AND itemData.itemID=i.itemID LIMIT 1)55LEFT JOIN itemDataValues pub ON pub.valueID =(SELECT itemData.valueID FROM itemData WHERE itemData.fieldID =(SELECT fieldID FROM fields WHERE fields.fieldName = 'publicationTitle' LIMIT 1) AND itemData.itemID=i.itemID LIMIT 1)
54LEFT JOIN itemDataValues abstract ON abstract.valueID =(SELECT itemData.valueID FROM itemData WHERE itemData.fieldID =(SELECT fieldID FROM fields WHERE fields.fieldName = 'abstractNote' LIMIT 1) AND itemData.itemID=i.itemID LIMIT 1)56LEFT JOIN itemDataValues abstract ON abstract.valueID =(SELECT itemData.valueID FROM itemData WHERE itemData.fieldID =(SELECT fieldID FROM fields WHERE fields.fieldName = 'abstractNote' LIMIT 1) AND itemData.itemID=i.itemID LIMIT 1)
55LEFT JOIN deletedItems ON i.itemID = deletedItems.itemID57LEFT JOIN deletedItems ON i.itemID = deletedItems.itemID
56WHERE deletedItems.itemID IS NULL AND t.typeName = "journalArticle"'''58WHERE deletedItems.itemID IS NULL AND t.typeName = "journalArticle"
59GROUP BY title.value'''
5760
58c1 = {'id': 'scholar',61c1 = {'id': 'scholar',
59 'name': _('Articles'),62 'name': _('Articles'),
@@ -114,13 +117,8 @@
114 title = record[0]117 title = record[0]
115 uri = record[1]118 uri = record[1]
116 journal = record[2]119 journal = record[2]
117 author1 = record[3]120 authors = record[3]
118 author2 = record[4]121 abstract = record[4]
119 author3 = record[5]
120 author4 = record[6]
121 author5 = record[7]
122 authors = "%s, %s, %s, %s, %s" % (author1, author2, author3, author4, author5)
123 abstract = record[8]
124 if search.lower() in title.lower():122 if search.lower() in title.lower():
125 if uri:123 if uri:
126 results.append({'uri': uri,124 results.append({'uri': uri,
@@ -151,11 +149,11 @@
151 except KeyError as e:149 except KeyError as e:
152 print(e)150 print(e)
153 try:151 try:
154 description += self.result.metadata['abstract'].get_string()152 description += html.escape(self.result.metadata['abstract'].get_string())
155 except KeyError as e:153 except KeyError as e:
156 print(e)154 print(e)
157 preview.props.description_markup = description155 preview.props.description_markup = description
158 156
159 # Add the "View" action157 # Add the "View" action
160 show_action = Unity.PreviewAction.new("show", _("View Article"), None)158 show_action = Unity.PreviewAction.new("show", _("View Article"), None)
161 preview.add_action(show_action)159 preview.add_action(show_action)
@@ -267,5 +265,6 @@
267 result_preview.set_search_metadata(metadata)265 result_preview.set_search_metadata(metadata)
268 return result_preview266 return result_preview
269267
268
270def load_scope():269def load_scope():
271 return Scope()270 return Scope()
272271
=== modified file 'tests/data/mock_zotero_pass/zotero.default/zotero/zotero-lensbackup.sqlite'
273Binary files tests/data/mock_zotero_pass/zotero.default/zotero/zotero-lensbackup.sqlite 2013-03-14 00:31:22 +0000 and tests/data/mock_zotero_pass/zotero.default/zotero/zotero-lensbackup.sqlite 2013-06-16 00:37:28 +0000 differ272Binary files tests/data/mock_zotero_pass/zotero.default/zotero/zotero-lensbackup.sqlite 2013-03-14 00:31:22 +0000 and tests/data/mock_zotero_pass/zotero.default/zotero/zotero-lensbackup.sqlite 2013-06-16 00:37:28 +0000 differ
=== modified file 'tests/data/mock_zotero_pass/zotero.default/zotero/zotero.sqlite'
274Binary files tests/data/mock_zotero_pass/zotero.default/zotero/zotero.sqlite 2013-03-14 00:31:22 +0000 and tests/data/mock_zotero_pass/zotero.default/zotero/zotero.sqlite 2013-06-16 00:37:28 +0000 differ273Binary files tests/data/mock_zotero_pass/zotero.default/zotero/zotero.sqlite 2013-03-14 00:31:22 +0000 and tests/data/mock_zotero_pass/zotero.default/zotero/zotero.sqlite 2013-06-16 00:37:28 +0000 differ

Subscribers

People subscribed via source and target branches

to all changes: