diff -Nru libhtml-formhandler-model-dbic-perl-0.23/Changes libhtml-formhandler-model-dbic-perl-0.28/Changes
--- libhtml-formhandler-model-dbic-perl-0.23/Changes 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/Changes 2013-09-22 16:21:14.000000000 +0000
@@ -1,3 +1,19 @@
+0.28
+ Remove unnecessary use of Business::ISBN
+
+0.27
+ Bug: dies with multiple pk table with unique field/column
+
+0.26 Sun Jul 21, 2013
+ Enable use of 'messages' hashref for setting unique message
+
+0.25 Wed Jul 3, 2013
+ Fix bug using result source method for select labels
+ Bump prereq of DBIx::Class::ResultSet::RecursiveUpdate
+
+0.24 Sun May 5, 2013
+ Bump prereq version of DBIC to avoid a regression
+
0.23 Mon Oct 15, 2012
Bump pre-req to non-broken HTML::FormHandler
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/LICENSE libhtml-formhandler-model-dbic-perl-0.28/LICENSE
--- libhtml-formhandler-model-dbic-perl-0.23/LICENSE 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/LICENSE 2013-09-22 16:21:14.000000000 +0000
@@ -1,4 +1,4 @@
-This software is copyright (c) 2012 by Gerda Shank.
+This software is copyright (c) 2013 by Gerda Shank.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -12,7 +12,7 @@
--- The GNU General Public License, Version 1, February 1989 ---
-This software is Copyright (c) 2012 by Gerda Shank.
+This software is Copyright (c) 2013 by Gerda Shank.
This is free software, licensed under:
@@ -272,7 +272,7 @@
--- The Artistic License 1.0 ---
-This software is Copyright (c) 2012 by Gerda Shank.
+This software is Copyright (c) 2013 by Gerda Shank.
This is free software, licensed under:
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/MANIFEST libhtml-formhandler-model-dbic-perl-0.28/MANIFEST
--- libhtml-formhandler-model-dbic-perl-0.23/MANIFEST 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/MANIFEST 2013-09-22 16:21:14.000000000 +0000
@@ -16,9 +16,11 @@
lib/HTML/FormHandler/TraitFor/Model/DBIC.pm
script/form_generator.pl
t/01app.t
+t/active_column.t
t/author.t
t/bad_item_id.t
t/book.t
+t/book2pk.t
t/datetime.t
t/db/book.db
t/db/bookdb.sql
@@ -35,6 +37,7 @@
t/lib/BookDB/Form/Author.pm
t/lib/BookDB/Form/AuthorOld.pm
t/lib/BookDB/Form/Book.pm
+t/lib/BookDB/Form/Book2PK.pm
t/lib/BookDB/Form/BookHTML.pm
t/lib/BookDB/Form/BookM2M.pm
t/lib/BookDB/Form/BookView.pm
@@ -54,6 +57,7 @@
t/lib/BookDB/Schema/Result/AuthorBooks.pm
t/lib/BookDB/Schema/Result/AuthorOld.pm
t/lib/BookDB/Schema/Result/Book.pm
+t/lib/BookDB/Schema/Result/Book2PK.pm
t/lib/BookDB/Schema/Result/BooksGenres.pm
t/lib/BookDB/Schema/Result/Borrower.pm
t/lib/BookDB/Schema/Result/Country.pm
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/META.json libhtml-formhandler-model-dbic-perl-0.28/META.json
--- libhtml-formhandler-model-dbic-perl-0.23/META.json 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/META.json 2013-09-22 16:21:14.000000000 +0000
@@ -21,7 +21,7 @@
},
"runtime" : {
"requires" : {
- "DBIx::Class" : "0",
+ "DBIx::Class" : "0.08250",
"DBIx::Class::ResultSet::RecursiveUpdate" : "0.25",
"HTML::FormHandler" : "0.40016",
"Moose" : "2.0007",
@@ -33,6 +33,7 @@
"DateTime::Format::MySQL" : "0",
"DateTime::Format::SQLite" : "0",
"DateTime::Format::W3CDTF" : "0",
+ "Test::Exception" : "0",
"Test::More" : "0.94"
}
}
@@ -49,6 +50,6 @@
"web" : "http://github.com/gshank/html-formhandler-model-dbic"
}
},
- "version" : "0.23"
+ "version" : "0.28"
}
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/META.yml libhtml-formhandler-model-dbic-perl-0.28/META.yml
--- libhtml-formhandler-model-dbic-perl-0.23/META.yml 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/META.yml 2013-09-22 16:21:14.000000000 +0000
@@ -6,6 +6,7 @@
DateTime::Format::MySQL: 0
DateTime::Format::SQLite: 0
DateTime::Format::W3CDTF: 0
+ Test::Exception: 0
Test::More: 0.94
configure_requires:
ExtUtils::MakeMaker: 6.30
@@ -17,7 +18,7 @@
version: 1.4
name: HTML-FormHandler-Model-DBIC
requires:
- DBIx::Class: 0
+ DBIx::Class: 0.08250
DBIx::Class::ResultSet::RecursiveUpdate: 0.25
HTML::FormHandler: 0.40016
Moose: 2.0007
@@ -25,4 +26,4 @@
resources:
bugtracker: https://rt.cpan.org/Public/Dist/Display.html?Name=HTML-FormHandler-Model-DBIC
repository: git://github.com/gshank/html-formhandler-model-dbic.git
-version: 0.23
+version: 0.28
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/Makefile.PL libhtml-formhandler-model-dbic-perl-0.28/Makefile.PL
--- libhtml-formhandler-model-dbic-perl-0.23/Makefile.PL 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/Makefile.PL 2013-09-22 16:21:14.000000000 +0000
@@ -15,6 +15,7 @@
"DateTime::Format::MySQL" => 0,
"DateTime::Format::SQLite" => 0,
"DateTime::Format::W3CDTF" => 0,
+ "Test::Exception" => 0,
"Test::More" => "0.94"
},
"CONFIGURE_REQUIRES" => {
@@ -27,13 +28,13 @@
"LICENSE" => "perl",
"NAME" => "HTML::FormHandler::Model::DBIC",
"PREREQ_PM" => {
- "DBIx::Class" => 0,
+ "DBIx::Class" => "0.08250",
"DBIx::Class::ResultSet::RecursiveUpdate" => "0.25",
"HTML::FormHandler" => "0.40016",
"Moose" => "2.0007",
"namespace::autoclean" => "0.09"
},
- "VERSION" => "0.23",
+ "VERSION" => "0.28",
"test" => {
"TESTS" => "t/*.t t/xt/*.t"
}
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/README libhtml-formhandler-model-dbic-perl-0.28/README
--- libhtml-formhandler-model-dbic-perl-0.23/README 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/README 2013-09-22 16:21:14.000000000 +0000
@@ -1,11 +1,11 @@
This archive contains the distribution HTML-FormHandler-Model-DBIC,
-version 0.23:
+version 0.28:
base class that holds DBIC model role
-This software is copyright (c) 2012 by Gerda Shank.
+This software is copyright (c) 2013 by Gerda Shank.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/SIGNATURE libhtml-formhandler-model-dbic-perl-0.28/SIGNATURE
--- libhtml-formhandler-model-dbic-perl-0.23/SIGNATURE 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/SIGNATURE 2013-09-22 16:21:14.000000000 +0000
@@ -14,29 +14,31 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
-SHA1 5c2c064bb5a47507ea4327cfcdb4d757b80e5952 Changes
+SHA1 061f1d6cd9382d74b0513424ddae2300d98705df Changes
SHA1 674ec091357ed31599f8081acb61b17054e1650e INSTALL
-SHA1 db5549ef0b451d5723593f2156141e6708484dfd LICENSE
-SHA1 3a15c5b2a86847d8371ee29d337771d903772ad9 MANIFEST
-SHA1 417face3e5ec818a3c9f22513dd193569d4b14db META.json
-SHA1 c7379f92780f66d43e8007528226fc23f3b0e2ec META.yml
-SHA1 d63c9a82871fc09a460d055a291935b96d156c2d Makefile.PL
-SHA1 6628db20226d4973181ff0ed3b4b3b9603cca3a7 README
+SHA1 b666e0455e9fd5ccdcadd7cc9750644700fc8c22 LICENSE
+SHA1 ce9b8c00e5f9b8abee54abdd1a3f07f2b8277bba MANIFEST
+SHA1 d6217b04aa38cfafd757da532c4061d9bc4b3f40 META.json
+SHA1 b1ea5ee8fcb4f7b51401b988c4829b399e3a0a16 META.yml
+SHA1 626915e99049870ef5dffd4fb71f7ea528538b16 Makefile.PL
+SHA1 5e1226dfa7fb6986e9efeb6193d7a5734dba0140 README
SHA1 a8d73c860cf746b8a1a74ff351719f9c53a3f560 TODO
-SHA1 9e81eb964edfd3482c9553b98deba4c453af7b28 dist.ini
-SHA1 8f5d3105f8edb74957a11149ca54941b967ff27f lib/HTML/FormHandler/Generator/DBIC.pm
-SHA1 e8cefafe67fb0d96dfeabdff7bbd57189183ac42 lib/HTML/FormHandler/Model/DBIC.pm
-SHA1 2dde143fb9f2d5df801d26be5ad492c2b71bf0a7 lib/HTML/FormHandler/Model/DBIC/TypeMap.pm
-SHA1 be27449546c927c769d4012c288029c00bb6fb43 lib/HTML/FormHandler/TraitFor/DBICFields.pm
-SHA1 4419de9b7eedf9abf115ec7752968c2782dea342 lib/HTML/FormHandler/TraitFor/Model/DBIC.pm
-SHA1 a73995c6a2adfe608e79bc122b6c1ca36910f1a3 script/form_generator.pl
+SHA1 9c2c8fb6b1ac164e9789a7e1abc7e8558b47163b dist.ini
+SHA1 1bd5200858474e3b039a0ecab4833c0c6dee69de lib/HTML/FormHandler/Generator/DBIC.pm
+SHA1 812b244f4fe5d41e7fed9ff310c6bb67302be8bc lib/HTML/FormHandler/Model/DBIC.pm
+SHA1 856c765f56d3419c4f1c98f57909fe0e65ff4fda lib/HTML/FormHandler/Model/DBIC/TypeMap.pm
+SHA1 91a74ffbfb45215e9b8dceda43a0eea6d95ab3a2 lib/HTML/FormHandler/TraitFor/DBICFields.pm
+SHA1 3b58421a40d5c6179ac0cbfb2602f5cd0130e1b9 lib/HTML/FormHandler/TraitFor/Model/DBIC.pm
+SHA1 1a59733c25c1df1fc81270e7fccfc957f7a3c081 script/form_generator.pl
SHA1 e141c74dbb016fc0b4e2ff548cb113e0e6cbeac9 t/01app.t
+SHA1 c910b1623c4b03c14d280a01d42979e28ec8f102 t/active_column.t
SHA1 b19a7d514320858a9f58455635c346aa4da663d8 t/author.t
SHA1 b03b8d035f37e3b2789fa33657b28fa909bd014c t/bad_item_id.t
-SHA1 399dc976c3c4cdc84ed84101363f30c37da127ff t/book.t
+SHA1 e05624f03890ccc13b0433864c21af1db0f763c2 t/book.t
+SHA1 cd2214898eb4484fd5d515b85a34c060312a9e2a t/book2pk.t
SHA1 ffdd1e69a43a80a797d7765146e86dd99f61ae63 t/datetime.t
-SHA1 b2dfd77385559ad1472c1baa1f633029363caafb t/db/book.db
-SHA1 5cc844898f08f8e4f30a8ca897c41eae01902c0b t/db/bookdb.sql
+SHA1 4ab0b326d2fc6d1d55f3d9bdf33bfb5a53ea1659 t/db/book.db
+SHA1 dc44fb3bb1b947d18d4d3b2b859ac4cd5ae24439 t/db/bookdb.sql
SHA1 553c4d810e9fc902273195f5661386def69a72f4 t/db_fif.t
SHA1 2e318f0ec4d69ce9622b31071c73189cbd0d1562 t/db_has_many.t
SHA1 653c2c4049390afdad5c773a1399c689adc4b7f4 t/db_has_one.t
@@ -44,12 +46,13 @@
SHA1 2f64d47a773825667cf5d86b33edc540c1385d84 t/db_options.t
SHA1 3b7450422ca4644db2edfc770654754823c2f304 t/db_validate.t
SHA1 f53b0d40db8b918eccd29267d7d0f269890b5bfa t/dbic_accessor.t
-SHA1 dd8c16f7e681548f72329080be47fd0f8d464be5 t/fif.t
+SHA1 6cb226a1240bec6c188279b0ed041ddc265c59d4 t/fif.t
SHA1 6503092531bd4ad63ed835763be21662eaa13c03 t/generator.t
SHA1 14989b01195d51bfe165bda524799c5ad84919de t/lib/BookDB.pm
SHA1 71ed372b5f2cb0040c98b333e242878e3bc917c4 t/lib/BookDB/Form/Author.pm
SHA1 0d2b18d1c28bbdd9611033ec44648333539e1c1d t/lib/BookDB/Form/AuthorOld.pm
-SHA1 c85cf1700f43c76e2b4ace50ad022adfef80ef61 t/lib/BookDB/Form/Book.pm
+SHA1 57ac298e6e3abc17f2bc5e48220c7c1c462a7bb2 t/lib/BookDB/Form/Book.pm
+SHA1 d08154338f45a07137f85d6ae0c7cb54a1ef95ca t/lib/BookDB/Form/Book2PK.pm
SHA1 b5ce1b76ee76505069efa62d4f201fae7b2d457c t/lib/BookDB/Form/BookHTML.pm
SHA1 d426249c86ae939b3032846bc82d9ec903c57cc5 t/lib/BookDB/Form/BookM2M.pm
SHA1 cbe1dd7bcedd279e943e81a4f1bd89e8f6890c7e t/lib/BookDB/Form/BookView.pm
@@ -65,12 +68,13 @@
SHA1 6f59b959717ea61499038f05f21999650edb5241 t/lib/BookDB/Form/Widget/Wrapper/Para.pm
SHA1 a6ee6f269e6024d675d22c40b0a5bb4aa859ca40 t/lib/BookDB/Schema.pm
SHA1 4856e496246686ef913209a49a4dc57904dce5a7 t/lib/BookDB/Schema/Result/Address.pm
-SHA1 9e0c5e7d538cd74be568a2eaead6d6c347b11e0f t/lib/BookDB/Schema/Result/Author.pm
+SHA1 742e87180a2599893a806f2d03cc57f5f705088e t/lib/BookDB/Schema/Result/Author.pm
SHA1 66660fb22bcb833e82609ac33ba4183261be2f66 t/lib/BookDB/Schema/Result/AuthorBooks.pm
SHA1 47bc39eb211a3e8be2ec2c7b5281dddc001ca13f t/lib/BookDB/Schema/Result/AuthorOld.pm
SHA1 f7e3a768098f9ee0b197e0b2276b90cabfef6c83 t/lib/BookDB/Schema/Result/Book.pm
+SHA1 e17c92e2a4cf1c5e7988f75f1161644daf0b263e t/lib/BookDB/Schema/Result/Book2PK.pm
SHA1 0b13f30efa9317c7def84e10a007ed8a2e900d0e t/lib/BookDB/Schema/Result/BooksGenres.pm
-SHA1 3017b27ee8af6b022ddcb280aaf64cc6baeea3cb t/lib/BookDB/Schema/Result/Borrower.pm
+SHA1 8fdeb42fdfc15f2692fdc141ca4853ea3997b276 t/lib/BookDB/Schema/Result/Borrower.pm
SHA1 025fa1a06df3677d577311cdf88190fca9c2ec9a t/lib/BookDB/Schema/Result/Country.pm
SHA1 85dd3c2065ad98adb46ba52f1d02e1f5305d7dd1 t/lib/BookDB/Schema/Result/Employer.pm
SHA1 42f9533e65597837b19389aef03b87096b3060b4 t/lib/BookDB/Schema/Result/Format.pm
@@ -80,7 +84,7 @@
SHA1 caea8cb79f441d37d54e192d1bcc16763819a7ed t/lib/BookDB/Schema/Result/User.pm
SHA1 c2b07809d8b836565eb70105704867668dfb7011 t/lib/BookDB/Schema/Result/UserEmployer.pm
SHA1 60f791ad0cd523be869b9f1994a89e8f3e5d7285 t/model_dbic.t
-SHA1 aaf01835ef5a500826c9a6505a6a6d9eb6ca1bf0 t/mult_pk.t
+SHA1 6f7b36a0ecf0c47817f460a974c9cb62d004dbbd t/mult_pk.t
SHA1 f7bd133652cf896d80d26912a2f96e9ca56a0e31 t/process.t
SHA1 82bfaff07150d7a4e45d31bde7146c0622d44217 t/reflect.t
SHA1 d994766acb3f7185f996d7c2b2a6a8a1e02e802b t/related.t
@@ -89,13 +93,13 @@
SHA1 a1731d1ac9e3a5218db578bc8557a0b0c068ac47 t/reload_options.t
SHA1 f6d485d4fc868421b5f76a77cbe18e2b3068f95f t/resultset.t
SHA1 8e637403943525aa9fa41ae35e02c52225424220 t/unique-composite.t
-SHA1 9bdf0cc7a777a67b024e94c691c1c59523dd5bdf t/unique.t
+SHA1 e5186c67e65b7c1658cdf2c362a05b3cea172d87 t/unique.t
SHA1 86d255a7c9f065a13049108362c949b3e35a4c24 t/xt/02pod.t
SHA1 6c8c9e4255f3a7e58a2508bb779ec013ac48706f t/xt/dump.t
-----BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.10 (Darwin)
+Version: GnuPG v1.4.13 (Darwin)
-iF4EAREIAAYFAlB8cvsACgkQlX0ZOkgCucgaCgD/UjeYQo/H6JZktv+eYwmQY5+j
-cMvFxo864WMDnYHO8uUBAID3YmINTC7sn20DOGhMySfJPO84+NUw73JxvnmnEDU/
-=V6zV
+iF4EAREIAAYFAlI/GPYACgkQlX0ZOkgCucirvQD+PNsqijr2aSXbTr0R/3EYWHvZ
+TrVM/vtdlL7SmQOYe8kA+QH+BlP8zZI4EW/tMsuPQ5cGEREbu9N9fE3NIIqBpoS2
+=zewy
-----END PGP SIGNATURE-----
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/debian/changelog libhtml-formhandler-model-dbic-perl-0.28/debian/changelog
--- libhtml-formhandler-model-dbic-perl-0.23/debian/changelog 2012-10-17 11:41:47.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/debian/changelog 2013-10-13 16:36:28.000000000 +0000
@@ -1,3 +1,20 @@
+libhtml-formhandler-model-dbic-perl (0.28-1) unstable; urgency=low
+
+ [ Salvatore Bonaccorso ]
+ * Change Vcs-Git to canonical URI (git://anonscm.debian.org)
+ * Change search.cpan.org based URIs to metacpan.org based URIs
+
+ [ Dominique Dumont ]
+ * Imported Upstream version 0.28
+ * bumped compat to 9
+ * control:
+ * added version dep on libdbix-class-perl
+ * bump std-version to 3.9.4
+ + build-dep in libtest-exception-perl
+ * copyright: updated years
+
+ -- Dominique Dumont Sun, 13 Oct 2013 18:35:48 +0200
+
libhtml-formhandler-model-dbic-perl (0.23-1) unstable; urgency=low
* new upstream release
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/debian/compat libhtml-formhandler-model-dbic-perl-0.28/debian/compat
--- libhtml-formhandler-model-dbic-perl-0.23/debian/compat 2012-10-17 11:41:47.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/debian/compat 2013-10-13 16:36:28.000000000 +0000
@@ -1 +1 @@
-8
+9
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/debian/control libhtml-formhandler-model-dbic-perl-0.28/debian/control
--- libhtml-formhandler-model-dbic-perl-0.23/debian/control 2012-10-17 11:41:47.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/debian/control 2013-10-13 16:36:28.000000000 +0000
@@ -3,27 +3,27 @@
Uploaders: Dominique Dumont
Section: perl
Priority: optional
-Build-Depends: debhelper (>= 8)
+Build-Depends: debhelper (>= 9)
Build-Depends-Indep: libdatetime-format-mysql-perl,
libdatetime-format-sqlite-perl,
libdatetime-format-w3cdtf-perl,
libdbd-sqlite3-perl,
- libdbix-class-perl,
+ libdbix-class-perl (>= 0.08250),
libdbix-class-resultset-recursiveupdate-perl,
libhtml-formhandler-perl (>= 0.40016),
libmoose-perl (>= 2.0007),
libnamespace-autoclean-perl,
- perl
-Standards-Version: 3.9.3
+ libtest-exception-perl
+Standards-Version: 3.9.4
Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-perl/packages/libhtml-formhandler-model-dbic-perl.git
-Vcs-Git: git://git.debian.org/pkg-perl/packages/libhtml-formhandler-model-dbic-perl.git
-Homepage: http://search.cpan.org/dist/HTML-FormHandler-Model-DBIC/
+Vcs-Git: git://anonscm.debian.org/pkg-perl/packages/libhtml-formhandler-model-dbic-perl.git
+Homepage: https://metacpan.org/release/HTML-FormHandler-Model-DBIC/
Package: libhtml-formhandler-model-dbic-perl
Architecture: all
Depends: ${misc:Depends},
${perl:Depends},
- libdbix-class-perl,
+ libdbix-class-perl (>= 0.08250),
libdbix-class-resultset-recursiveupdate-perl,
libhtml-formhandler-perl (>= 0.40016),
libmoose-perl (>= 2.0007),
@@ -36,4 +36,3 @@
.
This interface is available as a regular class or as a Moose role. It
will save form fields automatically to the database.
-
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/debian/copyright libhtml-formhandler-model-dbic-perl-0.28/debian/copyright
--- libhtml-formhandler-model-dbic-perl-0.23/debian/copyright 2012-10-17 11:41:47.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/debian/copyright 2013-10-13 16:36:28.000000000 +0000
@@ -1,14 +1,14 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: HTML-FormHandler-Model-DBIC
Upstream-Contact: Gerda Shank
-Source: http://search.cpan.org/dist/HTML-FormHandler-Model-DBIC/
+Source: https://metacpan.org/release/HTML-FormHandler-Model-DBIC/
Files: *
-Copyright: 2012, Gerda Shank
+Copyright: 2012-2013, Gerda Shank
License: Artistic or GPL-1+
Files: debian/*
-Copyright: 2012, Dominique Dumont
+Copyright: 2012-2013, Dominique Dumont
License: Artistic or GPL-1+
License: Artistic
@@ -26,4 +26,3 @@
.
On Debian systems, the complete text of version 1 of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL-1'.
-
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/debian/watch libhtml-formhandler-model-dbic-perl-0.28/debian/watch
--- libhtml-formhandler-model-dbic-perl-0.23/debian/watch 2012-10-17 11:41:47.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/debian/watch 2013-10-13 16:36:28.000000000 +0000
@@ -1,2 +1,2 @@
version=3
-http://search.cpan.org/dist/HTML-FormHandler-Model-DBIC/ .*/HTML-FormHandler-Model-DBIC-v?(\d[\d.-]+)\.(?:tar(?:\.gz|\.bz2)?|tgz|zip)$
+https://metacpan.org/release/HTML-FormHandler-Model-DBIC/ .*/HTML-FormHandler-Model-DBIC-v?(\d[\d.-]+)\.(?:tar(?:\.gz|\.bz2)?|tgz|zip)$
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/dist.ini libhtml-formhandler-model-dbic-perl-0.28/dist.ini
--- libhtml-formhandler-model-dbic-perl-0.23/dist.ini 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/dist.ini 2013-09-22 16:21:14.000000000 +0000
@@ -4,9 +4,9 @@
author = FormHandler Contributors - see HTML::FormHandler
license = Perl_5
copyright_holder = Gerda Shank
-copyright_year = 2012
+copyright_year = 2013
-version = 0.23
+version = 0.28
[@Git]
tag_format = %v
@@ -37,12 +37,13 @@
[Prereqs]
HTML::FormHandler = 0.40016
Moose = 2.0007
-DBIx::Class = 0
+DBIx::Class = 0.08250
DBIx::Class::ResultSet::RecursiveUpdate = 0.25
namespace::autoclean = 0.09
[Prereqs / TestRequires]
Test::More = 0.94
+Test::Exception = 0
DateTime::Format::MySQL = 0
DateTime::Format::W3CDTF = 0
DateTime::Format::SQLite = 0
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/lib/HTML/FormHandler/Generator/DBIC.pm libhtml-formhandler-model-dbic-perl-0.28/lib/HTML/FormHandler/Generator/DBIC.pm
--- libhtml-formhandler-model-dbic-perl-0.23/lib/HTML/FormHandler/Generator/DBIC.pm 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/lib/HTML/FormHandler/Generator/DBIC.pm 2013-09-22 16:21:14.000000000 +0000
@@ -367,7 +367,7 @@
=head1 VERSION
-version 0.23
+version 0.28
=head1 SYNOPSIS
@@ -399,7 +399,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2012 by Gerda Shank.
+This software is copyright (c) 2013 by Gerda Shank.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/lib/HTML/FormHandler/Model/DBIC/TypeMap.pm libhtml-formhandler-model-dbic-perl-0.28/lib/HTML/FormHandler/Model/DBIC/TypeMap.pm
--- libhtml-formhandler-model-dbic-perl-0.23/lib/HTML/FormHandler/Model/DBIC/TypeMap.pm 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/lib/HTML/FormHandler/Model/DBIC/TypeMap.pm 2013-09-22 16:21:14.000000000 +0000
@@ -66,7 +66,7 @@
=head1 VERSION
-version 0.23
+version 0.28
=head1 SYNOPSIS
@@ -78,7 +78,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2012 by Gerda Shank.
+This software is copyright (c) 2013 by Gerda Shank.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/lib/HTML/FormHandler/Model/DBIC.pm libhtml-formhandler-model-dbic-perl-0.28/lib/HTML/FormHandler/Model/DBIC.pm
--- libhtml-formhandler-model-dbic-perl-0.23/lib/HTML/FormHandler/Model/DBIC.pm 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/lib/HTML/FormHandler/Model/DBIC.pm 2013-09-22 16:21:14.000000000 +0000
@@ -5,7 +5,7 @@
extends 'HTML::FormHandler';
with 'HTML::FormHandler::TraitFor::Model::DBIC';
-our $VERSION = '0.23';
+our $VERSION = '0.28';
use namespace::autoclean;
@@ -20,7 +20,7 @@
=head1 VERSION
-version 0.23
+version 0.28
=head1 SUMMARY
@@ -33,7 +33,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2012 by Gerda Shank.
+This software is copyright (c) 2013 by Gerda Shank.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/lib/HTML/FormHandler/TraitFor/DBICFields.pm libhtml-formhandler-model-dbic-perl-0.28/lib/HTML/FormHandler/TraitFor/DBICFields.pm
--- libhtml-formhandler-model-dbic-perl-0.23/lib/HTML/FormHandler/TraitFor/DBICFields.pm 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/lib/HTML/FormHandler/TraitFor/DBICFields.pm 2013-09-22 16:21:14.000000000 +0000
@@ -102,7 +102,7 @@
=head1 VERSION
-version 0.23
+version 0.28
=head1 SYNOPSIS
@@ -150,7 +150,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2012 by Gerda Shank.
+This software is copyright (c) 2013 by Gerda Shank.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/lib/HTML/FormHandler/TraitFor/Model/DBIC.pm libhtml-formhandler-model-dbic-perl-0.28/lib/HTML/FormHandler/TraitFor/Model/DBIC.pm
--- libhtml-formhandler-model-dbic-perl-0.23/lib/HTML/FormHandler/TraitFor/Model/DBIC.pm 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/lib/HTML/FormHandler/TraitFor/Model/DBIC.pm 2013-09-22 16:21:14.000000000 +0000
@@ -1,4 +1,5 @@
package HTML::FormHandler::TraitFor::Model::DBIC;
+
# ABSTRACT: model role that interfaces with DBIx::Class
use Moose::Role;
@@ -8,403 +9,408 @@
use DBIx::Class::ResultSet::RecursiveUpdate;
use Scalar::Util ('blessed');
-our $VERSION = '0.14';
+our $VERSION = '0.26';
-has 'schema' => (
- is => 'rw',
-);
+has 'schema' => ( is => 'rw', );
has 'source_name' => (
- isa => 'Str',
- is => 'rw',
- lazy => 1,
- builder => 'build_source_name'
+ isa => 'Str',
+ is => 'rw',
+ lazy => 1,
+ builder => 'build_source_name'
);
has unique_constraints => (
- is => 'ro',
- isa => 'ArrayRef',
- lazy_build => 1,
+ is => 'ro',
+ isa => 'ArrayRef',
+ lazy_build => 1,
);
+
sub _build_unique_constraints {
- my $self = shift;
- return [grep { $_ ne 'primary' } $self->resultset->result_source->unique_constraint_names];
+ my $self = shift;
+ return [ grep { $_ ne 'primary' }
+ $self->resultset->result_source->unique_constraint_names ];
}
has unique_messages => (
- is => 'ro',
- isa => 'HashRef',
- default => sub { +{} },
+ is => 'ro',
+ isa => 'HashRef',
+ default => sub { +{} },
);
has 'ru_flags' => (
- is => 'rw',
- isa => 'HashRef',
- traits => ['Hash'],
- builder => '_build_ru_flags',
- handles => {
- set_ru_flag => 'set',
- }
+ is => 'rw',
+ isa => 'HashRef',
+ traits => ['Hash'],
+ builder => '_build_ru_flags',
+ handles => { set_ru_flag => 'set', }
);
+
sub _build_ru_flags {
- { unknown_params_ok => 1 }
+ { unknown_params_ok => 1 };
}
-sub validate_model
-{
- my ($self) = @_;
- return unless $self->validate_unique;
- return 1;
+sub validate_model {
+ my ($self) = @_;
+ return unless $self->validate_unique;
+ return 1;
}
-sub clear_model
-{
- my $self = shift;
- $self->item(undef);
- $self->item_id(undef);
+sub clear_model {
+ my $self = shift;
+ $self->item(undef);
+ $self->item_id(undef);
}
-sub update_model
-{
- my $self = shift;
+sub update_model {
+ my $self = shift;
my $item = $self->item;
my $source = $self->source;
warn "HFH: update_model for ", $self->name, "\n" if $self->verbose;
+
#warn "fif: " . Dumper ( $self->fif ); use Data::Dumper;
my %update_params = (
resultset => $self->resultset,
- updates => $self->values,
- %{$self->ru_flags},
+ updates => $self->values,
+ %{ $self->ru_flags },
);
- $update_params{ object } = $self->item if $self->item;
+ $update_params{object} = $self->item if $self->item;
my $new_item;
+
# perform update in a transaction, since RecursiveUpdate may do multiple
# updates if there are compound or multiple fields
- $self->schema->txn_do( sub {
- $new_item = DBIx::Class::ResultSet::RecursiveUpdate::Functions::recursive_update( %update_params );
- $new_item->discard_changes;
- });
+ $self->schema->txn_do(
+ sub {
+ $new_item = DBIx::Class::ResultSet::RecursiveUpdate::Functions::recursive_update(
+ %update_params);
+ $new_item->discard_changes;
+ }
+ );
$self->item($new_item) if $new_item;
return $self->item;
}
# undocumented because this is going to be replaced
# by a better method
-sub guess_field_type
-{
- my ( $self, $column ) = @_;
- my $source = $self->source;
- my @return;
-
- # TODO: Should be able to use $source->column_info
-
- # Is it a direct has_a relationship?
- if (
- $source->has_relationship($column)
- && ( $source->relationship_info($column)->{attrs}->{accessor} eq 'single'
- || $source->relationship_info($column)->{attrs}->{accessor} eq 'filter' )
- )
- {
- my $f_class = $source->related_class($column);
- @return =
- $f_class->isa('DateTime')
- ? ('DateTime')
- : ('Select');
- }
- # Else is it has_many?
- elsif ( $source->has_relationship($column)
- && $source->relationship_info($column)->{attrs}->{accessor} eq 'multi' )
- {
- @return = ('Multiple');
- }
- elsif ( $column =~ /_time$/ ) # ends in time, must be time value
- {
- @return = ('DateTime');
- }
- else # default: Text
- {
- @return = ('Text');
- }
-
- return wantarray ? @return : $return[0];
-}
-
-
-sub lookup_options
-{
- my ( $self, $field, $accessor_path ) = @_;
-
- return unless $self->schema;
- my $self_source = $self->get_source( $accessor_path );
-
- my $accessor = $field->accessor;
-
- # if this field doesn't refer to a foreign key, return
- my $f_class;
- my $source;
- # belongs_to single select
- if ($self_source->has_relationship($accessor) ) {
- $f_class = $self_source->related_class($accessor);
- $source = $self->schema->source($f_class);
- }
- else {
- # check for many_to_many multiple select
- my $resultset = $self_source->resultset;
- my $new_result = $resultset->new_result({});
- if( $new_result && $new_result->can("add_to_$accessor") ) {
- $source = $new_result->$accessor->result_source;
- }
- }
- return unless $source;
-
- my $label_column = $field->label_column;
- return unless ($source->has_column($label_column) || $source->can($label_column) );
-
- my $active_col = $self->active_column || $field->active_column;
- $active_col = '' unless $source->has_column($active_col);
- my $sort_col = $field->sort_column;
- my ($primary_key) = $source->primary_columns;
-
- # if no sort_column and label_column is a source method, not a real column, must
- # use some other column for sort. There's probably some other column that should
- # be specified, but this will prevent breakage
- if ( ! defined $sort_col ) {
- $sort_col = $source->has_column($label_column) ? $label_column : $primary_key;
- }
-
-
- # If there's an active column, only select active OR items already selected
- my $criteria = {};
- if ($active_col)
- {
- my @or = ( $active_col => 1 );
-
- # But also include any existing non-active
- push @or, ( "$primary_key" => $field->init_value )
- if $self->item && defined $field->init_value;
- $criteria->{'-or'} = \@or;
- }
-
- # get an array of row objects
- my @rows =
- $self->schema->resultset( $source->source_name )
- ->search( $criteria, { order_by => $sort_col } )->all;
- my @options;
- foreach my $row (@rows)
- {
- my $label = $row->$label_column;
- next unless defined $label; # this means there's an invalid value
- push @options, $row->id, $active_col && !$row->$active_col ? "[ $label ]" : "$label";
- }
- return \@options;
-}
-
-sub init_value
-{
- my ( $self, $field, $value ) = @_;
- if( ref $value eq 'ARRAY' ){
- $value = [ map { $self->_fix_value( $field, $_ ) } @$value ];
- }
- else{
- $value = $self->_fix_value( $field, $value );
- }
- $field->init_value($value);
- $field->value($value);
-}
-
-sub _fix_value
-{
- my ( $self, $field, $value ) = @_;
- if( blessed $value && $value->isa('DBIx::Class') ){
-$DB::single=1;
- return $value->id;
- }
- return $value;
+sub guess_field_type {
+ my ( $self, $column ) = @_;
+ my $source = $self->source;
+ my @return;
+
+ # TODO: Should be able to use $source->column_info
+
+ # Is it a direct has_a relationship?
+ if (
+ $source->has_relationship($column) &&
+ ( $source->relationship_info($column)->{attrs}->{accessor} eq 'single' ||
+ $source->relationship_info($column)->{attrs}->{accessor} eq 'filter' )
+ )
+ {
+ my $f_class = $source->related_class($column);
+ @return =
+ $f_class->isa('DateTime') ? ('DateTime') :
+ ('Select');
+ }
+
+ # Else is it has_many?
+ elsif ( $source->has_relationship($column) &&
+ $source->relationship_info($column)->{attrs}->{accessor} eq 'multi' )
+ {
+ @return = ('Multiple');
+ }
+ elsif ( $column =~ /_time$/ ) # ends in time, must be time value
+ {
+ @return = ('DateTime');
+ }
+ else # default: Text
+ {
+ @return = ('Text');
+ }
+
+ return wantarray ? @return : $return[0];
+}
+
+sub lookup_options {
+ my ( $self, $field, $accessor_path ) = @_;
+
+ return unless $self->schema;
+ my $self_source = $self->get_source($accessor_path);
+
+ my $accessor = $field->accessor;
+
+ # if this field doesn't refer to a foreign key, return
+ my $f_class;
+ my $source;
+
+ # belongs_to single select
+ if ( $self_source->has_relationship($accessor) ) {
+ $f_class = $self_source->related_class($accessor);
+ $source = $self->schema->source($f_class);
+ }
+ else {
+
+ # check for many_to_many multiple select
+ my $resultset = $self_source->resultset;
+ my $new_result = $resultset->new_result( {} );
+ if ( $new_result && $new_result->can("add_to_$accessor") ) {
+ $source = $new_result->$accessor->result_source;
+ }
+ }
+ return unless $source;
+
+ my $label_column = $field->label_column;
+ return
+ unless ( $source->has_column($label_column) ||
+ $source->result_class->can($label_column) );
+
+ my $active_col = $self->active_column || $field->active_column;
+ $active_col = '' unless $source->has_column($active_col);
+ my $sort_col = $field->sort_column;
+ my ($primary_key) = $source->primary_columns;
+
+ # if no sort_column and label_column is a source method, not a real column, must
+ # use some other column for sort. There's probably some other column that should
+ # be specified, but this will prevent breakage
+ if ( !defined $sort_col ) {
+ $sort_col = $source->has_column($label_column) ? $label_column : $primary_key;
+ }
+
+ # If there's an active column, only select active OR items already selected
+ my $criteria = {};
+ if ($active_col) {
+ my @or = ( $active_col => 1 );
+
+ # But also include any existing non-active
+ push @or, ( "$primary_key" => $field->init_value )
+ if $self->item && defined $field->init_value;
+ $criteria->{'-or'} = \@or;
+ }
+
+ # get an array of row objects
+ my @rows =
+ $self->schema->resultset( $source->source_name )
+ ->search( $criteria, { order_by => $sort_col } )->all;
+ my @options;
+ foreach my $row (@rows) {
+ my $label = $row->$label_column;
+ next unless defined $label; # this means there's an invalid value
+ push @options, $row->id, $active_col && !$row->$active_col ? "[ $label ]" : "$label";
+ }
+ return \@options;
+}
+
+sub init_value {
+ my ( $self, $field, $value ) = @_;
+ if ( ref $value eq 'ARRAY' ) {
+ $value = [ map { $self->_fix_value( $field, $_ ) } @$value ];
+ }
+ else {
+ $value = $self->_fix_value( $field, $value );
+ }
+ $field->init_value($value);
+ $field->value($value);
+}
+
+sub _fix_value {
+ my ( $self, $field, $value ) = @_;
+ if ( blessed $value && $value->isa('DBIx::Class') ) {
+ return $value->id;
+ }
+ return $value;
}
sub _get_related_source {
my ( $self, $source, $name ) = @_;
- if( $source->has_relationship( $name ) ){
- return $source->related_source( $name );
+ if ( $source->has_relationship($name) ) {
+ return $source->related_source($name);
}
+
# many to many case
- my $row = $source->resultset->new({});
- if ( $row->can( $name ) and $row->can( 'add_to_' . $name ) and $row->can( 'set_' . $name ) ){
+ my $row = $source->resultset->new( {} );
+ if ( $row->can($name) and
+ $row->can( 'add_to_' . $name ) and
+ $row->can( 'set_' . $name ) )
+ {
return $row->$name->result_source;
}
return;
}
-
# this needs to be rewritten to be called at the field level
# right now it will only work on fields immediately contained
# by the form
-sub validate_unique
-{
- my ($self) = @_;
-
- my $rs = $self->resultset;
- my $found_error = 0;
- my $fields = $self->fields;
-
- my @id_clause = ();
- @id_clause = _id_clause( $rs, $self->item_id ) if defined $self->item;
-
- my $value = $self->value;
- for my $field ( @$fields )
- {
- next unless $field->unique;
- next if ( $field->is_inactive || !$field->has_result );
- next if $field->has_errors;
- my $value = $field->value;
- next unless defined $value;
- my $accessor = $field->accessor;
-
- my $count = $rs->search( { $accessor => $value, @id_clause } )->count;
- next if $count < 1;
- my $field_error = $field->unique_message || 'Duplicate value for [_1]';
- $field->add_error( $field_error, $field->loc_label );
- $found_error++;
- }
-
- # validate unique constraints in the model
- for my $constraint (@{ $self->unique_constraints })
- {
- my @columns = $rs->result_source->unique_constraint_columns($constraint);
-
- # check for matching field in the form
- my $field;
- for my $col (@columns)
- {
- ($field) = grep { $_->accessor eq $col } @$fields;
- last if $field;
- }
- next unless defined $field;
- next if ( $field->has_unique ); # already handled or don't do
+sub validate_unique {
+ my ($self) = @_;
+
+ my $rs = $self->resultset;
+ my $found_error = 0;
+ my $fields = $self->fields;
+
+ my @id_clause = ();
+ @id_clause = _id_clause( $rs, $self->item_id ) if defined $self->item;
+
+ my $value = $self->value;
+ for my $field (@$fields) {
+ next unless $field->unique;
+ next if ( $field->is_inactive || !$field->has_result );
+ next if $field->has_errors;
+ my $value = $field->value;
+ next unless defined $value;
+ my $accessor = $field->accessor;
+
+ my $count = $rs->search( { $accessor => $value, @id_clause } )->count;
+ next if $count < 1;
+ my $field_error = $field->get_message('unique') || $field->unique_message || 'Duplicate value for [_1]';
+ $field->add_error( $field_error, $field->loc_label );
+ $found_error++;
+ }
- my @values = map {
- exists( $value->{$_} ) ? $value->{$_} : undef
- ||
- ( $self->item ? $self->item->get_column($_) : undef )
- } @columns;
-
- next if @columns != @values; # don't check unique constraints for which we don't have all the values
- next if grep { !defined $_ } @values; # don't check unique constraints with NULL values
-
- my %where;
- @where{@columns} = @values;
- my $count = $rs->search( \%where )->search({@id_clause})->count;
- next if $count < 1;
-
- my $field_error = $self->unique_message_for_constraint($constraint);
- $field->add_error( $field_error, $constraint );
- $found_error++;
- }
+ # validate unique constraints in the model
+ for my $constraint ( @{ $self->unique_constraints } ) {
+ my @columns = $rs->result_source->unique_constraint_columns($constraint);
+
+ # check for matching field in the form
+ my $field;
+ for my $col (@columns) {
+ ($field) = grep { $_->accessor eq $col } @$fields;
+ last if $field;
+ }
+ next unless defined $field;
+ next if ( $field->has_unique ); # already handled or don't do
+
+ my @values = map {
+ exists( $value->{$_} ) ? $value->{$_} : undef ||
+ ( $self->item ? $self->item->get_column($_) : undef )
+ } @columns;
+
+ next
+ if @columns !=
+ @values; # don't check unique constraints for which we don't have all the values
+ next
+ if grep { !defined $_ } @values; # don't check unique constraints with NULL values
+
+ my %where;
+ @where{@columns} = @values;
+ my $count = $rs->search( \%where )->search( {@id_clause} )->count;
+ next if $count < 1;
+
+ my $field_error = $self->unique_message_for_constraint($constraint);
+ $field->add_error( $field_error, $constraint );
+ $found_error++;
+ }
- return $found_error;
+ return $found_error;
}
sub unique_message_for_constraint {
- my $self = shift;
- my $constraint = shift;
+ my $self = shift;
+ my $constraint = shift;
- return $self->unique_messages->{$constraint} ||= "Duplicate value for [_1] unique constraint";
+ return $self->unique_messages->{$constraint} ||=
+ "Duplicate value for [_1] unique constraint";
}
sub _id_clause {
- my( $resultset, $id ) = @_;
+ my ( $resultset, $id ) = @_;
+
my @pks = $resultset->result_source->primary_columns;
- my @ids;
- if( ref $id eq 'ARRAY' ){
- @ids = @$id;
- }
- else{
- @ids = ( $id );
- }
- my %result;
- for my $i ( $#ids ){
- $result{$pks[$i]} = { '!=' => $ids[$i] };
- }
- return %result;
-}
-
-sub build_item
-{
- my $self = shift;
-
- my $item_id = $self->item_id or return;
- my $item = $self->resultset->find( ref $item_id eq 'ARRAY' ?
- @{$item_id} : $item_id);
- $self->item_id(undef) unless $item;
- return $item;
-}
-
-sub set_item
-{
- my ( $self, $item ) = @_;
- return unless $item;
- # when the item (DBIC row) is set, set the item_id, item_class
- # and schema from the item
- if( $item->id )
- { $self->item_id($item->id); }
- else
- { $self->clear_item_id; }
- $self->item_class( $item->result_source->source_name );
- $self->schema( $item->result_source->schema );
-}
-
-sub set_item_id
-{
- my ( $self, $item_id ) = @_;
- # if a new item_id has been set
- # clear an existing item
- if( defined $self->item )
- {
- $self->clear_item
- if( !defined $item_id ||
- (ref $item_id eq 'ARRAY' &&
- join('', @{$item_id}) ne join('', $self->item->id)) ||
- (ref \$item_id eq 'SCALAR' &&
- $item_id ne $self->item->id));
- }
-}
-
-
-sub build_source_name
-{
- my $self = shift;
- return $self->item_class;
-}
-
-
-sub source
-{
- my ( $self, $f_class ) = @_;
- return $self->schema->source( $self->source_name || $self->item_class );
-}
-
-sub resultset
-{
- my ( $self, $f_class ) = @_;
- die "You must supply a schema for your FormHandler form" unless $self->schema;
- return $self->schema->resultset( $self->source_name || $self->item_class );
-}
-
-sub get_source
-{
- my ( $self, $accessor_path ) = @_;
- return unless $self->schema;
- my $source = $self->source;
- return $source unless $accessor_path;
- my @accessors = split /\./, $accessor_path;
- for my $accessor ( @accessors )
- {
- $source = $self->_get_related_source( $source, $accessor );
- die "unable to get source for $accessor" unless $source;
- }
- return $source;
+ my %clause;
+ # multiple primary key
+ if ( scalar @pks > 1 ) {
+ die "multiple primary key invalid" if ref $id ne 'ARRAY';
+ my $cond = $id->[0];
+ my @phrase;
+ foreach my $col ( keys %$cond ) {
+ $clause{$col} = { '!=' => $cond->{$col} };
+ }
+ }
+ else {
+ %clause = ( $pks[0] => { '!=' => $id } );
+ }
+ return %clause;
+}
+
+sub build_item {
+ my $self = shift;
+
+ my $item_id = $self->item_id or return;
+ my $item = $self->resultset->find( ref $item_id eq 'ARRAY' ? @{$item_id} : $item_id );
+ $self->item_id(undef) unless $item;
+ return $item;
+}
+
+sub set_item {
+ my ( $self, $item ) = @_;
+ return unless $item;
+
+ # when the item (DBIC row) is set, set the item_id, item_class
+ # and schema from the item
+ my @primary_columns = $item->result_source->primary_columns;
+ my $item_id;
+ if ( @primary_columns == 1 ) {
+ $item_id = $item->get_column( $primary_columns[0] );
+ }
+ elsif ( @primary_columns > 1 ) {
+ my @pks = map { $_ => $item->get_column($_) } @primary_columns;
+ $item_id = [ { @pks }, { key => 'primary' } ];
+ }
+ if ($item_id) {
+ $self->item_id($item_id);
+ }
+ else {
+ $self->clear_item_id;
+ }
+ $self->item_class( $item->result_source->source_name );
+ $self->schema( $item->result_source->schema );
+}
+
+sub set_item_id {
+ my ( $self, $item_id ) = @_;
+
+ # if a new item_id has been set
+ # clear an existing item
+ if ( defined $self->item ) {
+ $self->clear_item
+ if (
+ !defined $item_id ||
+ ( ref $item_id eq 'ARRAY' &&
+ join( '', @{$item_id} ) ne join( '', $self->item->id ) ) ||
+ ( ref \$item_id eq 'SCALAR' &&
+ $item_id ne $self->item->id )
+ );
+ }
+}
+
+sub build_source_name {
+ my $self = shift;
+ return $self->item_class;
+}
+
+sub source {
+ my ( $self, $f_class ) = @_;
+ return $self->schema->source( $self->source_name || $self->item_class );
+}
+
+sub resultset {
+ my ( $self, $f_class ) = @_;
+ die "You must supply a schema for your FormHandler form"
+ unless $self->schema;
+ return $self->schema->resultset( $self->source_name || $self->item_class );
+}
+
+sub get_source {
+ my ( $self, $accessor_path ) = @_;
+ return unless $self->schema;
+ my $source = $self->source;
+ return $source unless $accessor_path;
+ my @accessors = split /\./, $accessor_path;
+ for my $accessor (@accessors) {
+ $source = $self->_get_related_source( $source, $accessor );
+ die "unable to get source for $accessor" unless $source;
+ }
+ return $source;
}
use namespace::autoclean;
@@ -419,7 +425,7 @@
=head1 VERSION
-version 0.23
+version 0.28
=head1 SYNOPSIS
@@ -637,7 +643,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2012 by Gerda Shank.
+This software is copyright (c) 2013 by Gerda Shank.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/script/form_generator.pl libhtml-formhandler-model-dbic-perl-0.28/script/form_generator.pl
--- libhtml-formhandler-model-dbic-perl-0.23/script/form_generator.pl 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/script/form_generator.pl 2013-09-22 16:21:14.000000000 +0000
@@ -21,7 +21,7 @@
=head1 VERSION
-version 0.23
+version 0.28
=head1 AUTHOR
@@ -29,7 +29,7 @@
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2012 by Gerda Shank.
+This software is copyright (c) 2013 by Gerda Shank.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/t/active_column.t libhtml-formhandler-model-dbic-perl-0.28/t/active_column.t
--- libhtml-formhandler-model-dbic-perl-0.23/t/active_column.t 1970-01-01 00:00:00.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/t/active_column.t 2013-09-22 16:21:14.000000000 +0000
@@ -0,0 +1,34 @@
+use strict;
+use warnings;
+use Test::More;
+use lib 't/lib';
+use BookDB::Schema;
+
+{
+ package MyApp::Form::Test;
+ use HTML::FormHandler::Moose;
+ extends 'HTML::FormHandler::Model::DBIC';
+
+ has '+item_class' => ( default => 'Book' );
+ has_field 'title' => (
+ type => 'Text',
+ required => 1,
+ );
+
+ # has_many relationship pointing to mapping table
+ has_field 'genres' => (
+ type => 'Multiple',
+ label_column => 'name',
+ active_column => 'is_active',
+ );
+}
+
+my $schema = BookDB::Schema->connect('dbi:SQLite:t/db/book.db');
+my $form = MyApp::Form::Test->new( schema => $schema );
+
+ok( $form );
+
+is( $form->field('genres')->num_options, 3, 'right number of options' );
+
+done_testing;
+
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/t/book.t libhtml-formhandler-model-dbic-perl-0.28/t/book.t
--- libhtml-formhandler-model-dbic-perl-0.23/t/book.t 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/t/book.t 2013-09-22 16:21:14.000000000 +0000
@@ -17,6 +17,13 @@
ok( !$form->process( item => $item ), 'Empty data' );
+# check authors options
+my $author_options = $form->field('authors')->options;
+is( $author_options->[0]->{label}, 'J.K. Rowling', 'right author name');
+
+my $borrower_options = $form->field('borrower')->options;
+is( $borrower_options->[1]->{label}, 'John Doe ', 'right borrower name');
+
# This is munging up the equivalent of param data from a form
my $good = {
'title' => 'How to Test Perl Form Processors',
@@ -27,6 +34,7 @@
'publisher' => 'EreWhon Publishing',
'user_updated' => 1,
'comment' => 'this is a comment',
+ 'borrower' => undef,
};
ok( $form->process( item => $item, params => $good ), 'Good data' );
@@ -38,7 +46,7 @@
is( $book->extra, 'this is a comment', 'comment exists' );
is_deeply( $form->values, $good, 'values correct' );
-$good->{$_} = '' for qw/ year pages/;
+$good->{$_} = '' for qw/ year pages borrower/;
is_deeply( $form->fif, $good, 'fif correct' );
my $num_genres = $book->genres->count;
@@ -62,7 +70,8 @@
my $value_hash = { %{$good},
authors => [],
year => undef,
- pages => undef
+ pages => undef,
+ borrower => undef,
};
delete $value_hash->{submit};
is_deeply( $form->values, $value_hash, 'get right values from form');
@@ -111,7 +120,7 @@
is( $book->genres->count, 0, 'multiple select list has no selected options');
$form = BookDB::Form::Book->new(schema => $schema, active_column => 'is_active');
-is( scalar @{$form->field( 'genres' )->options}, 0, 'active_column test' );
+is( $form->field( 'genres' )->num_options, 3, 'active_column test' );
{
package Test::Book;
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/t/book2pk.t libhtml-formhandler-model-dbic-perl-0.28/t/book2pk.t
--- libhtml-formhandler-model-dbic-perl-0.23/t/book2pk.t 1970-01-01 00:00:00.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/t/book2pk.t 2013-09-22 16:21:14.000000000 +0000
@@ -0,0 +1,30 @@
+use strict;
+use warnings;
+use Test::More;
+use Test::Exception;
+use lib 't/lib';
+
+
+use_ok( 'BookDB::Form::Book2PK');
+
+use_ok( 'BookDB::Schema');
+
+my $schema = BookDB::Schema->connect('dbi:SQLite:t/db/book.db');
+
+my $book = $schema->resultset('Book2PK')->find( { libraryid => 1, id => 1 }, { key => 'primary' });
+my $form = BookDB::Form::Book2PK->new;
+ok( $form );
+
+$form->process( item => $book, params => {} );
+my $params = $form->fif;
+my $orig_pages = $params->{pages};
+$params->{pages} = 500;
+lives_ok( sub { $form->process( item => $book, params => $params ) }, 'multiple pk works' );
+$book->discard_changes;
+is( $book->pages, 500, 'pages changed' );
+
+$params->{pages} = $orig_pages;
+$form->process( item => $book, params => $params );
+
+
+done_testing;
Binary files /tmp/1PZLMiGJ6K/libhtml-formhandler-model-dbic-perl-0.23/t/db/book.db and /tmp/61NtgYCc0w/libhtml-formhandler-model-dbic-perl-0.28/t/db/book.db differ
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/t/db/bookdb.sql libhtml-formhandler-model-dbic-perl-0.28/t/db/bookdb.sql
--- libhtml-formhandler-model-dbic-perl-0.23/t/db/bookdb.sql 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/t/db/bookdb.sql 2013-09-22 16:21:14.000000000 +0000
@@ -178,12 +178,12 @@
name varchar(100),
is_active INTEGER
);
-INSERT INTO "genre" VALUES(1, 'Sci-Fi', NULL);
-INSERT INTO "genre" VALUES(2, 'Computers', NULL);
+INSERT INTO "genre" VALUES(1, 'Sci-Fi', 1);
+INSERT INTO "genre" VALUES(2, 'Computers', 1);
INSERT INTO "genre" VALUES(3, 'Mystery', NULL);
INSERT INTO "genre" VALUES(4, 'Historical', NULL);
INSERT INTO "genre" VALUES(5, 'Fantasy', NULL);
-INSERT INTO "genre" VALUES(6, 'Technical', NULL);
+INSERT INTO "genre" VALUES(6, 'Technical', 1);
CREATE TABLE author_old (
first_name VARCHAR(100),
last_name VARCHAR(100),
@@ -278,4 +278,26 @@
CREATE UNIQUE INDEX unique_role ON roles (display_value);
+CREATE TABLE book2pk (
+ libraryid INTEGER NOT NULL DEFAULT 1,
+ id INTEGER NOT NULL,
+ isbn varchar(100),
+ title varchar(100),
+ publisher varchar(100),
+ pages int,
+ year int,
+ PRIMARY KEY (libraryid, id)
+);
+
+CREATE UNIQUE INDEX isbn ON book2pk (libraryid, isbn);
+
+INSERT INTO "book2pk" VALUES(1,1, '0-7475-5100-6', 'Harry Potter and the Order of the Phoenix', 'Boomsbury', 766, 2001);
+INSERT INTO "book2pk" VALUES(1,2, '9 788256006199', 'Idioten', 'Interbook', 303, 1901);
+INSERT INTO "book2pk" VALUES(1,3, '434012386', 'The Confusion', 'Heinemann', 345, 2002);
+INSERT INTO "book2pk" VALUES(1,4, '782128254', 'The Complete Java 2 Certification Study Guide: Programmer''s and Developers Exams (With CD-ROM)', 'Sybex Inc', NULL, 1999);
+INSERT INTO "book2pk" VALUES(1,5, '123-1234-0-123', 'Winnie The Pooh', 'Houghton Mifflin', 345, 1935);
+INSERT INTO "book2pk" VALUES(1,6, '0-596-10092-2', 'Perl Testing: A Developer''s Notebook', 'O''Reilly', 182, 2005);
+INSERT INTO "book2pk" VALUES(1,7, '0-7475-8134-6', 'Harry Potter and the Last Gasp', 'Boomsbury', 801, 2005);
+
+
COMMIT;
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/t/fif.t libhtml-formhandler-model-dbic-perl-0.28/t/fif.t
--- libhtml-formhandler-model-dbic-perl-0.23/t/fif.t 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/t/fif.t 2013-09-22 16:21:14.000000000 +0000
@@ -40,6 +40,7 @@
format => '',
year => '',
user_updated => 0,
+ borrower => '',
}, 'get form fif' );
$fif->{pages} = '501';
@@ -81,7 +82,7 @@
is( $form->field('isbn')->fif, '02340234', 'get field author after validation' );
-$params->{$_} = '' for qw/ comment format year /;
+$params->{$_} = '' for qw/ comment format year borrower /;
$params->{user_updated} = 0;
is_deeply( $form->fif, $params, 'get form fif after validation' );
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/t/lib/BookDB/Form/Book.pm libhtml-formhandler-model-dbic-perl-0.28/t/lib/BookDB/Form/Book.pm
--- libhtml-formhandler-model-dbic-perl-0.23/t/lib/BookDB/Form/Book.pm 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/t/lib/BookDB/Form/Book.pm 2013-09-22 16:21:14.000000000 +0000
@@ -31,6 +31,7 @@
has_field 'authors' => (
type => 'Multiple',
label => 'Authors',
+ label_column => 'full_name',
order => '2',
);
@@ -78,6 +79,11 @@
order => 9,
);
+has_field 'borrower' => (
+ type => 'Select',
+ label_column => 'name_email',
+);
+
has_field submit => ( type => 'Submit', value => 'Update' );
sub validate_year {
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/t/lib/BookDB/Form/Book2PK.pm libhtml-formhandler-model-dbic-perl-0.28/t/lib/BookDB/Form/Book2PK.pm
--- libhtml-formhandler-model-dbic-perl-0.23/t/lib/BookDB/Form/Book2PK.pm 1970-01-01 00:00:00.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/t/lib/BookDB/Form/Book2PK.pm 2013-09-22 16:21:14.000000000 +0000
@@ -0,0 +1,75 @@
+package BookDB::Form::Book2PK;
+use HTML::FormHandler::Moose;
+extends 'HTML::FormHandler::Model::DBIC';
+
+with 'HTML::FormHandler::Widget::Theme::Bootstrap';
+
+=head1 NAME
+
+Form object for the Book Controller
+
+=head1 SYNOPSIS
+
+Form used for book/add and book/edit actions
+
+=head1 DESCRIPTION
+
+Catalyst Form.
+
+=cut
+
+has '+item_class' => ( default => 'Book2PK' );
+
+has_field 'title' => (
+ type => 'Text',
+ required => 1,
+ required_message => 'A book must have a title.',
+ label => 'Title',
+);
+
+has_field 'publisher' => (
+ type => 'Text',
+ label => 'Publisher',
+);
+
+# has_many relationship pointing to mapping table
+has_field 'isbn' => (
+ type => 'Text',
+ label => 'ISBN',
+ unique => 1,
+ required => 1,
+);
+has_field 'year' => (
+ type => 'Integer',
+ range_start => '1900',
+ range_end => '2020',
+ label => 'Year',
+ required => 1,
+);
+has_field 'pages' => (
+ type => 'Integer',
+ label => 'Pages',
+);
+
+has_field submit => ( type => 'Submit', value => 'Update', element_class => ['btn'] );
+
+sub validate_year {
+ my ( $self, $field ) = @_;
+ $field->add_error('Invalid year')
+ if ( ( $field->value > 3000 ) || ( $field->value < 1600 ) );
+}
+
+=head1 AUTHOR
+
+Gerda Shank
+
+=head1 LICENSE AND COPYRIGHT
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L.
+
+=cut
+
+__PACKAGE__->meta->make_immutable;
+no HTML::FormHandler::Moose;
+1;
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/t/lib/BookDB/Schema/Result/Author.pm libhtml-formhandler-model-dbic-perl-0.28/t/lib/BookDB/Schema/Result/Author.pm
--- libhtml-formhandler-model-dbic-perl-0.23/t/lib/BookDB/Schema/Result/Author.pm 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/t/lib/BookDB/Schema/Result/Author.pm 2013-09-22 16:21:14.000000000 +0000
@@ -40,7 +40,7 @@
'books' => 'author_books', 'book'
);
-sub name {
+sub full_name {
my $self = shift;
return $self->first_name . " " . $self->last_name;
}
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/t/lib/BookDB/Schema/Result/Book2PK.pm libhtml-formhandler-model-dbic-perl-0.28/t/lib/BookDB/Schema/Result/Book2PK.pm
--- libhtml-formhandler-model-dbic-perl-0.23/t/lib/BookDB/Schema/Result/Book2PK.pm 1970-01-01 00:00:00.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/t/lib/BookDB/Schema/Result/Book2PK.pm 2013-09-22 16:21:14.000000000 +0000
@@ -0,0 +1,31 @@
+package BookDB::Schema::Result::Book2PK;
+
+use Moose;
+use MIME::Base64;
+
+use base 'DBIx::Class';
+
+__PACKAGE__->load_components("Core");
+__PACKAGE__->table("book2pk");
+__PACKAGE__->add_columns(
+ "libraryid",
+ { data_type => "INTEGER", is_nullable => 0, default_value => 1, size => undef },
+ "id",
+ { data_type => "INTEGER", is_nullable => 0, size => undef },
+ "isbn",
+ { data_type => "varchar", is_nullable => 0, size => 100 },
+ "title",
+ { data_type => "varchar", is_nullable => 0, size => 100,
+ extra => { field_def => { type => 'TextArea', size => '64', temp => 'testing' } },
+ },
+ "publisher",
+ { data_type => "varchar", is_nullable => 0, size => 100 },
+ "pages",
+ { data_type => "INTEGER", is_nullable => 0, size => undef },
+ "year",
+ { data_type => "INTEGER", is_nullable => 0, size => undef },
+);
+__PACKAGE__->set_primary_key("libraryid", "id");
+__PACKAGE__->add_unique_constraint( 'isbn' => ['libraryid', 'isbn'] );
+
+1;
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/t/lib/BookDB/Schema/Result/Borrower.pm libhtml-formhandler-model-dbic-perl-0.28/t/lib/BookDB/Schema/Result/Borrower.pm
--- libhtml-formhandler-model-dbic-perl-0.23/t/lib/BookDB/Schema/Result/Borrower.pm 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/t/lib/BookDB/Schema/Result/Borrower.pm 2013-09-22 16:21:14.000000000 +0000
@@ -28,5 +28,10 @@
{ "foreign.borrower" => "self.id" },
);
+sub name_email {
+ my $self = shift;
+ return $self->name . " <" . $self->email . ">";
+}
+
1;
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/t/mult_pk.t libhtml-formhandler-model-dbic-perl-0.28/t/mult_pk.t
--- libhtml-formhandler-model-dbic-perl-0.23/t/mult_pk.t 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/t/mult_pk.t 2013-09-22 16:21:14.000000000 +0000
@@ -37,4 +37,8 @@
ok( $form, 'get form with array of hashref primary key' );
is( $form->item->country_iso, 'GB', 'got right row');
+$form = BookDB::Form::AuthorOld->new( item => $author );
+ok( $form, 'got form with only item passed in' );
+is_deeply( $form->item_id, $pk_hashlist, 'got primary key' );
+
done_testing;
diff -Nru libhtml-formhandler-model-dbic-perl-0.23/t/unique.t libhtml-formhandler-model-dbic-perl-0.28/t/unique.t
--- libhtml-formhandler-model-dbic-perl-0.23/t/unique.t 2012-10-15 20:33:03.000000000 +0000
+++ libhtml-formhandler-model-dbic-perl-0.28/t/unique.t 2013-09-22 16:21:14.000000000 +0000
@@ -45,7 +45,7 @@
isbn => {
type => 'Text',
unique => 1,
- unique_message => 'Duplicate ISBN number',
+ messages => { unique => 'Duplicate ISBN number' },
}
]
}