Giter Club home page Giter Club logo

chiditarod / dogtag Goto Github PK

View Code? Open in Web Editor NEW
5.0 5.0 3.0 1.71 MB

Racer registration and management application for the CHIditarod. Integrates with Stripe and Classy.

Home Page: http://chiditarod.org

License: GNU General Public License v3.0

Ruby 82.01% JavaScript 0.23% CoffeeScript 0.75% HTML 5.14% Shell 0.09% Dockerfile 0.08% SCSS 0.18% Haml 11.50% Procfile 0.02%
heroku rails rails4 registration ruby ruby-on-rails signup ticketing-system

dogtag's People

Contributors

dependabot[bot] avatar ometa avatar pcorliss avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

dogtag's Issues

Investigate: Classy Integration: TransientError: 400: {"error":{"email_address":["This email address is already used."]}}

We think a repro for this case is:

  • Use a team that has successfully registered in dogtag and in classy in the past
  • Change the email address in dogtag
  • Attempt to register for the new race using that team
  • Expect to observe This email address is already used in sidekiq
Workers::ClassyCreateFundraisingTeam
{"team_id"=>1054}
400: {"error":{"email_address":["This email address is already used."]}}
/app/lib/classy_client.rb:164:in `wrapper'
/app/lib/classy_client.rb:137:in `block in post'
/app/lib/classy_client.rb:124:in `with_token'
/app/lib/classy_client.rb:135:in `post'
/app/lib/classy_client.rb:57:in `create_member'
/app/lib/classy_user.rb:34:in `link_user_to_classy!'
/app/app/workers/workers/classy_create_fundraising_team.rb:47:in `run'
/app/app/workers/workers/common.rb:29:in `perform'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/processor.rb:196:in `execute_job'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/processor.rb:164:in `block (2 levels) in process'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/middleware/chain.rb:138:in `block in invoke'
/app/vendor/bundle/ruby/2.7.0/gems/rollbar-3.3.0/lib/rollbar/plugins/sidekiq/plugin.rb:11:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/middleware/chain.rb:140:in `block in invoke'
/app/vendor/bundle/ruby/2.7.0/gems/newrelic_rpm-8.3.0/lib/new_relic/agent/instrumentation/sidekiq.rb:35:in `block in call'
/app/vendor/bundle/ruby/2.7.0/gems/newrelic_rpm-8.3.0/lib/new_relic/agent/instrumentation/controller_instrumentation.rb:377:in `perform_action_with_newrelic_trace'
/app/vendor/bundle/ruby/2.7.0/gems/newrelic_rpm-8.3.0/lib/new_relic/agent/instrumentation/sidekiq.rb:30:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/middleware/chain.rb:140:in `block in invoke'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-failures-1.0.1/lib/sidekiq/failures/middleware.rb:9:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/middleware/chain.rb:140:in `block in invoke'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/middleware/chain.rb:143:in `invoke'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/processor.rb:163:in `block in process'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/job_retry.rb:112:in `local'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/rails.rb:14:in `block in call'
/app/vendor/bundle/ruby/2.7.0/gems/activesupport-5.0.7.2/lib/active_support/execution_wrapper.rb:85:in `wrap'
/app/vendor/bundle/ruby/2.7.0/gems/activesupport-5.0.7.2/lib/active_support/reloader.rb:68:in `block in wrap'
/app/vendor/bundle/ruby/2.7.0/gems/activesupport-5.0.7.2/lib/active_support/execution_wrapper.rb:85:in `wrap'
/app/vendor/bundle/ruby/2.7.0/gems/activesupport-5.0.7.2/lib/active_support/reloader.rb:67:in `wrap'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/rails.rb:13:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/processor.rb:257:in `stats'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/job_logger.rb:13:in `call'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/job_retry.rb:79:in `global'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/processor.rb:124:in `block in dispatch'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/logger.rb:11:in `with'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/job_logger.rb:33:in `prepare'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/processor.rb:123:in `dispatch'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/processor.rb:162:in `process'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/processor.rb:78:in `process_one'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/processor.rb:68:in `run'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/util.rb:43:in `watchdog'
/app/vendor/bundle/ruby/2.7.0/gems/sidekiq-6.3.1/lib/sidekiq/util.rb:52:in `block in safe_thread'

Feature: Reminder emails to incomplete registrations

Automatically email users who have created team(s) for a race when the following events occur:

  • A registration tier is about to change
  • The race is 1 week from registration closing
  • The race is 124 hours from registration closing

Add Date of Registration Completed to reporting output

In order to be able to better predict the rate of Racer Registrations across the reg period, can a column be added to the .csv output that shows the date on which the registration was completed successfully? If this can be added retroactively to past years, that would be great; if not, starting with 2023 will make a huge difference.
Please and thank you and MUSH!!

race#show should include stats on registered teams & link to race/:race_id/registrations

When the stats for past races was removed from the rendering (in #87), the useful link to show the registered teams effectively disappeared. This makes it impossible for a refunder to access the teams to refund once the race has happened, since the formerly-displayed link is no longer visible.

The route they need still works, but it should be easy to find and use.

Tasks:

Limit scope where Stripe env vars are required

The application should be able to boot up without requiring the 2 stripe env vars in order to boot.

For example, running rake db:migrate currently requires stripe environment variables. This feels unnecessary.

Programmatically calculate the strong params in the jsonform

Right now it's a hack in app/controllers/questions_controller.rb:

  # This is a hack to get around strong parameters.
  # These are the names of the parameter keys in the Race's jsonschema.
  # todo: figure out how to calculate this dynamically.
  HACK_PARAMS = [
    :'racer-type', :'primary-inspiration', :'secondary-inspiration', :'twitter', :'buddies', :'private-comments', :'explain-theme',
    :'agree-to-core-philosophy', :'agree-to-rules', :'agree-to-sabotage', :'agree-to-cart-deposit', :'agree-to-cart-food-poundage',
    :'agree-not-a-donation', :'agree-to-orientation', :'flame-effects', :'fundraising', :'party-bus-interest', :'party-bus-seats'
  ]

Admin: pagination breaks usefulness of filter search

The javascript filter search fields on the admin list view only filter the rendered results, not the entire database set. The pagination in place limits the rows returned, so the JS filtering can only filter on those returned rows.

Solution:

  • Rebuild the search/filtering functionality so it searches the entire database quickly.
  • Dynamically update the results

Feature: Referral code providing a registration discount

As a dogtag user, I have a custom referral link that I can share. And when someone uses the referral link to register their team, the owner of the referral gets a percentage discount refunded, and the registering user gets a percentage discount on their registration payments.

Data Tracking Enhancement Request

It would be helpful to have trending data that shows the pattern of when racers are registering.
Time of day not necessary, but the date trend so we can easily see how a given year's reg numbers are lining up to prior years.

Flaky Test: RequirementsController [logged in] #update on invalid id returns 404

Failures:
  1) RequirementsController [logged in] #update on invalid id returns 404
     Failure/Error: expect(response.status).to eq(404)
       expected: 404
            got: 400
       (compared using ==)
     # ./spec/controllers/requirements_controller_spec.rb:91:in `block (5 levels) in <top (required)>'
Finished in 1 minute 30.22 seconds (files took 2.67 seconds to load)
551 examples, 1 failure, 29 pending
Failed examples:
rspec ./spec/controllers/requirements_controller_spec.rb:90 # RequirementsController [logged in] #update on invalid id returns 404

Randomized with seed 63575

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.