hackathon_manager 0.10.3 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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:
|