Compare commits

...
846 Commits
Author SHA1 Message Date
Awesome Code 34470a8457 Auto corrected by following Ruby Layout/LeadingBlankLines 2018-09-10 22:20:20 +00:00
Awesome Code 90f4db4853 Auto corrected by following Ruby rspec layout 2018-09-10 22:20:12 +00:00
pozorvlak 28503cdca0 Merge pull request #1696 from Growstuff/awesomecode-ruby/factorybot/attributedefinedstatically-22693
Auto corrected by following Ruby FactoryBot/AttributeDefinedStatically
2018-09-10 10:48:20 +01:00
Awesome Code 31744491ea Auto corrected by following Ruby FactoryBot/AttributeDefinedStatically 2018-09-09 21:53:57 +00:00
Cesy d541f795f6 Merge pull request #1694 from Br3nda/upgrade/elasticsearch
Upgrade/elasticsearch
2018-09-09 09:33:09 +01:00
Brenda Wallace 03837e193e Test coverage 2018-09-09 14:25:40 +12:00
Brenda Wallace 612bfcffcb Adding codeclimate to env 2018-09-09 13:48:17 +12:00
Brenda Wallace d0b785bcd3 Pass elasticsearch version from travis.yaml 2018-09-09 13:33:20 +12:00
Brenda Wallace 857c9e9d7a whitespace fixups 2018-09-09 12:44:52 +12:00
Brenda Wallace 913ac45127 Changed query syntax for elasticsearch 2018-09-09 12:40:40 +12:00
Brenda Wallace 27c4dbedf2 Elasticsearch has dropped the string type and is now using text 2018-09-09 12:18:50 +12:00
Brenda Wallace 4867c68984 Added stdout print when creating/refreshing elasticsearch index 2018-09-09 12:11:10 +12:00
Brenda Wallace a326f92210 Move elastic search index create to same line as db:create 2018-09-09 11:59:50 +12:00
Brenda Wallace 835e277f49 whitepace fix up 2018-09-09 11:58:43 +12:00
Brenda Wallace 7197843ac3 Reindex elasticsearch rake task 2018-09-09 11:56:37 +12:00
Brenda Wallace ea1fb90279 Create the search index 2018-09-09 11:55:19 +12:00
Brenda Wallace 53b08422ce Force new config when installing elasticsearch 2018-09-09 11:08:34 +12:00
Brenda Wallace a051523354 Upgrade to elasticsearch 6.2.3 2018-09-09 10:56:21 +12:00
Brenda Wallace 5563b183dc Revert "Remove custom elastic search installer in travis"
This reverts commit d629203570.
2018-09-09 10:52:20 +12:00
Brenda Wallace 69f6c8d5de Merge branch 'dev' into upgrade/elasticsearch 2018-09-09 10:04:19 +12:00
Brenda Wallace f69f0861d2 Style fix up 2018-09-09 10:04:02 +12:00
Brenda Wallace d629203570 Remove custom elastic search installer in travis 2018-09-09 09:44:43 +12:00
Brenda Wallace 338e705db7 Upgrade elastic search gems 2018-09-09 09:44:27 +12:00
dependabot[bot] dfc53747d9 Bump unicorn from 5.4.0 to 5.4.1
Bumps [unicorn](https://bogomips.org/unicorn/) from 5.4.0 to 5.4.1.

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-09-07 11:45:52 +12:00
brenda 2b8aac19dd Revert "Auto corrected by following Ruby Capybara/FeatureMethods"
This reverts commit b52763b7c2.
2018-09-07 10:40:09 +12:00
Awesome Code b52763b7c2 Auto corrected by following Ruby Capybara/FeatureMethods 2018-09-05 12:06:58 +00:00
dependabot[bot] 45fcb76f30 Merge pull request #1681 from Growstuff/dependabot/bundler/selenium-webdriver-3.14.0 2018-08-07 09:25:36 +00:00
dependabot[bot] b5c55f42b8 Bump selenium-webdriver from 3.13.0 to 3.14.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 3.13.0 to 3.14.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/master/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-3.13.0...selenium-3.14.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-07 09:07:48 +00:00
dependabot[bot] 53ddb4ef94 Bump rspec-rails from 3.7.2 to 3.8.0
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 3.7.2 to 3.8.0.
- [Release notes](https://github.com/rspec/rspec-rails/releases)
- [Changelog](https://github.com/rspec/rspec-rails/blob/master/Changelog.md)
- [Commits](https://github.com/rspec/rspec-rails/compare/v3.7.2...v3.8.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-07 21:05:39 +12:00
dependabot[bot] 4147a571a5 Merge pull request #1668 from Growstuff/dependabot/bundler/active_utils-3.3.12 2018-08-06 11:36:17 +00:00
dependabot[bot] 02f4c7f3ac Bump active_utils from 3.3.11 to 3.3.12
Bumps [active_utils](https://github.com/shopify/active_utils) from 3.3.11 to 3.3.12.
- [Release notes](https://github.com/shopify/active_utils/releases)
- [Changelog](https://github.com/Shopify/active_utils/blob/master/CHANGELOG.md)
- [Commits](https://github.com/shopify/active_utils/compare/v3.3.11...v3.3.12)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-06 08:18:44 +00:00
dependabot[bot] 329f77db78 Bump factory_bot_rails from 4.8.2 to 4.10.0
Bumps [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails) from 4.8.2 to 4.10.0.
- [Release notes](https://github.com/thoughtbot/factory_bot_rails/releases)
- [Changelog](https://github.com/thoughtbot/factory_bot_rails/blob/master/NEWS)
- [Commits](https://github.com/thoughtbot/factory_bot_rails/compare/v4.8.2...v4.10.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-06 20:15:13 +12:00
Awesome Code 345fac4358 Auto corrected by following Ruby FactoryBot/StaticAttributeDefinedDynamically 2018-07-21 04:04:00 +00:00
dependabot[bot] 409f24e4e5 Merge pull request #1658 from Growstuff/dependabot/bundler/capybara-screenshot-1.0.21 2018-07-16 09:39:00 +00:00
dependabot[bot] 5dd22d8d1c Bump capybara-screenshot from 1.0.19 to 1.0.21
Bumps [capybara-screenshot](https://github.com/mattheworiordan/capybara-screenshot) from 1.0.19 to 1.0.21.
- [Release notes](https://github.com/mattheworiordan/capybara-screenshot/releases)
- [Changelog](https://github.com/mattheworiordan/capybara-screenshot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mattheworiordan/capybara-screenshot/compare/v1.0.19...v1.0.21)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-16 09:25:22 +00:00
dependabot[bot] dbbd7fdeb4 Bump uglifier from 4.1.14 to 4.1.15
Bumps [uglifier](https://github.com/lautis/uglifier) from 4.1.14 to 4.1.15.
- [Release notes](https://github.com/lautis/uglifier/releases)
- [Changelog](https://github.com/lautis/uglifier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/lautis/uglifier/compare/v4.1.14...v4.1.15)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-16 21:23:32 +12:00
Brenda Wallace 3c4e1423f9 Merge pull request #1659 from Growstuff/dependabot/bundler/geocoder-1.4.9
Bump geocoder from 1.4.7 to 1.4.9
2018-07-15 08:50:20 +12:00
dependabot[bot] 40600215bc Bump geocoder from 1.4.7 to 1.4.9
Bumps [geocoder](https://github.com/alexreisner/geocoder) from 1.4.7 to 1.4.9.
- [Release notes](https://github.com/alexreisner/geocoder/releases)
- [Changelog](https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/alexreisner/geocoder/compare/v1.4.7...v1.4.9)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-12 08:25:38 +00:00
Brenda Wallace 0bdf42f6c8 Merge pull request #1669 from Growstuff/dependabot/bundler/faker-1.9.1
Bump faker from 1.8.7 to 1.9.1
2018-07-12 20:23:20 +12:00
dependabot[bot] 711fb28f49 Bump faker from 1.8.7 to 1.9.1
Bumps [faker](https://github.com/stympy/faker) from 1.8.7 to 1.9.1.
- [Release notes](https://github.com/stympy/faker/releases)
- [Changelog](https://github.com/stympy/faker/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stympy/faker/compare/v1.8.7...v1.9.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-12 07:25:39 +00:00
Brenda Wallace 77f14feae5 Merge pull request #1656 from Growstuff/dependabot/bundler/font-awesome-sass-5.0.13
Bump font-awesome-sass from 5.0.9 to 5.0.13
2018-07-04 13:12:36 +12:00
dependabot[bot] 1b6bbfcfac Bump font-awesome-sass from 5.0.9 to 5.0.13
Bumps [font-awesome-sass](https://github.com/FortAwesome/font-awesome-sass) from 5.0.9 to 5.0.13.
- [Release notes](https://github.com/FortAwesome/font-awesome-sass/releases)
- [Commits](https://github.com/FortAwesome/font-awesome-sass/compare/5.0.9...5.0.13)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-03 22:13:14 +00:00
Brenda Wallace d39af973e0 Merge pull request #1663 from Growstuff/dependabot/bundler/uglifier-4.1.14
Bump uglifier from 4.1.13 to 4.1.14
2018-07-04 10:11:34 +12:00
dependabot[bot] 14dd8bbc8b Bump uglifier from 4.1.13 to 4.1.14
Bumps [uglifier](https://github.com/lautis/uglifier) from 4.1.13 to 4.1.14.
- [Release notes](https://github.com/lautis/uglifier/releases)
- [Changelog](https://github.com/lautis/uglifier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/lautis/uglifier/compare/v4.1.13...v4.1.14)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-03 21:03:20 +00:00
Brenda Wallace 72753c2d43 Merge pull request #1660 from Growstuff/dependabot/bundler/chartkick-2.3.5
Bump chartkick from 2.3.4 to 2.3.5
2018-07-04 09:01:36 +12:00
Brenda Wallace b1854bbd4a Following same syntax in contributors.md 2018-07-04 08:35:14 +12:00
Brenda Wallace 709cd640d2 Adding dependabot-bot and dependabot. 2018-07-04 08:34:34 +12:00
Brenda Wallace 9e7c6584a6 Turning off BundleOutdated in overcommit 2018-07-04 08:27:11 +12:00
dependabot[bot] 1211be2fef Bump chartkick from 2.3.4 to 2.3.5
Bumps [chartkick](https://github.com/ankane/chartkick) from 2.3.4 to 2.3.5.
- [Release notes](https://github.com/ankane/chartkick/releases)
- [Changelog](https://github.com/ankane/chartkick/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ankane/chartkick/compare/v2.3.4...v2.3.5)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-03 10:46:22 +00:00
Brenda Wallace d712b440b4 Merge pull request #1650 from Growstuff/dependabot/bundler/comfortable_mexican_sofa-1.12.11
Bump comfortable_mexican_sofa from 1.12.10 to 1.12.11
2018-07-03 22:44:10 +12:00
Brenda Wallace 517cfd85e5 Merge branch 'dev' into dependabot/bundler/comfortable_mexican_sofa-1.12.11 2018-07-03 22:03:58 +12:00
Brenda Wallace 7030c868b6 Fixing deoendabot 2018-07-03 22:01:34 +12:00
Brenda Wallace d8b39c69ec Merge branch 'dev' into dependabot/bundler/comfortable_mexican_sofa-1.12.11 2018-07-03 21:01:21 +12:00
Brenda Wallace e7e997290e Fixed dependabot username 2018-07-03 20:52:24 +12:00
Daniel O'Connor 5d88b65284 Merge branch 'dev' into dependabot/bundler/comfortable_mexican_sofa-1.12.11 2018-07-02 15:25:39 +09:30
Daniel O'Connor 31d97f4c00 Merge pull request #1653 from Growstuff/dependabot/bundler/newrelic_rpm-5.2.0.345
Bump newrelic_rpm from 5.0.0.342 to 5.2.0.345
2018-07-02 15:24:22 +09:30
Daniel O'Connor ec9f57e6b8 Merge pull request #1649 from Growstuff/dependabot/bundler/selenium-webdriver-3.13.0
Bump selenium-webdriver from 3.11.0 to 3.13.0
2018-07-02 15:23:53 +09:30
Daniel O'Connor dd0e9f74e6 Merge branch 'dev' into dependabot/bundler/comfortable_mexican_sofa-1.12.11 2018-07-02 13:20:41 +09:30
Daniel O'Connor 9d389726f5 Merge branch 'dev' into dependabot/bundler/newrelic_rpm-5.2.0.345 2018-07-02 12:44:26 +09:30
Daniel O'Connor 4fd0096c85 Merge pull request #1651 from Growstuff/dependabot/bundler/rack-protection-2.0.3
Bump rack-protection from 2.0.1 to 2.0.3
2018-07-02 12:44:02 +09:30
Daniel O'Connor 28945b6f20 Merge pull request #1652 from Growstuff/dependabot/bundler/uglifier-4.1.13
Bump uglifier from 4.1.10 to 4.1.13
2018-07-02 12:40:59 +09:30
Daniel O'Connor b926f07e2a Update CONTRIBUTORS.md 2018-07-02 12:39:59 +09:30
Daniel O'Connor b10719ecab Merge branch 'dev' into dependabot/bundler/selenium-webdriver-3.13.0 2018-07-02 09:47:13 +09:30
Daniel O'Connor 1527fec441 Merge branch 'dev' into dependabot/bundler/uglifier-4.1.13 2018-07-02 09:46:59 +09:30
Daniel O'Connor 1096fd0e89 Merge branch 'dev' into dependabot/bundler/comfortable_mexican_sofa-1.12.11 2018-07-02 09:46:39 +09:30
Daniel O'Connor 0cde6ad684 Merge branch 'dev' into dependabot/bundler/newrelic_rpm-5.2.0.345 2018-07-02 09:46:25 +09:30
Daniel O'Connor 8b4951c71a Merge branch 'dev' into dependabot/bundler/rack-protection-2.0.3 2018-07-02 09:46:08 +09:30
Daniel O'Connor 8fe3b1da15 Update CONTRIBUTORS.md 2018-07-02 09:44:50 +09:30
dependabot[bot] d2c81d6b29 Bump newrelic_rpm from 5.0.0.342 to 5.2.0.345
Bumps [newrelic_rpm](https://github.com/newrelic/rpm) from 5.0.0.342 to 5.2.0.345.
- [Release notes](https://github.com/newrelic/rpm/releases)
- [Changelog](https://github.com/newrelic/rpm/blob/master/CHANGELOG.md)
- [Commits](https://github.com/newrelic/rpm/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-01 11:55:29 +00:00
dependabot[bot] 5ad44c10af Bump uglifier from 4.1.10 to 4.1.13
Bumps [uglifier](https://github.com/lautis/uglifier) from 4.1.10 to 4.1.13.
- [Release notes](https://github.com/lautis/uglifier/releases)
- [Changelog](https://github.com/lautis/uglifier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/lautis/uglifier/compare/v4.1.10...v4.1.13)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-01 11:54:50 +00:00
dependabot[bot] 008537a324 Bump rack-protection from 2.0.1 to 2.0.3
Bumps [rack-protection](http://www.sinatrarb.com/protection/) from 2.0.1 to 2.0.3.

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-01 11:52:31 +00:00
dependabot[bot] 116a9a8bab Bump comfortable_mexican_sofa from 1.12.10 to 1.12.11
Bumps [comfortable_mexican_sofa](https://github.com/comfy/comfortable-mexican-sofa) from 1.12.10 to 1.12.11.
- [Release notes](https://github.com/comfy/comfortable-mexican-sofa/releases)
- [Commits](https://github.com/comfy/comfortable-mexican-sofa/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-01 11:51:52 +00:00
dependabot[bot] dc7cbadfc0 Bump selenium-webdriver from 3.11.0 to 3.13.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 3.11.0 to 3.13.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/master/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-3.11.0...selenium-3.13.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-01 11:50:30 +00:00
Brenda Wallace 1c7a3e27d9 Merge pull request #1648 from Growstuff/dependabot/bundler/sprockets-3.7.2
[Security] Bump sprockets from 3.7.1 to 3.7.2
2018-06-25 15:59:59 +12:00
dependabot[bot] e66924151a [Security] Bump sprockets from 3.7.1 to 3.7.2
Bumps [sprockets](http://getsprockets.org/) from 3.7.1 to 3.7.2. **This update includes security fixes.**

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-06-25 03:31:45 +00:00
Brenda Wallace 6f1eed06cc Merge pull request #1646 from robotscissors/issue-565-create-harvests-rss
Issue 565 create harvests RSS
2018-06-19 10:52:10 +12:00
robotscissors 605e2e1392 Add to contributors file 2018-06-18 15:22:27 -07:00
Brenda Wallace 77d2dc6144 Merge branch 'dev' into issue-565-create-harvests-rss 2018-06-17 20:58:32 +12:00
Brenda Wallace 678dabf710 Merge branch 'master' into dev 2018-06-17 10:42:55 +12:00
Brenda Wallace 3a7be86ef9 Merge pull request #1607 from Br3nda/fix/plants-parts-dupe
Don't allow duplicate plant parts names
2018-06-17 10:42:14 +12:00
Brenda Wallace a5fa69c7c7 Merge branch 'dev' into fix/plants-parts-dupe 2018-06-17 08:47:27 +12:00
Brenda Wallace 1d8c2db674 Merge branch 'dev' into issue-565-create-harvests-rss 2018-06-17 08:47:12 +12:00
Cesy 945edd1cbc Merge pull request #1644 from Br3nda/fix/reminder-email-ordering
Order plantings and harvests in email
2018-06-16 21:37:29 +01:00
Brenda Wallace f67d39ed63 Merge branch 'dev' into issue-565-create-harvests-rss 2018-06-16 07:53:38 +12:00
Brenda Wallace 103d7375d3 Merge branch 'dev' into fix/plants-parts-dupe 2018-06-16 07:52:51 +12:00
Brenda Wallace 3b2c4a7893 Merge branch 'dev' into fix/reminder-email-ordering 2018-06-16 07:49:06 +12:00
Brenda Wallace ecf2e82e9e Merge pull request #1645 from Growstuff/Br3nda-patch-1
Pin coverage badge to dev branch
2018-06-16 07:48:36 +12:00
robotscissors 82b83ca7a4 Fix linter issues 2018-06-12 10:00:45 -07:00
robotscissors e784790e19 add .to_s to accomodate hound 2018-06-11 11:16:47 -07:00
robotscissors f9bdae77d3 add tests for harvests/index.rss 2018-06-11 10:38:26 -07:00
robotscissors dff6827761 create rss feed for harvests 2018-06-10 20:38:43 -07:00
Brenda Wallace 2f65939d5c Pin coverage badge to dev branch 2018-06-10 11:47:15 +12:00
Brenda Wallace d7e71c8fc3 Use factory bot to make a harvest.plant_part 2018-06-07 11:46:29 +12:00
Brenda Wallace 47ddc915ef Generate random number in plant_part.name in factorybot 2018-06-07 11:44:29 +12:00
Brenda Wallace 0d303ee6df Don't allow duplicate plant parts names
Make factort's plant_part.name unique
Setting plant_part.name in specs
Unique names for plant parts
2018-06-04 17:42:41 +12:00
Brenda Wallace 5dc8bc5ec5 Order plantings and harvests in email 2018-06-04 17:35:06 +12:00
Brenda Wallace 78d9e3c970 Merge pull request #1622 from Growstuff/awesomecode-factorybot/createlist-12138
Auto corrected by following FactoryBot/CreateList
2018-05-13 07:30:24 +12:00
Daniel O'Connor a772bdaa8d Merge branch 'dev' into awesomecode-factorybot/createlist-12138 2018-05-10 21:35:39 +09:30
Brenda Wallace 0402fee04d Merge pull request #1637 from Br3nda/fix/remote-currency-methods
Remove some old currency methods from application helper
2018-05-08 07:52:36 +12:00
Brenda Wallace 7a1499d854 Merge branch 'dev' into awesomecode-factorybot/createlist-12138 2018-05-01 13:47:44 +12:00
Brenda Wallace 152cdace75 Removed spec for currency helpers 2018-05-01 13:47:25 +12:00
Brenda Wallace ed3ae8bbd6 Remove some old currency methods from application helper 2018-05-01 13:47:25 +12:00
Brenda Wallace 81adae77f8 Merge pull request #1639 from Growstuff/bundle-update-2018-04-29-130926
Bundle Update on 2018-04-29
2018-04-29 18:30:55 +12:00
deppbot 681b5bbd8c Bundle Update on 2018-04-29 2018-04-29 13:09:27 +08:00
Brenda Wallace 832cfde28d Merge pull request #1635 from Growstuff/bundle-update-2018-04-26-092357
Bundle Update on 2018-04-26
2018-04-28 21:15:22 +12:00
Brenda Wallace aa9841dc7d Pinned elastic search to 5.0.0. or later 2018-04-28 18:34:26 +12:00
pozorvlak caa59df3bd Merge pull request #1625 from Growstuff/dev
Release 46
2018-04-27 17:04:31 +01:00
Brenda Wallace 102eaf3d6b Merge branch 'dev' into bundle-update-2018-04-26-092357 2018-04-26 17:39:03 +12:00
Brenda Wallace 61ebd5fe99 Merge pull request #1632 from Br3nda/feature/i18n
i18n for plantings#index
2018-04-26 17:38:32 +12:00
Brenda Wallace 7e0e936509 Merge branch 'dev' into bundle-update-2018-04-26-092357 2018-04-26 17:27:13 +12:00
Brenda Wallace d3faa75d1d Merge branch 'dev' into feature/i18n 2018-04-26 17:26:55 +12:00
Brenda Wallace 1575ee1ddd Merge pull request #1620 from Br3nda/feature/status
Badges for ready to harvest, days to finished
2018-04-26 17:26:36 +12:00
deppbot 5b5eacb738 Bundle Update on 2018-04-26 2018-04-26 09:23:58 +08:00
Brenda Wallace 85eea89792 i18n for plantings#index 2018-04-23 15:40:56 +12:00
Brenda Wallace fc46685ab9 Renamed should_be_finshed? to late? 2018-04-23 13:44:53 +12:00
Brenda Wallace db0c60be0d Rename zombie to super_late 2018-04-23 13:33:38 +12:00
Brenda Wallace 91e851c802 Merge remote-tracking branch 'upstream/dev' into feature/status 2018-04-23 13:00:53 +12:00
Brenda Wallace 9112d4e2bb Merge pull request #1630 from jenkr55/ProfileGardenDisplayImprovements
Profile garden display improvements
2018-04-22 15:33:42 +12:00
jenkr55 eed0b257fa Fixing test because I removed this line 2018-04-21 22:03:31 -05:00
jenkr55 25bba9c126 format fixes 2018-04-21 21:55:29 -05:00
jenkr55 028c2a28a5 unneeded class 2018-04-21 21:52:55 -05:00
jenkr55 fa28fe25b6 Fixing responsive design issues 2018-04-21 21:43:19 -05:00
jenkr55 77978a76f2 Fixing notes display bug on harvest card 2018-04-21 21:27:40 -05:00
jenkr55 7be10957ec WIP different profile page 2018-04-21 21:05:58 -05:00
jenkr55 c94d08c816 Moving bio to be by other profile information 2018-04-21 20:09:23 -05:00
Brenda Wallace 9fdc9e76df Merge branch 'dev' into awesomecode-factorybot/createlist-12138 2018-04-22 12:14:23 +12:00
Brenda Wallace eba03d0662 Merge pull request #1627 from jenkr55/InActiveFixes
Fixing broken "in-active" checkbox
2018-04-22 12:11:34 +12:00
Brenda Wallace 53d7cddea1 Merge branch 'dev' into InActiveFixes 2018-04-22 08:54:27 +12:00
Brenda Wallace 89cfd49616 Merge pull request #1626 from Br3nda/bundle-update
Bundle upgrade
2018-04-22 08:52:08 +12:00
jenkr55 ef74cc293d Rubocop 2018-04-21 10:51:19 -05:00
jenkr55 0b191049b2 Undo this 2018-04-21 10:46:27 -05:00
jenkr55 e767ea6b38 Fixing planting wrapping issue 2018-04-21 10:36:33 -05:00
jenkr55 6cbf7d0bba Fixing parmas issue for owner 2018-04-21 10:29:13 -05:00
jenkr55 cb5d490b1c Fixing params not being passed to plantings controller 2018-04-21 10:26:19 -05:00
jenkr55 585e45487a Fixing button layout issue 2018-04-21 09:16:17 -05:00
jenkr55 6310c51879 Only show data prompt when there are plantings 2018-04-21 09:08:02 -05:00
Brenda Wallace 4c33e5ea2d Merge remote-tracking branch 'origin/feature/status' into feature/status 2018-04-21 22:11:52 +12:00
Brenda Wallace caa5bcec4b Only show finish button if can edit planting 2018-04-21 21:55:33 +12:00
Brenda Wallace 55bfd50123 Merge branch 'dev' into awesomecode-factorybot/createlist-12138 2018-04-21 21:18:30 +12:00
Brenda Wallace 86781f3491 Bundle upgrade 2018-04-21 21:14:18 +12:00
Brenda Wallace 48bf7bb2f4 Merge branch 'dev' into feature/status 2018-04-21 17:41:10 +12:00
Brenda Wallace 6677f8641f If not crop lifespan data, use parent data 2018-04-21 17:40:22 +12:00
Brenda Wallace e5cf8b6091 added spec for finished_predicted_at 2018-04-21 17:25:04 +12:00
Brenda Wallace a7acf72f56 Merge branch 'master' into dev 2018-04-21 17:05:14 +12:00
Brenda Wallace 78f021c2f2 style fix up 2018-04-21 16:26:40 +12:00
Brenda Wallace 34145f7b64 Translation of string in haml 2018-04-21 16:19:51 +12:00
Brenda Wallace ef9bb01fc9 Wrapped a long line 2018-04-21 15:34:18 +12:00
Brenda Wallace e103e6be35 Reducing complexity in planting predictions code 2018-04-21 15:32:04 +12:00
Brenda Wallace 4ad4dd0c7f Style fix up 2018-04-21 15:17:51 +12:00
Brenda Wallace 4df3354020 Style fix up 2018-04-21 15:17:17 +12:00
Brenda Wallace 6077d4da34 Fixed bug in garden spec 2018-04-21 15:01:33 +12:00
Brenda Wallace 34b6b54616 Name goes on garden, not planting 2018-04-21 14:33:39 +12:00
Brenda Wallace 87d43f1eb2 Move planting delete action into the bar 2018-04-21 14:26:27 +12:00
Brenda Wallace 5cc647ee9b test that expects a garden name, set to that name 2018-04-21 14:22:20 +12:00
Brenda Wallace 948c32d1d5 test that expects a garden name, set to that name 2018-04-21 14:19:40 +12:00
Brenda Wallace 2e4378f025 Add css class to show finished/zombie/harvesting etc 2018-04-21 14:17:50 +12:00
Brenda Wallace 548fb3d3fd Badges feature specs 2018-04-21 14:00:00 +12:00
Brenda Wallace 9966eddd37 Giving gardens unique names to stop test collisions 2018-04-21 13:52:49 +12:00
Brenda Wallace aae7688a0e Classes for planting badge colours 2018-04-21 13:05:15 +12:00
Brenda Wallace 9b16abd373 Render perenial progress bar the same as others 2018-04-21 13:04:31 +12:00
Brenda Wallace 87b04f60f7 Order garden's plantings by planted_at 2018-04-21 13:03:46 +12:00
Brenda Wallace a8509acd49 Zombie status needs 90 days 2018-04-21 13:02:51 +12:00
Brenda Wallace ca8dae4b78 Moving the planting buttons lower 2018-04-21 13:02:09 +12:00
Brenda Wallace 1b3e00fba0 Colours for badges on plantings 2018-04-21 13:00:24 +12:00
Brenda Wallace 935aebcb0d Tidy up visual link between planting thumbnail and crop name 2018-04-21 12:38:32 +12:00
Brenda Wallace 4fe8cd566b USe finished not finished?
because some plants have finished_at in the past but haven't had their .finished set to true yet
2018-04-21 12:37:00 +12:00
Brenda Wallace 9188bd384d Futher simplifying planting badges 2018-04-21 11:36:48 +12:00
Brenda Wallace 8ce0717c0f Fixing up planting helper predictions 2018-04-21 11:36:02 +12:00
Brenda Wallace 4c7529eb8e Merge remote-tracking branch 'origin/feature/status' into feature/status 2018-04-21 11:14:32 +12:00
Brenda Wallace f8b76e9c84 Reducing complexity in planting predictions 2018-04-21 11:12:25 +12:00
Brenda Wallace 16341da7bd Merge branch 'dev' into feature/status 2018-04-21 10:55:40 +12:00
Brenda Wallace 0d7542a43d Merge branch 'dev' into awesomecode-factorybot/createlist-12138 2018-04-21 10:55:28 +12:00
Brenda Wallace 8dead992d3 Merge pull request #1624 from Br3nda/fix/awesome
Revert "Auto corrected by following Style/ExpandPathArguments"
2018-04-21 10:55:11 +12:00
Brenda Wallace cdde3994b2 Revert "Auto corrected by following Style/ExpandPathArguments"
This reverts commit a5b84403bb.
2018-04-21 10:35:28 +12:00
Brenda Wallace 44196f7d65 Merge remote-tracking branch 'origin/feature/status' into feature/status 2018-04-21 10:24:13 +12:00
Brenda Wallace dc62ab05ad Merge remote-tracking branch 'upstream/dev' into feature/status 2018-04-21 10:21:40 +12:00
Brenda Wallace 15e64226c8 Merge branch 'dev' into feature/status 2018-04-21 10:21:05 +12:00
Brenda Wallace c860f7c14b Merge branch 'dev' into awesomecode-factorybot/createlist-12138 2018-04-21 10:20:38 +12:00
Brenda Wallace 944af28e3c Merge pull request #1623 from Growstuff/awesomecode-style/expandpatharguments-12138
Auto corrected by following Style/ExpandPathArguments
2018-04-21 10:20:18 +12:00
Awesome Code a5b84403bb Auto corrected by following Style/ExpandPathArguments 2018-04-20 22:19:28 +00:00
Awesome Code afc4441ce1 Auto corrected by following FactoryBot/CreateList 2018-04-20 22:19:04 +00:00
Brenda Wallace b7d4781aef Split the planting&harvest predictions into files 2018-04-21 10:18:18 +12:00
Brenda Wallace c2ff3790db set finished false on planting factory
some code+tests doesn't cope with nil
2018-04-21 09:22:35 +12:00
Brenda Wallace a2f2e24aa1 Merge remote-tracking branch 'upstream/dev' into feature/status 2018-04-21 09:07:10 +12:00
pozorvlak f1a40e4305 Merge pull request #1621 from jenkr55/SecondCommentButton
Show second comment button when many comments on a post
2018-04-20 10:51:18 +01:00
jenkr55 4120069e4c Fixing trailing whitespace 2018-04-19 12:17:36 -05:00
jenkr55 18a7306fd0 Merge branch 'SecondCommentButton' of github.com:jenkr55/growstuff into SecondCommentButton 2018-04-19 12:11:03 -05:00
jenkr55 b3962bc9bc Comment button same style 2018-04-19 12:10:19 -05:00
Brenda Wallace 7a112aeecf Grammar correction in method name 2018-04-19 13:49:54 +12:00
Jennifer Kruse 296daa7a56 Merge branch 'dev' into SecondCommentButton 2018-04-18 20:47:53 -05:00
Brenda Wallace 5bf75fa36f Only show finish prediction badges if we have enough data 2018-04-19 13:45:47 +12:00
Brenda Wallace 279c922b34 Rename update predictions methods to have ! 2018-04-19 13:45:29 +12:00
Brenda Wallace 3ed90b8d04 Moving predictions to own file 2018-04-19 13:44:39 +12:00
jenkr55 634dc936f9 Show second comment button when many comments 2018-04-18 19:32:24 -05:00
Brenda Wallace 2a8c4d4829 Add finished and finished_at to plantings factory 2018-04-17 10:06:40 +12:00
Brenda Wallace 3ee2537438 Only show time to finished if not finished 2018-04-17 10:03:59 +12:00
Brenda Wallace 934bd9adb8 Fixed bug in spec, wasn't really on member's garden#index 2018-04-16 22:11:36 +12:00
Brenda Wallace d043613bde Model specs for harvest time and zombies 2018-04-16 21:14:47 +12:00
Brenda Wallace d1603a6e7f Badges showing finished and harvest status 2018-04-16 21:06:20 +12:00
Brenda Wallace 79e0bc5206 Merge pull request #1615 from Growstuff/dev
Release 45
2018-04-13 11:25:40 +12:00
pozorvlak 61183509b0 Merge pull request #1612 from Growstuff/Br3nda-patch-1
Pick the first photo
2018-04-12 15:34:22 +01:00
Brenda Wallace 6c1bbe9f1c Merge branch 'dev' into Br3nda-patch-1 2018-04-12 14:15:49 +12:00
Brenda Wallace bab41143fa Merge branch 'master' into dev 2018-04-12 11:01:53 +12:00
Brenda Wallace 3c7688d2ed Merge branch 'dev' into Br3nda-patch-1 2018-04-09 09:57:24 +12:00
Brenda Wallace ef20d1a333 Merge pull request #1613 from jenkr55/OnlyShowPlantingSuggestionIfMatch
Only show planting suggestion if there's a match
2018-04-09 09:57:04 +12:00
jenkr55 9c0ddb61e7 Prevent error when @matching_plantings is nil 2018-04-08 10:17:06 -05:00
Jennifer Kruse 19acb238fd Merge branch 'dev' into OnlyShowPlantingSuggestionIfMatch 2018-04-08 09:49:29 -05:00
jenkr55 d38167fd14 Only show planting suggestion if theres a match 2018-04-08 09:47:15 -05:00
Brenda Wallace 6b68e9ee4d Style fix 2018-04-08 10:04:43 +12:00
Brenda Wallace 3e2b4f4183 Pick the first photo 2018-04-08 09:56:19 +12:00
Brenda Wallace 65bb523d16 Merge pull request #1609 from jenkr55/FixVariousWrappingIssues
Fix various wrapping issues
2018-04-08 09:03:26 +12:00
jenkr55 efa8c513ea Adding myself as a contributor 2018-04-07 14:59:14 -05:00
jenkr55 43813d1318 Fixing various wrapping issues 2018-04-07 14:58:07 -05:00
Cesy 7e2aec9ec3 Merge pull request #1608 from Growstuff/dev
Release 44
2018-04-06 07:23:07 +01:00
Brenda Wallace 952224b2e1 Merge branch 'master' into dev 2018-04-03 17:46:37 +12:00
Brenda Wallace 26b1a3a6ca Merge pull request #1605 from Br3nda/feature/ownable
Adding counter caches and ownable concern
2018-04-03 08:54:15 +12:00
Brenda Wallace 03c9151ecd Merge branch 'dev' into feature/ownable 2018-04-03 08:46:34 +12:00
pozorvlak 1dd3d658eb Merge pull request #1606 from Br3nda/fix/dependents
Set the behaviour of dependent models when crops are deleted from the database:

 - plantings, seeds and harvests are deleted
 - child crops are orphaned.
2018-04-02 15:52:10 +01:00
pozorvlak c3b694ea7d Merge branch 'dev' into fix/dependents 2018-04-02 15:39:16 +01:00
pozorvlak a3e2b892d1 Merge pull request #1596 from Br3nda/fix/coverage
Adding codeclimate coverage
2018-04-02 15:36:48 +01:00
pozorvlak d0f6d63d36 Merge branch 'dev' into fix/dependents 2018-04-02 15:26:07 +01:00
pozorvlak 879ce26de7 Merge branch 'dev' into fix/coverage 2018-04-02 15:21:51 +01:00
pozorvlak 98e27b5af4 Merge pull request #1602 from Br3nda/fix/ordering
Fix ordering of recent plantings on crops#show
2018-04-02 15:21:29 +01:00
pozorvlak a7cfecf82c Merge branch 'dev' into feature/ownable 2018-04-02 14:47:48 +01:00
pozorvlak d0f28d4bef Merge branch 'dev' into fix/ordering 2018-04-02 14:43:40 +01:00
pozorvlak 2c090757cc Merge pull request #1601 from Br3nda/feature/fluid-layout
Feature/fluid layout
2018-04-02 14:40:44 +01:00
Brenda Wallace 106d187e67 Add dependent clauses on crop model 2018-04-02 10:29:10 +12:00
Brenda Wallace 8521047803 Merge branch 'dev' into feature/ownable 2018-04-02 10:23:07 +12:00
Brenda Wallace e173d0c130 Merge branch 'dev' into fix/ordering 2018-04-02 10:22:20 +12:00
Brenda Wallace 53197f27eb Merge branch 'dev' into feature/fluid-layout 2018-04-02 10:22:03 +12:00
Brenda Wallace 2460f73673 Merge branch 'dev' into fix/coverage 2018-04-02 10:21:22 +12:00
Brenda Wallace 324dcfc821 Merge pull request #1598 from Growstuff/bundle-update-2018-03-22-131347
Bundle Update on 2018-03-22
2018-04-02 10:21:04 +12:00
Brenda Wallace e3bb43477b Adding counter caches and ownable concern 2018-04-02 10:13:19 +12:00
Brenda Wallace 2d309b7645 Removing jasmine, we have no jasmine specs 2018-04-02 09:58:02 +12:00
Brenda Wallace a59f7dd137 Merge branch 'dev' into fix/coverage 2018-04-02 09:50:11 +12:00
Brenda Wallace 1fb3c4e0f9 Regnerated and secured code climate key 2018-04-02 09:47:04 +12:00
Brenda Wallace b64a294245 Removed duplicate margins in css 2018-04-01 18:45:35 +12:00
Brenda Wallace 31d2aa052a More bundle updates 2018-04-01 14:16:50 +12:00
Brenda Wallace b7f78d5dc9 Fix ordering of recent plantings on crops#show 2018-04-01 13:05:23 +12:00
Brenda Wallace f1afe1ca79 Expanding layout to use full screen 2018-04-01 12:44:59 +12:00
Brenda Wallace e029ef17ab Merge remote-tracking branch 'upstream/dev' into dev 2018-04-01 09:21:37 +12:00
Brenda Wallace d5c8b9ae27 Merge branch 'dev' into bundle-update-2018-03-22-131347 2018-03-31 18:15:25 +13:00
Brenda Wallace f907ba9e4b Merge pull request #1599 from Growstuff/dev
Release 43
2018-03-30 16:14:06 +13:00
Brenda Wallace 25070f73d7 Merge pull request #1591 from Br3nda/feature/photos-helper
Use photos helpers to find photos
2018-03-26 18:14:32 +13:00
Brenda Wallace 2fe6012342 Merge branch 'dev' into feature/photos-helper 2018-03-23 15:03:01 +13:00
deppbot 61468b3587 Bundle Update on 2018-03-22 2018-03-22 13:13:48 +08:00
Brenda Wallace 58c4d82087 Merge pull request #1590 from Growstuff/dev
Release 42
2018-03-22 15:01:52 +13:00
deppbot c80685bf0d Security Update on 2018-03-20 (#1597)
* Security Update on 2018-03-20

* Ordered gems, to please rubocop
2018-03-22 14:14:19 +13:00
Brenda Wallace 69018f2c5c Merge remote-tracking branch 'upstream/dev' into dev 2018-03-22 11:53:29 +13:00
Brenda Wallace 00ea96a73e Can't rename GROWSTUFF_ELASTICSEARCH 2018-03-20 11:35:01 +13:00
Brenda Wallace a1e33ae36e Only set up database and assets in test run, not linter run 2018-03-20 11:13:11 +13:00
Brenda Wallace 7f24927dc9 Clean up errors on undefined shell vars 2018-03-20 11:06:37 +13:00
Brenda Wallace a178d3d42a Fix ES install on travis 2018-03-19 18:02:26 +13:00
Brenda Wallace 6089198f5c fixed path to scripts 2018-03-19 17:52:25 +13:00
Brenda Wallace 715ff4d41d Merge branch 'dev' into fix/coverage 2018-03-19 17:47:01 +13:00
Brenda Wallace 5992c974c7 Adding codeclimate coverage 2018-03-19 17:08:04 +13:00
Brenda Wallace 511e89fa58 Merge branch 'dev' into feature/photos-helper 2018-03-19 13:39:02 +13:00
Daniel O'Connor 13d8a29773 Merge pull request #1592 from Br3nda/fix/layout
Layout fixes for mobile and smaller screens
2018-03-19 10:38:12 +10:30
Brenda Wallace dc09a6ea91 Merge branch 'dev' into fix/layout 2018-03-16 14:55:03 +13:00
Brenda Wallace f8e83cdb9c Merge branch 'dev' into feature/photos-helper 2018-03-16 14:54:53 +13:00
deppbot 64a8cfb59f Security Update on 2018-03-16 (#1593) 2018-03-16 14:54:36 +13:00
Brenda Wallace 2f81d6c78d Layout fixes for mobile and smaller screens 2018-03-15 23:01:51 +13:00
Brenda Wallace ece7113c89 DRY photo helper spec 2018-03-15 22:56:32 +13:00
Brenda Wallace 8941c577e4 Specs for photos helper 2018-03-14 22:25:30 +13:00
Brenda Wallace 1bf1076076 Photos helper 2018-03-14 19:28:18 +13:00
Brenda Wallace 8906fd38ae For seeds, use planting photo if no seeds photo 2018-03-14 15:21:40 +13:00
Daniel O'Connor d5be92ac8b Merge pull request #1588 from Br3nda/fix/photo-order-1547
Fix/photo order 1547
2018-03-13 00:22:35 +10:30
Brenda Wallace 40d71ae070 Merge branch 'dev' into fix/photo-order-1547 2018-03-12 11:41:12 +13:00
Brenda Wallace 2f45041f8c Fixed ordering of photos on crops#show 2018-03-12 08:56:39 +13:00
Brenda Wallace f9d4e1d6ae Ancestry of food. Seeds -> Planting -> Seeds -> Planting (#1550)
* Add seed ancestry, and seeds.finished_at
* Plantings and seeds produce each other
* Permissions for seeds actions
* View update, for seed actions, and planting ancestry
* Routes for seeds
* Scopes for harvests
* Spec updates for seeds
* Removed in-line style
* Add seed ancestry, and seeds.finished_at
* Plantings and seeds produce each other
* Permissions for seeds actions
* View update, for seed actions, and planting ancestry
* Routes for seeds
* Scopes for harvests
* Spec updates for seeds
* Moved finishable to a concern
* Seeds.finished_at
* rubocop fixes
* Made seeds sown migration the most recent
* Specs for home page
* Only show current seeds on home page
* Seeds appear for logged in or not
* Buttons to mark seeds finished
* JS for marking seeds finished
* Some actions only appear if seed or planting is active
* Fixed up display of home page
* Fixed typo in admin members#index
* Tidying up actions on all the things
* Harvest description in #index
* Truncate garden description if long
* Updated link label in view spec
* Show planted_from always, becuase it might be a parent seed
* find correct link in spec adding photos to garden
* fixed spec finding link to edit garden
* Better harvest description truncation
* Helping spec find the edit button
* specs for the home page
* Re-instate crops js, but in the correct file now
* Fixed link to garden in actions
* Tweaking mobile view
2018-03-12 08:39:32 +13:00
Brenda Wallace 80203ad215 Merge pull request #1585 from Growstuff/dev
Release 41
2018-03-11 14:03:50 +13:00
Brenda Wallace 8c51d7bdd5 Merge branch 'master' into dev 2018-02-18 13:09:56 +13:00
Cesy 64e3b3b4d4 Merge pull request #1565 from Growstuff/awesomecode-style/andor-8234
Auto corrected by following Style/AndOr
2018-02-16 08:47:02 +00:00
Brenda Wallace 978523fd94 Merge branch 'dev' into awesomecode-style/andor-8234 2018-02-11 08:50:50 +13:00
Brenda Wallace 97f63d1147 Merge pull request #1583 from Growstuff/dev
Production hotfix
2018-02-11 08:42:49 +13:00
Brenda Wallace 1a9ff5eb4c Merge branch 'master' into dev 2018-02-11 08:14:44 +13:00
Brenda Wallace 72b1494db9 Merge pull request #1582 from Br3nda/hotfix-migration
Don't update flickr photos in migration
2018-02-11 08:14:00 +13:00
Brenda Wallace 83bba916a4 Don't update flickr photos in migration 2018-02-10 18:41:11 +13:00
Brenda Wallace 64179850ff Merge pull request #1563 from Growstuff/dev
Release 40
2018-02-10 09:04:55 +13:00
Brenda Wallace 9cdf2e899f Merge pull request #1569 from Br3nda/remove/paid-accounts
Removing shop, products, accounts, orders
2018-02-09 11:09:36 +13:00
Brenda Wallace 2eacf346a8 Merge remote-tracking branch 'origin/remove/paid-accounts' into remove/paid-accounts 2018-02-09 10:53:47 +13:00
Brenda Wallace aab91e2fa9 Removed active merchant 2018-02-09 10:53:05 +13:00
Brenda Wallace 2217d87b5a Added back the member's last login 2018-02-09 10:53:05 +13:00
Brenda Wallace 44b2251896 Re-instated the member-since text on profiles 2018-02-09 10:53:05 +13:00
Brenda Wallace f5e20cd2d2 Re-gen rubocop todo 2018-02-09 10:53:05 +13:00
Brenda Wallace 42de726405 Removing shop, products, accounts, orders 2018-02-09 10:53:05 +13:00
Brenda Wallace 65b4c7dbc1 Revert "Auto corrected by following Style/StringLiterals"
This reverts commit ab56a3c6b3.
2018-02-09 07:58:47 +13:00
Brenda Wallace 6b6ed7e31c Merge remote-tracking branch 'origin/remove/paid-accounts' into remove/paid-accounts 2018-02-09 07:47:53 +13:00
Brenda Wallace 564901f93f Merge branch 'dev' into remove/paid-accounts 2018-02-09 07:46:51 +13:00
Brenda Wallace f8127eeec3 Revert "Auto corrected by following Style/StringLiterals"
This reverts commit ab56a3c6b3.
2018-02-09 07:44:48 +13:00
Brenda Wallace 33fb2408d6 Merge branch 'dev' into awesomecode-style/andor-8234 2018-02-07 14:25:41 +13:00
Awesome Code ab56a3c6b3 Auto corrected by following Style/StringLiterals 2018-02-07 10:20:26 +13:00
Brenda Wallace ef4b4d0c46 Merge branch 'dev' into awesomecode-style/andor-8234 2018-02-07 08:41:30 +13:00
Brenda Wallace 44ba29137d Merge branch 'dev' into remove/paid-accounts 2018-02-07 08:41:17 +13:00
deppbot ed2fcc2ada Bundle Update on 2018-02-07 2018-02-07 08:40:54 +13:00
Brenda Wallace 0b5c45d08f Merge branch 'dev' into awesomecode-style/andor-8234 2018-02-05 16:13:15 +13:00
Brenda Wallace 54c880a66c Removed active merchant 2018-02-05 15:40:37 +13:00
Brenda Wallace 0699677d05 Added back the member's last login 2018-02-05 14:42:41 +13:00
Brenda Wallace 3c411f15b8 Re-instated the member-since text on profiles 2018-02-05 14:42:05 +13:00
Brenda Wallace dcf5286275 Re-gen rubocop todo 2018-02-05 14:38:08 +13:00
Brenda Wallace 7e1e2bef91 Removing shop, products, accounts, orders 2018-02-05 14:32:59 +13:00
Brenda Wallace 5cda14f87a Don't update flickr meta data on db rollback 2018-02-05 12:52:59 +13:00
Brenda Wallace 88da0da616 Re-fetches from flickr 2018-02-05 12:52:59 +13:00
Meir Taffel a69afd87e7 Add date_taken to photos 2018-02-05 12:52:59 +13:00
Brenda Wallace 57bfafccc7 Merge branch 'dev' into awesomecode-style/andor-8234 2018-02-05 12:28:08 +13:00
deppbot 24931381af Bundle Update on 2018-02-03 2018-02-04 08:25:59 +13:00
deppbot 742c7e30a9 Bundle Update on 2018-01-31 2018-01-31 13:12:08 +13:00
Daniel O'Connor 2f3e368ede Merge branch 'dev' into awesomecode-style/andor-8234 2018-01-29 11:45:51 +10:30
Daniel O'Connor 502a20cf10 Merge pull request #1564 from Growstuff/awesomecode-rspec/leadingsubject-8234
Auto corrected by following RSpec/LeadingSubject
2018-01-29 11:45:07 +10:30
Brenda Wallace b2cf022522 Removed extra blank lines 2018-01-29 13:01:49 +13:00
Shiny 3d4598e4e1 style clean up 2018-01-29 12:56:41 +13:00
Awesome Code 94db28b3a9 Auto corrected by following Style/AndOr 2018-01-28 23:47:38 +00:00
Awesome Code 767477df66 Auto corrected by following RSpec/LeadingSubject 2018-01-28 23:47:27 +00:00
Brenda Wallace 7f87ee1018 Fixed default_photo for seeds - uses own photos, not the crop 2018-01-29 09:55:06 +13:00
deppbot 093a948922 Bundle Update on 2018-01-28 2018-01-29 09:54:30 +13:00
deppbot be1553410f Bundle Update on 2018-01-24 2018-01-29 09:54:20 +13:00
Shiny caf41e80c9 Patching paperclip gem 2018-01-24 15:07:06 +13:00
deppbot 2eff7d6716 Bundle Update on 2018-01-21 2018-01-23 09:00:34 +13:00
Shiny df5006c61c Disable jshint
this is on by default
2018-01-23 09:00:34 +13:00
Brenda Wallace 1e0565dd9b Tell hound to ignore the bootstrap plugin file 2018-01-23 09:00:34 +13:00
Brenda Wallace 3453a648fa Latest versions of bootstrap accessibility plugin 2018-01-23 09:00:34 +13:00
Awesome Code e8d9314cff Auto corrected by following Style/Lambda 2018-01-23 09:00:34 +13:00
Brenda Wallace 92e56cfc1e Fixed up a spec, use sign_in member instead of stubing 2018-01-23 09:00:34 +13:00
Brenda Wallace 3dc356eb29 order gardens by name on plantings form 2018-01-23 09:00:34 +13:00
Brenda Wallace 56ed61b2b3 Lock pg < 1.0.0 for now 2018-01-23 09:00:34 +13:00
Brenda Wallace 16ad5384d1 Moved gardens chart to dedicated controller 2018-01-23 09:00:34 +13:00
Brenda Wallace cf93489af7 Fixed crops chart permissions by moving to another controller 2018-01-23 09:00:34 +13:00
Brenda Wallace 86b9a3650b Move application.js loading last again 2018-01-23 09:00:34 +13:00
Brenda Wallace 625a035f44 Scope js variables so they are not global 2018-01-23 09:00:34 +13:00
Brenda Wallace 196d37dee9 Re-instated the extra fields on crop.json 2018-01-23 09:00:34 +13:00
Shiny 6f613635d2 Update crop_detail_page_spec.rb 2018-01-23 09:00:34 +13:00
Awesome Code 46267b2a1d Auto corrected by following Style/MutableConstant 2018-01-23 09:00:34 +13:00
Awesome Code 8c8d549cb1 Auto corrected by following RSpec/NotToNot 2018-01-23 09:00:34 +13:00
Awesome Code d9cc1dcae8 Auto corrected by following RSpec/MultipleSubjects 2018-01-23 09:00:34 +13:00
Brenda Wallace 9db4736229 Permissions (and specs) for charts json 2018-01-23 09:00:34 +13:00
pozorvlak 04a7c41f63 Only deploy from the Elasticsearch build job
Fixes #1099, or at least works around it, though a better solution would
be to rewrite our deployment system using Travis build stages or Heroku
build pipelines.

The Elasticsearch job was picked because it's the one most likely to
fail, and I can't work out how to deploy only if all three jobs pass.
2018-01-23 09:00:34 +13:00
Brenda Wallace 78b8be1fc2 Use .presence to find finished ts in timeline 2018-01-23 09:00:34 +13:00
Brenda Wallace b6e9539127 Use predicted finish times to put current plantings on the timeline 2018-01-23 09:00:34 +13:00
Brenda Wallace 33276874a8 add google js to gardens#show 2018-01-23 09:00:34 +13:00
Brenda Wallace 9adb3d1e4e Removed d3 graph tests 2018-01-23 09:00:34 +13:00
Awesome Code 3391f6c392 Auto corrected by following Style/RescueStandardError 2018-01-23 09:00:34 +13:00
Awesome Code a13acbe087 Auto corrected by following Style/ParallelAssignment 2018-01-23 09:00:34 +13:00
Awesome Code 0c8240d4e8 Auto corrected by following Style/OrAssignment 2018-01-23 09:00:34 +13:00
Brenda Wallace 5ea7ae8af0 Added Harvested for chart 2018-01-23 09:00:34 +13:00
Brenda Wallace eb1b890eec Add planted_from chart 2018-01-23 09:00:34 +13:00
Brenda Wallace 4821bf3b07 Wrapped thre crops show js in a document.ready 2018-01-23 09:00:34 +13:00
Brenda Wallace b83db1d4e7 Fix predictions, it wasn't showing nil 2018-01-23 09:00:34 +13:00
Awesome Code dea7ce241b Auto corrected by following RSpec/EmptyLineAfterFinalLet 2018-01-23 09:00:34 +13:00
Awesome Code 8d166f1fe6 Auto corrected by following FactoryBot/DynamicAttributeDefinedStatically 2018-01-23 09:00:34 +13:00
Brenda Wallace 49253b59ee Fixing up prediction specs 2018-01-23 09:00:34 +13:00
Brenda Wallace ca16b2c407 Removed ignore of highcharts 2018-01-23 09:00:34 +13:00
Brenda Wallace 427a0187e1 updated prediction spec 2018-01-23 09:00:34 +13:00
Brenda Wallace b1096cd021 Moved chart includes to application.js, attempting to fix json parse error 2018-01-23 09:00:34 +13:00
Awesome Code 020d024e4b Auto corrected by following EmptyLine 2018-01-23 09:00:34 +13:00
Brenda Wallace 070a4605d0 Add a green border around predictions boxes 2018-01-23 09:00:34 +13:00
Brenda Wallace 1f8413bf3e Remove highcharts.js, we're not using it 2018-01-23 09:00:34 +13:00
Brenda Wallace 59c3edcf82 Add timeline to gardens 2018-01-23 09:00:34 +13:00
Brenda Wallace 1bf05f81ab Convert to use chartkick gem
Conflicts:
	Gemfile
	Gemfile.lock
	config/initializers/assets.rb
2018-01-23 09:00:34 +13:00
Brenda Wallace e6e88fa0c7 Fixed up tabulation 2018-01-23 09:00:34 +13:00
Brenda Wallace 308e834713 Wrap long line 2018-01-23 09:00:34 +13:00
Brenda Wallace 121deb4f48 Fix ordering of crops' parent on form 2018-01-23 09:00:34 +13:00
Brenda Wallace 4b65f28461 Added new line at end of file 2018-01-23 09:00:34 +13:00
Brenda Wallace 87708f1765 Tabulation and jsdoc fixes 2018-01-23 09:00:34 +13:00
Brenda Wallace 2cf335a064 Removed unused variables in js 2018-01-23 09:00:34 +13:00
Brenda Wallace b205f35399 Wrapped a long line 2018-01-23 09:00:34 +13:00
Brenda Wallace a4c06207e3 more JSDoc 2018-01-23 09:00:34 +13:00
Brenda Wallace 580fac6aa1 removed 2 unused variable in js 2018-01-23 09:00:34 +13:00
Brenda Wallace 4a696af9ba Fix up JSDoc 2018-01-23 09:00:34 +13:00
Brenda Wallace d2a060ad49 added JSDoc 2018-01-23 09:00:34 +13:00
Brenda Wallace d898f926d5 added JSDoc 2018-01-23 09:00:34 +13:00
Brenda Wallace 49444edc61 contributors/commits update 2018-01-23 09:00:34 +13:00
Brenda Wallace a4c7de381e converted variable to camel case 2018-01-23 09:00:34 +13:00
Brenda Wallace 61408d7e4e Some js cleanups 2018-01-23 09:00:34 +13:00
Brenda Wallace 9906036faf Add bootstrap js to codeclimate excludes 2018-01-23 09:00:34 +13:00
Brenda Wallace e009d9532a Updating javascript style 2018-01-23 09:00:34 +13:00
Brenda Wallace 9f1c064900 Use the old "var" syntax, and max line 120 2018-01-23 09:00:34 +13:00
Brenda Wallace 8d3d8f3c91 Adding package lock, and eslint 2018-01-23 09:00:34 +13:00
deppbot 0feed2d359 Bundle Update on 2017-12-24 2018-01-23 09:00:34 +13:00
Cesy c08beb5291 Merge pull request #1495 from Growstuff/dev
Release 37
2017-12-22 09:54:32 +00:00
pozorvlak 269f3164b7 Merge pull request #1497 from Br3nda/feature/admin-nicer
Nicer admin interface
2017-12-18 11:33:02 +00:00
Shiny 9d47b2b029 Merge branch 'dev' into feature/admin-nicer 2017-12-18 15:10:36 +13:00
Daniel O'Connor 81e26aaf02 Merge pull request #1496 from Br3nda/feature/ordering
Feature/ordering
2017-12-18 09:30:51 +10:30
Shiny d62322b498 Merge branch 'dev' into feature/admin-nicer 2017-12-18 06:59:33 +13:00
Shiny ebb2f90294 Merge branch 'dev' into feature/ordering 2017-12-18 06:59:17 +13:00
Shiny 72922a160d Merge pull request #1498 from Growstuff/bundle-update-2017-12-18-000857
Bundle Update on 2017-12-18
2017-12-18 06:58:50 +13:00
deppbot 0699716c19 Bundle Update on 2017-12-18 2017-12-18 00:08:58 +08:00
Brenda Wallace 4c35987cb7 Ignore long method in ability.rb 2017-12-17 17:57:19 +13:00
Brenda Wallace 54e0806f38 don't check role is there's no member 2017-12-17 17:55:14 +13:00
Brenda Wallace 99828c7c01 Updated spec for new admin#index 2017-12-17 17:54:13 +13:00
Brenda Wallace 25d2773464 Use nested module/class definitions instead of compact style. 2017-12-17 17:50:30 +13:00
Brenda Wallace 233a30a045 Haml code style fix up 2017-12-17 17:49:05 +13:00
Brenda Wallace 01a7463ae8 Split up ability.rb into methods 2017-12-17 12:47:41 +13:00
Brenda Wallace 8a446ecbfc Member admin 2017-12-17 12:45:19 +13:00
Brenda Wallace efc60e6313 Nicer layout on editing roles 2017-12-17 12:11:55 +13:00
Brenda Wallace 406b2dbf04 Make admin index a bit nicer 2017-12-17 12:06:03 +13:00
Brenda Wallace ac056b4eb5 Merge remote-tracking branch 'upstream/dev' into dev 2017-12-17 12:05:42 +13:00
Brenda Wallace 2394f4d237 One view for showing photos on an item 2017-12-17 11:40:55 +13:00
Brenda Wallace 2a4fd57050 Merge remote-tracking branch 'upstream/dev' into feature/ordering 2017-12-17 10:18:25 +13:00
Shiny 5c885d675e Merge branch 'master' into dev 2017-12-17 10:05:25 +13:00
Shiny 0b08691160 Merge pull request #1474 from Br3nda/feature/photos-1457
Polymorphic relationship to photos
2017-12-17 10:04:30 +13:00
Brenda Wallace b1052a2dbf Order posts by most recent 2017-12-17 10:01:51 +13:00
Brenda Wallace 95a923ff5f Order the plantings on the front page 2017-12-17 10:01:51 +13:00
deppbot c8e34b640e Bundle Update on 2017-12-14 2017-12-17 10:01:51 +13:00
Brenda Wallace 6f2b4b13cd Only show photo pagination if there are photos 2017-12-17 09:55:52 +13:00
Brenda Wallace 970da53873 Merge remote-tracking branch 'origin/feature/photos-1457' into feature/photos-1457 2017-12-17 09:15:24 +13:00
Brenda Wallace 3aa2f0bd3b Paginate photos on seeds#show (inc feature specs) 2017-12-17 08:55:08 +13:00
Shiny 8c1514bc04 Merge branch 'dev' into feature/photos-1457 2017-12-15 17:13:12 +13:00
Daniel O'Connor d2e39f58d5 Merge pull request #1494 from Br3nda/fix/ordering
More ordering fixes
2017-12-15 12:57:08 +10:30
Brenda Wallace 3d3a3b669e Order posts by most recent 2017-12-15 13:28:41 +13:00
Brenda Wallace 8697e56323 Order the plantings on the front page 2017-12-15 13:26:48 +13:00
Shiny 472b2eb192 Merge branch 'dev' into feature/photos-1457 2017-12-15 12:10:36 +13:00
Cesy 1698157d8d Merge pull request #1492 from Growstuff/bundle-update-2017-12-14-201051
Bundle Update on 2017-12-14
2017-12-14 12:25:49 +00:00
deppbot ff652ae234 Bundle Update on 2017-12-14 2017-12-14 20:10:52 +08:00
Shiny b4fcf004cd Merge pull request #1484 from Growstuff/dev
Release 36
2017-12-14 19:37:02 +13:00
Brenda Wallace 25e9ef892d Merge remote-tracking branch 'origin/feature/photos-1457' into feature/photos-1457 2017-12-14 08:45:40 +13:00
Shiny 82149d4565 Merge branch 'dev' into feature/photos-1457 2017-12-14 08:44:31 +13:00
Brenda Wallace fcd3e36e36 Removed commented out code 2017-12-14 08:42:51 +13:00
pozorvlak b783448ec3 Merge pull request #1485 from Br3nda/planting-harvests
Show photos of a planting's harvests
2017-12-13 12:08:23 +00:00
pozorvlak e8b5850bfe Merge branch 'dev' into planting-harvests 2017-12-13 10:57:40 +00:00
pozorvlak bca72680c4 Merge pull request #1490 from Br3nda/dependabot/npm_and_yarn/coffeelint-2.0.7
Bump coffeelint from 1.16.0 to 2.0.7
2017-12-13 10:57:18 +00:00
pozorvlak 358eb96684 Merge branch 'dev' into dependabot/npm_and_yarn/coffeelint-2.0.7 2017-12-13 10:29:18 +00:00
pozorvlak 05807d41f4 Merge pull request #1491 from Br3nda/flickr-auth-fix
Fix Growstuff::OauthSignupAction not found error when connecting flickr
2017-12-13 10:27:16 +00:00
Shiny 96f1995768 Merge branch 'dev' into dependabot/npm_and_yarn/coffeelint-2.0.7 2017-12-13 23:26:07 +13:00
Shiny deefbbce71 Merge branch 'dev' into planting-harvests 2017-12-13 23:25:56 +13:00
Brenda Wallace f8e51f4b45 Merge remote-tracking branch 'origin/feature/photos-1457' into feature/photos-1457 2017-12-13 22:35:29 +13:00
Brenda Wallace 1c8b75b7cb add and show photos for seeds
close #1457
2017-12-13 22:34:16 +13:00
Brenda Wallace 1f66df0743 Fixed link to associated flickr, twitter, facebook accountss
fixes #1479
2017-12-13 22:23:22 +13:00
Brenda Wallace 72f52230a1 Fix Growstuff::OauthSignupAction not found error when connecting flickr account 2017-12-13 22:19:41 +13:00
Shiny 700fba58e8 Merge branch 'dev' into feature/photos-1457 2017-12-13 21:52:55 +13:00
Daniel O'Connor acecbe93c1 Merge pull request #1487 from Growstuff/bundle-update-2017-12-11-160933
Bundle Update on 2017-12-11
2017-12-13 16:20:36 +10:00
dependabot[bot] bafe2b7fd1 Bump coffeelint from 1.16.0 to 2.0.7
Bumps [coffeelint](https://github.com/clutchski/coffeelint) from 1.16.0 to 2.0.7.
- [Commits](https://github.com/clutchski/coffeelint/commits)
2017-12-12 11:00:57 +00:00
Shiny 3be1454a69 Merge branch 'dev' into bundle-update-2017-12-11-160933 2017-12-12 12:36:54 +13:00
Shiny 232e5d50ac Merge branch 'dev' into planting-harvests 2017-12-12 12:36:33 +13:00
pozorvlak 7207a39039 Merge pull request #1486 from Br3nda/cleanup/routes
Convert hashes in routes
2017-12-11 10:47:18 +00:00
deppbot 291f865f7f Bundle Update on 2017-12-11 2017-12-11 16:09:34 +08:00
Brenda Wallace 47e82eb0a7 Convert hashes in routes 2017-12-10 19:50:08 +13:00
Brenda Wallace 08dc2a0513 Show photos of a planting's harvests 2017-12-09 22:24:51 +13:00
Brenda Wallace 4f64698403 Merge remote-tracking branch 'origin/feature/photos-1457' into feature/photos-1457 2017-12-09 20:59:56 +13:00
Brenda Wallace 14551b6ec8 Merge remote-tracking branch 'upstream/dev' into feature/photos-1457
Conflicts:
	spec/models/crop_spec.rb
2017-12-09 20:59:20 +13:00
Shiny 5d44196947 Merge branch 'master' into dev 2017-12-09 13:28:10 +13:00
Shiny 1c41cb7b66 Merge pull request #1483 from Growstuff/bundle-update-2017-12-08-121126
Bundle Update on 2017-12-08
2017-12-09 08:25:36 +13:00
Shiny c3c55eaa09 Merge branch 'dev' into bundle-update-2017-12-08-121126 2017-12-09 08:15:28 +13:00
pozorvlak 98aa9521fe Merge pull request #1482 from Br3nda/ordering
Fixes to ordering
2017-12-08 12:04:48 +00:00
Shiny 96bb345ca9 Merge branch 'dev' into ordering 2017-12-08 20:20:27 +13:00
Shiny 9de991a075 Merge branch 'dev' into bundle-update-2017-12-08-121126 2017-12-08 20:19:39 +13:00
Shiny f76619864c Merge pull request #1477 from Br3nda/upgrade-rubocop
Rubocop upgrade (and some style fixes)
2017-12-08 20:19:08 +13:00
deppbot ec149997b0 Bundle Update on 2017-12-08 2017-12-08 12:11:27 +08:00
Brenda Wallace ac07f18b2d Show most recent seeds first 2017-12-07 15:00:16 +13:00
Brenda Wallace 4ce3e8968f crops#show order posts by most recent first 2017-12-07 14:58:57 +13:00
Brenda Wallace cd35538b83 Order forums by name 2017-12-07 13:42:48 +13:00
Shiny 0f317f624e Merge branch 'dev' into feature/photos-1457 2017-12-07 13:40:19 +13:00
Brenda Wallace 35d8461811 Order recent plantings by when they were planted 2017-12-07 13:39:32 +13:00
Brenda Wallace 8d03a3ffa8 Most recent photos is a crop's default photo 2017-12-06 21:47:01 +13:00
Brenda Wallace 2b0f199329 change string replacement for performance reasons 2017-12-06 15:19:34 +13:00
Brenda Wallace 24f18f78da use bare percent literals 2017-12-06 14:33:51 +13:00
Brenda Wallace 3cc637017d Avoid {} for multiline 2017-12-06 14:29:21 +13:00
Brenda Wallace 37f9dcd7dd for simple loops, use Integer.times 2017-12-06 14:26:58 +13:00
Brenda Wallace f516ef2e57 Don't use :: for method calls 2017-12-06 14:24:17 +13:00
Brenda Wallace 182c626226 Prefer if/unless modifier 2017-12-06 14:23:12 +13:00
Brenda Wallace ea2fcd09dc Fixed last old style word array 2017-12-06 14:18:51 +13:00
Brenda Wallace 878fc7ebcd Use symbol procs 2017-12-06 14:17:34 +13:00
Brenda Wallace 3fdc23098e Use perl names for cli script variables 2017-12-06 14:16:47 +13:00
Brenda Wallace 515325c44e Fixed up % delimiters 2017-12-06 14:14:31 +13:00
Brenda Wallace 25b1836146 Removed nil comparison 2017-12-06 14:13:01 +13:00
Brenda Wallace c925c95398 Use next, instead of a if wrapper 2017-12-06 14:11:27 +13:00
Brenda Wallace 2d00206abf Converted sprintf to format 2017-12-06 14:10:26 +13:00
Brenda Wallace f499f245de Added new line after block end, for rubocpo 2017-12-06 14:08:05 +13:00
Brenda Wallace 35414391c3 modified spec to please rubocop 2017-12-06 14:07:18 +13:00
Brenda Wallace 1f7f4f52d1 Updated ability_spec.rb to use block end new lines 2017-12-06 14:02:48 +13:00
Brenda Wallace b4efeee904 Merge remote-tracking branch 'origin/upgrade-rubocop' into upgrade-rubocop 2017-12-06 11:23:03 +13:00
Brenda Wallace 5b588bf9e9 Rubocop change namespace of some cops 2017-12-06 11:21:25 +13:00
Daniel O'Connor 07611e9a5d Merge branch 'dev' into upgrade-rubocop 2017-12-05 11:38:52 +10:30
Daniel O'Connor baa89a790f Merge pull request #1480 from Growstuff/bundle-update-2017-12-05-081300
Bundle Update on 2017-12-05
2017-12-05 11:38:18 +10:30
deppbot 00395ae68b Bundle Update on 2017-12-05 2017-12-05 08:13:00 +08:00
Shiny 41e26a2c74 Merge branch 'dev' into feature/photos-1457 2017-12-03 21:09:04 +13:00
Shiny d7eb5e0014 Merge pull request #1472 from Growstuff/dev
Release 35
2017-12-02 21:16:29 +13:00
deppbot f08d02f4c5 Bundle Update on 2017-12-02 2017-12-02 20:32:08 +13:00
Brenda Wallace a6a7f789a3 Rubocop upgrade (and some style fixes) 2017-12-01 21:07:39 +13:00
Brenda Wallace c4c659f159 DRY specs, and use create_list in crops model spec 2017-11-30 13:37:47 +13:00
Brenda Wallace 14b16b0d8c Moved photo.items's item lookup to a class method 2017-11-30 11:23:34 +13:00
Brenda Wallace 697779e67c Don't add item to photo is already there 2017-11-30 10:15:05 +13:00
Brenda Wallace 35ce8b84db Adding a unique index on the items <--> photos table 2017-11-30 09:56:47 +13:00
Brenda Wallace ccbdfe51f6 Modified a spec to avoid a chicken and an egg 2017-11-29 22:30:11 +13:00
Brenda Wallace ff57176d60 Simplified the photos controller a bit 2017-11-29 22:13:03 +13:00
Brenda Wallace 12700d6268 Added polymorphic relationship to photos 2017-11-29 21:41:22 +13:00
Brenda Wallace 6ed7376c58 Name garden in spec to ensure it's ordered first 2017-11-29 20:59:37 +13:00
Brenda Wallace c8a200bf19 Changed selector in view spec
it was having trouble finding the link
2017-11-29 20:59:37 +13:00
Brenda Wallace a62b668781 Fix up duplicate order item in controller spec, and DRY 2017-11-29 20:59:37 +13:00
Brenda Wallace 09f82d5995 Tidy up home/crops partial view 2017-11-29 20:59:37 +13:00
Brenda Wallace 8d0bec34a6 Crops controller spec, use let, other cleanup 2017-11-29 20:59:37 +13:00
Brenda Wallace d7ec4eacee Fix sort on plant parts 2017-11-29 20:59:37 +13:00
Brenda Wallace 3a3f4eefbf Added sort to members controller 2017-11-29 20:59:37 +13:00
Brenda Wallace 9e00023332 Fixed post ordering 2017-11-29 20:59:37 +13:00
Brenda Wallace 3058160a59 Removed an orderng spec for gardens 2017-11-29 20:59:37 +13:00
Brenda Wallace e3886ce5b5 Fixed up unescaped model attribute 2017-11-29 20:59:37 +13:00
Brenda Wallace 48f8085e2d Fix seeds order 2017-11-29 20:59:37 +13:00
Brenda Wallace 594e466fd4 Fixed photos ordering 2017-11-29 20:59:37 +13:00
Brenda Wallace b813669d71 Updated shop controller specs 2017-11-29 20:59:37 +13:00
Brenda Wallace d0b8ae3411 Delete follows records when a member is deleted 2017-11-29 20:59:37 +13:00
Brenda Wallace 9c993e9f47 Plantings controller ordering and specs 2017-11-29 20:59:37 +13:00
Brenda Wallace d5fece87d0 Tests for comments#index (and bugfix) 2017-11-29 20:59:37 +13:00
Brenda Wallace 33816d4312 Use faker gem, in account types - and add controller specs 2017-11-29 20:59:37 +13:00
Brenda Wallace 00e6aeed5c seed.tradable was back to front logic. fixed 2017-11-29 20:59:37 +13:00
Brenda Wallace 0205b345d0 A planting's photo is their most recent photo 2017-11-29 20:59:37 +13:00
Brenda Wallace 9f8a32e9f8 Feature plantings need to be ordered 2017-11-29 20:59:37 +13:00
Brenda Wallace 7357524271 Garden's default photo should be the most recent photo 2017-11-29 20:59:37 +13:00
Brenda Wallace 6aa689b0d8 Removed some model ordering specs 2017-11-29 20:59:37 +13:00
Brenda Wallace 962b3b574d Fixed up planting spec to not care about ordering 2017-11-29 20:59:37 +13:00
Brenda Wallace d77d1d9a77 spec for notifications needs to be agnostic about the order 2017-11-29 20:59:37 +13:00
Brenda Wallace 4bed6da422 Crop validation methods can be private 2017-11-29 20:59:37 +13:00
Brenda Wallace 023c870d49 Fix up crop.recent 2017-11-29 20:59:37 +13:00
Brenda Wallace 9aff65e956 Added ordering to finding first photo 2017-11-29 20:59:37 +13:00
Brenda Wallace 0446c0a405 Add ordering back into controller #index 2017-11-29 20:59:37 +13:00
Brenda Wallace 7719d1f896 Remote default ordering scopes, and clean up models 2017-11-29 20:59:37 +13:00
Brenda Wallace 17fd6f61a5 Added polymorphic relationship to photos 2017-11-29 20:14:27 +13:00
Brenda Wallace c9558e4d51 Merge branch 'master' into dev
Conflicts:
	Gemfile.lock
2017-11-29 10:46:08 +13:00
deppbot 8a679670e4 Bundle Update on 2017-11-29 2017-11-29 07:00:25 +13:00
pozorvlak a7586e9d2b Merge pull request #1448 from Br3nda/fix/1211
upgrade leaflet-rails
2017-11-27 20:42:22 +00:00
Shiny 811011419e Exit if we can't cd 2017-11-26 09:39:43 +13:00
Shiny dae3ea2789 removed some debug 2017-11-25 19:41:41 +13:00
Shiny 49aa6bb846 Update .travis.yml 2017-11-25 19:41:03 +13:00
Brenda Wallace c154a9b845 Upgraded leaflet maskercluster 2017-11-25 19:34:05 +13:00
Shiny ad14ecb41b Merge branch 'dev' into fix/1211 2017-11-25 17:03:23 +13:00
deppbot 08a73ce503 Bundle Update on 2017-11-24 2017-11-25 09:53:29 +13:00
Brenda Wallace 6663f3ade4 Add id and type back to photos#new 2017-11-24 19:02:54 +13:00
deppbot 451030761d Bundle Update on 2017-11-21 2017-11-24 19:02:54 +13:00
Brenda Wallace d4e4ca6519 Move planting's add photo button to _actions.haml 2017-11-24 19:02:54 +13:00
Brenda Wallace 284f0cddcd Fix gardens actions, and add specs
A bug slipped into all garden display pages - and there were no tests that caught it.
This adds feature specs for gardens#index, which would have detected the un-initialised
variable in haml
2017-11-24 19:02:54 +13:00
Logan Gingerich 4ced7ee7e9 Whitespace fix, spec fix, and spec addition 2017-11-24 19:02:54 +13:00
Logan Gingerich b60510e016 deleted line 70 on plantings view to clean up logic 2017-11-24 19:02:54 +13:00
Logan Gingerich e85daa405b Moved add photo button from garden show view to garden actions 2017-11-24 19:02:54 +13:00
Logan Gingerich 9ab83f7bbc Adds a more prominent add photo button to garden and planting show views 2017-11-24 19:02:54 +13:00
Brenda Wallace 329e0106bb Path remains same after sign out for our test cases 2017-11-24 19:02:54 +13:00
Brenda Wallace 4743fc7a63 Feature spec for showing item details on photo adding page 2017-11-24 19:02:54 +13:00
Brenda Wallace c66a5b12a5 Reduced the tests of signout on photos/new 2017-11-24 19:02:54 +13:00
Brenda Wallace f98bb32612 Shaved some yaks to remove a rescue from a controller 2017-11-24 19:02:54 +13:00
Brenda Wallace 771443ee85 Removed rescue in a controller 2017-11-24 19:02:54 +13:00
Brenda Wallace 1322ebd8e3 Use the ||= operator 2017-11-24 19:02:54 +13:00
Brenda Wallace 9e98db423e Tidy up photos logic, and test of signin/out on photos#new 2017-11-24 19:02:54 +13:00
Logan Gingerich 305702f644 Refactored and specs updated 2017-11-24 19:02:54 +13:00
Logan Gingerich 1f4f806bb0 Now displays correctly for planting, harvest or garden 2017-11-24 19:02:54 +13:00
Logan Gingerich 6a17ba547f fixes #1433 Says what item you're adding a photo to on photos#new 2017-11-24 19:02:54 +13:00
deppbot 3ffdc61428 Bundle Update on 2017-11-18 2017-11-24 19:02:54 +13:00
milesgould bb6e9e32e6 De-deprecate controller and view specs
We deprecated controller and view specs on the grounds that they were
brittle, and were a poorer measure of user experience than feature
specs. However, feature specs have their own problems: they're much
slower to run, and flakier (see #901). We also ran into a few cases
where feature specs erroneously passed because they were checking for
the presence of a string that occurred in the error page!

Hence, we're cautiously un-deprecating controller and view specs.

Fixes #1132
2017-11-24 19:02:54 +13:00
Brenda Wallace 229396d9e7 Add id and type back to photos#new 2017-11-22 22:06:41 +13:00
Daniel O'Connor 0fa02272b0 Merge pull request #1465 from Growstuff/bundle-update-2017-11-21-121132
Bundle Update on 2017-11-21
2017-11-22 16:36:46 +10:30
deppbot a91b8605c4 Bundle Update on 2017-11-21 2017-11-21 12:11:33 +08:00
pozorvlak f1107b518c Merge pull request #1460 from Br3nda/fix/gardens-index
Fix gardens actions, and add specs
2017-11-20 11:21:07 +00:00
Shiny 52d93a7ccd Merge branch 'dev' into fix/1211 2017-11-19 18:22:02 +13:00
Brenda Wallace d3df1e8f33 Move planting's add photo button to _actions.haml 2017-11-19 18:02:09 +13:00
Shiny eb77715b70 Merge branch 'dev' into fix/gardens-index 2017-11-19 16:35:56 +13:00
Shiny 252910694d Merge branch 'master' into dev 2017-11-19 16:34:58 +13:00
Brenda Wallace bd063be3a9 Fix gardens actions, and add specs
A bug slipped into all garden display pages - and there were no tests that caught it.
This adds feature specs for gardens#index, which would have detected the un-initialised
variable in haml
2017-11-19 16:31:17 +13:00
Shiny 9a6d827b6d Merge branch 'dev' into fix/1211 2017-11-19 11:14:09 +13:00
Logan Gingerich ede5187369 Whitespace fix, spec fix, and spec addition 2017-11-19 11:13:41 +13:00
Logan Gingerich 610a5b7a48 deleted line 70 on plantings view to clean up logic 2017-11-19 11:13:41 +13:00
Logan Gingerich 1fa71c1546 Moved add photo button from garden show view to garden actions 2017-11-19 11:13:41 +13:00
Logan Gingerich 7574eb554e Adds a more prominent add photo button to garden and planting show views 2017-11-19 11:13:41 +13:00
Shiny eea7e19ecf Merge branch 'dev' into fix/1211 2017-11-18 22:27:04 +13:00
Brenda Wallace dafaffcd73 Path remains same after sign out for our test cases 2017-11-18 22:25:58 +13:00
Brenda Wallace 3e149a5d1d Feature spec for showing item details on photo adding page 2017-11-18 22:25:58 +13:00
Brenda Wallace c20d9b78c5 Reduced the tests of signout on photos/new 2017-11-18 22:25:58 +13:00
Brenda Wallace 7906d50d13 Shaved some yaks to remove a rescue from a controller 2017-11-18 22:25:58 +13:00
Brenda Wallace faed8b019e Removed rescue in a controller 2017-11-18 22:25:58 +13:00
Brenda Wallace c8974a869f Use the ||= operator 2017-11-18 22:25:58 +13:00
Brenda Wallace 3969f410f1 Tidy up photos logic, and test of signin/out on photos#new 2017-11-18 22:25:58 +13:00
Logan Gingerich 6304f230a5 Refactored and specs updated 2017-11-18 22:25:58 +13:00
Logan Gingerich 73524b8883 Now displays correctly for planting, harvest or garden 2017-11-18 22:25:58 +13:00
Logan Gingerich fd9fc38def fixes #1433 Says what item you're adding a photo to on photos#new 2017-11-18 22:25:58 +13:00
deppbot 949c7c31d8 Bundle Update on 2017-11-18 2017-11-18 15:27:04 +13:00
pozorvlak e34dcd03bc Merge pull request #1454 from pozorvlak/dedeprecate_view_specs
De-deprecate controller and view specs
2017-11-17 17:05:07 +00:00
pozorvlak 929229379e Merge pull request #1455 from Growstuff/dev
Release 34
2017-11-17 16:55:01 +00:00
milesgould d8bf8ae4df De-deprecate controller and view specs
We deprecated controller and view specs on the grounds that they were
brittle, and were a poorer measure of user experience than feature
specs. However, feature specs have their own problems: they're much
slower to run, and flakier (see #901). We also ran into a few cases
where feature specs erroneously passed because they were checking for
the presence of a string that occurred in the error page!

Hence, we're cautiously un-deprecating controller and view specs.

Fixes #1132
2017-11-17 16:51:24 +00:00
pozorvlak ac0e52f15d Merge pull request #1412 from Br3nda/api
Basic read only api  - members, gardens, plantings, crops, photos, harvests, seeds
2017-11-17 16:44:41 +00:00
Shiny c7f427fe8a Merge branch 'dev' into api 2017-11-18 00:48:03 +13:00
Shiny 50fd9ae9b0 Merge branch 'master' into dev 2017-11-18 00:44:44 +13:00
Brenda Wallace efe39da878 Removed un-used method, to reduce class size 2017-11-18 00:43:17 +13:00
Brenda Wallace 1cd3c64590 Reducing class line count 2017-11-18 00:43:17 +13:00
Brenda Wallace b591529892 Reinstated test of first harvest prediction display 2017-11-18 00:43:17 +13:00
Brenda Wallace cef236d8f8 Reducing crop class size 2017-11-18 00:43:17 +13:00
Brenda Wallace 5ad0068142 Run existing crop specs with annual crop 2017-11-18 00:43:17 +13:00
Brenda Wallace b8a5ff9acf Don't show lifespan of perennials 2017-11-18 00:43:17 +13:00
deppbot 90653aa57f Bundle Update on 2017-11-15 2017-11-18 00:43:17 +13:00
Shiny 80a4739f34 Underscore prefix on our last unused args (#1442) 2017-11-18 00:43:17 +13:00
Brenda Wallace a6cc530fe5 Updating specs to use same owner for garden and planting 2017-11-18 00:43:17 +13:00
Brenda Wallace 97f19a0038 If a harvest has a planting, it must have the same owner 2017-11-18 00:43:17 +13:00
Brenda Wallace 140611d868 Get planting factory's owner from its garden 2017-11-18 00:43:17 +13:00
Brenda Wallace 3fa5ffc544 Planting's owner must be the same as its garden's owner 2017-11-18 00:43:17 +13:00
deppbot eeafb4caa5 Bundle Update on 2017-11-12 2017-11-18 00:43:17 +13:00
Brenda Wallace c747d46ab5 Request spec for seeds api 2017-11-17 23:22:10 +13:00
Brenda Wallace 3009ed2d83 Merge branch 'api' of github.com:Br3nda/growstuff into api 2017-11-17 23:16:16 +13:00
Shiny f68a15c04e Merge branch 'dev' into api 2017-11-17 22:02:12 +13:00
Brenda Wallace 06295fb9e9 Merge branch 'api' of github.com:Br3nda/growstuff into api 2017-11-17 22:02:06 +13:00
Brenda Wallace c4a1806a87 Request spec for photos api 2017-11-17 22:01:37 +13:00
Brenda Wallace fa5e151af0 Request spec for photos api 2017-11-17 22:00:32 +13:00
Brenda Wallace 13e8d1f5a5 Merge remote-tracking branch 'upstream/dev' into api 2017-11-17 21:51:39 +13:00
Brenda Wallace c1836cc78e Removed un-used method, to reduce class size 2017-11-17 21:50:59 +13:00
Brenda Wallace 28fdb6e1ed Reducing class line count 2017-11-17 21:50:59 +13:00
Brenda Wallace 67dec795a0 Reinstated test of first harvest prediction display 2017-11-17 21:50:59 +13:00
Brenda Wallace 86ea8eab39 Reducing crop class size 2017-11-17 21:50:59 +13:00
Brenda Wallace 8884056ff3 Run existing crop specs with annual crop 2017-11-17 21:50:59 +13:00
Brenda Wallace d01a5d7976 Don't show lifespan of perennials 2017-11-17 21:50:59 +13:00
pozorvlak 66c08650ba Merge pull request #1445 from Br3nda/feature/planting-garden-owner-match
planting owner needs to match garden owner
2017-11-15 17:49:00 +00:00
Shiny 521873b656 Merge branch 'dev' into feature/planting-garden-owner-match 2017-11-15 09:27:41 +13:00
Shiny 83fea92353 Merge branch 'dev' into fix/1211 2017-11-15 09:27:17 +13:00
deppbot 2060d9ab9e Bundle Update on 2017-11-15 2017-11-15 09:26:47 +13:00
Shiny 1795b27152 Merge branch 'dev' into feature/planting-garden-owner-match 2017-11-13 23:09:04 +13:00
Shiny 1317ce9db0 Merge branch 'dev' into fix/1211 2017-11-13 23:08:38 +13:00
Shiny 93193c9fba Merge branch 'dev' into api 2017-11-13 23:00:33 +13:00
Brenda Wallace e489831241 Debugging phantom on travis 2017-11-13 23:00:05 +13:00
Shiny df7a9448b0 Underscore prefix on our last unused args (#1442) 2017-11-13 09:54:55 +00:00
Brenda Wallace 3d4f5c6917 upgrade leaflet-rails 2017-11-13 21:49:00 +13:00
Brenda Wallace 1b4d77e017 Requests spec for member api 2017-11-13 20:03:39 +13:00
Brenda Wallace 08e7c7dd29 Request specs for harvests api 2017-11-13 19:19:18 +13:00
Brenda Wallace 5fec826c41 Add more attributes to crops 2017-11-13 19:19:18 +13:00
Brenda Wallace c29234c40c Request specs for crops api 2017-11-13 19:19:18 +13:00
Brenda Wallace 2f0cb5c815 DRY the api specs 2017-11-13 19:19:18 +13:00
Brenda Wallace b6cbfe25d2 Factory girl becomes factory bot 2017-11-13 19:19:18 +13:00
Brenda Wallace d8f5876518 Added predictions to planting api, and added specs 2017-11-13 19:19:18 +13:00
Brenda Wallace ae2cbf0bec requests spec for modifying immutable gardens on api 2017-11-13 19:19:18 +13:00
Brenda Wallace c9d5c42814 Plantings have many harvests 2017-11-13 19:19:18 +13:00
Brenda Wallace b60f47f502 Add more relationships to members on the api 2017-11-13 19:19:18 +13:00
Brenda Wallace d86e0af5ad Request for for getting api gardens#index 2017-11-13 19:19:18 +13:00
Brenda Wallace fc0058d677 all our api controllers inheriting from base 2017-11-13 19:19:18 +13:00
Brenda Wallace 41110f96d1 Put immutable on every resource 2017-11-13 19:19:18 +13:00
Brenda Wallace 33822abf93 crops have harvests 2017-11-13 19:19:18 +13:00
Brenda Wallace 5877da95a6 Added a base resource, a little more DRY 2017-11-13 19:19:18 +13:00
Brenda Wallace 88a119deac Add a default paginator for api responses 2017-11-13 19:19:18 +13:00
Brenda Wallace d07fd1a277 Added seeds and harvests to api, and tidied up resources 2017-11-13 19:19:18 +13:00
Brenda Wallace c96695258b Basic read only api 2017-11-13 19:19:18 +13:00
Brenda Wallace 2fbba52bc8 Updating specs to use same owner for garden and planting 2017-11-13 19:18:14 +13:00
Brenda Wallace a2ae429f6b If a harvest has a planting, it must have the same owner 2017-11-13 19:18:14 +13:00
Brenda Wallace 7ca76e69cf Get planting factory's owner from its garden 2017-11-13 19:18:14 +13:00
Brenda Wallace c6824b1262 Planting's owner must be the same as its garden's owner 2017-11-13 19:18:14 +13:00
Shiny 2a74c057f3 Merge branch 'master' into dev 2017-11-12 09:30:45 +13:00
deppbot 85cc9e77c6 Bundle Update on 2017-11-12 2017-11-12 09:29:21 +13:00
pozorvlak a0d6d154f0 Merge pull request #1439 from Growstuff/dev
Release 32
2017-11-10 16:25:42 +00:00
pozorvlak 7e9707e3b0 Merge pull request #1437 from Br3nda/feature/harvest-predictions
Feature/harvest predictions
2017-11-10 11:59:00 +00:00
Brenda Wallace 4fe0dba28e Merge remote-tracking branch 'upstream/dev' into feature/harvest-predictions 2017-11-09 18:30:18 +13:00
Shiny 328037b8c0 Merge branch 'master' into dev 2017-11-09 18:19:57 +13:00
Brenda Wallace e4ab5114f7 Remove duplicate setting of medians in migration 2017-11-09 17:51:18 +13:00
Brenda Wallace a5d43af899 Drop the plantings.days_before_maturity column
it's not used anywhere
2017-11-09 17:43:00 +13:00
Brenda Wallace 2d384c9851 Merge remote-tracking branch 'upstream/dev' into feature/harvest-predictions 2017-11-09 17:36:50 +13:00
Brenda Wallace 205247b136 Shorter condition in haml view (progress) 2017-11-09 17:36:37 +13:00
Brenda Wallace 963a182981 simplified logic in planting's first/last harvest fetcher 2017-11-09 17:36:33 +13:00
Daniel O'Connor 1090db6d21 Merge pull request #1438 from Growstuff/bundle-update-2017-11-08-201231
Bundle Update on 2017-11-08
2017-11-09 09:27:31 +11:00
deppbot f187b31653 Bundle Update on 2017-11-08 2017-11-08 20:12:32 +08:00
Brenda Wallace 809dd81378 "Changed last_harvest" to "days_to_last_harvest" 2017-11-08 17:17:58 +13:00
Brenda Wallace 62beec23a1 "Changed first_harvest" to "days_to_first_harvest" 2017-11-08 17:17:15 +13:00
Brenda Wallace a60a5ce591 Added a space, to please hound 2017-11-07 09:46:19 +13:00
Brenda Wallace 7206f99510 Updated spec to match new crop detail page text 2017-11-07 08:39:45 +13:00
Brenda Wallace bf6475da57 annual? perennial!=true 2017-11-06 23:15:08 +13:00
Brenda Wallace c5971cd46b A little bit of eager loading 2017-11-06 23:13:36 +13:00
Brenda Wallace 2f47eeb7b3 Bug fix. Can only predict if we have harvested_at and planted_at 2017-11-06 23:12:28 +13:00
Brenda Wallace 928749aaad Changed a "Pictures" header to "Photos" to be consistent 2017-11-06 23:11:39 +13:00
Brenda Wallace 1d64d4d1d2 Clearer message that predctions are for days after planting 2017-11-06 23:10:55 +13:00
Brenda Wallace 1e86cf7662 Update planting medians after updating record
So changes to the planted_at are re-calculated
2017-11-06 23:07:44 +13:00
Brenda Wallace 941dab7c4a Crop.annual? method 2017-11-06 23:00:16 +13:00
Brenda Wallace 2696d12771 Removed duplicate display of last harvest 2017-11-06 22:59:04 +13:00
Brenda Wallace 6bf87c243c Feature spec for crop predictions on crop#show 2017-11-06 22:38:48 +13:00
Brenda Wallace ec63d8086f Moved crop predictions to own haml file 2017-11-06 22:36:47 +13:00
Brenda Wallace 470aacd1c9 Fixed %w for an array of words 2017-11-06 09:11:27 +13:00
Brenda Wallace 9997c365d8 Update robocop todo - to reflect progress 2017-11-05 20:44:41 +13:00
Brenda Wallace eaa65fda9e update median_last_harvest too, with specs 2017-11-05 20:28:51 +13:00
Brenda Wallace e844eade94 Changed model validators message to please Hound 2017-11-05 20:09:21 +13:00
Brenda Wallace 35e7b6a5b4 Removed an ignore from rubocop 2017-11-05 19:55:00 +13:00
Brenda Wallace 6c33c335d8 Default ordering for harvests are gone, so order it in spec 2017-11-05 19:26:50 +13:00
Brenda Wallace 26537943e3 Removed pending spec 2017-11-05 18:00:49 +13:00
Brenda Wallace 136c082003 Smaller photos on crop page. Fits in the predictions data 2017-11-05 17:47:19 +13:00
Brenda Wallace b3fd8e32d0 Fixed ordering of Harvests - don't order in scope. 2017-11-05 17:42:59 +13:00
Brenda Wallace 9b1b22afa8 Bugfix and specs for first and last harvest 2017-11-05 17:33:58 +13:00
Brenda Wallace 996706ee78 Tests for planting lifespan predictions when there's no crop data 2017-11-05 17:29:42 +13:00
Brenda Wallace 9d11bcc039 Can't calculate first harvest if there are no harvests 2017-11-05 16:20:51 +13:00
Brenda Wallace b1684b0156 Set prediction data for existing planting and crops 2017-11-05 14:16:00 +13:00
Brenda Wallace ec00baef0d Updated feature spec to look for new annual/perennial text 2017-11-05 14:07:33 +13:00
Brenda Wallace eb585611fe Fixed spec to call update_lifespan_medians 2017-11-05 14:05:54 +13:00
Brenda Wallace 9280049a84 Merge remote-tracking branch 'upstream/dev' into feature/harvest-predictions 2017-11-05 13:45:08 +13:00
Brenda Wallace 53d7fd1479 Displaying predicted first harvest on plantings and crops 2017-11-05 13:43:00 +13:00
Brenda Wallace 4cc0f77bd0 Predicting first harvest - updating medians 2017-11-05 13:42:30 +13:00
Brenda Wallace 5e5773aa59 feature spec for displaying annual/perennial on crops#show 2017-11-05 12:52:02 +13:00
deppbot 2422939b4f Bundle Update on 2017-11-04 2017-11-04 20:10:52 +13:00
Brenda Wallace d5a1a683f1 Rubocop fix 2017-11-04 15:44:56 +13:00
Brenda Wallace f5bb47e4ca DRY plantings controller a bit more - update crop means in one place 2017-11-04 15:36:51 +13:00
Brenda Wallace 8359218294 Update crop medians after deletion of planting (not before) 2017-11-04 11:53:40 +13:00
Brenda Wallace 285e6edc61 crop -> sci_names needs dependent:destroy so we don't get orphans 2017-11-04 11:51:19 +13:00
Brenda Wallace f2fac9db1b Time.zone.local 2017-11-04 11:39:53 +13:00
Brenda Wallace cabc4fd030 %i-literals should be delimited by ( and ) 2017-11-04 10:29:31 +13:00
Brenda Wallace 20fe9e4cc5 Merge remote-tracking branch 'upstream/dev' into feature/harvest-predictions 2017-11-04 10:09:53 +13:00
pozorvlak fac24c5e99 Merge pull request #1423 from Growstuff/dev
Release 31
2017-11-03 08:32:35 +00:00
Logan Gingerich fa600bea9e changed spec to reflect factorybot change 2017-11-03 14:53:20 +13:00
Logan Gingerich 99e7fb1f7d Name added to contributors and spec added 2017-11-03 14:53:20 +13:00
Logan Gingerich 81e22d6fb2 fixes #1419 - Allows brackets in garden names 2017-11-03 14:53:20 +13:00
Logan Gingerich 10a8df47a9 Factorygirl to factorybot - fixes #1413 (#1425)
* FactoryGirl Changed to FactoryBot

file fix

changes based on comments received

Bundle Update on 2017-10-29

style update to align hash literal

added package-lock

* indentation fixes with rubocop

* name added to contributors
2017-11-01 15:03:31 +00:00
pozorvlak b0a4df629c Merge pull request #1429 from Br3nda/delimiters
Stop hound and codeclimate fighing over delimiter styles
2017-11-01 10:00:44 +00:00
Brenda Wallace 0b8357a261 Merge branch 'delimiters' into feature/harvest-predictions 2017-11-01 15:14:06 +13:00
Brenda Wallace 7104781d1b Rubocop array fix ups 2017-11-01 15:13:32 +13:00
Brenda Wallace 267f27b3f8 rubocop fix up 2017-11-01 14:48:42 +13:00
Brenda Wallace 31a37bf6dc No progress bar for perennials 2017-11-01 14:27:03 +13:00
Brenda Wallace d1951b8b65 Edit and show perennial plants 2017-11-01 14:22:39 +13:00
Brenda Wallace cd99769311 Wrapped a long line 2017-11-01 14:02:56 +13:00
Brenda Wallace 71cb3f8c5f Rubocop fixes 2017-11-01 13:57:49 +13:00
Brenda Wallace d540342acb removed the days_before_maturity specs because function no longer exists 2017-11-01 13:57:49 +13:00
Brenda Wallace f66b0768e2 Changed how db schema is loaded in travis 2017-11-01 13:57:49 +13:00
Brenda Wallace 251f44b0c7 Updated tests of progress bar 2017-11-01 13:57:49 +13:00
Brenda Wallace adf07ce5ef Planting feature specs passing 2017-11-01 13:57:49 +13:00
Brenda Wallace 54b204c636 fixed typo 2017-11-01 13:57:49 +13:00
Brenda Wallace ff446c2139 Updated spec, new message when not enough data to predict progress 2017-11-01 13:57:49 +13:00
Brenda Wallace 62d84d7af4 planting progress is 100% if finished 2017-11-01 13:57:49 +13:00
Brenda Wallace 92fa09a1d3 Mark harvest predictions as pending 2017-11-01 13:57:49 +13:00
Brenda Wallace b09c4aa7a1 Update display, to show predicted finish date 2017-11-01 13:57:49 +13:00
Brenda Wallace 692ab59285 Display expected finished date 2017-11-01 13:57:49 +13:00
Brenda Wallace 302bdba150 fixes search 2017-11-01 13:57:49 +13:00
Brenda Wallace aa3057056f rubocop fix up 2017-11-01 13:57:49 +13:00
Brenda Wallace 9ef40532ad removed old percentage grow specs 2017-11-01 13:57:49 +13:00
Brenda Wallace 70ba8c8421 Updating planting model specs, for predictions 2017-11-01 13:57:49 +13:00
Brenda Wallace 3b81affbe5 include child records when reading plantings from db 2017-11-01 13:57:49 +13:00
Brenda Wallace 9703d4e983 Remove harvest preductions for now 2017-11-01 13:57:49 +13:00
Brenda Wallace 22e1718ce6 Rubocop fix ups 2017-11-01 13:57:49 +13:00
Brenda Wallace b90b4e42fb Updated progress bar to use new predictions 2017-11-01 13:57:49 +13:00
Brenda Wallace 202f557e32 Delete the old predictions code 2017-11-01 13:57:49 +13:00
Brenda Wallace 8364c8c688 updated schema 2017-11-01 13:57:49 +13:00
Brenda Wallace 3a286cd240 Show median lifespan of a crop 2017-11-01 13:57:49 +13:00
Brenda Wallace 41dbf6fb1b Moved crop search out of crop model file 2017-11-01 13:57:49 +13:00
Brenda Wallace 47ecbe3f94 Call the predictions update on planting modifications from controller 2017-11-01 13:57:49 +13:00
Brenda Wallace 0f066ab302 Cleaning up models as adding predictions 2017-11-01 13:57:49 +13:00
Brenda Wallace 8e94ddb4bf Moved planting predictions to crop 2017-11-01 13:57:49 +13:00
Brenda Wallace a9cedc6a8a Add active median gem 2017-11-01 13:57:49 +13:00
Brenda Wallace 7d6c49d8c3 Set harvest preductions on plantings 2017-11-01 13:57:49 +13:00
Brenda Wallace 0d8ca89b14 harvested_at and harvest_predicted_at added to plantings 2017-11-01 13:57:49 +13:00
Brenda Wallace 82a37d69bc Ensure harvests are same crop, and after the planting was planted 2017-11-01 13:57:49 +13:00
Shiny 4533d35fe7 Merge branch 'dev' into delimiters 2017-11-01 13:27:26 +13:00
deppbot 4b445907d5 Bundle Update on 2017-11-01 2017-11-01 13:27:10 +13:00
Brenda Wallace fce6395d21 Stop hound and codeclimate fighing over delimiter styles 2017-11-01 13:21:42 +13:00
deppbot 2946dca5fc Bundle Update on 2017-10-29 2017-10-30 20:20:50 +13:00
Shiny 9eb6d84e5a Merge branch 'master' into dev 2017-10-28 10:43:34 +13:00
Brenda Wallace 96b4742e78 Dev is almost always on port 3000 2017-10-28 10:38:51 +13:00
pozorvlak 68c14a695e Merge pull request #1416 from Br3nda/feature/more-crop-photos
All crop photos
2017-10-27 12:57:43 +01:00
Brenda Wallace e42ec4f8ae Test crop photo display when not signed in 2017-10-27 23:43:23 +13:00
Brenda Wallace f7b75157e7 Feature spec for harvest photos 2017-10-27 23:34:37 +13:00
Brenda Wallace 7e27b6deef Merge branch 'feature/more-crop-photos' of github.com:Br3nda/growstuff into feature/more-crop-photos 2017-10-27 23:33:01 +13:00
Shiny cd69ea1487 Merge branch 'dev' into feature/more-crop-photos 2017-10-27 23:32:46 +13:00
Brenda Wallace 4cdcbdac19 Merge remote-tracking branch 'origin/feature/more-crop-photos' into feature/more-crop-photos 2017-10-26 20:32:55 +13:00
Brenda Wallace f3d03c00b2 Merge remote-tracking branch 'upstream/dev' into feature/more-crop-photos 2017-10-26 20:31:23 +13:00
deppbot d9aa9df7fe Bundle Update on 2017-10-26 2017-10-26 10:42:31 +13:00
pozorvlak 494dd1d658 Merge pull request #1411 from Growstuff/dev
Release 30
2017-10-25 08:16:42 +01:00
Shiny af60489459 Merge branch 'dev' into feature/more-crop-photos 2017-10-24 10:32:57 +13:00
Brenda Wallace a3a88c48de Randomise the crops on the homepage 2017-10-23 22:09:34 +01:00
Brenda Wallace f3e88f5aae Include harvest photos on crop page 2017-10-24 09:34:10 +13:00
Brenda Wallace 1e81dac699 All crop photos; crops-> photos route 2017-10-24 09:34:03 +13:00
Brenda Wallace 705240014a Link harvest thumbnails to harvests
to be consistent with the rest of the site
2017-10-23 11:07:27 +01:00
Brenda Wallace 78aa049502 Fixed comment model spec 2017-10-23 10:44:37 +01:00
Brenda Wallace 97c7277a73 fixed up ambigous regex and use of expect in specs 2017-10-23 10:44:37 +01:00
Brenda Wallace 0e0af44d9f post show specs, use expect syntax, and more tests for js injection 2017-10-23 10:44:37 +01:00
Brenda Wallace 45af8d5f4f Converting to expect syntax 2017-10-23 10:44:37 +01:00
deppbot a1ee822690 Bundle Update on 2017-10-22 2017-10-23 14:55:15 +13:00
Brenda Wallace b6e61eba7a Merge branch 'master' into dev-conflict-fix 2017-10-22 11:30:43 +13:00
Brenda Wallace b356d86931 Allow inline style on the progress bar width 2017-10-21 22:48:37 +01:00
Brenda Wallace 34f91c2189 Wrap garden overview buttons to right of photo on small screens 2017-10-21 22:48:37 +01:00
Brenda Wallace faf3f60e78 small screen gardens overview 2017-10-21 22:48:37 +01:00
Brenda Wallace e3113fd53d Re-work gardens#index to show planting progress 2017-10-21 22:48:37 +01:00
Brenda Wallace 68768c4d6a Fixed redirection after planting is deleted 2017-10-21 22:48:37 +01:00
pozorvlak da7fec5e0b Merge pull request #1405 from Br3nda/fix-1379
Display messages even when member is deleted
2017-10-20 16:10:51 +01:00
Brenda Wallace 191c8e4e9d Display messages even when member is deleted 2017-10-20 23:44:51 +13:00
deppbot edc763cd8c Bundle Update on 2017-10-19 2017-10-20 23:23:02 +13:00
Brenda Wallace fdfb116d92 Ignore one Style/ClassAndModuleChildren 2017-10-19 08:22:40 +13:00
Brenda Wallace 888e0669a0 Added hound config 2017-10-19 08:22:40 +13:00
Brenda Wallace d55e2b5466 Update heroku maintenance script
maintenance is just an attribute now
2017-10-19 08:22:40 +13:00
Brenda Wallace c28ae4fe83 Use ! to indicate the method changes class variables 2017-10-19 08:22:40 +13:00
Brenda Wallace 4b4669459e Fixed duplicated code in growstuff member link markdown 2017-10-19 08:22:40 +13:00
Brenda Wallace 77902ad300 Moved member look up to a method (less duplicate code) 2017-10-19 08:22:40 +13:00
Brenda Wallace f314fcd919 Fixed members link in growstuff markdown 2017-10-19 08:22:40 +13:00
Brenda Wallace 8171c12a5b Fixed links to crops in growstuff markdown 2017-10-19 08:22:40 +13:00
Brenda Wallace 08b6b46bfa Removed some rubocop todos 2017-10-19 08:22:40 +13:00
Brenda Wallace bf189092ea More simplification of growstuff markup 2017-10-19 08:22:40 +13:00
Brenda Wallace a539a47044 Reduced complexity of growstuff_markdown 2017-10-19 08:22:40 +13:00
Brenda Wallace e29ac8827a Another code style fixup 2017-10-19 08:22:40 +13:00
Brenda Wallace c5cee72ae5 Migrate to new heroku platform api - maintenance mode trigger 2017-10-19 08:22:40 +13:00
deppbot 5396550a8a Bundle Update on 2017-10-16 2017-10-19 08:22:40 +13:00
deppbot 76d2fb37b4 Bundle Update on 2017-09-28 2017-10-19 08:22:40 +13:00
deppbot a42676ef0a Bundle Update on 2017-09-25 2017-10-19 08:22:40 +13:00
Brenda Wallace 3f3fc6a4ca Only install elastic search in travis on the matix that tests elasticsearch 2017-10-19 08:22:40 +13:00
Brenda Wallace c710a8b1ef Outputs which version of elasticsearch we are running on travis 2017-10-19 08:22:40 +13:00
Brenda Wallace 6ada0c4f84 Install elastic search 2.4.0 when running on travis 2017-10-19 08:22:40 +13:00
Brenda Wallace 2e5a2455d6 Sleep before tests
as suggested here https://docs.travis-ci.com/user/database-setup/#ElasticSearch
2017-10-19 08:22:40 +13:00
Brenda Wallace d89d4cea39 Further gem updates 2017-10-19 08:22:40 +13:00
Brenda Wallace 01a82ac993 Use floats, so the percentage calc works 2017-10-19 08:22:40 +13:00
Brenda Wallace 68660b3c65 update from erubi to erubis gem broke stuff - rolling back 2017-10-19 08:22:40 +13:00
Brenda Wallace 67b4f3558e Set required executable to jshint linting 2017-10-19 08:22:40 +13:00
Brenda Wallace 63b973833f Don't need to create database if just running linters 2017-10-19 08:22:40 +13:00
Brenda Wallace 4b19f73eb8 Remove git guilt 2017-10-19 08:22:40 +13:00
Brenda Wallace 9b4d6044ef Specify the executable in the npm installed linters 2017-10-19 08:22:40 +13:00
Brenda Wallace 9c70ffe051 Specify the executable in the npm installed linters 2017-10-19 08:22:40 +13:00
Brenda Wallace e7a1d2345d Bundle update and change to platform-api instead of heroku 2017-10-19 08:22:40 +13:00
Brenda Wallace c7585f1931 Use string.start_with? instead of a regexp 2017-10-19 08:22:40 +13:00
Brenda Wallace 63b76d175d Changed regex to matches? to appease rubocop 2017-10-19 08:22:40 +13:00
Brenda Wallace 1d5d2cc704 Added xmlrpc gem to solve rake errors on travis 2017-10-19 08:22:40 +13:00
Brenda Wallace 9477b4f9c7 Bump ruby version to 2.4.1 2017-10-19 08:22:40 +13:00
deppbot a42a61abdd Bundle Update on 2017-08-03 2017-10-19 08:22:40 +13:00
pozorvlak 62eaa07862 Merge pull request #1401 from Br3nda/fix/codestyle
Another code style fixup
2017-10-18 10:52:38 +01:00
pozorvlak f26420c380 Merge branch 'dev' into fix/codestyle 2017-10-18 10:41:03 +01:00
pozorvlak 6de13b7327 Merge pull request #1402 from Br3nda/fix/heroku-deploys
Update heroku maintenance script - maintenance is just an attribute now
2017-10-18 10:34:33 +01:00
Brenda Wallace 310f631f40 Ignore one Style/ClassAndModuleChildren 2017-10-18 20:45:27 +13:00
Brenda Wallace bec59aba43 Merge remote-tracking branch 'origin/fix/codestyle' into fix/codestyle 2017-10-18 19:27:36 +13:00
Brenda Wallace c86902967d Merge remote-tracking branch 'upstream/dev' into fix/codestyle 2017-10-18 19:27:08 +13:00
Brenda Wallace 361e3df692 Added hound config 2017-10-18 19:26:36 +13:00
Shiny ce18bef892 Merge branch 'dev' into fix/codestyle 2017-10-18 14:01:57 +13:00
Shiny ac2b0d04ea Merge branch 'dev' into fix/heroku-deploys 2017-10-18 13:40:52 +13:00
Brenda Wallace 9d0b48b84c Update heroku maintenance script
maintenance is just an attribute now
2017-10-18 13:37:54 +13:00
Brenda Wallace d8f41b5ca0 Use ! to indicate the method changes class variables 2017-10-18 12:20:28 +13:00
Brenda Wallace b5fbfaf515 Fixed duplicated code in growstuff member link markdown 2017-10-18 12:13:05 +13:00
Brenda Wallace ce9a71cdad Moved member look up to a method (less duplicate code) 2017-10-18 12:10:59 +13:00
Brenda Wallace 42a10bcd80 Fixed members link in growstuff markdown 2017-10-18 12:10:04 +13:00
Brenda Wallace 33656a4104 Fixed links to crops in growstuff markdown 2017-10-18 12:05:22 +13:00
pozorvlak ca200c1f30 Merge pull request #1400 from Br3nda/fix/heroku-deploys
Migrate to new heroku platform api - maintenance mode trigger
2017-10-17 14:52:16 +01:00
Brenda Wallace ccd352d699 Removed some rubocop todos 2017-10-17 22:33:22 +13:00
Brenda Wallace bd396dabfe More simplification of growstuff markup 2017-10-17 22:29:02 +13:00
Brenda Wallace 1279dd63bc Reduced complexity of growstuff_markdown 2017-10-17 22:20:17 +13:00
Brenda Wallace 8d681dd90a Another code style fixup 2017-10-17 17:29:48 +13:00
Brenda Wallace dfd0e1dbf5 Migrate to new heroku platform api - maintenance mode trigger 2017-10-17 16:23:12 +13:00
deppbot 0d555542c2 Bundle Update on 2017-10-16 2017-10-16 18:46:50 +13:00
deppbot 99a69cd492 Bundle Update on 2017-09-28 2017-10-16 14:52:16 +13:00
deppbot e8e9aa23b2 Bundle Update on 2017-09-25 2017-09-25 09:34:12 +13:00
pozorvlak 2fafc6f3e4 Merge pull request #1391 from Br3nda/feature/bundle-update-and-heroku-api-change
Bundle update and change to platform-api instead of heroku
2017-09-24 14:59:44 +01:00
Brenda Wallace 6b1714eb05 Only install elastic search in travis on the matix that tests elasticsearch 2017-09-24 18:50:23 +13:00
Brenda Wallace 8e5c52e85e Outputs which version of elasticsearch we are running on travis 2017-09-24 18:40:50 +13:00
Brenda Wallace c749f4a813 Install elastic search 2.4.0 when running on travis 2017-09-24 18:35:39 +13:00
Brenda Wallace 5ed5f9ec7e Sleep before tests
as suggested here https://docs.travis-ci.com/user/database-setup/#ElasticSearch
2017-09-24 15:17:39 +13:00
Brenda Wallace f4658df208 Further gem updates 2017-09-24 14:28:51 +13:00
Brenda Wallace e21b95a353 Use floats, so the percentage calc works 2017-09-13 22:21:15 +12:00
Brenda Wallace 19205cb6a8 update from erubi to erubis gem broke stuff - rolling back 2017-09-13 22:08:21 +12:00
Brenda Wallace 17521cde17 Set required executable to jshint linting 2017-09-13 22:01:33 +12:00
Brenda Wallace 5f7d48c633 Don't need to create database if just running linters 2017-09-05 14:30:03 +12:00
Brenda Wallace 94bb3bf6bb Remove git guilt 2017-09-05 14:22:52 +12:00
Brenda Wallace c9aacd0110 Specify the executable in the npm installed linters 2017-09-05 14:20:28 +12:00
Brenda Wallace ca5f14bb37 Specify the executable in the npm installed linters 2017-09-05 14:19:24 +12:00
Brenda Wallace 43da004ccb Bundle update and change to platform-api instead of heroku 2017-09-05 13:58:56 +12:00
Cesy 2704fcf515 Merge pull request #1387 from Br3nda/ruby-2-4-1
Bump ruby version to 2.4.1
2017-09-04 11:21:40 +01:00
Shiny 1af19335d7 Merge branch 'dev' into ruby-2-4-1 2017-09-01 13:00:46 +12:00
Shiny 4d33c32866 Merge branch 'master' into dev 2017-09-01 12:20:15 +12:00
Brenda Wallace 01333bf965 Use string.start_with? instead of a regexp 2017-09-01 12:11:57 +12:00
Brenda Wallace a145abff56 Changed regex to matches? to appease rubocop 2017-08-31 21:27:22 +12:00
Brenda Wallace 9732553d3b Added xmlrpc gem to solve rake errors on travis 2017-08-31 21:04:55 +12:00
Brenda Wallace 9142613b6b Bump ruby version to 2.4.1 2017-08-22 13:49:43 +12:00
Cesy 7132c95b61 Merge pull request #1382 from Growstuff/bundle-update-2017-08-03-163455
Bundle Update on 2017-08-03
2017-08-21 09:40:49 +01:00
Shiny 8f76ccf836 Merge branch 'dev' into bundle-update-2017-08-03-163455 2017-08-20 17:21:38 +12:00
deppbot 58e6411bbe Bundle Update on 2017-08-03 2017-08-03 16:34:56 +08:00
519 changed files with 7763 additions and 9422 deletions

No files matched your search

+1
View File
@@ -42,3 +42,4 @@ exclude_paths:
- spec/
- public/
- app/assets/stylesheets/bootstrap-accessibility.css
- app/assets/javascripts/bootstrap*
+1
View File
@@ -0,0 +1 @@
app/assets/javascripts/bootstrap-accessibility.min.js
+11
View File
@@ -0,0 +1,11 @@
{
"extends": "google",
"env": {
"browser": true,
"node": true
},
"rules": {
"no-var": "off",
"max-len": ["error", { "code": 120, "tabWidth": 4 }]
}
}
+13
View File
@@ -0,0 +1,13 @@
---
fail_on_violations: true
ruby:
config_file: .rubocop.yml
haml:
config_file: .haml-lint.yml
scss:
config_file: .scss-lint.yml
eslint:
config_file: .eslintrc
ignore_file: .esignore
jshint:
enabled: false
+8 -11
View File
@@ -31,6 +31,7 @@ PreCommit:
enabled: true
on_fail: warn
command: ['npm', 'run', 'coffeelint']
required_executable: 'npm'
HardTabs:
enabled: true
AuthorEmail:
@@ -42,24 +43,25 @@ PreCommit:
exclude:
- '**/bootstrap.min.css'
command: ['npm', 'run', 'csslint']
required_executable: 'npm'
HamlLint:
enabled: true
command: ['bundle', 'exec', 'haml-lint', 'app/views']
include:
- 'app/views/**'
command: ['bundle', 'exec', 'haml-lint']
JsonSyntax:
enabled: true
BundleOutdated:
enabled: true
on_warn: warn
BundleAudit:
enabled: true
on_warn: warn
JsHint:
EsLint:
enabled: true
exclude:
- 'app/assets/**'
- 'spec/javascripts/support/vendor/**'
- '**/bootstrap*'
command: ['npm', 'run', 'jshint']
command: ['./node_modules/.bin/eslint']
required_executable: 'npm'
ScssLint:
enabled: true
RailsSchemaUpToDate:
@@ -69,11 +71,6 @@ PreCommit:
YamlLint:
enabled: true
PostCommit:
GitGuilt:
enabled: true
command: ['npm', 'run', 'git-guilt']
PostCheckout:
ALL:
quiet: false
+15 -7
View File
@@ -7,32 +7,40 @@ AllCops:
Exclude:
- 'db/schema.rb'
- 'vendor/**/*'
TargetRailsVersion: 4.0
Rails:
Enabled: true
Style/FileName:
Exclude:
- 'Guardfile'
- 'Gemfile'
- 'Gemfile.lock'
Style/StringLiterals:
Enabled: false
Style/MultilineMethodCallIndentation:
# Stop hound and codeclimate fighting
Style/PercentLiteralDelimiters:
PreferredDelimiters:
default: ()
'%i': ()
'%w': ()
Layout/MultilineMethodCallIndentation:
EnforcedStyle: indented
# Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
# SupportedStyles: with_first_parameter, with_fixed_indentation
Style/AlignParameters:
Layout/AlignParameters:
EnforcedStyle: with_fixed_indentation
Metrics/LineLength:
Max: 120
# See https://github.com/bbatsov/rubocop/issues/3629
Rails/HttpPositionalArguments:
# turn these back on in Rails 5
Rails/HttpPositionalArguments: # See https://github.com/bbatsov/rubocop/issues/3629
Enabled: false
Style/Documentation:
@@ -58,9 +66,9 @@ Metrics/BlockLength:
Metrics/MethodLength:
Max: 34
Metrics/AbcSize:
Max: 32
Max: 31
Metrics/ClassLength:
Max: 207
Max: 179
Metrics/CyclomaticComplexity:
Max: 11
Metrics/PerceivedComplexity:
+1 -177
View File
@@ -1,35 +1,15 @@
# This configuration was generated by
# `rubocop --auto-gen-config --no-offense-counts`
# on 2017-05-28 10:57:55 +1200 using RuboCop version 0.47.1.
# on 2018-02-05 14:37:22 +1300 using RuboCop version 0.49.1.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.
Lint/AmbiguousRegexpLiteral:
Exclude:
- 'spec/controllers/admin/orders_controller_spec.rb'
- 'spec/controllers/orders_controller_spec.rb'
- 'spec/features/cms_spec.rb'
- 'spec/lib/haml/filters/escaped_markdown_spec.rb'
- 'spec/lib/haml/filters/growstuff_markdown_spec.rb'
- 'spec/models/comment_spec.rb'
- 'spec/models/planting_spec.rb'
- 'spec/views/members/show.rss.haml_spec.rb'
- 'spec/views/posts/show.html.haml_spec.rb'
Lint/HandleExceptions:
Exclude:
- 'lib/tasks/testing.rake'
# Cop supports --auto-correct.
# Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments.
Lint/UnusedBlockArgument:
Exclude:
- 'app/controllers/sessions_controller.rb'
- 'config/unicorn.rb'
- 'lib/haml/filters/growstuff_markdown.rb'
# Cop supports --auto-correct.
# Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods.
Lint/UnusedMethodArgument:
@@ -38,12 +18,6 @@ Lint/UnusedMethodArgument:
- 'app/controllers/passwords_controller.rb'
- 'app/controllers/registrations_controller.rb'
- 'app/validators/approved_validator.rb'
- 'spec/views/plantings/show.html.haml_spec.rb'
# Cop supports --auto-correct.
Performance/StringReplacement:
Exclude:
- 'spec/rails_helper.rb'
Rails/FilePath:
Exclude:
@@ -65,11 +39,9 @@ Rails/SkipsModelValidations:
# SupportedStyles: strict, flexible
Rails/TimeZone:
Exclude:
- 'spec/controllers/accounts_controller_spec.rb'
- 'spec/factories/member.rb'
- 'spec/factories/post.rb'
- 'spec/models/post_spec.rb'
- 'spec/views/plantings/index.html.haml_spec.rb'
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
@@ -83,126 +55,22 @@ Style/AsciiComments:
Exclude:
- 'config/initializers/comfortable_mexican_sofa.rb'
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: percent_q, bare_percent
Style/BarePercentLiterals:
Exclude:
- 'app/helpers/auto_suggest_helper.rb'
- 'spec/support/feature_helpers.rb'
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, ProceduralMethods, FunctionalMethods, IgnoredMethods.
# SupportedStyles: line_count_based, semantic, braces_for_chaining
# ProceduralMethods: benchmark, bm, bmbm, create, each_with_object, measure, new, realtime, tap, with_object
# FunctionalMethods: let, let!, subject, watch
# IgnoredMethods: lambda, proc, it
Style/BlockDelimiters:
Exclude:
- 'spec/controllers/order_items_controller_spec.rb'
- 'spec/features/notifications_spec.rb'
- 'spec/models/ability_spec.rb'
- 'spec/models/comment_spec.rb'
- 'spec/models/follow_spec.rb'
- 'spec/models/member_spec.rb'
- 'spec/models/post_spec.rb'
- 'spec/views/crops/edit.html.haml_spec.rb'
# Cop supports --auto-correct.
Style/BlockEndNewline:
Exclude:
- 'spec/models/ability_spec.rb'
- 'spec/models/member_spec.rb'
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: nested, compact
Style/ClassAndModuleChildren:
Exclude:
- 'app/controllers/admin/orders_controller.rb'
- 'lib/actions/oauth_signup_action.rb'
- 'lib/haml/filters/escaped_markdown.rb'
- 'lib/haml/filters/growstuff_markdown.rb'
# Cop supports --auto-correct.
Style/ColonMethodCall:
Exclude:
- 'spec/lib/haml/filters/escaped_markdown_spec.rb'
- 'spec/lib/haml/filters/growstuff_markdown_spec.rb'
# Cop supports --auto-correct.
Style/EachForSimpleLoop:
Exclude:
- 'spec/models/crop_spec.rb'
- 'spec/views/home/_crops.html.haml_spec.rb'
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: compact, expanded
Style/EmptyMethod:
Exclude:
- 'app/controllers/roles_controller.rb'
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: format, sprintf, percent
Style/FormatString:
Exclude:
- 'app/helpers/application_helper.rb'
- 'spec/helpers/application_helper_spec.rb'
- 'spec/views/shop/index_spec.rb'
Style/IdenticalConditionalBranches:
Exclude:
- 'app/controllers/follows_controller.rb'
# Cop supports --auto-correct.
# Configuration parameters: MaxLineLength.
Style/IfUnlessModifier:
Exclude:
- 'app/helpers/crops_helper.rb'
- 'app/models/planting.rb'
- 'config/initializers/geocoder.rb'
- 'lib/tasks/growstuff.rake'
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: line_count_dependent, lambda, literal
Style/Lambda:
Exclude:
- 'spec/controllers/member_controller_spec.rb'
- 'spec/models/photo_spec.rb'
# Cop supports --auto-correct.
Style/MultilineIfModifier:
Exclude:
- 'spec/rails_helper.rb'
Style/MultilineTernaryOperator:
Exclude:
- 'app/controllers/notifications_controller.rb'
- 'app/controllers/order_items_controller.rb'
# Cop supports --auto-correct.
Style/MutableConstant:
Exclude:
- 'app/models/planting.rb'
# Cop supports --auto-correct.
Style/NegatedIf:
Exclude:
- 'app/helpers/crops_helper.rb'
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles.
# SupportedStyles: skip_modifier_ifs, always
Style/Next:
Exclude:
- 'lib/tasks/growstuff.rake'
# Cop supports --auto-correct.
Style/NilComparison:
Exclude:
- 'lib/tasks/growstuff.rake'
# Cop supports --auto-correct.
# Configuration parameters: AutoCorrect, EnforcedStyle, SupportedStyles.
# SupportedStyles: predicate, comparison
@@ -213,24 +81,6 @@ Style/NumericPredicate:
- 'app/helpers/plantings_helper.rb'
- 'lib/tasks/growstuff.rake'
# Cop supports --auto-correct.
Style/ParallelAssignment:
Exclude:
- 'app/mailers/notifier.rb'
# Cop supports --auto-correct.
# Configuration parameters: PreferredDelimiters.
Style/PercentLiteralDelimiters:
Exclude:
- 'app/helpers/auto_suggest_helper.rb'
- 'spec/features/signin_spec.rb'
- 'spec/features/signout_spec.rb'
# Cop supports --auto-correct.
Style/PerlBackrefs:
Exclude:
- 'lib/haml/filters/growstuff_markdown.rb'
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, AllowInnerSlashes.
# SupportedStyles: slashes, percent_r, mixed
@@ -241,29 +91,3 @@ Style/RegexpLiteral:
- 'spec/views/devise/registrations/edit_spec.rb'
- 'spec/views/members/index.html.haml_spec.rb'
- 'spec/views/posts/index.html.haml_spec.rb'
- 'spec/views/posts/show.html.haml_spec.rb'
# Cop supports --auto-correct.
# Configuration parameters: SupportedStyles.
# SupportedStyles: use_perl_names, use_english_names
Style/SpecialGlobalVars:
EnforcedStyle: use_perl_names
# Cop supports --auto-correct.
# Configuration parameters: IgnoredMethods.
# IgnoredMethods: respond_to, define_method
Style/SymbolProc:
Exclude:
- 'lib/tasks/growstuff.rake'
# Cop supports --auto-correct.
Style/UnlessElse:
Exclude:
- 'app/controllers/omniauth_callbacks_controller.rb'
# Cop supports --auto-correct.
# Configuration parameters: SupportedStyles, WordRegex.
# SupportedStyles: percent, brackets
Style/WordArray:
EnforcedStyle: percent
MinSize: 5
+1 -1
View File
@@ -1 +1 @@
2.3.4
2.4.1
+21 -20
View File
@@ -1,4 +1,4 @@
sudo: false
sudo: required
language: ruby
cache:
bundler: true
@@ -7,42 +7,41 @@ cache:
- tmp/cache/assets/test/sprockets
env:
matrix:
- GROWSTUFF_ELASTICSEARCH='true' RSPEC_TAG=elasticsearch STATIC_CHECKS=false
- GROWSTUFF_ELASTICSEARCH='false' RSPEC_TAG=~elasticsearch STATIC_CHECKS=false
- GROWSTUFF_ELASTICSEARCH=true RSPEC_TAG=elasticsearch COVERAGE=true
- GROWSTUFF_ELASTICSEARCH=false RSPEC_TAG=~elasticsearch COVERAGE=false
- STATIC_CHECKS=true
global:
- secure: "Z5TpM2jEX4UCvNePnk/LwltQX48U2u9BRc+Iypr1x9QW2o228QJhPIOH39a8RMUrepGnkQIq9q3ZRUn98RfrJz1yThtlNFL3NmzdQ57gKgjGwfpa0e4Dwj/ZJqV2D84tDGjvdVYLP7zzaYZxQcwk/cgNpzKf/jq97HLNP7CYuf4="
- GROWSTUFF_SITE_NAME="Growstuff (travis)"
- RAILS_SECRET_TOKEN='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
- secure: "Z5TpM2jEX4UCvNePnk/LwltQX48U2u9BRc+Iypr1x9QW2o228QJhPIOH39a8RMUrepGnkQIq9q3ZRUn98RfrJz1yThtlNFL3NmzdQ57gKgjGwfpa0e4Dwj/ZJqV2D84tDGjvdVYLP7zzaYZxQcwk/cgNpzKf/jq97HLNP7CYuf4="
rvm:
- 2.3.4
before_install:
- ./script/install_phantomjs;
- ./script/install_phantomjs.sh
- export PATH=$PWD/travis_phantomjs/phantomjs-2.1.1-linux-x86_64/bin:$PATH
- ./script/install_codeclimate.sh
- ./script/install_linters.sh
- VERSION="6.2.3" ./script/install_elasticsearch.sh
before_script:
- bundle exec rake db:create db:migrate db:test:prepare
- set -e
- >
if [ "${STATIC_CHECKS}" = "true" ]; then
./script/install_linters;
else
bundle exec rake assets:precompile;
if [ "${COVERAGE}" = "true" ]; then
./cc-test-reporter before-build
fi
- set +e
script:
- set -e
- >
if [ "${STATIC_CHECKS}" = "true" ]; then
./script/check_static.rb
else
bundle exec rake db:migrate --trace;
set +e;
RAILS_ENV=test bundle exec rake db:create db:migrate search:create;
bundle exec rake assets:precompile;
bundle exec rspec --tag $RSPEC_TAG spec/;
bundle exec rake jasmine:ci;
fi;
- set +e
services:
- elasticsearch
after_script:
- >
if [ "${COVERAGE}" = "true" ]; then
./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT;
fi
before_deploy:
- bundle exec script/heroku_maintenance.rb on
deploy:
@@ -51,6 +50,7 @@ deploy:
secure: "WrQxf0fEKkCdXrjcejurobOnNNz3he4dDwjBbToXbQTQNDObPp7NetJrLsfM8FiUFEeOuvhIHHiDQtMvY720zGGAGxDptvgFS+0QHCUqoTRZA/yFfUmHlG2jROXTzk5uVK0AE4k6Ion5kX8+mM0EnMT/7u+MTFiukrJctSiEXfg="
on:
repo: Growstuff/growstuff
condition: "$RSPEC_TAG = elasticsearch"
app:
dev: growstuff-staging
master: growstuff-prod
@@ -64,4 +64,5 @@ after_deploy:
- bundle exec script/heroku_maintenance.rb off
addons:
code_climate:
repo_token: 462e015bbdaabfb20910fc07f2fea253410ecb131444e00f97dbf32dc6789ca6
repo_token:
secure: "PfhLGBKRgNqhKuYCJsK+VPhdAzcgWFGeeOyxC/eS8gtlvIISVdgyZE+r30uIei0DFI6zEiN62eW4d+xtT4j7/e2ZcAcx7U52mza/SnQNuu3nCGQDJB8VOvV5NbnwXfi8vfr4e889Mt7k3ocd2c4gqB4UtRqrzhygj7HN+B/GfEk="
+11 -4
View File
@@ -8,14 +8,15 @@ submit the change with your pull request.
## Committers
- Alex Bayley / [Skud](https://github.com/Skud)
- Cesy / [cesy](https://github.com/cesy)
- Miles Gould / [pozorvlak](https://github.com/pozorvlak)
- Taylor Griffin / [tygriffin](https://github.com/tygriffin)
- Mackenzie Morgan / [maco](https://github.com/maco)
- Brenda Wallace / [br3nda](https://github.com/br3nda)
## Contributors
- Alex Bayley / [Skud](https://github.com/Skud)
- Taylor Griffin / [tygriffin](https://github.com/tygriffin)
- Joseph Caudle / [jcaudle](https://github.com/jcaudle)
- Ricky Amianym / [amianym](https://github.com/amianym)
- Juliet Kemp / [julietk](https://github.com/julietk)
@@ -73,7 +74,6 @@ submit the change with your pull request.
- Lucas Nogueira / [lucasnogueira](https://github.com/lucasnogueira)
- Charley Lewittes / [ctlewitt](https://github.com/ctlewitt)
- Kristine Nicole Polvoriza / [polveenomials](https://github.com/polveenomials)
- Brenda Wallace / [br3nda](https://github.com/br3nda)
- Jim Stallings / [jestallin](https://github.com/jestallin)
- Alyssa Ransbury / [alran](https://github.com/alran)
- Thomas Countz / [thomascountz](https://github.com/thomascountz)
@@ -81,7 +81,14 @@ submit the change with your pull request.
- Arun Kumar / [arun1595](https://github.com/arun1595)
- Harry Brodsky / [hbrodsk1](https://github.com/hbrodsk1)
- Jeff Kingswood / [ancyentmariner](https://github.com/ancyentmariner)
- Logan Gingerich / [logangingerich](https://github.com/logangingerich)
- Mark Taffman / [mftaff](https://github.com/mftaff)
- Jennifer Kruse / [jenkr55](https://github.com/jenkr55)
- Christopher Bazin / [RobotScissors](https://github.com/robotscissors)
## Bots
- Security and Dependency Updates / [deppbot](https://github.com/deppbot)
### Security and Dependency Updates
- DeppBot / [deppbot](https://github.com/deppbot)
- dependabot[bot] / [dependabot-bot](https://github.com/dependabot-bot)
- dependabot / [dependabot](https://github.com/dependabot)
+27 -16
View File
@@ -1,7 +1,8 @@
# frozen_string_literal: true
source 'https://rubygems.org'
ruby '2.3.4'
ruby '2.4.1'
gem 'rails', '~> 4.2.8'
@@ -11,12 +12,18 @@ gem 'coffee-rails'
gem 'haml'
gem 'sass-rails'
# API data
gem 'jsonapi-resources'
# CSS framework
gem 'bootstrap-sass'
gem 'font-awesome-sass'
gem 'uglifier' # JavaScript compressor
# planting and harvest predictions
gem 'active_median'
gem 'flickraw'
gem 'jquery-rails'
gem 'jquery-ui-rails', '~> 5.0.2' # needs careful upgrade with change of location
@@ -26,9 +33,12 @@ gem 'cancancan' # for checking member privileges
gem 'csv_shaper' # CSV export
gem 'figaro' # for handling config via ENV variables
gem 'gibbon', '~>1.2.0' # for Mailchimp newsletter subscriptions
gem 'leaflet-markercluster-rails'
gem 'leaflet-rails', '~> 0.7.7' # Newer versions break tests - see https://travis-ci.org/CloCkWeRX/growstuff/builds/200984350
gem 'pg'
# Maps
gem 'leaflet-rails'
gem 'rails-assets-leaflet.markercluster', source: 'https://rails-assets.org'
gem 'pg', '< 1.0.0' # Upstream bug, see https://github.com/Growstuff/growstuff/pull/1539
gem 'ruby-units' # for unit conversion
gem 'unicorn' # http server
@@ -37,7 +47,6 @@ gem 'comfortable_mexican_sofa' # content management system
gem 'bootstrap-kaminari-views' # bootstrap views for kaminari
gem 'kaminari' # pagination
gem 'activemerchant'
gem 'active_utils'
gem 'sidekiq'
@@ -68,8 +77,7 @@ gem 'omniauth-facebook'
gem 'omniauth-flickr', '>= 0.0.15'
gem 'omniauth-twitter'
# For charting data
gem 'd3-rails', '~> 3.5' # 4.* produces Error: <spyOn> : could not find an object to spy upon for linear() - see https://travis-ci.org/Growstuff/growstuff/jobs/204461482
gem "chartkick"
# client for Elasticsearch. Elasticsearch is a flexible
# and powerful, distributed, real-time search and analytics engine.
@@ -78,9 +86,9 @@ gem 'd3-rails', '~> 3.5' # 4.* produces Error: <spyOn> : could not find an objec
# Project does not use semver, so we want to be in sync with the version of
# elasticsearch we use
# See https://github.com/elastic/elasticsearch-ruby#compatibility
gem "elasticsearch-api", "~> 2.0.0"
gem "elasticsearch-model"
gem "elasticsearch-rails"
gem "elasticsearch-api", ">= 6.0.0"
gem "elasticsearch-model", ">= 6.0.0"
gem "elasticsearch-rails", ">= 6.0.0"
gem "hashie", ">= 3.5.3"
gem 'rake', '>= 10.0.0'
@@ -91,6 +99,8 @@ gem "responders"
# allows soft delete. Used for members.
gem 'acts_as_paranoid', '~> 0.5.0'
gem 'xmlrpc' # fixes rake error - can be removed if not needed later
group :production, :staging do
gem 'bonsai-elasticsearch-rails' # Integration with Bonsa-Elasticsearch on heroku
gem 'dalli'
@@ -104,7 +114,7 @@ group :development do
# A debugger and irb alternative. Pry doesn't play nice
# with unicorn, so start a Webrick server when debugging
# with Pry
gem 'better_errors'
gem 'better_errors', '~> 2.2.0'
gem 'binding_of_caller'
gem 'guard'
gem 'guard-rspec'
@@ -114,7 +124,6 @@ group :development do
end
group :development, :test do
gem "active_merchant-paypal-bogus-gateway"
gem 'bullet' # performance tuning by finding unnecesary queries
gem 'byebug' # debugging
gem 'capybara' # integration tests
@@ -122,17 +131,17 @@ group :development, :test do
gem 'capybara-screenshot' # for test debugging
gem 'coveralls', require: false # coverage analysis
gem 'database_cleaner'
gem 'factory_girl_rails' # for creating test data
gem 'factory_bot_rails' # for creating test data
gem 'faker'
gem 'haml-i18n-extractor'
gem 'haml-rails' # HTML templating language
gem 'haml_lint' # Checks haml files for goodness
gem 'i18n-tasks' # adds tests for finding missing and unused translations
gem 'jasmine' # javascript unit testing
gem 'poltergeist' # for headless JS testing
gem 'rainbow', '< 2.2.0' # See https://github.com/sickill/rainbow/issues/44
gem 'rspec-activemodel-mocks'
gem 'rspec-rails' # unit testing framework
gem 'rubocop', '<= 0.47.1', require: false # Pin to rubocop (0.47.1) as 0.48.0 is buggy
gem 'rubocop'
gem 'selenium-webdriver'
gem 'webrat' # provides HTML matchers for view tests
end
@@ -143,5 +152,7 @@ group :test do
end
group :travis do
gem 'heroku-api'
gem 'platform-api'
end
gem 'loofah', '>= 2.2.1'
gem 'rack-protection', '>= 2.0.1'
+230 -221
View File
@@ -1,49 +1,45 @@
GEM
remote: https://rubygems.org/
remote: https://rails-assets.org/
specs:
actionmailer (4.2.9)
actionpack (= 4.2.9)
actionview (= 4.2.9)
activejob (= 4.2.9)
actionmailer (4.2.10)
actionpack (= 4.2.10)
actionview (= 4.2.10)
activejob (= 4.2.10)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5)
actionpack (4.2.9)
actionview (= 4.2.9)
activesupport (= 4.2.9)
actionpack (4.2.10)
actionview (= 4.2.10)
activesupport (= 4.2.10)
rack (~> 1.6)
rack-test (~> 0.6.2)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (4.2.9)
activesupport (= 4.2.9)
actionview (4.2.10)
activesupport (= 4.2.10)
builder (~> 3.1)
erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
active_link_to (1.0.4)
active_link_to (1.0.5)
actionpack
addressable
active_merchant-paypal-bogus-gateway (0.1.0)
activemerchant
active_utils (3.3.7)
activesupport (>= 3.2, < 5.2.0)
active_median (0.1.4)
activerecord
active_utils (3.3.12)
activesupport (>= 3.2, < 6.0)
i18n
activejob (4.2.9)
activesupport (= 4.2.9)
activejob (4.2.10)
activesupport (= 4.2.10)
globalid (>= 0.3.0)
activemerchant (1.69.0)
activesupport (>= 3.2.14, < 6.x)
builder (>= 2.1.2, < 4.0.0)
i18n (>= 0.6.9)
nokogiri (~> 1.4)
activemodel (4.2.9)
activesupport (= 4.2.9)
activemodel (4.2.10)
activesupport (= 4.2.10)
builder (~> 3.1)
activerecord (4.2.9)
activemodel (= 4.2.9)
activesupport (= 4.2.9)
activerecord (4.2.10)
activemodel (= 4.2.10)
activesupport (= 4.2.10)
arel (~> 6.0)
activesupport (4.2.9)
activesupport (4.2.10)
i18n (~> 0.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
@@ -51,24 +47,22 @@ GEM
acts_as_paranoid (0.5.0)
activerecord (>= 4.0, < 5.1)
activesupport (>= 4.0, < 5.1)
addressable (2.5.1)
public_suffix (~> 2.0, >= 2.0.2)
addressable (2.5.2)
public_suffix (>= 2.0.2, < 4.0)
arel (6.0.4)
ast (2.3.0)
autoprefixer-rails (7.1.2.3)
ast (2.4.0)
autoprefixer-rails (8.6.4)
execjs
bcrypt (3.1.11)
better_errors (2.1.1)
better_errors (2.2.0)
coderay (>= 1.0.0)
erubis (>= 2.6.6)
rack (>= 0.9.0)
binding_of_caller (0.7.2)
binding_of_caller (0.8.0)
debug_inspector (>= 0.0.1)
bluecloth (2.2.0)
bonsai-elasticsearch-rails (0.2.0)
elasticsearch-model (~> 0)
elasticsearch-rails (~> 0)
bootstrap-datepicker-rails (1.6.4.1)
bonsai-elasticsearch-rails (0.0.4)
bootstrap-datepicker-rails (1.8.0.1)
railties (>= 3.0)
bootstrap-kaminari-views (0.0.5)
kaminari (>= 0.13)
@@ -78,35 +72,34 @@ GEM
sass (>= 3.3.4)
bootstrap_form (2.7.0)
builder (3.2.3)
bullet (5.6.0)
bullet (5.7.5)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.10.0)
byebug (9.0.6)
cancancan (2.0.0)
capybara (2.14.4)
uniform_notifier (~> 1.11.0)
byebug (10.0.2)
cancancan (2.2.0)
capybara (2.18.0)
addressable
mime-types (>= 1.16)
mini_mime (>= 0.1.3)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
xpath (~> 2.0)
capybara-email (2.5.0)
capybara (~> 2.4)
xpath (>= 2.0, < 4.0)
capybara-email (3.0.1)
capybara (>= 2.4, < 4.0)
mail
capybara-screenshot (1.0.17)
capybara (>= 1.0, < 3)
capybara-screenshot (1.0.21)
capybara (>= 1.0, < 4)
launchy
childprocess (0.7.1)
chartkick (2.3.5)
childprocess (0.9.0)
ffi (~> 1.0, >= 1.0.11)
climate_control (0.2.0)
cliver (0.3.2)
cocaine (0.5.8)
climate_control (>= 0.0.3, < 1.0)
codeclimate-test-reporter (1.0.8)
simplecov (<= 0.13)
codemirror-rails (5.16.0)
railties (>= 3.0, < 6.0)
coderay (1.1.1)
coderay (1.1.2)
coffee-rails (4.2.2)
coffee-script (>= 2.2.0)
railties (>= 4.0.0)
@@ -114,7 +107,7 @@ GEM
coffee-script-source
execjs
coffee-script-source (1.12.2)
comfortable_mexican_sofa (1.12.10)
comfortable_mexican_sofa (1.12.11)
active_link_to (>= 1.0.0)
bootstrap-sass (>= 3.2.0)
bootstrap_form (>= 2.2.0)
@@ -137,70 +130,70 @@ GEM
term-ansicolor (~> 1.3)
thor (~> 0.19.1)
tins (~> 1.6)
crass (1.0.4)
csv_shaper (1.3.0)
activesupport (>= 3.0.0)
d3-rails (3.5.17)
railties (>= 3.1)
dalli (2.7.6)
database_cleaner (1.6.1)
dalli (2.7.8)
database_cleaner (1.7.0)
debug_inspector (0.0.3)
devise (4.3.0)
devise (4.4.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0, < 5.2)
railties (>= 4.1.0, < 6.0)
responders
warden (~> 1.2.3)
diff-lcs (1.3)
docile (1.1.5)
easy_translate (0.5.0)
json
easy_translate (0.5.1)
thread
thread_safe
elasticsearch (2.0.2)
elasticsearch-api (= 2.0.2)
elasticsearch-transport (= 2.0.2)
elasticsearch-api (2.0.2)
elasticsearch (6.1.0)
elasticsearch-api (= 6.1.0)
elasticsearch-transport (= 6.1.0)
elasticsearch-api (6.1.0)
multi_json
elasticsearch-model (0.1.9)
elasticsearch-model (6.0.0)
activesupport (> 3)
elasticsearch (> 0.4)
elasticsearch (> 1)
hashie
elasticsearch-rails (0.1.9)
elasticsearch-transport (2.0.2)
elasticsearch-rails (6.0.0)
elasticsearch-transport (6.1.0)
faraday
multi_json
erubis (2.7.0)
excon (0.57.1)
excon (0.62.0)
execjs (2.7.0)
factory_girl (4.8.0)
factory_bot (4.10.0)
activesupport (>= 3.0.0)
factory_girl_rails (4.8.0)
factory_girl (~> 4.8.0)
factory_bot_rails (4.10.0)
factory_bot (~> 4.10.0)
railties (>= 3.0.0)
faker (1.9.1)
i18n (>= 0.7)
faraday (0.12.2)
multipart-post (>= 1.2, < 3)
ffi (1.9.18)
ffi (1.9.25)
figaro (1.1.1)
thor (~> 0.14)
flickraw (0.9.9)
font-awesome-sass (4.7.0)
sass (>= 3.2)
font-awesome-sass (5.0.13)
sassc (>= 1.11)
formatador (0.2.5)
friendly_id (5.2.1)
friendly_id (5.2.4)
activerecord (>= 4.0.0)
geocoder (1.4.4)
geocoder (1.4.9)
gibbon (1.2.1)
httparty
multi_json (>= 1.9.0)
globalid (0.4.0)
globalid (0.4.1)
activesupport (>= 4.2.0)
gravatar-ultimate (2.0.0)
activesupport (>= 2.3.14)
rack
guard (2.14.1)
guard (2.14.2)
formatador (>= 0.2.4)
listen (>= 2.7, < 4.0)
lumberjack (~> 1.0)
lumberjack (>= 1.0.12, < 2.0)
nenv (~> 0.1)
notiffany (~> 0.0)
pry (>= 0.9.12)
@@ -211,7 +204,7 @@ GEM
guard (~> 2.1)
guard-compat (~> 1.1)
rspec (>= 2.99.0, < 4.0)
haml (5.0.1)
haml (5.0.4)
temple (>= 0.8.0)
tilt
haml-i18n-extractor (0.5.9)
@@ -226,25 +219,28 @@ GEM
haml (>= 4.0.6, < 6.0)
html2haml (>= 1.0.1)
railties (>= 4.0.1)
haml_lint (0.25.1)
haml_lint (0.26.0)
haml (>= 4.0, < 5.1)
rainbow
rake (>= 10, < 13)
rubocop (>= 0.47.0)
rubocop (>= 0.49.0)
sysexits (~> 1.1)
hashie (3.5.6)
heroku-api (0.4.2)
excon (~> 0.45)
multi_json (~> 1.8)
highline (1.7.8)
hashie (3.5.7)
heroics (0.0.24)
erubis (~> 2.0)
excon
moneta
multi_json (>= 1.9.2)
highline (1.7.10)
html2haml (2.2.0)
erubis (~> 2.7.0)
haml (>= 4.0, < 6)
nokogiri (>= 1.6.0)
ruby_parser (~> 3.5)
httparty (0.15.6)
httparty (0.16.2)
multi_xml (>= 0.5.2)
i18n (0.8.6)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
i18n-tasks (0.9.12)
activesupport (>= 4.0.2)
ast (>= 2.1.0)
@@ -255,82 +251,82 @@ GEM
parser (>= 2.2.3.0)
term-ansicolor (>= 1.3.2)
terminal-table (>= 1.5.1)
jasmine (2.6.0)
jasmine-core (>= 2.6.0, < 3.0.0)
phantomjs
rack (>= 1.2.1)
rake
jasmine-core (2.6.4)
jquery-rails (4.3.1)
jquery-rails (4.3.3)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
jquery-ui-rails (5.0.5)
railties (>= 3.2.16)
js-routes (1.3.3)
js-routes (1.4.3)
railties (>= 3.2)
sprockets-rails
json (2.1.0)
jsonapi-resources (0.9.0)
activerecord (>= 4.1)
concurrent-ruby
railties (>= 4.1)
jwt (1.5.6)
kaminari (1.0.1)
kaminari (1.1.1)
activesupport (>= 4.1.0)
kaminari-actionview (= 1.0.1)
kaminari-activerecord (= 1.0.1)
kaminari-core (= 1.0.1)
kaminari-actionview (1.0.1)
kaminari-actionview (= 1.1.1)
kaminari-activerecord (= 1.1.1)
kaminari-core (= 1.1.1)
kaminari-actionview (1.1.1)
actionview
kaminari-core (= 1.0.1)
kaminari-activerecord (1.0.1)
kaminari-core (= 1.1.1)
kaminari-activerecord (1.1.1)
activerecord
kaminari-core (= 1.0.1)
kaminari-core (1.0.1)
kgio (2.11.0)
kramdown (1.14.0)
kaminari-core (= 1.1.1)
kaminari-core (1.1.1)
kgio (2.11.2)
kramdown (1.17.0)
launchy (2.4.3)
addressable (~> 2.3)
leaflet-markercluster-rails (0.7.0)
railties (>= 3.1)
leaflet-rails (0.7.7)
letter_opener (1.4.1)
leaflet-rails (1.3.1)
rails (>= 4.2.0)
letter_opener (1.6.0)
launchy (~> 2.2)
listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
ruby_dep (~> 1.2)
loofah (2.0.3)
loofah (2.2.2)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
lumberjack (1.0.12)
mail (2.6.6)
mime-types (>= 1.16, < 4)
lumberjack (1.0.13)
mail (2.7.0)
mini_mime (>= 0.1.1)
memcachier (0.0.2)
method_source (0.8.2)
method_source (0.9.0)
mime-types (3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2016.0521)
mimemagic (0.3.2)
mini_portile2 (2.2.0)
minitest (5.10.3)
mini_mime (1.0.0)
mini_portile2 (2.3.0)
minitest (5.11.3)
moneta (0.8.1)
multi_json (1.11.3)
multi_xml (0.6.0)
multipart-post (2.0.0)
nenv (0.3.0)
newrelic_rpm (4.3.0.335)
nokogiri (1.8.0)
mini_portile2 (~> 2.2.0)
newrelic_rpm (5.2.0.345)
nokogiri (1.8.4)
mini_portile2 (~> 2.3.0)
notiffany (0.1.1)
nenv (~> 0.1)
shellany (~> 0.0)
oauth (0.5.3)
oauth (0.5.4)
oauth2 (1.4.0)
faraday (>= 0.8, < 0.13)
jwt (~> 1.0)
multi_json (~> 1.3)
multi_xml (~> 0.5)
rack (>= 1.2, < 3)
omniauth (1.6.1)
omniauth (1.8.1)
hashie (>= 3.4.6, < 3.6.0)
rack (>= 1.6.2, < 3)
omniauth-facebook (4.0.0)
omniauth-facebook (5.0.0)
omniauth-oauth2 (~> 1.2)
omniauth-flickr (0.0.19)
multi_json (~> 1.11.0)
@@ -338,61 +334,66 @@ GEM
omniauth-oauth (1.1.0)
oauth
omniauth (~> 1.0)
omniauth-oauth2 (1.4.0)
oauth2 (~> 1.0)
omniauth-oauth2 (1.5.0)
oauth2 (~> 1.1)
omniauth (~> 1.2)
omniauth-twitter (1.4.0)
omniauth-oauth (~> 1.1)
rack
orm_adapter (0.5.0)
paperclip (5.1.0)
paperclip (6.1.0)
activemodel (>= 4.2.0)
activesupport (>= 4.2.0)
cocaine (~> 0.5.5)
mime-types
mimemagic (~> 0.3.0)
parser (2.4.0.0)
ast (~> 2.2)
terrapin (~> 0.6.0)
parallel (1.12.1)
parser (2.5.1.0)
ast (~> 2.4.0)
pg (0.21.0)
phantomjs (2.1.1.0)
platform-api (2.1.0)
heroics (~> 0.0.23)
moneta (~> 0.8.1)
plupload-rails (1.2.1)
rails (>= 3.1)
poltergeist (1.15.0)
poltergeist (1.17.0)
capybara (~> 2.1)
cliver (~> 0.3.1)
websocket-driver (>= 0.2.0)
powerpack (0.1.1)
pry (0.10.4)
pry (0.11.3)
coderay (~> 1.1.0)
method_source (~> 0.8.1)
slop (~> 3.4)
public_suffix (2.0.5)
method_source (~> 0.9.0)
public_suffix (3.0.2)
quiet_assets (1.1.0)
railties (>= 3.1, < 5.0)
rack (1.6.8)
rack-protection (2.0.0)
rack (1.6.10)
rack-protection (2.0.3)
rack
rack-test (0.6.3)
rack (>= 1.0)
rails (4.2.9)
actionmailer (= 4.2.9)
actionpack (= 4.2.9)
actionview (= 4.2.9)
activejob (= 4.2.9)
activemodel (= 4.2.9)
activerecord (= 4.2.9)
activesupport (= 4.2.9)
rails (4.2.10)
actionmailer (= 4.2.10)
actionpack (= 4.2.10)
actionview (= 4.2.10)
activejob (= 4.2.10)
activemodel (= 4.2.10)
activerecord (= 4.2.10)
activesupport (= 4.2.10)
bundler (>= 1.3.0, < 2.0)
railties (= 4.2.9)
railties (= 4.2.10)
sprockets-rails
rails-assets-leaflet (1.3.1)
rails-assets-leaflet.markercluster (1.3.0)
rails-assets-leaflet (>= 1.0.3)
rails-deprecated_sanitizer (1.0.3)
activesupport (>= 4.2.0.alpha)
rails-dom-testing (1.0.8)
activesupport (>= 4.2.0.beta, < 5.0)
rails-dom-testing (1.0.9)
activesupport (>= 4.2.0, < 5.0)
nokogiri (~> 1.6)
rails-deprecated_sanitizer (>= 1.0.1)
rails-html-sanitizer (1.0.3)
loofah (~> 2.0)
rails-html-sanitizer (1.0.4)
loofah (~> 2.2, >= 2.2.2)
rails-i18n (4.0.9)
i18n (~> 0.7)
railties (~> 4.0)
@@ -401,91 +402,94 @@ GEM
rails_stdout_logging
rails_serve_static_assets (0.0.5)
rails_stdout_logging (0.0.5)
railties (4.2.9)
actionpack (= 4.2.9)
activesupport (= 4.2.9)
railties (4.2.10)
actionpack (= 4.2.10)
activesupport (= 4.2.10)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rainbow (2.1.0)
raindrops (0.18.0)
rake (12.0.0)
rb-fsevent (0.10.2)
raindrops (0.19.0)
rake (12.3.1)
rb-fsevent (0.10.3)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
redis (3.3.3)
redis (4.0.1)
responders (2.4.0)
actionpack (>= 4.2.0, < 5.3)
railties (>= 4.2.0, < 5.3)
rspec (3.6.0)
rspec-core (~> 3.6.0)
rspec-expectations (~> 3.6.0)
rspec-mocks (~> 3.6.0)
rspec (3.8.0)
rspec-core (~> 3.8.0)
rspec-expectations (~> 3.8.0)
rspec-mocks (~> 3.8.0)
rspec-activemodel-mocks (1.0.3)
activemodel (>= 3.0)
activesupport (>= 3.0)
rspec-mocks (>= 2.99, < 4.0)
rspec-core (3.6.0)
rspec-support (~> 3.6.0)
rspec-expectations (3.6.0)
rspec-core (3.8.0)
rspec-support (~> 3.8.0)
rspec-expectations (3.8.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.6.0)
rspec-mocks (3.6.0)
rspec-support (~> 3.8.0)
rspec-mocks (3.8.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.6.0)
rspec-rails (3.6.0)
rspec-support (~> 3.8.0)
rspec-rails (3.8.0)
actionpack (>= 3.0)
activesupport (>= 3.0)
railties (>= 3.0)
rspec-core (~> 3.6.0)
rspec-expectations (~> 3.6.0)
rspec-mocks (~> 3.6.0)
rspec-support (~> 3.6.0)
rspec-support (3.6.0)
rubocop (0.47.1)
rspec-core (~> 3.8.0)
rspec-expectations (~> 3.8.0)
rspec-mocks (~> 3.8.0)
rspec-support (~> 3.8.0)
rspec-support (3.8.0)
rubocop (0.49.1)
parallel (~> 1.10)
parser (>= 2.3.3.1, < 3.0)
powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0)
ruby-progressbar (~> 1.7)
unicode-display_width (~> 1.0, >= 1.0.1)
ruby-progressbar (1.8.1)
ruby-units (2.1.0)
ruby-progressbar (1.9.0)
ruby-units (2.3.0)
ruby_dep (1.5.0)
ruby_parser (3.10.1)
ruby_parser (3.11.0)
sexp_processor (~> 4.9)
rubyzip (1.2.1)
sass (3.5.1)
sass (3.5.6)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
sass-rails (5.0.6)
sass-rails (5.0.7)
railties (>= 4.0.0, < 6)
sass (~> 3.1)
sprockets (>= 2.8, < 4.0)
sprockets-rails (>= 2.0, < 4.0)
tilt (>= 1.1, < 3)
selenium-webdriver (3.4.4)
sassc (1.12.0)
ffi (~> 1.9.6)
sass (>= 3.3.0)
selenium-webdriver (3.14.0)
childprocess (~> 0.5)
rubyzip (~> 1.0)
sexp_processor (4.10.0)
rubyzip (~> 1.2)
sexp_processor (4.11.0)
shellany (0.0.1)
sidekiq (5.0.4)
sidekiq (5.1.3)
concurrent-ruby (~> 1.0)
connection_pool (~> 2.2, >= 2.2.0)
rack-protection (>= 1.5.0)
redis (~> 3.3, >= 3.3.3)
redis (>= 3.3.5, < 5)
simplecov (0.12.0)
docile (~> 1.1.0)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.1)
slop (3.6.0)
sparkpost_rails (1.4.0)
rails (>= 4.0, < 5.1)
sprockets (3.7.1)
simplecov-html (0.10.2)
sparkpost_rails (1.5.1)
rails (>= 4.0, < 5.3)
sprockets (3.7.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.0)
sprockets-rails (3.2.1)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
@@ -495,44 +499,46 @@ GEM
tins (~> 1.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
terrapin (0.6.0)
climate_control (>= 0.0.3, < 1.0)
thor (0.19.4)
thread (0.2.2)
thread_safe (0.3.6)
tilt (2.0.8)
timecop (0.9.1)
tins (1.15.0)
tins (1.16.3)
trollop (1.16.2)
tzinfo (1.2.3)
tzinfo (1.2.5)
thread_safe (~> 0.1)
uglifier (3.2.0)
uglifier (4.1.15)
execjs (>= 0.3.0, < 3)
unicode-display_width (1.3.0)
unicorn (5.3.0)
unicode-display_width (1.3.2)
unicorn (5.4.1)
kgio (~> 2.6)
raindrops (~> 0.7)
uniform_notifier (1.10.0)
uniform_notifier (1.11.0)
warden (1.2.7)
rack (>= 1.0)
webrat (0.7.3)
nokogiri (>= 1.2.0)
rack (>= 1.0)
rack-test (>= 0.5.3)
websocket-driver (0.6.5)
websocket-driver (0.7.0)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.2)
websocket-extensions (0.1.3)
will_paginate (3.1.6)
xpath (2.1.0)
nokogiri (~> 1.3)
xmlrpc (0.3.0)
xpath (3.1.0)
nokogiri (~> 1.8)
PLATFORMS
ruby
DEPENDENCIES
active_merchant-paypal-bogus-gateway
active_median
active_utils
activemerchant
acts_as_paranoid (~> 0.5.0)
better_errors
better_errors (~> 2.2.0)
binding_of_caller
bluecloth
bonsai-elasticsearch-rails
@@ -546,19 +552,20 @@ DEPENDENCIES
capybara
capybara-email
capybara-screenshot
chartkick
codeclimate-test-reporter
coffee-rails
comfortable_mexican_sofa
coveralls
csv_shaper
d3-rails (~> 3.5)
dalli
database_cleaner
devise
elasticsearch-api (~> 2.0.0)
elasticsearch-model
elasticsearch-rails
factory_girl_rails
elasticsearch-api (>= 6.0.0)
elasticsearch-model (>= 6.0.0)
elasticsearch-rails (>= 6.0.0)
factory_bot_rails
faker
figaro
flickraw
font-awesome-sass
@@ -573,34 +580,36 @@ DEPENDENCIES
haml-rails
haml_lint
hashie (>= 3.5.3)
heroku-api
i18n-tasks
jasmine
jquery-rails
jquery-ui-rails (~> 5.0.2)
js-routes
jsonapi-resources
kaminari
leaflet-markercluster-rails
leaflet-rails (~> 0.7.7)
leaflet-rails
letter_opener
loofah (>= 2.2.1)
memcachier
newrelic_rpm
omniauth (~> 1.3)
omniauth-facebook
omniauth-flickr (>= 0.0.15)
omniauth-twitter
pg
pg (< 1.0.0)
platform-api
poltergeist
pry
quiet_assets
rack-protection (>= 2.0.1)
rails (~> 4.2.8)
rails-assets-leaflet.markercluster!
rails_12factor
rainbow (< 2.2.0)
rake (>= 10.0.0)
responders
rspec-activemodel-mocks
rspec-rails
rubocop (<= 0.47.1)
rubocop
ruby-units
sass-rails
selenium-webdriver
@@ -611,10 +620,10 @@ DEPENDENCIES
unicorn
webrat
will_paginate
xmlrpc
RUBY VERSION
ruby 2.3.4p301
ruby 2.4.1p111
BUNDLED WITH
1.15.1
1.16.4
+4 -4
View File
@@ -1,13 +1,13 @@
guard :rspec,
cmd: 'bundle exec rspec --format documentation',
failed_mode: :keep do
cmd: 'bundle exec rspec --format documentation',
failed_mode: :keep do
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/libs/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { "spec" }
watch('spec/spec_helper.rb') { "spec" }
# Rails example
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
watch('config/routes.rb') { "spec/routing" }
end
end
+1 -1
View File
@@ -1,7 +1,7 @@
# Growstuff
[![Build Status](https://travis-ci.org/Growstuff/growstuff.svg?branch=dev)](https://travis-ci.org/Growstuff/growstuff)
[![Coverage Status](https://coveralls.io/repos/Growstuff/growstuff/badge.png)](https://coveralls.io/r/Growstuff/growstuff)
[![Coverage Status](https://coveralls.io/repos/github/Growstuff/growstuff/badge.svg?branch=dev)](https://coveralls.io/github/Growstuff/growstuff?branch=dev)
[![Code Climate](https://codeclimate.com/github/Growstuff/growstuff/badges/gpa.svg)](https://codeclimate.com/github/Growstuff/growstuff)
Welcome to the Growstuff project.
Regular → Executable
View File
File mode changed.
+9 -9
View File
@@ -10,12 +10,12 @@
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require leaflet
//= require leaflet.markercluster
//= require js-routes
//= require jquery
//= require jquery_ujs
//= require jquery-ui/autocomplete
//= require bootstrap-sprockets
//= require bootstrap-datepicker
//= require_tree .
// = require leaflet
// = require leaflet.markercluster
// = require js-routes
// = require jquery
// = require jquery_ujs
// = require jquery-ui/autocomplete
// = require bootstrap-sprockets
// = require bootstrap-datepicker
// = require_tree .
File diff suppressed because one or more lines are too long.
+2
View File
@@ -0,0 +1,2 @@
// = require Chart.bundle
// = require chartkick
+39
View File
@@ -0,0 +1,39 @@
jQuery ->
$('#add-sci_name-row').css("display", "inline-block")
$('#remove-sci_name-row').css("display", "inline-block")
$("#add-alt_name-row").css("display", "inline-block")
$("#remove-alt_name-row").css("display", "inline-block")
-$ ->
sci_template = "<div id='sci_template[INDEX]' class='template col-md-12'><div class='col-md-2'><label>Scientific name INDEX:</label></div><div class='col-md-8'><input name='sci_name[INDEX]' class='form-control', id='sci_name[INDEX]')'></input><span class='help-block'>Scientific name of crop.</span></div><div class='col-md-2'></div></div>"
sci_index = $('#scientific_names .template').length + 1
$('#add-sci_name-row').click ->
compiled_input = $(sci_template.split("INDEX").join(sci_index))
$('#scientific_names').append(compiled_input)
sci_index = sci_index + 1
$('#remove-sci_name-row').click ->
if (sci_index > 2)
sci_index = sci_index - 1
tmp = 'sci_template[' + sci_index + ']'
element = document.getElementById(tmp)
element.remove()
alt_template = "<div id='alt_template[INDEX]' class='template col-md-12'><div class='col-md-2'><label>Alternate name INDEX:</label></div><div class='col-md-8'><input name='alt_name[INDEX]' class='form-control', id='alt_name[INDEX]')'></input><span class='help-block'>Alternate name of crop.</span></div><div class='col-md-2'></div></div>"
alt_index = $('#alternate_names .template').length + 1
$('#add-alt_name-row').click ->
compiled_input = $(alt_template.split("INDEX").join(alt_index))
$('#alternate_names').append(compiled_input)
alt_index = alt_index + 1
$('#remove-alt_name-row').click ->
if (alt_index > 2)
alt_index = alt_index - 1
tmp = 'alt_template[' + alt_index + ']'
element = document.getElementById(tmp)
console.log("%s",tmp)
element.remove()
+24 -58
View File
@@ -1,37 +1,27 @@
//= require graphs/horizontal_bar_graph
if (document.getElementById("cropmap") !== null) {
mapbox_map_id = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_map_id %>";
mapbox_access_token = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_access_token %>";
mapbox_base_url = "http://a.tiles.mapbox.com/v4/" + mapbox_map_id + "/{z}/{x}/{y}.png?access_token=" + mapbox_access_token;
L.Icon.Default.imagePath = '/assets'
cropmap = L.map('cropmap').setView([0.0, -0.0], 2);
showCropMap(cropmap);
}
function showCropMap(cropmap) {
var mapbox_map_id = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_map_id %>";
var mapbox_access_token = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_access_token %>";
var mapbox_base_url = "http://a.tiles.mapbox.com/v4/" + mapbox_map_id + "/{z}/{x}/{y}.png?access_token=" + mapbox_access_token;
L.tileLayer(mapbox_base_url, {
attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors under <a href="http://www.openstreetmap.org/copyright">ODbL</a> | Map imagery &copy; <a href="http://mapbox.com">Mapbox</a>',
maxZoom: 18
}).addTo(cropmap);
markers = new L.MarkerClusterGroup({showCoverageOnHover: false, maxClusterRadius: 20 });
var markers = new L.MarkerClusterGroup({showCoverageOnHover: false, maxClusterRadius: 20 });
things_to_map = location.pathname + '.json';
var things_to_map = location.pathname + '.json';
$.getJSON(things_to_map, function(crop) {
$.each(crop.plantings, function(i, planting) {
owner = planting.owner;
var owner = planting.owner;
if (owner.latitude && owner.longitude) {
marker = new L.Marker(new L.LatLng(owner.latitude, owner.longitude));
var marker = new L.Marker(new L.LatLng(owner.latitude, owner.longitude));
planting_url = "/plantings/" + planting.id;
planting_link = "<a href='" + planting_url + "'>" + owner.login_name + "'s " + crop.name + "</a>";
var planting_url = "/plantings/" + planting.id;
var planting_link = "<a href='" + planting_url + "'>" + owner.login_name + "'s " + crop.name + "</a>";
where = "<p><i>" + owner.location + "</i></p>";
var where = "<p><i>" + owner.location + "</i></p>";
details = "<p>";
var details = "<p>";
if (planting.quantity) {
details = details + "Quantity: " + planting.quantity + "<br/>";
}
@@ -51,41 +41,17 @@ function showCropMap(cropmap) {
cropmap.addLayer(markers);
}
function plantingStats(crop) {
var sunniness_counts = { 'empty': 0, 'sun': 0, 'semi-shade': 0, 'shade': 0 };
$.each(crop.plantings, function(i, planting) {
if (planting.sunniness) {
sunniness_counts[planting.sunniness]++;
} else {
sunniness_counts['Empty']++;
}
$(document).ready(function() {
if (document.getElementById("cropmap") !== null) {
L.Icon.Default.imagePath = '/assets';
var cropmap = L.map('cropmap').setView([0.0, -0.0], 2);
showCropMap(cropmap);
}
$('.btn.toggle.crop-hierarchy').click(function () {
$('.toggle.crop-hierarchy').toggleClass('hide');
});
return [
{name: 'Empty', value: sunniness_counts['empty']},
{name: 'Sun', value: sunniness_counts['sun']},
{name: 'Semi-shade', value: sunniness_counts['semi-shade']},
{name: 'Shade', value: sunniness_counts['shade']}
];
}
if ($("#sunchart")[0] !== null) {
var HorizontalBarGraph = growstuff.HorizontalBarGraph;
$.getJSON(location.pathname + '.json', function (crop) {
data = {
bars: plantingStats(crop),
bar_color: 'steelblue',
width: {size: 300, scale: 'linear'},
height: {size: 100, scale: 'ordinal'},
//left is used to shift the bars over so that there is
//room for the labels
margin: {top: 0, right: 0, bottom: 0, left: 100}
};
var graph = new HorizontalBarGraph(data);
graph.render(d3.select($('#sunchart')[0]));
});
}
$('.btn.toggle.crop-hierarchy').click(function () {
$('.toggle.crop-hierarchy').toggleClass('hide');
});
});
@@ -0,0 +1,19 @@
# Clears the finished at date field when
# a seed is marked unfinished, and
# repopulates the field with a cached value
# marking unfinished is undone.
jQuery ->
previousValue = ''
$('#seed_finished').on('click', ->
finished = $('#seed_finished_at')
if @checked
if previousValue.length
date = previousValue
finished.val(date)
else
finished.trigger('focus')
else
previousValue = finished.val()
finished.val('')
)
@@ -1,50 +0,0 @@
//= require graphs/width_scale
//= require graphs/height_scale
(function(){
'use strict';
/*
This represents bars for a bar graph.
Currently these are used for HorizontalBarGraph.
*/
var growstuff = (window.growstuff = window.growstuff || {});
var WidthScale = growstuff.WidthScale;
var HeightScale = growstuff.HeightScale;
function BarGroup(data) {
this._data = data;
}
BarGroup.prototype.render = function(root){
var data = this._data;
var bars = this._data.bars;
var widthScale = new WidthScale(data).render();
var heightScale = new HeightScale(data).render();
return root.append('g')
.attr("class", "bar")
.selectAll("rect")
.data(bars.map(function(bar) { return bar.value; }))
.enter()
.append("rect")
.attr("y", function(d, i){
return heightScale(i);
})
.attr("height", heightScale.rangeBand())
.attr("fill", data.bar_color)
.attr("width", function(d){
return widthScale(d);
})
.append("title")
.text(function(d){
return 'This value is ' + d + '.';
});
};
growstuff.BarGroup = BarGroup;
}());
@@ -1,40 +0,0 @@
(function() {
'use strict';
/*
This file draws the labels to the left of each bar.
*/
var growstuff = (window.growstuff = window.growstuff || {});
function BarLabelGroup(data) {
this._data = data;
}
BarLabelGroup.prototype.render = function(d3){
var bars = this._data.bars;
//vvcopy pasta from spike vv -- this is a good candidate for refactor
var barHeight = 40;
return d3.append('g')
.attr("class", "bar-label")
.selectAll("text")
.data(bars.map(function(bar){ return bar.name;}))
.enter()
.append("text")
.attr('x', -80)
.attr('y', function(d, i){
//shrink the margin between each label to give them an even spread with
//bars
var barLabelSpread = 2/3;
//move them downward to line up with bars
var barLabelTopEdge = 17;
return i * barHeight * (barLabelSpread) + barLabelTopEdge;
})
.text(function(d){return d;});
};
growstuff.BarLabelGroup = BarLabelGroup;
}());
@@ -1,29 +0,0 @@
//=require d3
/*
Height Scale is used to map the number of bars to the display size of
the svg
*/
(function(){
'use strict';
var growstuff = (window.growstuff = window.growstuff || {});
function HeightScale(data){
this._data = data;
}
HeightScale.prototype.render = function(){
var data = this._data;
var scaleType = data.height.scale;
var axisSize = data.height.size;
return d3.scale[scaleType]()
.domain(d3.range(data.bars.length))
.rangeRoundBands([0, data.height.size], 0.05, 0);
};
growstuff.HeightScale = HeightScale;
}());
@@ -1,51 +0,0 @@
//= require d3
//= require graphs/bar_group
//= require graphs/bar_label_group
/*
Horizontal Bar Graph represents sum total of the graph including all of the parts:
Bars
Bar Labels
The main dimensions of the graph are rendered here.
*/
(function() {
'use strict';
var growstuff = (window.growstuff = window.growstuff || {});
var BarGroup = growstuff.BarGroup;
var BarLabelGroup = growstuff.BarLabelGroup;
function HorizontalBarGraph(data) {
this._data = data;
this._d3 = d3;
}
HorizontalBarGraph.prototype.render = function(root) {
var bars = this._data.bars;
var width = this._data.width;
var height = this._data.height;
var barLabelGroup = new BarLabelGroup(this._data);
var margin = this._data.margin;
var barGroup = new BarGroup(this._data);
var svg = root
.append("svg")
.attr("width", width.size + margin.left + margin.right)
.attr("height", height.size + margin.top + margin.bottom)
.append("g")
.attr("class","bar-graph")
.attr("transform","translate(" + margin.left + "," + margin.top + ")");
barGroup.render(svg);
barLabelGroup.render(svg);
return svg;
};
growstuff.HorizontalBarGraph = HorizontalBarGraph;
}());
@@ -1,33 +0,0 @@
//=require d3
/*
Width scale is used to map the value for the length of each bar
to the display size of the svg
*/
(function(){
'use strict';
var growstuff = (window.growstuff = window.growstuff || {});
function WidthScale (data){
this._data = data;
}
WidthScale.prototype.render = function() {
var data = this._data;
var scaleType = data.width.scale;
var axisSize = data.width.size;
return d3.scale[scaleType]()
.domain([0, this.getMaxValue()])
.range([0, axisSize]);
};
WidthScale.prototype.getMaxValue = function(){
return d3.max(this._data.bars.map(function(bar) { return bar.value; }));
};
growstuff.WidthScale = WidthScale;
}());
+9 -10
View File
@@ -1,25 +1,24 @@
if (document.getElementById("membermap") !== null) {
mapbox_map_id = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_map_id %>";
mapbox_access_token = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_access_token %>";
mapbox_base_url = "http://a.tiles.mapbox.com/v4/" + mapbox_map_id + "/{z}/{x}/{y}.png?access_token=" + mapbox_access_token;
L.Icon.Default.imagePath = '/assets'
var mapbox_map_id = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_map_id %>";
var mapbox_access_token = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_access_token %>";
var mapbox_base_url = "http://a.tiles.mapbox.com/v4/" + mapbox_map_id + "/{z}/{x}/{y}.png?access_token=" + mapbox_access_token;
L.Icon.Default.imagePath = '/assets';
$.getJSON(location.pathname + '.json', function(member) {
if (member.latitude && member.longitude) {
membermap = L.map('membermap').setView([member.latitude, member.longitude], 4);
var membermap = L.map('membermap').setView([member.latitude, member.longitude], 4);
L.tileLayer(mapbox_base_url, {
attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors under <a href="http://www.openstreetmap.org/copyright">ODbL</a> | Map imagery &copy; <a href="http://mapbox.com">Mapbox</a>',
maxZoom: 18
}).addTo(membermap);
marker = new L.Marker(new L.LatLng(member.latitude, member.longitude));
var marker = new L.Marker(new L.LatLng(member.latitude, member.longitude));
member_url = "/members/" + member.slug;
member_link = "<a href='" + member_url + "'>" + member.login_name + "</a>";
var member_url = "/members/" + member.slug;
var member_link = "<a href='" + member_url + "'>" + member.login_name + "</a>";
where = "<p><i>" + member.location + "</i></p>";
var where = "<p><i>" + member.location + "</i></p>";
marker.bindPopup(member_link + where).openPopup();
marker.addTo(membermap);
+9 -9
View File
@@ -1,18 +1,18 @@
$(document).ready(function () {
$(document).ready(function() {
$('.post-like').show();
$('.post-like').on('ajax:success', function(event, data) {
var like_control = $('#post-' + data.id + ' .post-like');
var likeControl = $('#post-' + data.id + ' .post-like');
$('#post-' + data.id + ' .like-count').text(data.description);
if (data.liked_by_member) {
like_control.data("method", "delete");
like_control.attr("href", data.url);
like_control.text("Unlike");
likeControl.data('method', 'delete');
likeControl.attr('href', data.url);
likeControl.text('Unlike');
} else {
like_control.data("method", "post");
like_control.attr("href", '/likes.json?post_id=' + data.id);
like_control.text("Like");
likeControl.data('method', 'post');
likeControl.attr('href', '/likes.json?post_id=' + data.id);
likeControl.text('Like');
}
});
});
});
-38
View File
@@ -4,41 +4,3 @@
jQuery ->
$('.add-datepicker').datepicker('format' : 'yyyy-mm-dd')
$('#add-sci_name-row').css("display", "inline-block")
$('#remove-sci_name-row').css("display", "inline-block")
$("#add-alt_name-row").css("display", "inline-block")
$("#remove-alt_name-row").css("display", "inline-block")
$ ->
sci_template = "<div id='sci_template[INDEX]' class='template col-md-12'><div class='col-md-2'><label>Scientific name INDEX:</label></div><div class='col-md-8'><input name='sci_name[INDEX]' class='form-control', id='sci_name[INDEX]')'></input><span class='help-block'>Scientific name of crop.</span></div><div class='col-md-2'></div></div>"
sci_index = $('#scientific_names .template').length + 1
$('#add-sci_name-row').click ->
compiled_input = $(sci_template.split("INDEX").join(sci_index))
$('#scientific_names').append(compiled_input)
sci_index = sci_index + 1
$('#remove-sci_name-row').click ->
if (sci_index > 2)
sci_index = sci_index - 1
tmp = 'sci_template[' + sci_index + ']'
element = document.getElementById(tmp)
element.remove()
alt_template = "<div id='alt_template[INDEX]' class='template col-md-12'><div class='col-md-2'><label>Alternate name INDEX:</label></div><div class='col-md-8'><input name='alt_name[INDEX]' class='form-control', id='alt_name[INDEX]')'></input><span class='help-block'>Alternate name of crop.</span></div><div class='col-md-2'></div></div>"
alt_index = $('#alternate_names .template').length + 1
$('#add-alt_name-row').click ->
compiled_input = $(alt_template.split("INDEX").join(alt_index))
$('#alternate_names').append(compiled_input)
alt_index = alt_index + 1
$('#remove-alt_name-row').click ->
if (alt_index > 2)
alt_index = alt_index - 1
tmp = 'alt_template[' + alt_index + ']'
element = document.getElementById(tmp)
console.log("%s",tmp)
element.remove()
+1 -1
View File
@@ -2,7 +2,7 @@
@import 'bootstrap-datepicker'
@import 'leaflet'
@import 'leaflet.markercluster'
@import 'leaflet.markercluster.default'
@import 'custom_bootstrap/custom_bootstrap'
@import 'overrides'
@import 'graphs'
@import 'predictions'
+1 -1
View File
@@ -1 +1 @@
.btn:focus{outline:dotted 2px #000}div.active:focus{outline:dotted 1px #000}a:focus{outline:dotted 1px #000}.close:hover,.close:focus{outline:dotted 1px #000}.nav>li>a:hover,.nav>li>a:focus{outline:dotted 1px #000}.carousel-inner>.item{position:absolute;top:-999999em;display:block;-moz-transition:ease-in-out 0.6s left;-o-transition:ease-in-out 0.6s left;-webkit-transition:ease-in-out 0.6s left;transition:ease-in-out 0.6s left}.carousel-inner>.active{top:0}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{position:relative}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.alert-success{color:#2d4821}.alert-info{color:#214c62}.alert-warning{color:#6c4a00;background-color:#f9f1c6}.alert-danger{color:#d2322d}.alert-danger:hover{color:#a82824}
.btn:focus{outline:dotted 2px #000}div.active:focus{outline:dotted 1px #000}a:focus{outline:dotted 1px #000}.close:hover,.close:focus{outline:dotted 1px #000}.nav>li>a:hover,.nav>li>a:focus{outline:dotted 1px #000}.carousel-indicators li,.carousel-indicators li.active{height:18px;width:18px;border-width:2px;position:relative;box-shadow:0px 0px 0px 1px #808080}.carousel-indicators.active li{background-color:rgba(100,149,253,0.6)}.carousel-indicators.active li.active{background-color:white}.carousel-tablist-highlight{display:block;position:absolute;outline:2px solid transparent;background-color:transparent;box-shadow:0px 0px 0px 1px transparent}.carousel-tablist-highlight.focus{outline:2px solid #6495ED;background-color:rgba(0,0,0,0.4)}a.carousel-control:focus{outline:2px solid #6495ED;background-image:linear-gradient(to right, transparent 0px, rgba(0,0,0,0.5) 100%);box-shadow:0px 0px 0px 1px #000000}.carousel-pause-button{position:absolute;top:-30em;left:-300em;display:block}.carousel-pause-button.focus{top:0.5em;left:0.5em}.carousel:hover .carousel-caption,.carousel.contrast .carousel-caption{background-color:rgba(0,0,0,0.5);z-index:10}.alert-success{color:#2d4821}.alert-info{color:#214c62}.alert-warning{color:#6c4a00;background-color:#f9f1c6}.alert-danger{color:#d2322d}.alert-danger:hover{color:#a82824}
@@ -1,7 +1,7 @@
// Use this file to override Twitter Bootstrap variables or define own variables.
// Import original variables so they can be used in overrides
//@import 'bootstrap/variables.scss'
@import 'bootstrap/variables.scss'
// Base colours
@@ -10,9 +10,10 @@ $brown: #413f3b
$green: #5f8e43
$blue: #2f4365
$red: #8e4d43
$red: #ff4d43
$orange: #ffa500
$yellow: #b2935c
$white: #ffffff
$body-bg: $beige
$text-color: $brown
+112 -53
View File
@@ -3,37 +3,22 @@
@import "custom_bootstrap/variables"
// this padding needs to be done before the responsive stuff is imported
body
// modifying this for our promotional banner. can be replaced after if
// needed.
// padding-top: $navbar-height + 15px
padding-top: $navbar-height
//@import "bootstrap/responsive"
// Font Awesome
@import "font-awesome-sprockets"
@import "font-awesome"
// Glyphicons
//@import "bootstrap/glyphicons"
.list-inline > li.first
padding-left: 0px
.activity-list
list-style-type: none
padding: 0
h2
font-size: 150%
//#subtitle
// color: lighten($brown, 30%)
// font-style: italic
// font-weight: normal
// margin-top: 0px
// padding-left: 1em
// padding-top: 0px
h3
font-size: 120%
@@ -53,6 +38,21 @@ h3
max-width: 100%
height: auto
.profile-sidebar
margin-top: -5rem
.avatar
border-radius: 50%
border-radius: 50%
z-index: 2
position: relative
.profile-activity
background: white
padding: 2em
margin-top: 2em
.container
width: 100%
.sidebar
border-left: 1px solid darken($beige, 10%)
margin-left: -1px
@@ -92,10 +92,16 @@ p.stats
display: flex
flex: none
flex-wrap: wrap
justify-content: space-between
.card-row
display: grid
grid-template-columns: 50% 50%
grid-gap: 25px
grid-row-gap: 5px
.member-thumbnail
padding: .25em
margin: 1em
div
width: 5em
@@ -106,34 +112,47 @@ p.stats
padding-left: 1em
width: 15em
.progress
border-radius: 0
.badge-super-late
background-color: $red
.badge-harvest
background-color: $blue
.planting-super-late
.planting-late
background-color: $beige
.planting
.planting-badges
position: absolute
.planting-thumbnail
padding: 0
border: 1px solid darken($beige, 10%)
border-radius: 4px
.planting-actions
top: -8em
.planting-name
position: relative
top: -1em
dl.planting-attributes
dt
text-align: left
dd
margin-left: auto
@media (min-width: $screen-md-min)
.planting-thumbnail
dl.planting-attributes
width: 100%
dt
text-align: left
width: 120px
dd
padding-left: 120px
margin-left: auto
.navbar .navbar-form
width: 250px
.layout-actions
width: 100%
#placesmap, #cropmap
height: 500px
#membermap
height: 250px
z-index: 0
.location-not-set
height: 250px
@@ -180,6 +199,8 @@ p.stats
border: none
text-align: center
margin-bottom: 1.5em
max-width: 160px
max-height: 200px
.member-thumbnail
text-align: left
@@ -226,6 +247,9 @@ li.crop-hierarchy
.navbar-bottom
margin: 40px 0px 0px 0px !important
.post-actions
margin-bottom: 1rem
// footer
footer
#footer1, #footer2, #footer3
@@ -255,6 +279,7 @@ footer
#maincontainer
min-height: 80%
padding: 50px
html, body
height: 100%
@@ -273,24 +298,6 @@ html, body
a
font-weight: 800
// Overrides applying only to mobile view. This must be at the end of the overrides file.
@media only screen and (max-width: 767px)
.sidebar
margin-left: 0
border-left: none
padding-left: 0
#map
height: 300px
.navbar .nav > li
display: block
.navbar .navbar-form
width: 185px
padding-left: 0
padding-right: 0
/* override "info" alert boxes to be green, not blue, on Growstuff */
$state-info-text: darken($green, 10%)
@@ -337,3 +344,55 @@ ul.plantings
ul.thumbnail-buttons
list-style-type: none
text-align: right
.hover-wrapper .text
position: absolute
visibility: hidden
.hover-wrapper:hover .text
visibility: visible
.homepage-listing
padding-bottom: 6px
@media (min-width: $screen-md-min)
.planting-thumbnail
dl.planting-attributes
width: 100%
dt
text-align: left
width: 120px
dd
padding-left: 120px
margin-left: auto
.navbar .navbar-form
width: 250px
// Overrides applying only to mobile view. This must be at the end of the overrides file.
@media only screen and (max-width: 767px)
.sidebar
margin-left: 0
border-left: none
padding-left: 0
#map
height: 300px
.navbar .nav > li
display: block
.navbar .navbar-form
width: 185px
padding-left: 0
padding-right: 0
.homepage
.thumbnail
height: 180px
.seed-thumbnail
height: 220px
#maincontainer
padding: 10px
+11
View File
@@ -0,0 +1,11 @@
.predictions
.metric
height: 180px
border: 1px solid lighten($green, 20%)
background: $white
margin: 4px
strong
font-size: 250%
font-align: center
h3
-38
View File
@@ -1,38 +0,0 @@
module Growstuff
module Constants
class PhotoModels
PLANTING = { type: 'planting', class: 'Planting', relation: 'plantings' }.freeze
HARVEST = { type: 'harvest', class: 'Harvest', relation: 'harvests' }.freeze
GARDEN = { type: 'garden', class: 'Garden', relation: 'gardens' }.freeze
SEED = { type: 'seed', class: 'Seed', relation: 'seeds' }.freeze
ALL = [PLANTING, HARVEST, GARDEN, SEED].freeze
def self.types
ALL.map do |model|
model[:type]
end
end
def self.relations
ALL.map do |model|
model[:relation]
end
end
def self.get_relation(object, type)
relation = ALL.select do |model|
model[:type] == type
end[0][:relation]
object.send(relation)
end
def self.get_item(type)
class_name = ALL.select do |model|
model[:type] == type
end[0][:class]
class_name.constantize
end
end
end
end
@@ -1,53 +0,0 @@
class AccountTypesController < ApplicationController
before_action :authenticate_member!
load_and_authorize_resource
respond_to :html
# GET /account_types
def index
@account_types = AccountType.all
respond_with(@account_types)
end
# GET /account_types/1
def show
respond_with(@account_types)
end
# GET /account_types/new
def new
@account_type = AccountType.new
respond_with(@account_type)
end
# GET /account_types/1/edit
def edit
respond_with(@account_type)
end
# POST /account_types
def create
@account_type = AccountType.new(account_type_params)
flash[:notice] = I18n.t('account_types.created') if @account_type.save
respond_with(@account_type)
end
# PUT /account_types/1
def update
flash[:notice] = I18n.t('account_types.updated') if @account_type.update(account_type_params)
respond_with(@account_type)
end
# DELETE /account_types/1
def destroy
@account_type.destroy
flash[:notice] = I18n.t('account_types.deleted')
respond_with(@account_type)
end
private
def account_type_params
params.require(:account_type).permit(:is_paid, :is_permanent_paid, :name)
end
end
-31
View File
@@ -1,31 +0,0 @@
class AccountsController < ApplicationController
before_action :authenticate_member!
load_and_authorize_resource
respond_to :html
# GET /accounts
def index
@accounts = Account.all
respond_with(@accounts)
end
# GET /accounts/1
def show
respond_with(@account)
end
# GET /accounts/1/edit
def edit; end
# PUT /accounts/1
def update
flash[:notice] = I18n.t('account.update') if @account.update(params[:account])
respond_with(@account)
end
private
def account_params
params.require(:account).permit(:account_type_id, :member_id, :paid_until)
end
end
@@ -0,0 +1,14 @@
module Admin
class MembersController < ApplicationController
before_action :auth!
def index
@members = Member.order(:login_name).paginate(page: params[:page])
end
private
def auth!
authorize! :manage, :all
end
end
end
@@ -1,21 +0,0 @@
class Admin::OrdersController < ApplicationController
def index
authorize! :manage, :all
respond_to do |format|
format.html # index.html.haml
end
end
def search
authorize! :manage, :all
@orders = Order.search(by: params[:search_by], for: params[:search_text])
if @orders.empty?
flash[:alert] = "Couldn't find order with #{params[:search_by]} = #{params[:search_text]}"
end
respond_to do |format|
format.html # index.html.haml
end
end
end
@@ -1,5 +1,5 @@
class AlternateNamesController < ApplicationController
before_action :authenticate_member!, except: [:index, :show]
before_action :authenticate_member!, except: %i(index show)
load_and_authorize_resource
respond_to :html, :json
responders :flash
@@ -7,7 +7,7 @@ class AlternateNamesController < ApplicationController
# GET /alternate_names
# GET /alternate_names.json
def index
@alternate_names = AlternateName.all
@alternate_names = AlternateName.all.order(:name)
respond_with(@alternate_names)
end
@@ -0,0 +1,7 @@
module Api
module V1
class BaseController < JSONAPI::ResourceController
abstract
end
end
end
@@ -0,0 +1,6 @@
module Api
module V1
class CropsController < BaseController
end
end
end
@@ -0,0 +1,6 @@
module Api
module V1
class GardensController < BaseController
end
end
end
@@ -0,0 +1,6 @@
module Api
module V1
class HarvestsController < BaseController
end
end
end
@@ -0,0 +1,6 @@
module Api
module V1
class MembersController < BaseController
end
end
end
@@ -0,0 +1,6 @@
module Api
module V1
class PhotosController < BaseController
end
end
end
@@ -0,0 +1,6 @@
module Api
module V1
class PlantingsController < BaseController
end
end
end
@@ -0,0 +1,6 @@
module Api
module V1
class SeedsController < BaseController
end
end
end
@@ -1,3 +1,4 @@
require './lib/actions/oauth_signup_action'
class AuthenticationsController < ApplicationController
before_action :authenticate_member!
load_and_authorize_resource
@@ -0,0 +1,30 @@
module Charts
class CropsController < ApplicationController
respond_to :json
def sunniness
pie_chart_query 'sunniness'
end
def planted_from
pie_chart_query 'planted_from'
end
def harvested_for
@crop = Crop.find(params[:crop_id])
render json: Harvest.joins(:plant_part)
.where(crop: @crop)
.group("plant_parts.name").count(:id)
end
private
def pie_chart_query(field)
@crop = Crop.find(params[:crop_id])
render json: Planting.where(crop: @crop)
.where.not(field.to_sym => nil)
.where.not(field.to_sym => '')
.group(field.to_sym).count(:id)
end
end
end
@@ -0,0 +1,16 @@
module Charts
class GardensController < ApplicationController
respond_to :json
def timeline
@data = []
@garden = Garden.find(params[:garden_id])
@garden.plantings.where.not(planted_at: nil)
.order(finished_at: :desc).each do |p|
# use finished_at if we have it, otherwise use predictions
finish = p.finished_at.presence || p.finish_predicted_at
@data << [p.crop.name, p.planted_at, finish] if finish.present?
end
render json: @data
end
end
end
+2 -2
View File
@@ -1,12 +1,12 @@
class CommentsController < ApplicationController
before_action :authenticate_member!, except: [:index, :show]
before_action :authenticate_member!, except: %i(index show)
load_and_authorize_resource
respond_to :html, :json
respond_to :rss, only: :index
responders :flash
def index
@comments = Comment.paginate(page: params[:page])
@comments = Comment.order(created_at: :desc).paginate(page: params[:page])
respond_with(@comments)
end
+13 -12
View File
@@ -1,9 +1,9 @@
require 'will_paginate/array'
class CropsController < ApplicationController
before_action :authenticate_member!, except: [:index, :hierarchy, :search, :show]
before_action :authenticate_member!, except: %i(index hierarchy search show)
load_and_authorize_resource
skip_authorize_resource only: [:hierarchy, :search]
skip_authorize_resource only: %i(hierarchy search)
respond_to :html, :json, :rss, :csv
responders :flash
@@ -50,10 +50,10 @@ class CropsController < ApplicationController
def show
@crop = Crop.includes(:scientific_names, plantings: :photos).find(params[:id])
@posts = @crop.posts.paginate(page: params[:page])
@posts = @crop.posts.order(created_at: :desc).paginate(page: params[:page])
# respond_with(@crop)
respond_to do |format|
format.html # show.html.haml
format.html
format.json { render json: @crop.to_json(crop_json_fields) }
end
end
@@ -134,10 +134,10 @@ class CropsController < ApplicationController
end
def recreate_names(param_name, name_type)
return unless params[param_name].present?
return if params[param_name].blank?
destroy_names(name_type)
params[param_name].each do |_i, value|
create_name!(name_type, value)
create_name!(name_type, value) unless value.empty?
end
end
@@ -154,13 +154,14 @@ class CropsController < ApplicationController
:name,
:parent_id,
:creator_id,
:perennial,
:approval_status,
:request_notes,
:reason_for_rejection,
:rejection_notes,
scientific_names_attributes: [:scientific_name,
:_destroy,
:id])
scientific_names_attributes: %i(scientific_name
_destroy
id))
end
def filename
@@ -172,7 +173,7 @@ class CropsController < ApplicationController
include: {
plantings: {
include: {
owner: { only: [:id, :login_name, :location, :latitude, :longitude] }
owner: { only: %i(id login_name location latitude longitude) }
}
},
scientific_names: { only: [:name] },
@@ -184,7 +185,7 @@ class CropsController < ApplicationController
def crops
q = Crop.approved.includes(:scientific_names, plantings: :photos)
q = q.popular unless @sort == 'alpha'
q.includes(:photos).paginate(page: params[:page])
q.order("LOWER(crops.name)").includes(:photos).paginate(page: params[:page])
end
def requested_crops
+1 -1
View File
@@ -5,7 +5,7 @@ class ForumsController < ApplicationController
# GET /forums
# GET /forums.json
def index
@forums = Forum.all
@forums = Forum.all.order(:name)
respond_with(@forums)
end
+3 -3
View File
@@ -1,6 +1,6 @@
class GardensController < ApplicationController
before_action :authenticate_member!, except: [:index, :show]
after_action :expire_homepage, only: [:create, :delete]
before_action :authenticate_member!, except: %i(index show)
after_action :expire_homepage, only: %i(create delete)
load_and_authorize_resource
respond_to :html, :json
@@ -68,6 +68,6 @@ class GardensController < ApplicationController
def gardens
g = @owner ? @owner.gardens : Garden.all
g = g.active unless @show_all
g.joins(:owner).order(:updated_at).paginate(page: params[:page])
g.joins(:owner).order(:name).paginate(page: params[:page])
end
end
+16 -4
View File
@@ -1,8 +1,9 @@
class HarvestsController < ApplicationController
before_action :authenticate_member!, except: [:index, :show]
before_action :authenticate_member!, except: %i(index show)
after_action :update_crop_medians, only: %i(create update destroy)
load_and_authorize_resource
respond_to :html, :json
respond_to :csv, only: :index
respond_to :csv, :rss, only: :index
responders :flash
def index
@@ -17,6 +18,7 @@ class HarvestsController < ApplicationController
def show
@matching_plantings = matching_plantings if @harvest.owner == current_member
@photos = @harvest.photos.order(created_at: :desc).paginate(page: params[:page])
respond_with(@harvest)
end
@@ -33,6 +35,7 @@ class HarvestsController < ApplicationController
def create
@harvest.crop_id = @harvest.planting.crop_id if @harvest.planting_id
@harvest.harvested_at = Time.zone.now if @harvest.harvested_at.blank?
@harvest.save
respond_with(@harvest)
end
@@ -71,8 +74,8 @@ class HarvestsController < ApplicationController
elsif @planting
@planting.harvests
else
Harvest
end.joins(:owner, :crop).paginate(page: params[:page])
Harvest.all
end.order(harvested_at: :desc).joins(:owner, :crop).paginate(page: params[:page])
end
def csv_filename
@@ -83,4 +86,13 @@ class HarvestsController < ApplicationController
end
"Growstuff-#{specifics}Harvests-#{Time.zone.now.to_s(:number)}.csv"
end
def update_crop_medians
# We only update medians to predict plantings
# if this harvest is not linked to a planting, then do nothing
return if @harvest.planting.nil?
@harvest.planting.update_harvest_days!
@harvest.crop.update_harvest_medians
end
end
+13 -11
View File
@@ -1,6 +1,6 @@
class MembersController < ApplicationController
load_and_authorize_resource except: [:finish_signup, :unsubscribe, :view_follows, :view_followers, :show]
skip_authorize_resource only: [:nearby, :unsubscribe, :finish_signup]
load_and_authorize_resource except: %i(finish_signup unsubscribe view_follows view_followers show)
skip_authorize_resource only: %i(nearby unsubscribe finish_signup)
respond_to :html, :json, :rss
after_action :expire_homepage, only: :create
@@ -20,6 +20,7 @@ class MembersController < ApplicationController
@facebook_auth = @member.auth('facebook')
@posts = @member.posts
@gardens = @member.gardens.active.order(:name)
@harvests = @member.harvests
# The garden form partial is called from the "New Garden" tab;
# it requires a garden to be passed in @garden.
@@ -62,7 +63,6 @@ class MembersController < ApplicationController
@member.update(@type => false)
flash.now[:notice] = I18n.t('members.unsubscribed', email_type: EMAIL_TYPE_STRING[@type])
rescue ActiveSupport::MessageVerifier::InvalidSignature
flash.now[:alert] = I18n.t('members.unsubscribe.error')
end
@@ -88,16 +88,18 @@ class MembersController < ApplicationController
end
def member_json_fields
[
:id, :login_name,
:slug, :bio, :created_at,
:location, :latitude, :longitude
]
%i(
id login_name
slug bio created_at
location latitude longitude
)
end
def members
q = Member.confirmed
q = q.recently_joined if @sort == 'recently_joined'
q.paginate(page: params[:page])
if @sort == 'recently_joined'
Member.recently_joined
else
Member.order(:login_name)
end.confirmed.paginate(page: params[:page])
end
end
+6 -4
View File
@@ -6,7 +6,7 @@ class NotificationsController < ApplicationController
# GET /notifications
def index
@notifications = Notification.by_recipient(current_member).page(params[:page])
@notifications = Notification.by_recipient(current_member).order(:created_at).page(params[:page])
end
# GET /notifications/1
@@ -31,9 +31,11 @@ class NotificationsController < ApplicationController
@sender_notification.read = true
@sender_notification.save
@recipient = @sender_notification.sender
@subject = @sender_notification.subject =~ /^Re: / ?
@sender_notification.subject :
"Re: " + @sender_notification.subject
@subject = if @sender_notification.subject.start_with? 'Re: '
@sender_notification.subject
else
"Re: #{@sender_notification.subject}"
end
end
# DELETE /notifications/1
@@ -29,15 +29,15 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController
member = action.find_or_create_from_authorization(auth)
@authentication = action.establish_authentication(auth, member)
unless action.member_created?
sign_in_and_redirect member, event: :authentication # this will throw if @user is not activated
set_flash_message(:notice, :success, kind: auth['provider']) if is_navigational_format?
else
raise "Invalid provider" unless ['facebook', 'twitter', 'flickr'].index(auth['provider'].to_s)
if action.member_created?
raise "Invalid provider" unless %w(facebook twitter flickr).index(auth['provider'].to_s)
session["devise.#{auth['provider']}_data"] = request.env["omniauth.auth"]
sign_in member
redirect_to finish_signup_url(member)
else
sign_in_and_redirect member, event: :authentication # this will throw if @user is not activated
set_flash_message(:notice, :success, kind: auth['provider']) if is_navigational_format?
end
end
-29
View File
@@ -1,29 +0,0 @@
class OrderItemsController < ApplicationController
before_action :authenticate_member!
load_and_authorize_resource
# POST /order_items
def create
if params[:order_item][:price]
params[:order_item][:price] = params[:order_item][:price].to_f * 100 # convert to cents
end
@order_item = OrderItem.new(order_item_params)
@order_item.order = current_member.current_order || Order.create(member_id: current_member.id)
respond_to do |format|
if @order_item.save
format.html { redirect_to @order_item.order, notice: 'Added item to your order.' }
else
errors = @order_item.errors.empty? ?
"There was a problem with your order." : @order_item.errors.full_messages.to_sentence
format.html { redirect_to shop_path, alert: errors }
end
end
end
private
def order_item_params
params.require(:order_item).permit(:order_id, :price, :product_id, :quantity)
end
end
-90
View File
@@ -1,90 +0,0 @@
class OrdersController < ApplicationController
before_action :authenticate_member!
load_and_authorize_resource
# GET /orders
def index
@orders = Order.by_member(current_member)
respond_to do |format|
format.html # index.html.erb
end
end
# GET /orders/1
def show
respond_to do |format|
format.html # show.html.erb
end
end
# GET /orders/new
def new
@order = Order.new
respond_to do |format|
format.html # new.html.erb
end
end
# checkout with PayPal
def checkout
respond_to do |format|
if @order.update_attributes(referral_code: params[:referral_code])
response = EXPRESS_GATEWAY.setup_purchase(
@order.total,
items: @order.activemerchant_items,
currency: Growstuff::Application.config.currency,
no_shipping: true,
ip: request.remote_ip,
return_url: complete_order_url,
cancel_return_url: shop_url
)
format.html { redirect_to EXPRESS_GATEWAY.redirect_url_for(response.token) }
else
format.html { render action: "show" }
end
end
end
def complete
if params[:token] && params['PayerID']
purchase = EXPRESS_GATEWAY.purchase(
@order.total,
currency: Growstuff::Application.config.currency,
ip: request.remote_ip,
payer_id: params['PayerID'],
token: params[:token]
)
if purchase.success?
@order.completed_at = Time.zone.now
@order.record_paypal_details(params[:token])
else
flash[:alert] = "Could not complete your order. Please notify support."
end
else
flash[:alert] = "PayPal didn't return a token or payer_id for your order. Please notify support."
end
@order.update_account # apply paid account benefits, etc.
respond_to do |format|
format.html # new.html.erb
end
end
def cancel
respond_to do |format|
format.html { redirect_to shop_url, notice: 'Order was cancelled.' }
end
end
# DELETE /orders/1
def destroy
@order.destroy
respond_to do |format|
format.html { redirect_to shop_url, notice: 'Order was deleted.' }
end
end
end
@@ -3,11 +3,19 @@ class PhotoAssociationsController < ApplicationController
respond_to :json, :html
def destroy
raise "Photos not supported" unless Photo::PHOTO_CAPABLE.include? item_class
@photo = Photo.find_by!(id: params[:photo_id], owner: current_member)
collection = Growstuff::Constants::PhotoModels.get_relation(@photo, params[:type])
item_class = Growstuff::Constants::PhotoModels.get_item(params[:type])
@item = item_class.find_by!(id: params[:id], owner_id: current_member.id)
collection.delete(@item)
@item = Photographing.item(item_id, item_class)
@item.photos.delete(@photo)
# @photo.destroy_if_unused
respond_with(@photo)
end
def item_class
params[:type].capitalize
end
def item_id
params[:id]
end
end
+44 -29
View File
@@ -1,20 +1,28 @@
class PhotosController < ApplicationController
before_action :authenticate_member!, except: [:index, :show]
after_action :expire_homepage, only: [:create, :delete]
before_action :authenticate_member!, except: %i(index show)
after_action :expire_homepage, only: %i(create delete)
load_and_authorize_resource
respond_to :html, :json
responders :flash
def index
@photos = Photo.paginate(page: params[:page])
if params[:crop_id]
@crop = Crop.find params[:crop_id]
@photos = @crop.photos
else
@photos = Photo.all
end
@photos = @photos.order(created_at: :desc)
.includes(:owner)
.paginate(page: params[:page])
respond_with(@photos)
end
def new
@type = params[:type]
@id = params[:id]
@photo = Photo.new
@item = item_to_link_to
@type = item_type
@id = item_id
retrieve_from_flickr
respond_with @photo
end
@@ -24,9 +32,13 @@ class PhotosController < ApplicationController
end
def create
find_or_create_photo_from_flickr_photo
add_photo_to_collection
@photo.save if @photo.present?
ActiveRecord::Base.transaction do
@photo = find_or_create_photo_from_flickr_photo
@item = item_to_link_to
raise "Could not find this #{type} owned by you" unless @item
@item.photos << @photo unless @item.photos.include? @photo
@photo.save! if @photo.present?
end
respond_with @photo
end
@@ -42,8 +54,14 @@ class PhotosController < ApplicationController
private
def item_id?
params.key? :id
#
# Params
def item_id
params[:id]
end
def item_type
params[:type]
end
def flickr_photo_id_param
@@ -55,26 +73,23 @@ class PhotosController < ApplicationController
:license_url, :thumbnail_url, :fullsize_url, :link_url)
end
def find_or_create_photo_from_flickr_photo
@photo = Photo.find_by(flickr_photo_id: flickr_photo_id_param)
@photo = Photo.new(photo_params) unless @photo
@photo.owner_id = current_member.id
@photo.set_flickr_metadata
@photo
# Item with photos attached
def item_to_link_to
raise "No item id provided" if item_id.nil?
raise "No item type provided" if item_type.nil?
item_class = item_type.capitalize
raise "Photos not supported" unless Photo::PHOTO_CAPABLE.include? item_class
item_class.constantize.find_by!(id: params[:id], owner_id: current_member.id)
end
def add_photo_to_collection
raise "Missing or invalid type provided" unless Growstuff::Constants::PhotoModels.types.include?(params[:type])
raise "No item id provided" unless item_id?
collection = Growstuff::Constants::PhotoModels.get_relation(@photo, params[:type])
item_class = Growstuff::Constants::PhotoModels.get_item(params[:type])
item = item_class.find_by!(id: params[:id], owner_id: current_member.id)
raise "Could not find this item owned by you" unless item
collection << item unless collection.include?(item)
rescue => e
flash[:alert] = e.message
#
# Flickr retrieval
def find_or_create_photo_from_flickr_photo
photo = Photo.find_by(flickr_photo_id: flickr_photo_id_param)
photo ||= Photo.new(photo_params)
photo.owner_id = current_member.id
photo.set_flickr_metadata!
photo
end
def retrieve_from_flickr
+6 -6
View File
@@ -7,9 +7,9 @@ class PlacesController < ApplicationController
format.html
# json response is whatever we want to map here
format.json do
render json: Member.located.to_json(only: [
:id, :login_name, :slug, :location, :latitude, :longitude
])
render json: Member.located.to_json(only: %i(
id login_name slug location latitude longitude
))
end
end
end
@@ -22,9 +22,9 @@ class PlacesController < ApplicationController
respond_to do |format|
format.html # show.html.haml
format.json do
render json: @nearby_members.to_json(only: [
:id, :login_name, :slug, :location, :latitude, :longitude
])
render json: @nearby_members.to_json(only: %i(
id login_name slug location latitude longitude
))
end
end
end
+1 -1
View File
@@ -4,7 +4,7 @@ class PlantPartsController < ApplicationController
responders :flash
def index
@plant_parts = PlantPart.all
@plant_parts = PlantPart.all.order(:name)
respond_with(@plant_parts)
end
+22 -7
View File
@@ -1,6 +1,8 @@
class PlantingsController < ApplicationController
before_action :authenticate_member!, except: [:index, :show]
after_action :expire_homepage, only: [:create, :update, :destroy]
before_action :authenticate_member!, except: %i(index show)
after_action :expire_homepage, only: %i(create update destroy)
after_action :update_crop_medians, only: %i(create update destroy)
after_action :update_planting_medians, only: :update
load_and_authorize_resource
respond_to :html, :json
@@ -29,11 +31,13 @@ class PlantingsController < ApplicationController
@planting = Planting.includes(:owner, :crop, :garden, :photos)
.friendly
.find(params[:id])
@photos = @planting.photos.order(date_taken: :desc).includes(:owner).paginate(page: params[:page])
respond_with @planting
end
def new
@planting = Planting.new(planted_at: Time.zone.today)
@seed = Seed.find_by(slug: params[:seed_id]) if params[:seed_id]
# using find_by_id here because it returns nil, unlike find
@crop = Crop.approved.find_by(id: params[:crop_id]) || Crop.new
@@ -51,28 +55,36 @@ class PlantingsController < ApplicationController
def create
@planting = Planting.new(planting_params)
@planting.owner = current_member
@planting.calc_and_set_days_before_maturity
@planting.save
@planting.crop = @planting.parent_seed.crop if @planting.parent_seed.present?
@planting.save!
respond_with @planting
end
def update
@planting.calc_and_set_days_before_maturity
@planting.update(planting_params)
respond_with @planting
end
def destroy
@planting.destroy
respond_with @planting, location: garden
respond_with @planting, location: @planting.garden
end
private
def update_crop_medians
@planting.crop.update_lifespan_medians
end
def update_planting_medians
@planting.update_harvest_days!
end
def planting_params
params[:planted_at] = parse_date(params[:planted_at]) if params[:planted_at]
params.require(:planting).permit(
:crop_id, :description, :garden_id, :planted_at,
:parent_seed_id,
:quantity, :sunniness, :planted_from, :finished,
:finished_at
)
@@ -87,6 +99,9 @@ class PlantingsController < ApplicationController
Planting
end
p = p.current unless @show_all
p.joins(:owner, :crop, :garden).order(:created_at).paginate(page: params[:page])
p.joins(:owner, :crop, :garden)
.order(created_at: :desc)
.includes(:crop, :owner, :garden)
.paginate(page: params[:page])
end
end
+3 -3
View File
@@ -1,8 +1,8 @@
class PostsController < ApplicationController
before_action :authenticate_member!, except: [:index, :show]
before_action :authenticate_member!, except: %i(index show)
load_and_authorize_resource
respond_to :html, :json
respond_to :rss, only: [:index, :show]
respond_to :rss, only: %i(index show)
# GET /posts
# GET /posts.json
@@ -66,6 +66,6 @@ class PostsController < ApplicationController
@author.posts
else
Post
end.includes(:author, comments: :author).paginate(page: params[:page])
end.order(created_at: :desc).includes(:author, comments: :author).paginate(page: params[:page])
end
end
-46
View File
@@ -1,46 +0,0 @@
class ProductsController < ApplicationController
before_action :authenticate_member!
load_and_authorize_resource
respond_to :html
responders :flash
def index
@products = Product.all
respond_with @products
end
def show
respond_with @product
end
def new
@product = Product.new
respond_with @product
end
def edit
respond_with @product
end
def create
@product = Product.create(product_params)
respond_with @product
end
def update
@product.update(product_params)
respond_with @product
end
def destroy
@product.destroy
respond_with @product
end
private
def product_params
params.require(:product).permit(:description, :min_price, :recommended_price, :name,
:account_type_id, :paid_months)
end
end
+1 -1
View File
@@ -5,7 +5,7 @@ class RolesController < ApplicationController
responders :flash
def index
@roles = Role.all
@roles = Role.all.order(:name)
respond_with @roles
end
@@ -1,5 +1,5 @@
class ScientificNamesController < ApplicationController
before_action :authenticate_member!, except: [:index, :show]
before_action :authenticate_member!, except: %i(index show)
load_and_authorize_resource
respond_to :html, :json
responders :flash
@@ -7,7 +7,7 @@ class ScientificNamesController < ApplicationController
# GET /scientific_names
# GET /scientific_names.json
def index
@scientific_names = ScientificName.all
@scientific_names = ScientificName.all.order(:name)
respond_with(@scientific_names)
end
+14 -17
View File
@@ -1,5 +1,5 @@
class SeedsController < ApplicationController
before_action :authenticate_member!, except: [:index, :show]
before_action :authenticate_member!, except: %i(index show)
load_and_authorize_resource
respond_to :html, :json
respond_to :csv, only: :index
@@ -16,43 +16,37 @@ class SeedsController < ApplicationController
respond_with(@seeds)
end
# GET /seeds/1
# GET /seeds/1.json
def show
@photos = @seed.photos.includes(:owner).order(created_at: :desc).paginate(page: params[:page])
respond_with(@seed)
end
# GET /seeds/new
# GET /seeds/new.json
def new
@seed = Seed.new
# using find_by_id here because it returns nil, unlike find
@crop = Crop.find_or_initialize_by(id: params[:crop_id])
if params[:planting_id]
@planting = Planting.find_by(slug: params[:planting_id])
else
@crop = Crop.find_or_initialize_by(id: params[:crop_id])
end
respond_with(@seed)
end
# GET /seeds/1/edit
def edit; end
# POST /seeds
# POST /seeds.json
def create
@seed = Seed.new(seed_params)
@seed.owner = current_member
@seed.crop = @seed.parent_planting.crop if @seed.parent_planting
flash[:notice] = "Successfully added #{@seed.crop} seed to your stash." if @seed.save
respond_with(@seed)
end
# PUT /seeds/1
# PUT /seeds/1.json
def update
flash[:notice] = 'Seed was successfully updated.' if @seed.update(seed_params)
respond_with(@seed)
end
# DELETE /seeds/1
# DELETE /seeds/1.json
def destroy
@seed.destroy
respond_with(@seed)
@@ -63,8 +57,11 @@ class SeedsController < ApplicationController
def seed_params
params.require(:seed).permit(
:crop_id, :description, :quantity, :plant_before,
:days_until_maturity_min, :days_until_maturity_max, :organic, :gmo,
:heirloom, :tradable_to, :slug
:parent_planting_id,
:days_until_maturity_min, :days_until_maturity_max,
:organic, :gmo,
:heirloom, :tradable_to, :slug,
:finished, :finished_at
)
end
@@ -75,7 +72,7 @@ class SeedsController < ApplicationController
crop.seeds
else
Seed
end.includes(:owner, :crop).paginate(page: params[:page])
end.order(created_at: :desc).includes(:owner, :crop).paginate(page: params[:page])
end
def csv_filename
+1 -1
View File
@@ -2,7 +2,7 @@ class SessionsController < Devise::SessionsController
respond_to :json
def create
super do |resource|
super do |_resource|
if Crop.pending_approval.present? && current_member.role?(:crop_wrangler)
flash[:alert] = "There are crops waiting to be wrangled."
end
-19
View File
@@ -1,19 +0,0 @@
class ShopController < ApplicationController
respond_to :html
def index
@products = Product.all
@order_item = OrderItem.new
# this is (hopefully) part of a short-term hack to prevent people from
# ordering multiple subscriptions, which would be very confusing to deal
# with. We check whether they have an order already in progress, and if
# so, point that out to them and encourage them to checkout, rather than
# letting them add more stuff to their order.
@order = nil
@most_recent_item = nil
return unless current_member
@order = current_member.current_order
@most_recent_item = @order.order_items.first if @order
end
end
+9 -22
View File
@@ -1,26 +1,9 @@
module ApplicationHelper
def price_in_dollars(price)
sprintf('%.2f', price / 100.0)
end
# 999 cents becomes 9.99 AUD -- for products/orders/etc
def price_with_currency(price)
sprintf('%.2f %s', price / 100.0, Growstuff::Application.config.currency)
end
def parse_date(str)
str ||= '' # Date.parse barfs on nil
str == '' ? nil : Date.parse(str)
end
def forex_link(price)
pid = price_in_dollars(price)
currency = Growstuff::Application.config.currency
link = "http://www.wolframalpha.com/input/?i=#{pid}+#{currency}"
link_to "(convert)", link, target: "_blank", rel: "noopener noreferrer"
end
def build_alert_classes(alert_type = :info)
classes = 'alert alert-dismissable '
case alert_type.to_sym
@@ -86,11 +69,15 @@ module ApplicationHelper
def show_inactive_tickbox_path(type, owner, show_all)
all = show_all ? '' : 1
if owner
plantings_by_owner_path(owner: owner.slug, all: all) if type == 'plantings'
gardens_by_owner_path(owner: owner.slug, all: all) if type == 'gardens'
else
plantings_path(all: all) if type == 'plantings'
gardens_path(all: all) if type == 'gardens'
if type == 'plantings'
plantings_by_owner_path(owner: owner.slug, all: all)
elsif type == 'gardens'
gardens_by_owner_path(owner: owner.slug, all: all)
end
elsif type == 'plantings'
plantings_path(all: all)
elsif type == 'gardens'
gardens_path(all: all)
end
end
+2 -2
View File
@@ -11,7 +11,7 @@ module AutoSuggestHelper
resource = resource.class.name.downcase
source_path = Rails.application.routes.url_helpers.send("#{source}s_search_path")
%Q{
%(
<input id="#{source}" class="auto-suggest #{options[:class]}"
type="text" value="#{default}" data-source-url="#{source_path}",
placeholder="e.g. lettuce">
@@ -20,6 +20,6 @@ module AutoSuggestHelper
</noscript>
<input id="#{resource}_#{source}_id" class="auto-suggest-id"
type="hidden" name="#{resource}[#{source}_id]" value="#{default_id}">
}.html_safe
).html_safe
end
end
+1 -3
View File
@@ -8,9 +8,7 @@ module CropsHelper
total_quantity += seed.quantity if seed.quantity
end
if !seeds.any?
return "You don't have any seeds of this crop."
end
return "You don't have any seeds of this crop." if seeds.none?
if total_quantity != 0
"You have #{total_quantity} #{Seed.model_name.human(count: total_quantity)} of this crop."
+8 -3
View File
@@ -15,7 +15,7 @@ module HarvestsHelper
if harvest.unit == 'individual' # just the number
number_to_human(harvest.quantity, strip_insignificant_zeros: true)
elsif !harvest.unit.blank? # pluralize anything else
elsif harvest.unit.present? # pluralize anything else
pluralize(number_to_human(harvest.quantity, strip_insignificant_zeros: true), harvest.unit)
else
"#{number_to_human(harvest.quantity, strip_insignificant_zeros: true)} #{harvest.unit}"
@@ -28,7 +28,12 @@ module HarvestsHelper
end
def display_harvest_description(harvest)
return "No description provided." if harvest.description.nil?
harvest.description
if harvest.description.nil?
"no description provided."
else
truncate(harvest.description, length: 50, separator: ' ', omission: '... ') do
link_to "Read more", harvest_path(harvest)
end
end
end
end
+51
View File
@@ -0,0 +1,51 @@
module PhotosHelper
def crop_image_path(crop)
if crop.default_photo.present?
crop.default_photo.thumbnail_url
else
placeholder_image
end
end
def garden_image_path(garden)
if garden.default_photo.present?
garden.default_photo.thumbnail_url
else
placeholder_image
end
end
def planting_image_path(planting)
if planting.photos.present?
planting.photos.order(date_taken: :desc).first.thumbnail_url
else
placeholder_image
end
end
def harvest_image_path(harvest)
if harvest.photos.present?
harvest.photos.order(date_taken: :desc).first.thumbnail_url
elsif harvest.planting.present?
planting_image_path(harvest.planting)
else
placeholder_image
end
end
def seed_image_path(seed)
if seed.default_photo.present?
seed.default_photo.thumbnail_url
elsif seed.crop.default_photo.present?
seed.crop.default_photo.thumbnail_url
else
placeholder_image
end
end
private
def placeholder_image
'placeholder_150.png'
end
end
+23 -15
View File
@@ -1,18 +1,6 @@
module PlantingsHelper
def display_days_before_maturity(planting)
# First try to calc from finished/finished_at
if planting.finished? || planting.finished_at.present?
planting.days_until_finished.to_s
# then try to calc from planted at + maturity
elsif planting.planted_at.present? && planting.days_before_maturity.present?
planting.days_until_mature.to_s
else
"unknown"
end
end
def display_finished(planting)
if !planting.finished_at.nil?
if planting.finished_at.present?
planting.finished_at
elsif planting.finished
"Yes (no date specified)"
@@ -22,11 +10,11 @@ module PlantingsHelper
end
def display_planted_from(planting)
!planting.planted_from.blank? ? planting.planted_from : "not specified"
planting.planted_from.present? ? planting.planted_from : "not specified"
end
def display_planting_quantity(planting)
!planting.quantity.blank? ? planting.quantity : "not specified"
planting.quantity.present? ? planting.quantity : "not specified"
end
def display_planting(planting)
@@ -44,4 +32,24 @@ module PlantingsHelper
def plantings_active_tickbox_path(owner, show_all)
show_inactive_tickbox_path('plantings', owner, show_all)
end
def days_from_now_to_finished(planting)
return unless planting.finish_is_predicatable?
(planting.finish_predicted_at - Time.zone.today).to_i
end
def days_from_now_to_first_harvest(planting)
return unless planting.planted_at.present? && planting.first_harvest_predicted_at.present?
(planting.first_harvest_predicted_at - Time.zone.today).to_i
end
def planting_classes(planting)
classes = []
classes << 'planting-growing' if planting.growing?
classes << 'planting-finished' if planting.finished?
classes << 'planting-harvest-time' if planting.harvest_time?
classes << 'planting-late' if planting.late?
classes << 'planting-super-late' if planting.super_late?
classes.join(' ')
end
end
+8 -5
View File
@@ -26,8 +26,8 @@ class Notifier < ActionMailer::Base
def planting_reminder(member)
@member = member
@plantings = @member.plantings.first(5)
@harvests = @member.harvests.first(5)
@plantings = @member.plantings.order(planted_at: :desc).first(5)
@harvests = @member.harvests.order(harvested_at: :desc).first(5)
# Encrypting
message = { member_id: @member.id, type: :send_planting_reminder }
@@ -37,17 +37,20 @@ class Notifier < ActionMailer::Base
end
def new_crop_request(member, request)
@member, @request = member, request
@member = member
@request = request
mail(to: @member.email, subject: "#{@request.requester.login_name} has requested #{@request.name} as a new crop")
end
def crop_request_approved(member, crop)
@member, @crop = member, crop
@member = member
@crop = crop
mail(to: @member.email, subject: "#{crop.name.capitalize} has been approved")
end
def crop_request_rejected(member, crop)
@member, @crop = member, crop
@member = member
@crop = crop
mail(to: @member.email, subject: "#{crop.name.capitalize} has been rejected")
end
end
+22 -28
View File
@@ -1,7 +1,13 @@
class Ability
include CanCan::Ability
def initialize(member) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
def initialize(member)
anon_abilities(member)
member_abilities(member) if member.present?
admin_abilities(member) if member.present? && member.role?(:admin)
end
def anon_abilities(_member)
# See the wiki for details: https://github.com/ryanb/cancan/wiki/Defining-Abilities
# everyone can do these things, even non-logged in
@@ -9,17 +15,18 @@ class Ability
can :view_follows, Member
can :view_followers, Member
# Everyone can see the charts
can :timeline, Garden
can :sunniness, Crop
can :planted_from, Crop
can :harvested_for, Crop
# except these, which don't make sense if you're not logged in
cannot :read, Notification
cannot :read, Authentication
cannot :read, Order
cannot :read, OrderItem
# and nobody should be able to view this except admins
cannot :read, Role
cannot :read, Product
cannot :read, Account
cannot :read, AccountType
# nobody should be able to view unapproved crops unless they
# are wranglers or admins
@@ -35,7 +42,9 @@ class Ability
can :read, AlternateName do |an|
an.crop.approved?
end
end
def member_abilities(member) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
return unless member
# members can see even rejected or pending crops if they requested it
@@ -102,23 +111,12 @@ class Ability
can :update, Photo, owner_id: member.id
can :destroy, Photo, owner_id: member.id
can :create, Seed
can :update, Seed, owner_id: member.id
can :create, Seed
can :update, Seed, owner_id: member.id
can :destroy, Seed, owner_id: member.id
# orders/shop/etc
can :create, Order
can :read, Order, member_id: member.id
can :complete, Order, member_id: member.id, completed_at: nil
can :checkout, Order, member_id: member.id, completed_at: nil
can :cancel, Order, member_id: member.id, completed_at: nil
can :destroy, Order, member_id: member.id, completed_at: nil
can :create, OrderItem
# for now, let's not let people mess with individual order items
cannot :read, OrderItem, order: { member_id: member.id }
cannot :update, OrderItem, order: { member_id: member.id, completed_at: nil }
cannot :destroy, OrderItem, order: { member_id: member.id, completed_at: nil }
can :create, Seed, owner_id: member.id, parent_planting: { owner_id: member.id }
can :update, Seed, owner_id: member.id, parent_planting: { owner_id: member.id }
can :destroy, Seed, owner_id: member.id, parent_planting: { owner_id: member.id }
# following/unfollowing permissions
can :create, Follow
@@ -126,18 +124,14 @@ class Ability
can :destroy, Follow
cannot :destroy, Follow, followed_id: member.id # can't unfollow yourself
end
def admin_abilities(member)
return unless member.role? :admin
can :read, :all
can :manage, :all
# can't change order history, because it's *history*
cannot :create, Order
cannot :complete, Order
cannot :destroy, Order
cannot :manage, OrderItem
# can't delete plant parts if they have harvests associated with them
cannot :destroy, PlantPart
can :destroy, PlantPart do |pp|
-23
View File
@@ -1,23 +0,0 @@
class Account < ActiveRecord::Base
belongs_to :member
belongs_to :account_type
validates :member_id, uniqueness: {
message: 'already has account details associated with it'
}
before_create do |account|
unless account.account_type
account.account_type = AccountType.find_or_create_by(name:
Growstuff::Application.config.default_account_type)
end
end
def paid_until_string
if account_type.is_permanent_paid
"forever"
elsif account_type.is_paid
paid_until.to_s
end
end
end
-7
View File
@@ -1,7 +0,0 @@
class AccountType < ActiveRecord::Base
has_many :products
def to_s
name
end
end
-1
View File
@@ -2,7 +2,6 @@ class Comment < ActiveRecord::Base
belongs_to :author, class_name: 'Member'
belongs_to :post
default_scope { order("created_at DESC") }
scope :post_order, -> { reorder("created_at ASC") } # for display on post page
after_create do
+12
View File
@@ -0,0 +1,12 @@
module Finishable
extend ActiveSupport::Concern
included do
scope :finished, -> { where(finished: true) }
scope :current, -> { where.not(finished: true) }
def active?
!finished
end
end
end
+7
View File
@@ -0,0 +1,7 @@
module Ownable
extend ActiveSupport::Concern
included do
belongs_to :owner, class_name: 'Member', foreign_key: 'owner_id', counter_cache: true
end
end
+2 -10
View File
@@ -1,18 +1,10 @@
require_relative '../../constants/photo_models.rb'
module PhotoCapable
extend ActiveSupport::Concern
included do
has_and_belongs_to_many :photos # rubocop:disable Rails/HasAndBelongsToMany
has_many :photos, through: :photographings, as: :photographable
has_many :photographings, as: :photographable, dependent: :destroy
before_destroy :remove_from_list
scope :has_photos, -> { includes(:photos).where.not(photos: { id: nil }) }
end
def remove_from_list
photolist = photos.to_a # save a temp copy of the photo list
photos.clear # clear relationship b/w object and photo
photolist.each(&:destroy_if_unused)
end
end
+61
View File
@@ -0,0 +1,61 @@
module PredictHarvest
extend ActiveSupport::Concern
included do # rubocop:disable Metrics/BlockLength
# dates
def first_harvest_date
harvests_with_dates.minimum(:harvested_at)
end
def last_harvest_date
harvests_with_dates.maximum(:harvested_at)
end
def first_harvest_predicted_at
return unless crop.median_days_to_first_harvest.present? && planted_at.present?
planted_at + crop.median_days_to_first_harvest.days
end
def last_harvest_predicted_at
return unless crop.median_days_to_last_harvest.present? && planted_at.present?
planted_at + crop.median_days_to_last_harvest.days
end
# actions
def update_harvest_days!
days_to_first_harvest = nil
days_to_last_harvest = nil
if planted_at.present? && harvests_with_dates.size.positive?
days_to_first_harvest = (first_harvest_date - planted_at).to_i
days_to_last_harvest = (last_harvest_date - planted_at).to_i if finished?
end
update(days_to_first_harvest: days_to_first_harvest, days_to_last_harvest: days_to_last_harvest)
end
# status
def harvest_time?
return false if crop.perennial || finished
# We have harvests but haven't finished
harvests.size.positive? ||
# or, we don't have harvests, but we predict we should by now
(first_harvest_predicted_at.present? &&
harvests.empty? &&
first_harvest_predicted_at < Time.zone.today)
end
def before_harvest_time?
first_harvest_predicted_at.present? &&
harvests.empty? &&
first_harvest_predicted_at.present? &&
first_harvest_predicted_at > Time.zone.today
end
private
def harvests_with_dates
harvests.where.not(harvested_at: nil)
end
end
end
+80
View File
@@ -0,0 +1,80 @@
module PredictPlanting
extend ActiveSupport::Concern
included do # rubocop:disable Metrics/BlockLength
## Triggers
before_save :calculate_lifespan
def calculate_lifespan
self.lifespan = (planted_at.present? && finished_at.present? ? finished_at - planted_at : nil)
end
# dates
def finish_predicted_at
if planted_at.blank?
nil
elsif crop.median_lifespan.present?
planted_at + crop.median_lifespan.days
elsif crop.parent.present? && crop.parent.median_lifespan.present?
planted_at + crop.parent.median_lifespan.days
end
end
# days
def expected_lifespan
if actual_lifespan.present?
actual_lifespan
elsif crop.median_lifespan.present?
crop.median_lifespan
elsif crop.parent.present? && crop.parent.median_lifespan.present?
crop.parent.median_lifespan
end
end
def actual_lifespan
return unless planted_at.present? && finished_at.present?
(finished_at - planted_at).to_i
end
def days_since_planted
(Time.zone.today - planted_at).to_i if planted_at.present?
end
# progress
def percentage_grown
if finished?
100
elsif !finish_is_predicatable?
nil
elsif growing?
calculate_percentage_grown
elsif planted?
0
end
end
# states
def finish_is_predicatable?
crop.annual? && planted_at.present? && finish_predicted_at.present?
end
# Planting has live more then 90 days past predicted finish
def super_late?
late? && (finish_predicted_at + 90.days) < Time.zone.today
end
def late?
crop.annual? && !finished &&
planted_at.present? &&
finish_predicted_at.present? &&
finish_predicted_at <= Time.zone.today
end
private
def calculate_percentage_grown
percent = (days_since_planted / expected_lifespan.to_f) * 100
(percent > 100 ? 100 : percent)
end
end
end
+57 -96
View File
@@ -1,47 +1,46 @@
class Crop < ActiveRecord::Base
extend FriendlyId
friendly_id :name, use: [:slugged, :finders]
friendly_id :name, use: %i(slugged finders)
has_many :scientific_names, after_add: :update_index, after_remove: :update_index
accepts_nested_attributes_for :scientific_names,
allow_destroy: true,
reject_if: :all_blank
##
## Triggers
before_destroy { |crop| crop.posts.clear }
##
## Relationships
has_many :scientific_names, after_add: :update_index, after_remove: :update_index, dependent: :destroy
accepts_nested_attributes_for :scientific_names, allow_destroy: true, reject_if: :all_blank
has_many :alternate_names, after_add: :update_index, after_remove: :update_index, dependent: :destroy
has_many :plantings
has_many :plantings, dependent: :destroy
has_many :seeds, dependent: :destroy
has_many :harvests, dependent: :destroy
has_many :photos, through: :plantings
has_many :seeds
has_many :harvests
has_many :plant_parts, -> { uniq.reorder("plant_parts.name") }, through: :harvests
belongs_to :creator, class_name: 'Member'
belongs_to :requester, class_name: 'Member'
belongs_to :parent, class_name: 'Crop'
has_many :varieties, class_name: 'Crop', foreign_key: 'parent_id'
has_many :varieties, class_name: 'Crop', foreign_key: 'parent_id', dependent: :nullify
has_and_belongs_to_many :posts # rubocop:disable Rails/HasAndBelongsToMany
before_destroy { |crop| crop.posts.clear }
default_scope { order("lower(crops.name) asc") }
scope :recent, lambda {
approved.reorder("created_at desc")
}
scope :toplevel, lambda {
approved.where(parent_id: nil)
}
scope :popular, lambda {
approved.reorder("plantings_count desc, lower(name) asc")
}
scope :randomized, lambda {
# ok on sqlite and psql, but not on mysql
approved.reorder('random()')
}
##
## Scopes
scope :recent, -> { approved.order(created_at: :desc) }
scope :toplevel, -> { approved.where(parent_id: nil) }
scope :popular, -> { approved.order("plantings_count desc, lower(name) asc") }
scope :pending_approval, -> { where(approval_status: "pending") }
scope :approved, -> { where(approval_status: "approved") }
scope :rejected, -> { where(approval_status: "rejected") }
scope :interesting, -> { approved.has_photos }
scope :has_photos, -> { includes(:photos).where.not(photos: { id: nil }) }
##
## Validations
# Reasons are only necessary when rejecting
validates :reason_for_rejection, presence: true, if: :rejected?
## This validation addresses a race condition
validate :approval_status_cannot_be_changed_again
validate :must_be_rejected_if_rejected_reasons_present
validate :must_have_meaningful_reason_for_rejection
## Wikipedia urls are only necessary when approving a crop
validates :en_wikipedia_url,
format: {
@@ -50,16 +49,6 @@ class Crop < ActiveRecord::Base
},
if: :approved?
## Reasons are only necessary when rejecting
validates :reason_for_rejection, presence: true, if: :rejected?
## This validation addresses a race condition
validate :approval_status_cannot_be_changed_again
validate :must_be_rejected_if_rejected_reasons_present
validate :must_have_meaningful_reason_for_rejection
####################################
# Elastic search configuration
if ENV["GROWSTUFF_ELASTICSEARCH"] == "true"
@@ -89,31 +78,25 @@ class Crop < ActiveRecord::Base
} do
mappings dynamic: 'false' do
indexes :id, type: 'long'
indexes :name, type: 'string', analyzer: 'gs_edgeNGram_analyzer'
indexes :approval_status, type: 'string'
indexes :name, type: 'text', analyzer: 'gs_edgeNGram_analyzer'
indexes :approval_status, type: 'text'
indexes :scientific_names do
indexes :name,
type: 'string',
type: 'text',
analyzer: 'gs_edgeNGram_analyzer',
# Disabling field-length norm (norm). If the norm option is turned on(by default),
# higher weigh would be given for shorter fields, which in our case is irrelevant.
norms: { enabled: false }
end
indexes :alternate_names do
indexes :name, type: 'string', analyzer: 'gs_edgeNGram_analyzer'
indexes :name, type: 'text', analyzer: 'gs_edgeNGram_analyzer'
end
end
end
end
def as_indexed_json(_options = {})
as_json(
only: [:id, :name, :approval_status],
include: {
scientific_names: { only: :name },
alternate_names: { only: :name }
}
)
def harvest_photos
Photo.joins(:harvests).where("harvests.crop_id": id)
end
# update the Elasticsearch index (only if we're using it in this
@@ -121,7 +104,6 @@ class Crop < ActiveRecord::Base
def update_index(_name_obj)
__elasticsearch__.index_document if ENV["GROWSTUFF_ELASTICSEARCH"] == "true"
end
# End Elasticsearch section
def to_s
@@ -132,19 +114,13 @@ class Crop < ActiveRecord::Base
scientific_names.first.name unless scientific_names.empty?
end
# crop.default_photo
# currently returns the first available photo, but exists so that
# later we can choose a default photo based on different criteria,
# eg. popularity
def default_photo
return photos.first if photos.any?
# Crop has no photos? Look for the most recent harvest with a photo.
harvest_with_photo = Harvest.where(crop_id: id).joins(:photos).order('harvests.id DESC').limit(1).first
harvest_with_photo.photos.first if harvest_with_photo
first_photo(:plantings) || first_photo(:harvests) || first_photo(:seeds)
end
# crop.sunniness
# returns hash indicating whether this crop is grown in
# sun/semi-shade/shade
# key: sunniness (eg. 'sun')
@@ -153,7 +129,6 @@ class Crop < ActiveRecord::Base
count_uses_of_property 'sunniness'
end
# crop.planted_from
# returns a hash of propagation methods (seed, seedling, etc),
# key: propagation method (eg. 'seed')
# value: count of how many times it's been used by plantings
@@ -161,7 +136,6 @@ class Crop < ActiveRecord::Base
count_uses_of_property 'planted_from'
end
# crop.popular_plant_parts
# returns a hash of most harvested plant parts (fruit, seed, etc)
# key: plant part (eg. 'fruit')
# value: count of how many times it's been used by harvests
@@ -173,6 +147,10 @@ class Crop < ActiveRecord::Base
.count("harvests.id")
end
def annual?
!perennial
end
def interesting?
min_plantings = 3 # needs this many plantings to be interesting
min_photos = 3 # needs this many photos to be interesting
@@ -206,45 +184,24 @@ class Crop < ActiveRecord::Base
reason_for_rejection
end
# Crop.search(string)
def update_medians
plantings.each(&:update_harvest_days!)
update_lifespan_medians
update_harvest_medians
end
def update_lifespan_medians
# Median lifespan of plantings
update(median_lifespan: Planting.where(crop: self).median(:lifespan))
end
def update_harvest_medians
update(median_days_to_first_harvest: Planting.where(crop: self).median(:days_to_first_harvest))
update(median_days_to_last_harvest: Planting.where(crop: self).median(:days_to_last_harvest))
end
def self.search(query)
if ENV['GROWSTUFF_ELASTICSEARCH'] == "true"
search_str = query.nil? ? "" : query.downcase
response = __elasticsearch__.search( # Finds documents which match any field, but uses the _score from
# the best field insead of adding up _score from each field.
query: {
multi_match: {
query: search_str.to_s,
analyzer: "standard",
fields: ["name",
"scientific_names.scientific_name",
"alternate_names.name"]
}
},
filter: {
term: { approval_status: "approved" }
},
size: 50
)
response.records.to_a
else
# if we don't have elasticsearch, just do a basic SQL query.
# also, make sure it's an actual array not an activerecord
# collection, so it matches what we get from elasticsearch and we can
# manipulate it in the same ways (eg. deleting elements without deleting
# the whole record from the db)
matches = Crop.approved.where("name ILIKE ?", "%#{query}%").to_a
# we want to make sure that exact matches come first, even if not
# using elasticsearch (eg. in development)
exact_match = Crop.approved.find_by(name: query)
if exact_match
matches.delete(exact_match)
matches.unshift(exact_match)
end
matches
end
CropSearchService.search(query)
end
def self.case_insensitive_name(name)
@@ -278,4 +235,8 @@ class Crop < ActiveRecord::Base
return unless reason_for_rejection == "other" && rejection_notes.blank?
errors.add(:rejection_notes, "must be added if the reason for rejection is \"other\"")
end
def first_photo(type)
Photo.joins(type).where("#{type}": { crop_id: id }).order("photos.created_at DESC").first
end
end
+5 -5
View File
@@ -34,7 +34,7 @@ class CsvImporter
def add_scientific_names(scientific_names)
names_to_add = []
if !scientific_names.blank? # i.e. we actually passed something in, which isn't a given
if scientific_names.present? # i.e. we actually passed something in, which isn't a given
names_to_add = scientific_names.split(/,\s*/)
elsif @crop.parent && !@crop.parent.scientific_names.empty? # pick up from parent
names_to_add = @crop.parent.scientific_names.map(&:name)
@@ -46,7 +46,7 @@ class CsvImporter
names_to_add.each do |name|
sciname = ScientificName.find_by(name: name, crop: @crop)
sciname = ScientificName.create!(name: name, crop: @crop, creator: cropbot) unless sciname
sciname ||= ScientificName.create!(name: name, crop: @crop, creator: cropbot)
@crop.scientific_names << sciname
end
end
@@ -56,15 +56,15 @@ class CsvImporter
return if alternate_names.blank?
alternate_names.split(/,\s*/).each do |name|
altname = AlternateName.find_by(name: name, crop: @crop)
altname = AlternateName.create! name: name, crop: @crop, creator: cropbot unless altname
altname ||= AlternateName.create! name: name, crop: @crop, creator: cropbot
@crop.alternate_names << altname
end
end
def cropbot
@cropbot = Member.find_by!(login_name: 'cropbot') unless @cropbot
@cropbot ||= Member.find_by!(login_name: 'cropbot')
@cropbot
rescue
rescue StandardError
raise "cropbot account not found: run rake db:seed"
end
end
+2 -2
View File
@@ -1,10 +1,10 @@
class Forum < ActiveRecord::Base
extend FriendlyId
include Ownable
validates :name, presence: true
friendly_id :name, use: [:slugged, :finders]
friendly_id :name, use: %i(slugged finders)
has_many :posts
belongs_to :owner, class_name: "Member"
def to_s
name
+7 -7
View File
@@ -2,9 +2,9 @@ class Garden < ActiveRecord::Base
extend FriendlyId
include Geocodable
include PhotoCapable
friendly_id :garden_slug, use: [:slugged, :finders]
include Ownable
friendly_id :garden_slug, use: %i(slugged finders)
belongs_to :owner, class_name: 'Member', foreign_key: 'owner_id', counter_cache: true
has_many :plantings, dependent: :destroy
has_many :crops, through: :plantings
@@ -14,7 +14,7 @@ class Garden < ActiveRecord::Base
after_validation :empty_unwanted_geocodes
after_save :mark_inactive_garden_plantings_as_finished
default_scope { joins(:owner).order("lower(name) asc") }
default_scope { joins(:owner) } # Ensures owner exists
scope :active, -> { where(active: true) }
scope :inactive, -> { where(active: false) }
@@ -23,7 +23,7 @@ class Garden < ActiveRecord::Base
validates :name,
format: {
with: /\A\w+[\w ]+\z/
with: /\A\w+[\w ()]+\z/
},
length: { maximum: 255 }
@@ -41,7 +41,7 @@ class Garden < ActiveRecord::Base
"acres" => "acre"
}.freeze
validates :area_unit, inclusion: { in: AREA_UNITS_VALUES.values,
message: "%{value} is not a valid area unit" },
message: "%<value>s is not a valid area unit" },
allow_nil: true,
allow_blank: true
@@ -62,7 +62,7 @@ class Garden < ActiveRecord::Base
unique_plantings = []
seen_crops = []
plantings.includes(:garden, :crop, :owner, :harvests).each do |p|
plantings.order(created_at: :desc).includes(:garden, :crop, :owner, :harvests).each do |p|
unless seen_crops.include?(p.crop)
unique_plantings.push(p)
seen_crops.push(p.crop)
@@ -88,6 +88,6 @@ class Garden < ActiveRecord::Base
end
def default_photo
photos.first
photos.order(created_at: :desc).first
end
end
+67 -34
View File
@@ -1,28 +1,12 @@
class Harvest < ActiveRecord::Base
extend FriendlyId
include ActionView::Helpers::NumberHelper
extend FriendlyId
include PhotoCapable
friendly_id :harvest_slug, use: [:slugged, :finders]
include Ownable
belongs_to :crop
belongs_to :owner, class_name: 'Member', counter_cache: true
belongs_to :plant_part
belongs_to :planting
default_scope { joins(:owner).order(created_at: :desc) }
validates :crop, approved: true
validates :crop, presence: { message: "must be present and exist in our database" }
validates :plant_part, presence: { message: "must be present and exist in our database" }
validates :quantity,
numericality: {
only_integer: false,
greater_than_or_equal_to: 0
},
allow_nil: true
friendly_id :harvest_slug, use: %i(slugged finders)
# Constants
UNITS_VALUES = {
"individual" => "individual",
"bunches" => "bunch",
@@ -35,29 +19,60 @@ class Harvest < ActiveRecord::Base
"baskets" => "basket",
"bushels" => "bushel"
}.freeze
validates :unit, inclusion: { in: UNITS_VALUES.values,
message: "%{value} is not a valid unit" },
allow_nil: true,
allow_blank: true
validates :weight_quantity,
numericality: { only_integer: false },
allow_nil: true
WEIGHT_UNITS_VALUES = {
"kg" => "kg",
"lb" => "lb",
"oz" => "oz"
}.freeze
validates :weight_unit, inclusion: { in: WEIGHT_UNITS_VALUES.values,
message: "%{value} is not a valid unit" },
allow_nil: true,
allow_blank: true
##
## Triggers
after_validation :cleanup_quantities
before_save :set_si_weight
##
## Relationships
belongs_to :crop
belongs_to :plant_part
belongs_to :planting
##
## Scopes
default_scope { joins(:owner) } # Ensures owner exists
scope :interesting, -> { has_photos.one_per_owner }
scope :recent, -> { order(created_at: :desc) }
scope :one_per_owner, lambda {
joins("JOIN members m ON (m.id=harvests.owner_id)
LEFT OUTER JOIN harvests h2
ON (m.id=h2.owner_id AND harvests.id < h2.id)").where("h2 IS NULL")
}
##
## Validations
validates :crop, approved: true
validates :crop, presence: { message: "must be present and exist in our database" }
validates :plant_part, presence: { message: "must be present and exist in our database" }
validates :harvested_at, presence: true
validates :quantity, allow_nil: true, numericality: {
only_integer: false, greater_than_or_equal_to: 0
}
validates :unit, allow_nil: true, allow_blank: true, inclusion: {
in: UNITS_VALUES.values, message: "%<value>s is not a valid unit"
}
validates :weight_quantity, allow_nil: true, numericality: { only_integer: false }
validates :weight_unit, allow_nil: true, allow_blank: true, inclusion: {
in: WEIGHT_UNITS_VALUES.values, message: "%<value>s is not a valid unit"
}
validate :crop_must_match_planting
validate :owner_must_match_planting
validate :harvest_must_be_after_planting
def time_from_planting_to_harvest
return if planting.blank?
harvested_at - planting.planted_at
end
# we're storing the harvest weight in kilograms in the db too
# to make data manipulation easier
def set_si_weight
@@ -116,6 +131,24 @@ class Harvest < ActiveRecord::Base
end
def default_photo
photos.first || crop.default_photo
photos.order(created_at: :desc).first || crop.default_photo
end
private
def crop_must_match_planting
return if planting.blank? # only check if we are linked to a planting
errors.add(:planting, "must be the same crop") unless crop == planting.crop
end
def owner_must_match_planting
return if planting.blank? # only check if we are linked to a planting
errors.add(:owner, "of harvest must be the same as planting") unless owner == planting.owner
end
def harvest_must_be_after_planting
# only check if we are linked to a planting
return unless harvested_at.present? && planting.present? && planting.planted_at.present?
errors.add(:planting, "cannot be harvested before planting") unless harvested_at > planting.planted_at
end
end
+24 -68
View File
@@ -4,50 +4,39 @@ class Member < ActiveRecord::Base
include Geocodable
extend FriendlyId
friendly_id :login_name, use: [:slugged, :finders]
friendly_id :login_name, use: %i(slugged finders)
#
# Relationships
has_many :posts, foreign_key: 'author_id'
has_many :comments, foreign_key: 'author_id'
has_many :forums, foreign_key: 'owner_id'
has_many :gardens, foreign_key: 'owner_id'
has_many :plantings, foreign_key: 'owner_id'
has_many :seeds, foreign_key: 'owner_id'
has_many :harvests, foreign_key: 'owner_id'
has_and_belongs_to_many :roles # rubocop:disable Rails/HasAndBelongsToMany
has_many :notifications, foreign_key: 'recipient_id'
has_many :sent_notifications, foreign_key: 'sender_id'
has_many :authentications
has_many :orders
has_one :account
has_one :account_type, through: :account
has_many :photos
has_many :requested_crops, class_name: Crop, foreign_key: 'requester_id'
has_many :likes, dependent: :destroy
has_many :follows, class_name: "Follow", foreign_key: "follower_id", dependent: :destroy
has_many :inverse_follows, class_name: "Follow", foreign_key: "followed_id", dependent: :destroy
has_many :followed, through: :follows
has_many :followers, through: :inverse_follows, source: :follower
default_scope { order("lower(login_name) asc") }
#
# Scopes
scope :confirmed, -> { where.not(confirmed_at: nil) }
scope :located, -> { where.not(location: '').where.not(latitude: nil).where.not(longitude: nil) }
scope :recently_signed_in, -> { reorder(updated_at: :desc) }
scope :recently_joined, -> { reorder(confirmed_at: :desc) }
scope :wants_newsletter, -> { where(newsletter: true) }
scope :interesting, -> { confirmed.located.recently_signed_in.has_plantings }
scope :has_plantings, -> { joins(:plantings).group("members.id") }
has_many :follows, class_name: "Follow", foreign_key: "follower_id"
has_many :followed, through: :follows
has_many :inverse_follows, class_name: "Follow", foreign_key: "followed_id"
has_many :followers, through: :inverse_follows, source: :follower
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
@@ -57,45 +46,40 @@ class Member < ActiveRecord::Base
# set up geocoding
geocoded_by :location
after_validation :geocode
after_validation :empty_unwanted_geocodes
# Virtual attribute for authenticating by either username or email
# This is in addition to a real persisted field like 'username'
attr_accessor :login
#
# Validations
# Requires acceptance of the Terms of Service
validates :tos_agreement, acceptance: { allow_nil: true,
accept: true }
validates :tos_agreement, acceptance: { allow_nil: true, accept: true }
validates :login_name,
length: {
minimum: 2,
maximum: 25,
message: "should be between 2 and 25 characters long"
minimum: 2, maximum: 25, message: "should be between 2 and 25 characters long"
},
exclusion: {
in: %w(growstuff admin moderator staff nearby),
message: "name is reserved"
in: %w(growstuff admin moderator staff nearby), message: "name is reserved"
},
format: {
with: /\A\w+\z/,
message: "may only include letters, numbers, or underscores"
with: /\A\w+\z/, message: "may only include letters, numbers, or underscores"
},
uniqueness: {
case_sensitive: false
}
# Give each new member a default garden
after_create { |member| Garden.create(name: "Garden", owner_id: member.id) }
# and an account record (for paid accounts etc)
# we use find_or_create to avoid accidentally creating a second one,
# which can happen sometimes especially with FactoryGirl associations
after_create { |member| Account.find_or_create_by(member_id: member.id) }
#
# Triggers
after_validation :geocode
after_validation :empty_unwanted_geocodes
after_save :update_newsletter_subscription
# Give each new member a default garden
# we use find_or_create to avoid accidentally creating a second one,
# which can happen sometimes especially with FactoryBot associations
after_create { |member| Garden.create(name: "Garden", owner_id: member.id) }
# allow login via either login_name or email address
def self.find_first_by_auth_conditions(warden_conditions)
conditions = warden_conditions.dup
@@ -112,34 +96,6 @@ class Member < ActiveRecord::Base
roles.any? { |r| r.name.gsub(/\s+/, "_").underscore.to_sym == role_sym }
end
def current_order
orders.find_by(completed_at: nil)
end
# when purchasing a product that gives you a paid account, this method
# does all the messing around to actually make sure the account is
# updated correctly -- account type, paid until, etc. Usually this is
# called by order.update_account, which loops through all order items
# and does this for each one.
def update_account_after_purchase(product)
account.account_type = product.account_type if product.account_type
if product.paid_months
start_date = account.paid_until || Time.zone.now
account.paid_until = start_date + product.paid_months.months
end
account.save
end
def paid?
if account.account_type.is_permanent_paid
true
elsif account.account_type.is_paid && account.paid_until >= Time.zone.now
true
else
false
end
end
def auth(provider)
authentications.find_by(provider: provider)
end
-1
View File
@@ -5,7 +5,6 @@ class Notification < ActiveRecord::Base
validates :subject, length: { maximum: 255 }
default_scope { order('created_at DESC') }
scope :unread, -> { where(read: false) }
scope :by_recipient, ->(recipient) { where(recipient_id: recipient) }
-85
View File
@@ -1,85 +0,0 @@
class Order < ActiveRecord::Base
belongs_to :member, with_deleted: true
has_many :order_items, dependent: :destroy
default_scope { order('created_at DESC') }
validates :referral_code, format: {
with: /\A[a-zA-Z0-9 ]*\z/,
message: "may only include letters and numbers"
}
before_save :standardize_referral_code
scope :by_member, ->(member) { where(member: member) }
# total price of an order
def total
sum = 0
order_items.each do |i|
subtotal = i.price * i.quantity
sum += subtotal
end
sum
end
# return items in the format ActiveMerchant/PayPal want them
def activemerchant_items
items = []
order_items.each do |i|
items.push(name: i.product.name,
quantity: i.quantity,
amount: i.price)
end
items
end
# record the paypal details for reference
def record_paypal_details(token)
self.paypal_express_token = token
details = EXPRESS_GATEWAY.details_for(token)
self.paypal_express_payer_id = details.payer_id
save
end
# when an order is completed, we update the member's account to mark
# them as paid, or whatever, based on what products they ordered
def update_account
order_items.each do |i|
member.update_account_after_purchase(i.product)
end
end
# removes whitespace and forces to uppercase (we're somewhat liberal
# in what we accept, but we clean it up anyway.)
def standardize_referral_code
self.referral_code = referral_code.upcase.gsub(/\s/, '') if referral_code
end
# search orders (used by admin/orders)
# usage: Order.search({ :by => 'member', :for => 'Skud' })
# can search by: member, order_id, paypal_token, paypal_payer_id,
def self.search(args = {})
if args[:for]
case args[:by]
when "member"
member = Member.with_deleted.find_by(login_name: args[:for])
return member.orders if member
when "order_id"
order = Order.find_by(id: args[:for])
return [order] if order
when "paypal_token"
order = Order.find_by(paypal_express_token: args[:for])
return [order] if order
when "paypal_payer_id"
order = Order.find_by(paypal_express_payer_id: args[:for])
return [order] if order
when "referral_code"
# coerce to uppercase
return Order.where(referral_code: args[:for].upcase)
end
end
[]
end
end
-12
View File
@@ -1,12 +0,0 @@
class OrderItem < ActiveRecord::Base
belongs_to :order
belongs_to :product
validate :price_must_be_greater_than_minimum
validates :order_id, uniqueness: { message: "may only have one item." }
def price_must_be_greater_than_minimum
@product = Product.find(product_id)
errors.add(:price, "must be greater than the product's minimum value") if price < @product.min_price
end
end
+26 -25
View File
@@ -1,30 +1,18 @@
require_relative '../constants/photo_models.rb'
class Photo < ActiveRecord::Base
belongs_to :owner, class_name: 'Member'
include Ownable
Growstuff::Constants::PhotoModels.relations.each do |relation|
has_and_belongs_to_many relation.to_sym # rubocop:disable Rails/HasAndBelongsToMany
PHOTO_CAPABLE = %w(Garden Planting Harvest Seed).freeze
has_many :photographings, foreign_key: :photo_id, dependent: :destroy
# creates a relationship for each assignee type
PHOTO_CAPABLE.each do |type|
has_many type.downcase.pluralize.to_s.to_sym,
through: :photographings,
source: :photographable,
source_type: type
end
before_destroy { all_associations.clear }
default_scope { joins(:owner).order(created_at: :desc) }
def associations?
plantings.any? || harvests.any? || gardens.any? || seeds.any?
end
def all_associations
associations = []
Growstuff::Constants::PhotoModels.relations.each do |association_name|
associations << send(association_name.to_s).to_a
end
associations.flatten!
end
def destroy_if_unused
destroy if all_associations.empty?
end
default_scope { joins(:owner) } # Ensures the owner still exists
# This is split into a side-effect free method and a side-effecting method
# for easier stubbing and testing.
@@ -39,10 +27,19 @@ class Photo < ActiveRecord::Base
license_url: license.url,
thumbnail_url: FlickRaw.url_q(info),
fullsize_url: FlickRaw.url_z(info),
link_url: FlickRaw.url_photopage(info)
link_url: FlickRaw.url_photopage(info),
date_taken: info.dates.taken
}
end
def associations?
photographings.size.positive?
end
def destroy_if_unused
destroy unless associations?
end
def calculate_title(info)
if id && title # already has a title saved
title
@@ -53,7 +50,11 @@ class Photo < ActiveRecord::Base
end
end
def set_flickr_metadata
def set_flickr_metadata!
update_attributes(flickr_metadata)
end
def to_s
"#{title} by #{owner.login_name}"
end
end
+12
View File
@@ -0,0 +1,12 @@
class Photographing < ActiveRecord::Base
belongs_to :photo
belongs_to :photographable, polymorphic: true
def self.item(item_id, item_type)
find_by!(photographable_id: item_id, photographable_type: item_type).photographable
end
def item
find_by!(photographable_id: photographable_id, photographable_type: photographable_type).photographable
end
end
Loaded 100 of 519 files, more files were not shown because too many files have changed in this diff. Show more