Adding resources (imported from old toolshare)

This commit is contained in:
Will Bradley 2014-02-09 00:54:03 -07:00
parent 56450cf319
commit 1d0e8721e1
17 changed files with 212 additions and 2 deletions

1
.gitignore vendored
View File

@ -21,5 +21,6 @@ tmp/
# Ignore config and database files (passwords) # Ignore config and database files (passwords)
/config/config.yml /config/config.yml
/config/s3.yml
/config/database.yml /config/database.yml
/config/initializers/secret_token.rb /config/initializers/secret_token.rb

View File

@ -46,7 +46,8 @@ gem 'bcrypt-ruby', '~> 3.0.0'
# To use debugger # To use debugger
#gem 'debugger' #gem 'debugger'
#gem "paperclip", "~> 3.0" gem "paperclip", "~> 3.0"
gem "aws-sdk"
gem 'gravtastic' gem 'gravtastic'
gem 'passenger' gem 'passenger'

View File

@ -29,9 +29,17 @@ GEM
i18n (~> 0.6) i18n (~> 0.6)
multi_json (~> 1.0) multi_json (~> 1.0)
arel (3.0.2) arel (3.0.2)
aws-sdk (1.33.0)
json (~> 1.4)
nokogiri (>= 1.4.4)
uuidtools (~> 2.1)
bcrypt-ruby (3.0.1) bcrypt-ruby (3.0.1)
builder (3.0.4) builder (3.0.4)
cancan (1.6.10) cancan (1.6.10)
climate_control (0.0.3)
activesupport (>= 3.0)
cocaine (0.5.3)
climate_control (>= 0.0.3, < 1.0)
coffee-rails (3.2.2) coffee-rails (3.2.2)
coffee-script (>= 2.2.0) coffee-script (>= 2.2.0)
railties (~> 3.2.0) railties (~> 3.2.0)
@ -61,8 +69,16 @@ GEM
mime-types (~> 1.16) mime-types (~> 1.16)
treetop (~> 1.4.8) treetop (~> 1.4.8)
mime-types (1.25) mime-types (1.25)
mini_portile (0.5.2)
multi_json (1.8.2) multi_json (1.8.2)
nokogiri (1.6.1)
mini_portile (~> 0.5.0)
orm_adapter (0.4.0) orm_adapter (0.4.0)
paperclip (3.5.4)
activemodel (>= 3.0.0)
activesupport (>= 3.0.0)
cocaine (~> 0.5.3)
mime-types
passenger (4.0.19) passenger (4.0.19)
daemon_controller (>= 1.1.0) daemon_controller (>= 1.1.0)
rack rack
@ -129,6 +145,7 @@ GEM
uglifier (2.2.1) uglifier (2.2.1)
execjs (>= 0.3.0) execjs (>= 0.3.0)
multi_json (~> 1.0, >= 1.0.2) multi_json (~> 1.0, >= 1.0.2)
uuidtools (2.1.4)
warden (1.2.3) warden (1.2.3)
rack (>= 1.0) rack (>= 1.0)
@ -136,6 +153,7 @@ PLATFORMS
ruby ruby
DEPENDENCIES DEPENDENCIES
aws-sdk
bcrypt-ruby (~> 3.0.0) bcrypt-ruby (~> 3.0.0)
cancan cancan
coffee-rails (~> 3.2.1) coffee-rails (~> 3.2.1)
@ -143,6 +161,7 @@ DEPENDENCIES
gravtastic gravtastic
jquery-rails jquery-rails
json json
paperclip (~> 3.0)
passenger passenger
pg pg
rails (= 3.2.8) rails (= 3.2.8)

View File

@ -0,0 +1,4 @@
class ResourcesController < ApplicationController
load_and_authorize_resource
before_filter :authenticate_user!
end

View File

@ -1,4 +1,10 @@
module ApplicationHelper module ApplicationHelper
@payment_methods = [[nil],["PayPal"],["Dwolla"],["Bill Pay"],["Check"],["Cash"],["Other"]] @payment_methods = [[nil],["PayPal"],["Dwolla"],["Bill Pay"],["Check"],["Cash"],["Other"]]
@payment_instructions = {nil => nil, :paypal => "Set up a monthly recurring payment to hslfinances@gmail.com", :dwolla => "Set up a monthly recurring payment to hslfinances@gmail.com", :billpay => "Have your bank send a monthly check to HeatSync Labs Treasurer, 140 W Main St, Mesa AZ 85201", :check => "Mail to HeatSync Labs Treasurer, 140 W Main St, Mesa AZ 85201 OR put in the drop safe at the Lab with a deposit slip firmly attached each month.", :cash => "Put in the drop safe at the Lab with a deposit slip firmly attached each month.", :other => "Hmm... talk to a Treasurer!"} @payment_instructions = {nil => nil, :paypal => "Set up a monthly recurring payment to hslfinances@gmail.com", :dwolla => "Set up a monthly recurring payment to hslfinances@gmail.com", :billpay => "Have your bank send a monthly check to HeatSync Labs Treasurer, 140 W Main St, Mesa AZ 85201", :check => "Mail to HeatSync Labs Treasurer, 140 W Main St, Mesa AZ 85201 OR put in the drop safe at the Lab with a deposit slip firmly attached each month.", :cash => "Put in the drop safe at the Lab with a deposit slip firmly attached each month.", :other => "Hmm... talk to a Treasurer!"}
def sort_link(title, column, options = {})
condition = options[:unless] if options.has_key?(:unless)
sort_dir = params[:dir] == 'up' ? 'down' : 'up'
link_to_unless condition, title, request.parameters.merge( {:sort => column, :dir => sort_dir} )
end
end end

View File

@ -14,6 +14,7 @@ class Ability
can [:update], Mac, :user_id => nil can [:update], Mac, :user_id => nil
can [:create,:update], Mac, :user_id => user.id can [:create,:update], Mac, :user_id => user.id
can :read, Payment, :user_id => user.id can :read, Payment, :user_id => user.id
can :read, Resource
can :read, UserCertification, :user_id => user.id can :read, UserCertification, :user_id => user.id
can :read, User, :id => user.id #TODO: why can users update themselves? Maybe because Devise doesn't check users/edit? can :read, User, :id => user.id #TODO: why can users update themselves? Maybe because Devise doesn't check users/edit?
can :compose_email, User can :compose_email, User

12
app/models/resource.rb Normal file
View File

@ -0,0 +1,12 @@
class Resource < ActiveRecord::Base
belongs_to :owner, :class_name => "ToolshareUser"
belongs_to :category, :class_name => "ResourceCategory"
has_attached_file :picture,
:styles => { :medium => "300x300>",
:thumb => "100x100>",
:tiny => "50x50>"},
:storage => :s3,
:s3_credentials => Rails.root.join('config', 's3.yml'),
:path => ":attachment/:id/:style.:extension",
:bucket => 'Toolshare'
end

View File

@ -0,0 +1,3 @@
class ResourceCategory < ActiveRecord::Base
has_many :resources
end

View File

@ -0,0 +1,4 @@
class ToolshareUser < ActiveRecord::Base
has_many :resources, :foreign_key => "owner_id"
attr_accessible :name, :email
end

View File

@ -0,0 +1,38 @@
<h1>Resources</h1>
<%= link_to 'New Resource', new_resource_path, :class => "btn" if can? :create, Resource %>
<table class="lined-table">
<tr>
<th></th>
<th> <%= sort_link 'Owner', :owner_id %></th>
<th> <%= sort_link 'Category', :category_id %></th>
<th> <%= sort_link 'Name', :name %></th>
<th> <%= sort_link 'Serial', :serial %></th>
<th> <%= sort_link 'Status/Location', :status %></th>
</tr>
<% unless @resources.blank? %>
<% @resources.group_by(&:supercategory).each do |supercategory,resources| %>
<tr><th><%= supercategory %></th></tr>
<% resources.each do |resource| %>
<tr>
<td>
<%= link_to image_tag(resource.picture.url(:tiny)), resource.picture.url, :popup => ['index_image_preview', 'height=300,width=400'] if resource.picture? %>
</td>
<td>
<%=h resource.owner.name if resource.owner %>
<td><%=h resource.category.name unless resource.category.nil? %></td>
<td><%=h resource.name %></td>
<td><%=h resource.serial %></td>
<td><%=h resource.status %></td>
<td><%= link_to 'Edit', edit_resource_path(resource) if can? :update, resource %></td>
<td><%= link_to 'Destroy', resource, :confirm => 'Are you sure you want to delete this?', :method => :delete if can? :destroy, resource %></td>
</tr>
<% end %>
<% end %>
<% end %>
</table>
<br />

View File

@ -8,6 +8,7 @@ Dooraccess::Application.routes.draw do
match 'paypal_csvs/:id/link' => 'paypal_csvs#link', :as => :link_paypal_csv match 'paypal_csvs/:id/link' => 'paypal_csvs#link', :as => :link_paypal_csv
resources :payments resources :payments
resources :resources
match 'statistics' => 'statistics#index', :as => :statistics match 'statistics' => 'statistics#index', :as => :statistics
match 'statistics/mac_log' => 'statistics#mac_log', :as => :mac_statistics match 'statistics/mac_log' => 'statistics#mac_log', :as => :mac_statistics

2
config/s3.yml.example Normal file
View File

@ -0,0 +1,2 @@
access_key_id: YOUR_PUBLIC_ACCESS_KEY
secret_access_key: YOUR_SECRET_ACCESS_KEY

View File

@ -0,0 +1,26 @@
class CreateResources < ActiveRecord::Migration
def up
create_table "resources", :force => true do |t|
t.string "type"
t.integer "owner_id"
t.integer "category_id"
t.string "name"
t.string "serial"
t.string "specs"
t.string "status"
t.boolean "donatable"
t.string "picture_file_name"
t.string "picture_content_type"
t.integer "picture_file_size"
t.datetime "picture_updated_at"
t.text "notes"
t.datetime "created_at"
t.datetime "updated_at"
t.string "estimated_value"
end
end
def down
drop_table :resources
end
end

View File

@ -0,0 +1,14 @@
class CreateCategories < ActiveRecord::Migration
def up
create_table "resource_categories", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
t.string "parent"
end
end
def down
drop_table :resource_categories
end
end

View File

@ -0,0 +1,27 @@
class CreateToolshareUsers < ActiveRecord::Migration
def up
create_table "toolshare_users", :force => true do |t|
t.string "email", :default => "", :null => false
t.string "encrypted_password", :limit => 128, :default => "", :null => false
t.string "password_salt", :default => "", :null => false
t.string "confirmation_token"
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
t.string "reset_password_token"
t.string "remember_token"
t.datetime "remember_created_at"
t.integer "sign_in_count", :default => 0
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"
t.string "name"
end
end
def down
drop_table :toolshare_users
end
end

View File

@ -0,0 +1,5 @@
class ChangeResourceTypeToSuperCategory < ActiveRecord::Migration
def change
rename_column :resources, :type, :supercategory
end
end

View File

@ -11,7 +11,7 @@
# #
# It's strongly recommended to check this file into your version control system. # It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20140209025344) do ActiveRecord::Schema.define(:version => 20140209072532) do
create_table "cards", :force => true do |t| create_table "cards", :force => true do |t|
t.string "card_number" t.string "card_number"
@ -116,6 +116,32 @@ ActiveRecord::Schema.define(:version => 20140209025344) do
t.datetime "updated_at", :null => false t.datetime "updated_at", :null => false
end end
create_table "resource_categories", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
t.string "parent"
end
create_table "resources", :force => true do |t|
t.string "supercategory"
t.integer "owner_id"
t.integer "category_id"
t.string "name"
t.string "serial"
t.string "specs"
t.string "status"
t.boolean "donatable"
t.string "picture_file_name"
t.string "picture_content_type"
t.integer "picture_file_size"
t.datetime "picture_updated_at"
t.text "notes"
t.datetime "created_at"
t.datetime "updated_at"
t.string "estimated_value"
end
create_table "settings", :force => true do |t| create_table "settings", :force => true do |t|
t.string "var", :null => false t.string "var", :null => false
t.text "value" t.text "value"
@ -127,6 +153,26 @@ ActiveRecord::Schema.define(:version => 20140209025344) do
add_index "settings", ["thing_type", "thing_id", "var"], :name => "index_settings_on_thing_type_and_thing_id_and_var", :unique => true add_index "settings", ["thing_type", "thing_id", "var"], :name => "index_settings_on_thing_type_and_thing_id_and_var", :unique => true
create_table "toolshare_users", :force => true do |t|
t.string "email", :default => "", :null => false
t.string "encrypted_password", :limit => 128, :default => "", :null => false
t.string "password_salt", :default => "", :null => false
t.string "confirmation_token"
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
t.string "reset_password_token"
t.string "remember_token"
t.datetime "remember_created_at"
t.integer "sign_in_count", :default => 0
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"
t.string "name"
end
create_table "user_certifications", :force => true do |t| create_table "user_certifications", :force => true do |t|
t.integer "user_id" t.integer "user_id"
t.integer "certification_id" t.integer "certification_id"