hackathon_manager 0.10.3 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/manage/application_controller.rb +5 -0
- data/app/controllers/manage/trackable_events_controller.rb +85 -0
- data/app/controllers/manage/trackable_tags_controller.rb +67 -0
- data/app/models/trackable_event.rb +8 -0
- data/app/models/trackable_tag.rb +10 -0
- data/app/views/layouts/manage/application.html.haml +4 -0
- data/app/views/manage/trackable_events/_form.html.haml +14 -0
- data/app/views/manage/trackable_events/edit.html.haml +11 -0
- data/app/views/manage/trackable_events/index.html.haml +29 -0
- data/app/views/manage/trackable_events/new.html.haml +3 -0
- data/app/views/manage/trackable_events/show.html.haml +18 -0
- data/app/views/manage/trackable_tags/_form.html.haml +9 -0
- data/app/views/manage/trackable_tags/edit.html.haml +4 -0
- data/app/views/manage/trackable_tags/index.html.haml +20 -0
- data/app/views/manage/trackable_tags/new.html.haml +4 -0
- data/app/views/manage/trackable_tags/show.html.haml +31 -0
- data/config/routes.rb +2 -0
- data/db/migrate/20190107232955_create_trackable_tags.rb +10 -0
- data/db/migrate/20190107233210_create_trackable_events.rb +11 -0
- data/lib/hackathon_manager/version.rb +1 -1
- data/test/factories/trackable_event.rb +7 -0
- data/test/factories/trackable_tag.rb +7 -0
- metadata +20 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de045d24ad6751129f094dc294549b9eb0931d8619d3873142f862ba286ba0c8
|
4
|
+
data.tar.gz: 43adf2336dce9187e1a430f99b6ae87cc82f827b06dbffdaa83cb974c69c1d92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d29229b913d9af245341d9826308a6fcf53bd5c1c4bff7aacf2aad0e50f0a5351de3766b4571ebc3bd63867fd6f89d60cb6850179a912544dc8f5a1e4974491b
|
7
|
+
data.tar.gz: 1c33c481248ac95f4ae82ee9ab150e42aa812a6529c5a010a9886478495d1ae77ee1f428de676869e36a8fb01f6467445fdffe86968e754e6a681d4b412cbf57
|
@@ -1,6 +1,7 @@
|
|
1
1
|
class Manage::ApplicationController < ApplicationController
|
2
2
|
before_action :logged_in
|
3
3
|
before_action :limit_admin_access, only: ["edit", "update", "new", "create", "destroy", "convert_to_admin", "deliver", "merge", "perform_merge", "toggle_bus_captain", "duplicate", "update_acc_status", "send_update_email", "live_preview"]
|
4
|
+
skip_before_action :verify_authenticity_token, if: :json_request?
|
4
5
|
|
5
6
|
def logged_in
|
6
7
|
authenticate_user!
|
@@ -10,4 +11,8 @@ class Manage::ApplicationController < ApplicationController
|
|
10
11
|
def limit_admin_access
|
11
12
|
redirect_to url_for(controller: controller_name, action: :index) if current_user.admin_limited_access
|
12
13
|
end
|
14
|
+
|
15
|
+
def json_request?
|
16
|
+
request.format.json?
|
17
|
+
end
|
13
18
|
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
class Manage::TrackableEventsController < Manage::ApplicationController
|
2
|
+
before_action :set_trackable_event, only: [:show, :edit, :update, :destroy]
|
3
|
+
before_action :scope_limited_admin_access, only: [:edit, :update, :destroy]
|
4
|
+
|
5
|
+
respond_to :html, :json
|
6
|
+
|
7
|
+
# GET /manage/trackable_events
|
8
|
+
def index
|
9
|
+
@trackable_events = TrackableEvent.all
|
10
|
+
respond_with(:manage, @trackable_events)
|
11
|
+
end
|
12
|
+
|
13
|
+
# GET /manage/trackable_events/1
|
14
|
+
def show
|
15
|
+
respond_with(:manage, @trackable_event)
|
16
|
+
end
|
17
|
+
|
18
|
+
# GET /manage/trackable_events/new
|
19
|
+
def new
|
20
|
+
trackable_tag_id = params[:trackable_tag_id]
|
21
|
+
@trackable_event = TrackableEvent.new(trackable_tag_id: trackable_tag_id)
|
22
|
+
respond_with(:manage, @trackable_event)
|
23
|
+
end
|
24
|
+
|
25
|
+
# GET /manage/trackable_events/1/edit
|
26
|
+
def edit
|
27
|
+
end
|
28
|
+
|
29
|
+
# POST /manage/trackable_events
|
30
|
+
def create
|
31
|
+
@trackable_event = TrackableEvent.new(trackable_event_params.merge(user_id: current_user.id))
|
32
|
+
|
33
|
+
if @trackable_event.save
|
34
|
+
respond_to do |format|
|
35
|
+
format.html { redirect_to manage_trackable_tag_path(@trackable_event.trackable_tag), notice: 'Trackable event was successfully created.' }
|
36
|
+
format.json { render json: @trackable_event }
|
37
|
+
end
|
38
|
+
else
|
39
|
+
render :new
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# PATCH/PUT /manage/trackable_events/1
|
44
|
+
def update
|
45
|
+
if @trackable_event.update(trackable_event_params)
|
46
|
+
respond_to do |format|
|
47
|
+
format.html { redirect_to manage_trackable_tag_path(@trackable_event.trackable_tag), notice: 'Trackable event was successfully updated.' }
|
48
|
+
format.json { render json: @trackable_event }
|
49
|
+
end
|
50
|
+
else
|
51
|
+
render :edit
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# DELETE /manage/trackable_events/1
|
56
|
+
def destroy
|
57
|
+
@trackable_event.destroy
|
58
|
+
respond_to do |format|
|
59
|
+
format.html { redirect_to manage_trackable_tag_url(@trackable_event.trackable_tag), notice: 'Trackable event was successfully destroyed.' }
|
60
|
+
format.json { render json: @trackable_event }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
# Use callbacks to share common setup or constraints between actions.
|
67
|
+
def set_trackable_event
|
68
|
+
@trackable_event = TrackableEvent.find(params[:id])
|
69
|
+
end
|
70
|
+
|
71
|
+
# Only allow a trusted parameter "white list" through.
|
72
|
+
def trackable_event_params
|
73
|
+
params.require(:trackable_event).permit(:band_id, :trackable_tag_id)
|
74
|
+
end
|
75
|
+
|
76
|
+
# Permit limited-access admins (overrides Manage::ApplicationController#limit_admin_access)
|
77
|
+
def limit_admin_access
|
78
|
+
end
|
79
|
+
|
80
|
+
# If the admin is limited, scope changes only to those they created
|
81
|
+
def scope_limited_admin_access
|
82
|
+
return if !current_user.admin_limited_access || @trackable_event.blank? || @trackable_event.user.blank?
|
83
|
+
redirect_to manage_trackable_events_path, notice: 'You may not view events you did not create.' if @trackable_event.user != current_user
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
class Manage::TrackableTagsController < Manage::ApplicationController
|
2
|
+
before_action :set_trackable_tag, only: [:show, :edit, :update, :destroy]
|
3
|
+
|
4
|
+
respond_to :html, :json
|
5
|
+
|
6
|
+
# GET /manage/trackable_tags
|
7
|
+
def index
|
8
|
+
@trackable_tags = TrackableTag.all
|
9
|
+
respond_with(:manage, @trackable_tags)
|
10
|
+
end
|
11
|
+
|
12
|
+
# GET /manage/trackable_tags/1
|
13
|
+
def show
|
14
|
+
respond_with(:manage, @trackable_tag)
|
15
|
+
end
|
16
|
+
|
17
|
+
# GET /manage/trackable_tags/new
|
18
|
+
def new
|
19
|
+
@trackable_tag = TrackableTag.new
|
20
|
+
respond_with(:manage, @questionnaire)
|
21
|
+
end
|
22
|
+
|
23
|
+
# GET /manage/trackable_tags/1/edit
|
24
|
+
def edit
|
25
|
+
end
|
26
|
+
|
27
|
+
# POST /manage/trackable_tags
|
28
|
+
def create
|
29
|
+
@trackable_tag = TrackableTag.new(trackable_tag_params)
|
30
|
+
|
31
|
+
if @trackable_tag.save
|
32
|
+
flash[:notice] = 'Trackable tag was successfully created.'
|
33
|
+
respond_with(:manage, @trackable_tag)
|
34
|
+
else
|
35
|
+
render :new
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# PATCH/PUT /manage/trackable_tags/1
|
40
|
+
def update
|
41
|
+
if @trackable_tag.update(trackable_tag_params)
|
42
|
+
flash[:notice] = 'Trackable tag was successfully updated.'
|
43
|
+
respond_with(:manage, @trackable_tag)
|
44
|
+
else
|
45
|
+
render :edit
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# DELETE /manage/trackable_tags/1
|
50
|
+
def destroy
|
51
|
+
@trackable_tag.destroy
|
52
|
+
flash[:notice] = 'Trackable tag was successfully destroyed.'
|
53
|
+
respond_with(:manage, @trackable_tag)
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
# Use callbacks to share common setup or constraints between actions.
|
59
|
+
def set_trackable_tag
|
60
|
+
@trackable_tag = TrackableTag.find(params[:id])
|
61
|
+
end
|
62
|
+
|
63
|
+
# Only allow a trusted parameter "white list" through.
|
64
|
+
def trackable_tag_params
|
65
|
+
params.require(:trackable_tag).permit(:name)
|
66
|
+
end
|
67
|
+
end
|
@@ -55,6 +55,10 @@
|
|
55
55
|
= active_link_to manage_stats_path, class: "nav-link" do
|
56
56
|
.fa.fa-table.fa-fw.icon-space-r-half
|
57
57
|
Stats
|
58
|
+
%li.nav-item
|
59
|
+
= active_link_to manage_trackable_tags_path, class: "nav-link" do
|
60
|
+
.fa.fa-tag.fa-fw.icon-space-r-half
|
61
|
+
Trackable Tags
|
58
62
|
- unless current_user.admin_limited_access?
|
59
63
|
%h6.sidebar-heading.d-flex.justify-content-between.align-items-center.px-3.mt-4.mb-1.text-muted
|
60
64
|
%span Advanced
|
@@ -0,0 +1,14 @@
|
|
1
|
+
.form-container
|
2
|
+
= bs_horizontal_simple_form_for @trackable_event, url: url_for(action: @trackable_event.new_record? ? "create" : "update", controller: "trackable_events"), html: { "data-validate" => "form" } do |f|
|
3
|
+
= f.error_notification
|
4
|
+
|
5
|
+
.form-inputs
|
6
|
+
= f.input :band_id
|
7
|
+
= f.input :trackable_tag_id, collection: TrackableTag.all, required: true
|
8
|
+
%p
|
9
|
+
User:
|
10
|
+
= current_user.email
|
11
|
+
(current user, this can't be changed)
|
12
|
+
|
13
|
+
.form-actions
|
14
|
+
= f.button :submit, class: 'btn-primary'
|
@@ -0,0 +1,11 @@
|
|
1
|
+
= render "layouts/manage/page_title", title: "Edit Trackable Event", subtitle: @trackable_event.id
|
2
|
+
|
3
|
+
= render 'form'
|
4
|
+
|
5
|
+
%br
|
6
|
+
|
7
|
+
= link_to 'Show', manage_trackable_event_path(@trackable_event)
|
8
|
+
\|
|
9
|
+
= link_to 'Back', manage_trackable_events_path
|
10
|
+
\|
|
11
|
+
= link_to 'Destroy', manage_trackable_event_path(@trackable_event), method: :delete, data: { confirm: 'Are you sure?' }
|
@@ -0,0 +1,29 @@
|
|
1
|
+
= render "layouts/manage/page_title", title: "Trackable Events"
|
2
|
+
|
3
|
+
%table.table.table-striped
|
4
|
+
%thead
|
5
|
+
%tr
|
6
|
+
%th Band
|
7
|
+
%th Trackable tag
|
8
|
+
%th User
|
9
|
+
%th
|
10
|
+
%th
|
11
|
+
%th
|
12
|
+
|
13
|
+
%tbody
|
14
|
+
- @trackable_events.each do |trackable_event|
|
15
|
+
%tr
|
16
|
+
%td= trackable_event.band_id
|
17
|
+
%td= trackable_event.trackable_tag.name
|
18
|
+
%td= trackable_event.user.email
|
19
|
+
%td= link_to 'Show', manage_trackable_event_path(trackable_event)
|
20
|
+
- unless current_user.admin_limited_access && current_user != trackable_event.user
|
21
|
+
%td= link_to 'Edit', edit_manage_trackable_event_path(trackable_event)
|
22
|
+
%td= link_to 'Destroy', manage_trackable_event_path(trackable_event), method: :delete, data: { confirm: 'Are you sure?' }
|
23
|
+
- else
|
24
|
+
%td
|
25
|
+
%td
|
26
|
+
|
27
|
+
%br
|
28
|
+
|
29
|
+
= link_to 'New Trackable event', new_manage_trackable_event_path
|
@@ -0,0 +1,18 @@
|
|
1
|
+
= render "layouts/manage/page_title", title: "Trackable Event", subtitle: @trackable_event.id
|
2
|
+
|
3
|
+
%p
|
4
|
+
%b Band:
|
5
|
+
= @trackable_event.band_id
|
6
|
+
%p
|
7
|
+
%b Created:
|
8
|
+
= display_datetime(@trackable_event.created_at)
|
9
|
+
%p
|
10
|
+
%b Trackable tag:
|
11
|
+
= link_to @trackable_event.trackable_tag.name, manage_trackable_tag_path(@trackable_event.trackable_tag)
|
12
|
+
%p
|
13
|
+
%b User:
|
14
|
+
= link_to @trackable_event.user.email, manage_admin_path(@trackable_event.user)
|
15
|
+
|
16
|
+
= link_to 'Edit', edit_manage_trackable_event_path(@trackable_event)
|
17
|
+
\|
|
18
|
+
= link_to 'Back', manage_trackable_events_path
|
@@ -0,0 +1,9 @@
|
|
1
|
+
.form-container
|
2
|
+
= bs_horizontal_simple_form_for @trackable_tag, url: url_for(action: @trackable_tag.new_record? ? "create" : "update", controller: "trackable_tags"), html: { "data-validate" => "form" } do |f|
|
3
|
+
= f.error_notification
|
4
|
+
|
5
|
+
.form-inputs
|
6
|
+
= f.input :name
|
7
|
+
|
8
|
+
.form-actions
|
9
|
+
= f.button :submit, class: 'btn-primary'
|
@@ -0,0 +1,20 @@
|
|
1
|
+
= render "layouts/manage/page_title", title: "Trackable Tags" do
|
2
|
+
= link_to "New Tag", new_manage_trackable_tag_path, class: "btn btn-sm btn-outline-secondary"
|
3
|
+
|
4
|
+
%table.table.table-striped
|
5
|
+
%thead
|
6
|
+
%tr
|
7
|
+
%th Name
|
8
|
+
%th Events
|
9
|
+
%th Last event
|
10
|
+
%th Add event
|
11
|
+
|
12
|
+
%tbody
|
13
|
+
- @trackable_tags.each do |trackable_tag|
|
14
|
+
%tr
|
15
|
+
%td= link_to trackable_tag.name, manage_trackable_tag_path(trackable_tag)
|
16
|
+
%td= pluralize(trackable_tag.trackable_events.count, "event")
|
17
|
+
%td= trackable_tag.trackable_events.any? ? display_datetime(trackable_tag.sorted_events.first.created_at) : ''
|
18
|
+
%td= link_to 'Add event', new_manage_trackable_event_path(trackable_tag_id: trackable_tag.id)
|
19
|
+
|
20
|
+
%br
|
@@ -0,0 +1,31 @@
|
|
1
|
+
= render "layouts/manage/page_title", title: @trackable_tag.name, subtitle: "Trackable Tag" do
|
2
|
+
.btn-group
|
3
|
+
= link_to 'Edit', edit_manage_trackable_tag_path(@trackable_tag), class: 'btn btn-sm btn-outline-secondary'
|
4
|
+
= link_to 'Delete', manage_trackable_tag_path(@trackable_tag), method: :delete, data: { confirm: "Are you sure? The trackable tag \"#{@trackable_tag.name}\" will be permanently erased. This action is irreversible." }, class: 'btn btn-sm btn-outline-secondary'
|
5
|
+
|
6
|
+
%p
|
7
|
+
%b Name:
|
8
|
+
= @trackable_tag.name
|
9
|
+
|
10
|
+
%p
|
11
|
+
%b= link_to 'Add event', new_manage_trackable_event_path(trackable_tag_id: @trackable_tag.id)
|
12
|
+
|
13
|
+
= area_chart @trackable_tag.trackable_events.group_by_minute(:created_at).count
|
14
|
+
|
15
|
+
%table.table.table-striped
|
16
|
+
%thead
|
17
|
+
%tr
|
18
|
+
%th Date
|
19
|
+
%th Band
|
20
|
+
%th Entered by
|
21
|
+
%th
|
22
|
+
|
23
|
+
%tbody
|
24
|
+
- @trackable_tag.sorted_events.each do |trackable_event|
|
25
|
+
%tr
|
26
|
+
%td= display_datetime(trackable_event.created_at)
|
27
|
+
%td= trackable_event.band_id
|
28
|
+
%td= trackable_event.user.email
|
29
|
+
%td
|
30
|
+
- unless current_user.admin_limited_access && current_user != trackable_event.user
|
31
|
+
= link_to 'Edit', edit_manage_trackable_event_path(trackable_event)
|
data/config/routes.rb
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
class CreateTrackableEvents < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
create_table :trackable_events do |t|
|
4
|
+
t.string :band_id
|
5
|
+
t.references :trackable_tag, foreign_key: true
|
6
|
+
t.references :user, type: :integer, foreign_key: true
|
7
|
+
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hackathon_manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stuart Olivera
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -531,6 +531,8 @@ files:
|
|
531
531
|
- app/controllers/manage/questionnaires_controller.rb
|
532
532
|
- app/controllers/manage/schools_controller.rb
|
533
533
|
- app/controllers/manage/stats_controller.rb
|
534
|
+
- app/controllers/manage/trackable_events_controller.rb
|
535
|
+
- app/controllers/manage/trackable_tags_controller.rb
|
534
536
|
- app/controllers/questionnaires_controller.rb
|
535
537
|
- app/controllers/rsvps_controller.rb
|
536
538
|
- app/controllers/users/omniauth_callbacks_controller.rb
|
@@ -557,6 +559,8 @@ files:
|
|
557
559
|
- app/models/questionnaire.rb
|
558
560
|
- app/models/school.rb
|
559
561
|
- app/models/school_name_duplicate.rb
|
562
|
+
- app/models/trackable_event.rb
|
563
|
+
- app/models/trackable_tag.rb
|
560
564
|
- app/models/user.rb
|
561
565
|
- app/views/application/_bus_list_info.html.haml
|
562
566
|
- app/views/application/_bus_list_stats.html.haml
|
@@ -622,6 +626,16 @@ files:
|
|
622
626
|
- app/views/manage/schools/new.html.haml
|
623
627
|
- app/views/manage/schools/show.html.haml
|
624
628
|
- app/views/manage/stats/index.html.haml
|
629
|
+
- app/views/manage/trackable_events/_form.html.haml
|
630
|
+
- app/views/manage/trackable_events/edit.html.haml
|
631
|
+
- app/views/manage/trackable_events/index.html.haml
|
632
|
+
- app/views/manage/trackable_events/new.html.haml
|
633
|
+
- app/views/manage/trackable_events/show.html.haml
|
634
|
+
- app/views/manage/trackable_tags/_form.html.haml
|
635
|
+
- app/views/manage/trackable_tags/edit.html.haml
|
636
|
+
- app/views/manage/trackable_tags/index.html.haml
|
637
|
+
- app/views/manage/trackable_tags/new.html.haml
|
638
|
+
- app/views/manage/trackable_tags/show.html.haml
|
625
639
|
- app/views/questionnaires/_form.html.haml
|
626
640
|
- app/views/questionnaires/edit.html.haml
|
627
641
|
- app/views/questionnaires/new.html.haml
|
@@ -692,6 +706,8 @@ files:
|
|
692
706
|
- db/migrate/20181125213158_add_grad_year_and_race_ethnicity_to_questionnaires.rb
|
693
707
|
- db/migrate/20181221194407_create_doorkeeper_tables.rb
|
694
708
|
- db/migrate/20181221195241_enable_pkce.rb
|
709
|
+
- db/migrate/20190107232955_create_trackable_tags.rb
|
710
|
+
- db/migrate/20190107233210_create_trackable_events.rb
|
695
711
|
- db/schools.csv
|
696
712
|
- db/seed_messages/questionnaire--accepted.md
|
697
713
|
- db/seed_messages/questionnaire--denied.md
|
@@ -711,6 +727,8 @@ files:
|
|
711
727
|
- test/factories/school.rb
|
712
728
|
- test/factories/school_name_duplicate.rb
|
713
729
|
- test/factories/temp_doorkeeper.rb
|
730
|
+
- test/factories/trackable_event.rb
|
731
|
+
- test/factories/trackable_tag.rb
|
714
732
|
- test/factories/users.rb
|
715
733
|
homepage: https://github.com/sman591/hackathon_manager
|
716
734
|
licenses:
|