Skip to content
This repository has been archived by the owner on Jul 24, 2020. It is now read-only.

Commit

Permalink
Merge pull request #551 from YaleSTC/development
Browse files Browse the repository at this point in the history
v3.2.0
  • Loading branch information
squidgetx committed Jun 10, 2014
2 parents 06f9dd9 + 229437e commit a9786b0
Show file tree
Hide file tree
Showing 31 changed files with 411 additions and 174 deletions.
1 change: 1 addition & 0 deletions .rspec
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
--color
--format documentation
--drb
48 changes: 28 additions & 20 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,40 +8,48 @@ Change Log
* The release version should be visible from within the application (coming soon)
* Any problems should be reported via the "report an issue" link in the footer of the application instance

##v3.1.0.alpha8

###New Features
###v3.2.0

* None
####New Features
* Added flash for checkout persons when making a reservation for the current day ([#321](https://github.com/YaleSTC/reservations/issues/321))
* Added admin interface for setting up site-wide announcements ([421](https://github.com/YaleSTC/reservations/issues/421), [447](https://github.com/YaleSTC/reservations/issues/447))

###Bug Fixes
####Enhancements
* Added [Guard](http://guardgem.org/) and [Spork](https://github.com/sporkrb/spork) for faster testing ([#490](https://github.com/YaleSTC/reservations/issues/490))

* Slow reservation notification emails to send hourly instead of every 5 minutes
* Fix Chrome bug where `remove` button did not render correctly in the cart
####Bug Fixes
* Disabled cart during update and added JS spinner/success flash message to prevent cart changes from not being saved ([#528](https://github.com/YaleSTC/reservations/issues/528))
* Fixed duplicate flash message for blackout dates ([#420](https://github.com/YaleSTC/reservations/issues/420), [#445](https://github.com/YaleSTC/reservations/issues/445))
* Fixed issue where the Users page would display a link when the `nickname` was set to `nil` ([#466](https://github.com/YaleSTC/reservations/issues/466))
* Fixed issue where checkin / checkout steps could not be deleted ([#470](https://github.com/YaleSTC/reservations/issues/470))
* Fixed `database.yml` example for Ubuntu where all databases had the same name ([#472](https://github.com/YaleSTC/reservations/issues/472))
* Fixed test for the cart date where `DateTime.tomorrow` was used instead of `DateTime.now.tomorrow` ([#491](https://github.com/YaleSTC/reservations/issues/491))

##v3.1.0.alpha7

###New Features
###v3.1.0.alpha10
####Bug Fixes

* Quick add user from cart by typing their netID and clicking the `+` button
* Reservation note emails are now categorized by checkin and checkout
* Fix an error that was causing some emails to not send

###Bug Fixes

* Changed autocomplete field in cart to display the reserving for user without it disappearing
###v3.1.0.alpha9
####Bug Fixes

##v3.1.0.alpha6
* Slow reservation notification emails to send hourly instead of every 5 minutes
* Fix Chrome bug where `remove` button did not render correctly in the cart

###New Features

* TODO
###v3.1.0.alpha8
Accidentally the same as v3.1.0.alpha7

###Bug Fixes
###v3.1.0.alpha7

* TODO
####New Features

...
* Quick add user from cart by typing their netID and clicking the `+` button
* Reservation note emails are now categorized by checkin and checkout

##v3.1.0.alpha1
####Bug Fixes

Current version on Ulua
* Changed autocomplete field in cart to display the reserving for user without it disappearing
5 changes: 5 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ gem 'jquery-datatables-rails'
gem 'rails3-jquery-autocomplete'
gem 'select2-rails'
gem 'kaminari'
gem 'spinjs-rails'

#forms / formatting
gem 'dynamic_form'
Expand All @@ -42,6 +43,10 @@ group :development, :test do
gem 'rspec-rails'
gem 'shoulda-matchers'
gem 'capybara', '~> 2.0.0'
gem 'guard-rspec'
gem 'spork-rails'
gem 'guard-spork'
gem 'fuubar'
gem 'guard-livereload'
gem 'yajl-ruby'
gem 'ffaker'
Expand Down
27 changes: 27 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,10 @@ GEM
ffaker (1.19.0)
ffi (1.9.0)
formatador (0.2.4)
fuubar (1.2.1)
rspec (~> 2.0)
rspec-instafail (~> 0.2.0)
ruby-progressbar (~> 1.0)
guard (1.8.3)
formatador (>= 0.2.4)
listen (~> 1.3)
Expand All @@ -109,6 +113,13 @@ GEM
em-websocket (>= 0.5.0)
guard (>= 1.8.0)
multi_json (~> 1.7)
guard-rspec (3.1.0)
guard (>= 1.8)
rspec (~> 2.13)
guard-spork (1.5.1)
childprocess (>= 0.2.3)
guard (>= 1.1)
spork (>= 0.8.4)
highline (1.6.19)
hike (1.2.3)
http_parser.rb (0.5.3)
Expand Down Expand Up @@ -218,9 +229,14 @@ GEM
json (~> 1.4)
redcarpet (3.0.0)
ref (1.0.5)
rspec (2.14.1)
rspec-core (~> 2.14.0)
rspec-expectations (~> 2.14.0)
rspec-mocks (~> 2.14.0)
rspec-core (2.14.5)
rspec-expectations (2.14.3)
diff-lcs (>= 1.1.3, < 2.0)
rspec-instafail (0.2.4)
rspec-mocks (2.14.3)
rspec-rails (2.14.0)
actionpack (>= 3.0)
Expand Down Expand Up @@ -254,6 +270,12 @@ GEM
actionpack (~> 3.0)
activemodel (~> 3.0)
slop (3.4.6)
spinjs-rails (1.3)
rails (>= 3.1)
spork (1.0.0rc4)
spork-rails (4.0.0)
rails (>= 3.0.0, < 5)
spork (>= 1.0rc0)
sprockets (2.2.2)
hike (~> 1.2)
multi_json (~> 1.0)
Expand Down Expand Up @@ -298,7 +320,10 @@ DEPENDENCIES
factory_girl_rails
ffaker
font-awesome-rails!
fuubar
guard-livereload
guard-rspec
guard-spork
jquery-datatables-rails
jquery-rails
jquery-ui-rails
Expand Down Expand Up @@ -329,6 +354,8 @@ DEPENDENCIES
select2-rails
shoulda-matchers
simple_form
spinjs-rails
spork-rails
therubyracer
thin
uglifier
Expand Down
32 changes: 32 additions & 0 deletions Guardfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,35 @@ guard 'livereload' do
watch(%r{app/assets/stylesheets/(.+\.css).*$}) { |m| "assets/#{m[1]}" }
watch(%r{app/assets/javascripts/(.+\.js).*$}) { |m| "assets/#{m[1]}" }
end

guard 'spork', :cucumber_env => { 'RAILS_ENV' => 'test' }, :rspec_env => { 'RAILS_ENV' => 'test' }, :test_unit => false do
watch('config/application.rb')
watch('config/environment.rb')
watch('config/environments/test.rb')
watch(%r{^config/initializers/.+\.rb$})
watch('Gemfile.lock')
watch('spec/spec_helper.rb') { :rspec }
watch('test/test_helper.rb') { :test_unit }
watch(%r{features/support/}) { :cucumber }
end

guard :rspec, all_after_pass: false, :cli => "--drb --format Fuubar" do
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
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{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
watch('config/routes.rb') { "spec/routing" }
watch('app/controllers/application_controller.rb') { "spec/controllers" }

# Capybara features specs
watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$}) { |m| "spec/features/#{m[1]}_spec.rb" }

# Turnip features and steps
watch(%r{^spec/acceptance/(.+)\.feature$})
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
end
89 changes: 14 additions & 75 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,24 @@ Welcome to Reservations [![Code Climate](https://codeclimate.com/github/YaleSTC/

Reservations makes it easy to manage the checking in and out of equipment, much like a library! Here are some of the things Reservations can do:

* Manage your inventory of equipment, including storing serial number, manuals and other documents, and more.
* Present an attractive catalog of equipment, inclduing pictures, so people can browse and search your equipment.
* Allow people to reserve equipment in advance, according to rules you set.
* Enforce rules on who can reserve equipment, and for how long.
* Manage checking in/out equipment, including unique checklists for each item.
* manage your inventory of equipment, including storing serial numbers, manuals and other documents, and more.
* present an attractive catalog of equipment, including pictures, so people can browse and search your equipment.
* allow people to reserve equipment in advance, according to rules you set.
* enforce rules on who can reserve what equipment, and for how long.
* manage checking in/out equipment, including unique checklists for each item.

Getting Started
===============

There are two mains steps to setting up Reservations, setting up a deployment server, and installing the Reservations application.

Installing Reservations locally
-------------------------------

###Prerequisites
### Prerequisites
You'll need the following to run Reservations:
* [Ruby 1.9](http://www.ruby-lang.org/), with Bundler
* [Ruby 1.9](http://www.ruby-lang.org/) and [Rails 3.2](http://rubyonrails.org/)
* a database server ([Sqlite](http://www.sqlite.org/), [MySQL](http://www.mysql.com/) or any database supported by Rails)
* [ImageMagick](http://www.imagemagick.org/script/index.php)

###Installing
### Installation
First, checkout a copy of Reservations using git:

```
Expand All @@ -32,15 +29,14 @@ git clone https://github.com/YaleSTC/reservations.git
cd reservations
```

Rerservations uses [Bundler](http://gembundler.com/) to manage dependencies, so if you don't have it, get it, then install dependencies
Reservations uses [Bundler](http://gembundler.com/) to manage dependencies, so if you don't have it, get it, then install dependencies:

```
gem install bundler
bundle install
```


You'll need to edit config/database.yml to point to your database, including the correct user and password. See the [Rails guide](http://guides.rubyonrails.org/getting_started.html#configuring-a-database) for common database examples.
You'll need to edit config/database.yml to point to your database, including the correct username and password. See [Rails Guides](http://guides.rubyonrails.org/configuring.html#configuring-a-database) for common database examples.

Then, create the database and run migrations to build the structure:

Expand All @@ -55,8 +51,7 @@ Finally, start the app locally:

Just point your browser to ```localhost:3000``` to use Reservations.

Deploying to a Server
---------------------
### Deploying to a Server

Reservations is built using [Ruby on Rails](http://rubyonrails.org/), and can be set up (deployed) like most Rails apps. You'll need a server running with the following software:

Expand All @@ -67,66 +62,10 @@ Reservations is built using [Ruby on Rails](http://rubyonrails.org/), and can be

For a general guide to setting up your web and application servers, including hosting providers, see the [Rails Deployment Guide](http://rubyonrails.org/deploy/).

Using Reservations
Further Documentation
==================

Initial Setup
-------------

The first time you run the app, you'll be guided through creating your Admin account (you can add more later) and setting up things like the site title, contact address, and so on. Once you're done, it's time to add items to the catalog!

Managing Equipment
------------------

Reservations organizes your equipment on three levels, Categories, Equipment Models and Equipment Items.

Categories provide organization to your catalog, making it easy for people to find what they need. Examples might be "Video Cameras", "Digital SLRs", or "Laptops".

Equipment Models represent a general model of equipment, such as a Nikon D90. Equipment Models contain a name and general description, as well as a photo for the catalog. You can also upload documents related to an Equipment Model (such as for a user's guide PDF), and set limits on the lenght of time and number a person can checkout.

Equipment Items represent real, physical copies of an Equipment Model. These are used to determine how many are available for checkout on the catalog, and Reservations tracks them by identifiers you specify so you know who checked out a specific item. You can also store item-level information on Equipment Items such as serial numbers.

To get started, you'll need to create your first category by choosing Equipment -> Categories from the menu bar at the top. When you're creating a category, you'll see a lot of options for things like how many a person can check out at a time. These are used as the default for all Equipment Models in this category, but can be over-ridden for a specific model when you create it.

Once you've added your first Category, create your first Equipment Model by clicking the 'Add Model' button on the category page and entering the details. Finally, create at least one new Equipment Item for that model by clicking the 'Create New Item' button on the Equipment Model page.

Managing Users
--------------

Currently, Reservations only supports [CAS](http://www.jasig.org/cas/), but we are working on adding built-in authentication so anyone can use it.

When a new user logs in for the first time, an account will automatically be created for them (if using CAS), or they will have to register (when built-in authentication is enabled). As an admin, you can also manually create users.

To manage users, click 'Users' in the menu bar. You can add, deactivate, or edit users, as well as view their profile. Profiles give you at-a-glance information about a user, such as what items they've reserved (past, current, and future), and stats on missed and overdue reservations.

There are three types of users:
* *Normal users*, who can browse the catalog and create reservations for themselves.
* *Checkout Persons* who can do all of the above, plus create reservations for other people and check equipment in and out.
* *Admins*, who can do all of the aboe, plus change settings, update equipment, and add/deactive users.

Reservations
------------

###Creating Reservations
Users can easily reserve equipement on their own, through the catalog. To do so, set the desired start and end dates, check availability on the catalog (updated automatically), and add itmes to your cart. Once you'veve added all items you'd like to reserve, click the 'finalize reservation' button, which confirms the reservation is valid (doesn't violate any limitations on reservation length, number, etc.) and then approves it.

Admins and Checkout Persons can create reservations for other users, and in some cases, override restrictions on length and number of items in the reservation.

###Checking in/out
To check equipment in or out, an Admin or Checkout Person can simply enter a persons name or login into the 'Find User' search box.

(Temporarily disabled in version 3.0) Reservations supports sending emails automatically to users when reservations are upcoming, missed, and due or overdue to be returned.

###Requirements
You can optionally create requirements, which are essentially qualifications. This allows you to require that a person be tagged as meeting that requirement before reserving an Equipment Model.

For example, you might offer saftey training to checkout light kits. In this case, you could create a requirement for 'Light Kit Training', and add that requirement to all your Light Kit Equipment Models. Before a user can reserve a light kit, an admin must add the 'Light Kit Training' qualification to that user's account.

###Blackout Dates
There are two types of blackout dates:

*Blackout* - If you're closed on a certain date, you can add a blackout date to prevent users from creating a reservation that starts or ends on that date (though it may still span that date).
*Notice* - This is useful if you close earlier than normal on a date. Any user creatign a reservation starting or ending on that date will be presented with the the notice you provide.
* System administrators and end-users may like to review our [help documentation](https://yalestc.github.io/reservations).
* Developers interested in getting involved with *Reservations* can find information on our [project wiki](https://github.com/YaleSTC/reservations/wiki)

Suggestions and Issues
======================
Expand Down
Loading

0 comments on commit a9786b0

Please sign in to comment.