gnu: gourmet: Update to 0.17.4-0-8af29c8 and enable tests.
* gnu/packages/patches/gourmet-sqlalchemy-compat.patch: Add file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/nutrition.scm (gourmet): Update to 0.17.4-0-8af29c8. [source]: Apply patch. [python]: Delete argument. [tests?]: Likewise. [phases]{prepare-x}: New phase. {check}: New phase override. {install-dekstop-file-and-icons}: New phase. [native-inputs]: Delete python2-distutils-extra, intltool and python2-pygtk. Add python-dogtail, python-pytest, python-selenium and xorg-server-for-tests. [inputs]: Delete python2-pygtk, python2-sqlalchemy, python2-lxml, python2-pillow and python2-elib.intl. Add gtk+, python-argcomplete, python-beautifulsoup4, python-gst, python-keyring, python-lxml, python-pillow, python-pycairo, python-pyenchant, python-pygobject, python-requests, python-scrape-schema-recipe, python-sqlalchemy.
parent
421d09a1d3
commit
cfc02804fc
|
@ -1214,6 +1214,7 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/go-github-com-urfave-cli-fix-tests.patch \
|
%D%/packages/patches/go-github-com-urfave-cli-fix-tests.patch \
|
||||||
%D%/packages/patches/go-github-com-urfave-cli-v2-fix-tests.patch \
|
%D%/packages/patches/go-github-com-urfave-cli-v2-fix-tests.patch \
|
||||||
%D%/packages/patches/go-skip-gc-test.patch \
|
%D%/packages/patches/go-skip-gc-test.patch \
|
||||||
|
%D%/packages/patches/gourmet-sqlalchemy-compat.patch \
|
||||||
%D%/packages/patches/gpaste-fix-paths.patch \
|
%D%/packages/patches/gpaste-fix-paths.patch \
|
||||||
%D%/packages/patches/gpm-glibc-2.26.patch \
|
%D%/packages/patches/gpm-glibc-2.26.patch \
|
||||||
%D%/packages/patches/gpodder-disable-updater.patch \
|
%D%/packages/patches/gpodder-disable-updater.patch \
|
||||||
|
|
|
@ -30,13 +30,17 @@
|
||||||
#:use-module (gnu packages)
|
#:use-module (gnu packages)
|
||||||
#:use-module (gnu packages check)
|
#:use-module (gnu packages check)
|
||||||
#:use-module (gnu packages databases)
|
#:use-module (gnu packages databases)
|
||||||
#:use-module (gnu packages gtk)
|
#:use-module (gnu packages enchant)
|
||||||
#:use-module (gnu packages glib)
|
#:use-module (gnu packages glib)
|
||||||
|
#:use-module (gnu packages gtk)
|
||||||
|
#:use-module (gnu packages gstreamer)
|
||||||
#:use-module (gnu packages image)
|
#:use-module (gnu packages image)
|
||||||
#:use-module (gnu packages python)
|
#:use-module (gnu packages python)
|
||||||
|
#:use-module (gnu packages python-crypto)
|
||||||
#:use-module (gnu packages python-web)
|
#:use-module (gnu packages python-web)
|
||||||
#:use-module (gnu packages python-xyz)
|
#:use-module (gnu packages python-xyz)
|
||||||
#:use-module (gnu packages time)
|
#:use-module (gnu packages time)
|
||||||
|
#:use-module (gnu packages xorg)
|
||||||
#:use-module (gnu packages xml))
|
#:use-module (gnu packages xml))
|
||||||
|
|
||||||
(define-public python-scrape-schema-recipe
|
(define-public python-scrape-schema-recipe
|
||||||
|
@ -78,46 +82,80 @@ in the @url{https://schema.org/Recipe} format.")
|
||||||
(license asl2.0)))
|
(license asl2.0)))
|
||||||
|
|
||||||
(define-public gourmet
|
(define-public gourmet
|
||||||
(package
|
;; Use the latest commit to gain Python 3 support.
|
||||||
(name "gourmet")
|
(let ((revision "0")
|
||||||
(version "0.17.4")
|
(commit "8af29c8ded24528030e5ae2ea3461f61c1e5a575"))
|
||||||
(source
|
(package
|
||||||
(origin
|
(name "gourmet")
|
||||||
(method git-fetch)
|
(version (git-version "0.17.4" revision commit))
|
||||||
(uri (git-reference
|
(source
|
||||||
(url "https://github.com/thinkle/gourmet")
|
(origin
|
||||||
(commit version)))
|
(method git-fetch)
|
||||||
(file-name (git-file-name name version))
|
(uri (git-reference
|
||||||
(sha256
|
(url "https://github.com/thinkle/gourmet")
|
||||||
(base32
|
(commit commit)))
|
||||||
"09a2zk140l4babwdj8pwcgl9v7rvwff9cn7h3ppfhm3yvsgkrx07"))))
|
(file-name (git-file-name name version))
|
||||||
(build-system python-build-system)
|
(sha256
|
||||||
(native-inputs
|
(base32
|
||||||
`(("distutils-extra" ,python2-distutils-extra)
|
"08fbw6zp32ws6w9czwy2sqc9c9izlkglsskshj2114d0l79z4gj8"))
|
||||||
("intltool" ,intltool)
|
(patches (search-patches "gourmet-sqlalchemy-compat.patch"))))
|
||||||
("python-pygtk" ,python2-pygtk))) ;for tests
|
(build-system python-build-system)
|
||||||
;; TODO: Add python-reportlab and/or python-poppler for printing/pdf
|
(arguments
|
||||||
;; export, and python-beautifulsoup for web import plugin.
|
(list
|
||||||
(inputs
|
#:modules `((guix build utils)
|
||||||
`(("pygtk" ,python2-pygtk)
|
(guix build python-build-system)
|
||||||
("sqlalchemy" ,python2-sqlalchemy)
|
(ice-9 ftw)
|
||||||
("python-lxml" ,python2-lxml)
|
(srfi srfi-26))
|
||||||
("python-pillow" ,python2-pillow)
|
#:phases
|
||||||
("elib.intl" ,python2-elib.intl)))
|
#~(modify-phases %standard-phases
|
||||||
(arguments
|
(add-before 'check 'prepare-x
|
||||||
`(#:python ,python-2 ;exception and print syntax
|
;; Both the tests and the sanity-check phase need an X server to
|
||||||
#:tests? #f ;tests look bitrotted
|
;; succeed.
|
||||||
#:phases
|
(lambda _
|
||||||
(modify-phases %standard-phases
|
(system "Xvfb &")
|
||||||
(replace 'install
|
(setenv "DISPLAY" ":0")))
|
||||||
(lambda* (#:key outputs #:allow-other-keys)
|
(replace 'check
|
||||||
(invoke "python" "setup.py" "install" "--prefix"
|
(lambda* (#:key tests? #:allow-other-keys)
|
||||||
(assoc-ref outputs "out")))))))
|
(when tests?
|
||||||
(home-page "https://thinkle.github.io/gourmet/")
|
(setenv "HOME" "/tmp") ;needed by tests
|
||||||
(synopsis "Recipe organizer")
|
(apply invoke "pytest" "-vv"
|
||||||
(description
|
;; XXX: This is needed because some tests in deeper
|
||||||
"Gourmet Recipe Manager is a recipe organizer that allows you to collect,
|
;; directories or otherwise discovered by Pytest are
|
||||||
|
;; broken.
|
||||||
|
(map (cut string-append "gourmet/tests/" <>)
|
||||||
|
(scandir "gourmet/tests"
|
||||||
|
(cut string-prefix? "test_" <>)))))))
|
||||||
|
(add-after 'install 'install-dekstop-file-and-icons
|
||||||
|
(lambda _
|
||||||
|
(define share (string-append #$output "/share"))
|
||||||
|
(install-file ".flatpak/io.github.thinkle.Gourmet.desktop"
|
||||||
|
(string-append share "/applications"))
|
||||||
|
(install-file ".flatpak/io.github.thinkle.Gourmet.svg"
|
||||||
|
(string-append share "/icons/Gourmet")))))))
|
||||||
|
(native-inputs
|
||||||
|
(list python-dogtail
|
||||||
|
python-pytest
|
||||||
|
python-selenium
|
||||||
|
xorg-server-for-tests))
|
||||||
|
(inputs
|
||||||
|
(list gtk+
|
||||||
|
python-argcomplete
|
||||||
|
python-beautifulsoup4
|
||||||
|
python-gst
|
||||||
|
python-keyring
|
||||||
|
python-lxml
|
||||||
|
python-pillow
|
||||||
|
python-pycairo
|
||||||
|
python-pyenchant
|
||||||
|
python-pygobject
|
||||||
|
python-requests
|
||||||
|
python-scrape-schema-recipe
|
||||||
|
python-sqlalchemy))
|
||||||
|
(home-page "https://thinkle.github.io/gourmet/")
|
||||||
|
(synopsis "Recipe organizer")
|
||||||
|
(description
|
||||||
|
"Gourmet Recipe Manager is a recipe organizer that allows you to collect,
|
||||||
search, organize, and browse your recipes. Gourmet can also generate shopping
|
search, organize, and browse your recipes. Gourmet can also generate shopping
|
||||||
lists and calculate nutritional information. It imports Mealmaster,
|
lists and calculate nutritional information. It imports Mealmaster,
|
||||||
MasterCook and KRecipe files and exports PDFs, webpages, and other formats.")
|
MasterCook and KRecipe files and exports PDFs, webpages, and other formats.")
|
||||||
(license gpl2+)))
|
(license gpl2+))))
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
diff --git a/gourmet/backends/db.py b/gourmet/backends/db.py
|
||||||
|
index faa6a57a..7e6d2bc6 100644
|
||||||
|
--- a/gourmet/backends/db.py
|
||||||
|
+++ b/gourmet/backends/db.py
|
||||||
|
@@ -773,9 +773,11 @@ class RecData (Pluggable):
|
||||||
|
"""Return the number of rows in table that match criteria
|
||||||
|
"""
|
||||||
|
if criteria:
|
||||||
|
- return table.count(*make_simple_select_arg(criteria,table)).execute().fetchone()[0]
|
||||||
|
+ return sqlalchemy.select(
|
||||||
|
+ sqlalchemy.func.count(criteria)).select_from(table).scalar()
|
||||||
|
else:
|
||||||
|
- return table.count().execute().fetchone()[0]
|
||||||
|
+ return sqlalchemy.select(
|
||||||
|
+ sqlalchemy.func.count()).select_from(table).scalar()
|
||||||
|
|
||||||
|
def fetch_join (self, table1, table2, col1, col2,
|
||||||
|
column_names=None, sort_by=[], **criteria):
|
Reference in New Issue