qalam_merit 4.0.35 → 4.5.04
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/merit/generators/active_record/templates/create_merit_badges.erb +1 -1
- data/lib/merit/generators/install_generator.rb +4 -4
- data/lib/merit/generators/templates/badge.erb +27 -7
- data/lib/merit/generators/templates/{badge_sash.erb → qalam_badge_sash.erb} +3 -4
- data/lib/merit/generators/templates/{sash.erb → qalam_sash.erb} +2 -3
- data/lib/merit/models/active_record/badges_sash.rb +2 -1
- data/lib/merit/models/active_record/{score.rb → qalam_score.rb} +5 -5
- data/lib/merit/models/active_record/sash.rb +4 -2
- data/lib/merit/models/base/sash.rb +2 -2
- data/lib/merit/models/sash_concern.rb +2 -2
- data/qalam_merit.gemspec +1 -1
- data/test/integration/navigation_test.rb +2 -2
- data/test/unit/{score_test.rb → qalam_score_test.rb} +3 -3
- data/test/unit/sash_test.rb +6 -6
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 140a8d032105ba04f4aa8437a96c11a3dfb16d8a0f69f0d8f35ffba23fed32cc
|
4
|
+
data.tar.gz: 19c14cbe7e3bd1b43ad3a40bd708fb1c4b987200ec6644286b069cc3d69c7384
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4980b0106912407b27bb599417109b8b8d43da16f97015fbb82fd6ea71be7eef7a740c73ef773bc95dbd7e0a5d168ecbfdc2d9798210f92d90fb61e42a1119e1
|
7
|
+
data.tar.gz: a851a6488e8b3ae6ab62d431c01f3c1b28f1f138c210a22b8daaab84ac8174654da0378057c91c8fdb2b9d37aa9bd7fa75c84b2ff8abdb808bb5dbdfaddbc86f
|
@@ -7,10 +7,10 @@ class CreateMeritBadges < ActiveRecord::Migration<%= migration_version %>
|
|
7
7
|
t.integer :points, default: 0
|
8
8
|
t.text :description
|
9
9
|
t.string :difficulty
|
10
|
+
t.boolean :active, default: true
|
10
11
|
t.references :user, limit: 8, foreign_key: true, index: true, null: true
|
11
12
|
t.references :root_account, foreign_key: { to_table: 'accounts'}, limit: 8, null: false, index: true
|
12
13
|
|
13
|
-
|
14
14
|
t.timestamps
|
15
15
|
end
|
16
16
|
end
|
@@ -9,12 +9,12 @@ module Merit
|
|
9
9
|
def copy_migrations_and_model
|
10
10
|
template 'merit.erb', 'config/initializers/merit.rb'
|
11
11
|
sleep 1.1
|
12
|
-
template '
|
13
|
-
sleep 1.1
|
12
|
+
# template 'qalam_sash.erb', 'app/models/merit/qalam_sash.rb'
|
13
|
+
# sleep 1.1
|
14
14
|
template 'badge.erb', 'app/models/merit/badge.rb'
|
15
15
|
sleep 1.1
|
16
|
-
template '
|
17
|
-
sleep 1.1
|
16
|
+
# template 'qalam_badge_sash.erb', 'app/models/merit/qalam_badge_sash.rb'
|
17
|
+
# sleep 1.1
|
18
18
|
template 'merit_badge_rules.erb', 'app/models/merit/badge_rules.rb'
|
19
19
|
sleep 1.1
|
20
20
|
template 'merit_point_rules.erb', 'app/models/merit/point_rules.rb'
|
@@ -1,27 +1,38 @@
|
|
1
1
|
### QALAM_MERIT ###
|
2
|
-
class Merit::Badge <
|
2
|
+
class Merit::Badge < ActiveRecord::Base
|
3
3
|
self.table_name = "merit_badges"
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
before_validation :strip_whitespace
|
6
|
+
def strip_whitespace
|
7
|
+
self.name = self.name.strip unless self.name.nil?
|
8
|
+
self.description = self.description.strip unless self.description.nil?
|
9
|
+
end
|
10
|
+
|
11
|
+
validates :root_account_id, presence: true
|
12
|
+
validates :name, presence: true, length: { minimum: 3, maximum: 10 }
|
13
|
+
validates :points, presence: true, numericality: true, :inclusion => 1..100
|
7
14
|
validates :description, presence: false, length: { maximum: 50 }
|
8
15
|
|
9
16
|
has_one :image, :class_name => 'Attachment', :as => :context, :inverse_of => :context, :dependent => :destroy
|
10
17
|
belongs_to :root_account, foreign_key: "root_account_id", class_name: 'Account'
|
11
18
|
belongs_to :created_by, foreign_key: "user_id", class_name: 'User'
|
12
|
-
has_many :badges_sashes, class_name: 'Merit::
|
19
|
+
has_many :badges_sashes, class_name: 'Merit::QalamBadgeSash'
|
13
20
|
has_many :sashes, through: :badges_sashes, source: :sash
|
14
21
|
|
22
|
+
def image_url
|
23
|
+
# self.image.public_url if self.image
|
24
|
+
end
|
25
|
+
|
15
26
|
class << self
|
16
27
|
def find_by_id(ids)
|
17
28
|
ids = Array.wrap(ids)
|
18
29
|
find { |b| ids.include? b[:id] }
|
19
30
|
end
|
20
|
-
|
31
|
+
|
21
32
|
def by_name(name)
|
22
33
|
find { |b| b.name.to_s == name.to_s }
|
23
34
|
end
|
24
|
-
|
35
|
+
|
25
36
|
def by_level(level)
|
26
37
|
find { |b| b.level.to_s == level.to_s }
|
27
38
|
end
|
@@ -41,9 +52,18 @@ class Merit::Badge < ApplicationRecord
|
|
41
52
|
# orm-specified
|
42
53
|
def _define_related_entries_method(meritable_class_name)
|
43
54
|
define_method(:"#{meritable_class_name.underscore.pluralize}") do
|
44
|
-
sashes = Merit::
|
55
|
+
sashes = Merit::QalamBadgeSash.where(badge_id: id).pluck(:sash_id)
|
45
56
|
meritable_class_name.constantize.where(sash_id: sashes)
|
46
57
|
end
|
47
58
|
end
|
59
|
+
|
60
|
+
def create_with_attachment(account, badge, attachment)
|
61
|
+
account.shard.activate do
|
62
|
+
att = Attachment.create_data_attachment(badge, attachment)
|
63
|
+
badge.image = att
|
64
|
+
badge.save!
|
65
|
+
badge
|
66
|
+
end
|
67
|
+
end
|
48
68
|
end
|
49
69
|
end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
### QALAM_MERIT ###
|
2
|
-
class Merit::
|
2
|
+
class Merit::QalamBadgeSash < ActiveRecord::Base
|
3
3
|
self.table_name = "badges_sashes"
|
4
4
|
belongs_to :badge, foreign_key: "badge_id", class_name: 'Merit::Badge'
|
5
|
-
belongs_to :sash, foreign_key: "sash_id", class_name: 'Merit::
|
5
|
+
belongs_to :sash, foreign_key: "sash_id", class_name: 'Merit::QalamSash'
|
6
6
|
# has_many :users, through: :sash, source: :users
|
7
7
|
|
8
8
|
class << self
|
9
9
|
def user(badge_sash_id = nil)
|
10
10
|
return [] unless badge_sash_id
|
11
11
|
|
12
|
-
return [] unless badge_sash = Merit::
|
12
|
+
return [] unless badge_sash = Merit::QalamBBadgeSash.find(badge_sash_id)
|
13
13
|
sash = badge_sash.sash
|
14
14
|
|
15
15
|
return [] unless sash && sash.id && sash_id = sash.id
|
@@ -18,4 +18,3 @@ class Merit::BadgeSash < ApplicationRecord
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
21
|
-
|
@@ -1,7 +1,7 @@
|
|
1
1
|
### QALAM_MERIT ###
|
2
|
-
class Merit::
|
2
|
+
class Merit::QalamSash < ActiveRecord::Base
|
3
3
|
self.table_name = "sashes"
|
4
|
-
has_many :badges_sashes, class_name: 'Merit::
|
4
|
+
has_many :badges_sashes, class_name: 'Merit::QalamBadgeSash'
|
5
5
|
has_many :badges, through: :badges_sashes, source: :badge
|
6
6
|
|
7
7
|
class << self
|
@@ -12,4 +12,3 @@ class Merit::Sash < ApplicationRecord
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
15
|
-
|
@@ -1,7 +1,8 @@
|
|
1
1
|
module Merit::Models::ActiveRecord
|
2
2
|
class BadgesSash < ActiveRecord::Base
|
3
3
|
include Merit::Models::BadgesSashConcern
|
4
|
-
|
4
|
+
belongs_to :badge, foreign_key: "badge_id", class_name: 'Merit::Badge'
|
5
|
+
belongs_to :sash, foreign_key: "sash_id", class_name: 'Merit::Sash'
|
5
6
|
has_many :activity_logs,
|
6
7
|
class_name: 'Merit::ActivityLog',
|
7
8
|
as: :related_change
|
@@ -1,17 +1,17 @@
|
|
1
1
|
module Merit::Models::ActiveRecord
|
2
|
-
class
|
2
|
+
class QalamScore < ActiveRecord::Base
|
3
3
|
self.table_name = :merit_scores
|
4
4
|
belongs_to :sash
|
5
5
|
has_many :score_points,
|
6
6
|
dependent: :destroy,
|
7
|
-
class_name: 'Merit::
|
7
|
+
class_name: 'Merit::QalamScore::Point'
|
8
8
|
|
9
9
|
def points
|
10
10
|
score_points.group(:score_id).sum(:num_points).values.first || 0
|
11
11
|
end
|
12
12
|
|
13
13
|
class Point < ActiveRecord::Base
|
14
|
-
belongs_to :score, class_name: 'Merit::
|
14
|
+
belongs_to :score, foreign_key: "score_id", class_name: 'Merit::QalamScore'
|
15
15
|
has_one :sash, through: :score
|
16
16
|
has_many :activity_logs,
|
17
17
|
class_name: 'Merit::ActivityLog',
|
@@ -21,5 +21,5 @@ module Merit::Models::ActiveRecord
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
class Merit::
|
25
|
-
class Merit::
|
24
|
+
class Merit::QalamScore < Merit::Models::ActiveRecord::QalamScore; end
|
25
|
+
class Merit::QalamScore::Point < Merit::Models::ActiveRecord::QalamScore::Point; end
|
@@ -7,9 +7,11 @@ module Merit::Models::ActiveRecord
|
|
7
7
|
# unnecessary. It should be transparent at the application.
|
8
8
|
class Sash < ActiveRecord::Base
|
9
9
|
include Merit::Models::SashConcern
|
10
|
+
self.table_name = "sashes"
|
10
11
|
|
11
12
|
has_many :badges_sashes, dependent: :destroy
|
12
|
-
has_many :
|
13
|
+
has_many :badges, through: :badges_sashes, source: :badge
|
14
|
+
has_many :scores, dependent: :destroy, class_name: 'Merit::QalamScore'
|
13
15
|
|
14
16
|
after_create :create_scores
|
15
17
|
|
@@ -18,7 +20,7 @@ module Merit::Models::ActiveRecord
|
|
18
20
|
# @param category [String] The category
|
19
21
|
# @return [ActiveRecord::Relation] containing the points
|
20
22
|
def score_points(options = {})
|
21
|
-
scope = Merit::
|
23
|
+
scope = Merit::QalamScore::Point
|
22
24
|
.joins(:score)
|
23
25
|
.where('merit_scores.sash_id = ?', id)
|
24
26
|
if (category = options[:category])
|
@@ -32,7 +32,7 @@ module Merit
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def add_points(num_points, options = {})
|
35
|
-
point = Merit::
|
35
|
+
point = Merit::QalamScore::Point.new
|
36
36
|
point.num_points = num_points
|
37
37
|
scores
|
38
38
|
.where(category: options[:category] || 'default')
|
@@ -48,7 +48,7 @@ module Merit
|
|
48
48
|
private
|
49
49
|
|
50
50
|
def create_scores
|
51
|
-
scores << Merit::
|
51
|
+
scores << Merit::QalamScore.create
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
@@ -31,7 +31,7 @@ module Merit::Models
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def add_points(num_points, options = {})
|
34
|
-
point = Merit::
|
34
|
+
point = Merit::QalamScore::Point.new
|
35
35
|
point.num_points = num_points
|
36
36
|
scores
|
37
37
|
.where(category: options[:category] || 'default')
|
@@ -47,7 +47,7 @@ module Merit::Models
|
|
47
47
|
private
|
48
48
|
|
49
49
|
def create_scores
|
50
|
-
scores << Merit::
|
50
|
+
scores << Merit::QalamScore.create
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
data/qalam_merit.gemspec
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.files = `git ls-files`.split("\n").reject{|f| f =~ /^\./ }
|
7
7
|
s.test_files = `git ls-files -- test/*`.split("\n")
|
8
8
|
s.license = 'MIT'
|
9
|
-
s.version = '4.
|
9
|
+
s.version = '4.5.04'
|
10
10
|
s.authors = ["Tute Costa", "Ahmed Abdelhamid"]
|
11
11
|
s.email = ['tutecosta@gmail.com', 'a.hamid@nezam.io']
|
12
12
|
|
@@ -107,12 +107,12 @@ class NavigationTest < ActionDispatch::IntegrationTest
|
|
107
107
|
assert user.badges.empty?, 'Should not have badges'
|
108
108
|
|
109
109
|
assert_equal 0, user.points
|
110
|
-
assert_equal 0, Merit::
|
110
|
+
assert_equal 0, Merit::QalamScore::Point.count
|
111
111
|
user.add_points 15
|
112
112
|
assert_equal 15, user.points
|
113
113
|
user.subtract_points 15
|
114
114
|
assert_equal 0, user.points
|
115
|
-
assert_equal 2, Merit::
|
115
|
+
assert_equal 2, Merit::QalamScore::Point.count
|
116
116
|
|
117
117
|
# Tenth comment with errors doesn't change reputation
|
118
118
|
badges = user.reload.badges
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
describe Merit::
|
3
|
+
describe Merit::QalamScore do
|
4
4
|
it 'Point#sash_id delegates to Score' do
|
5
|
-
score = Merit::
|
5
|
+
score = Merit::QalamScore.new
|
6
6
|
score.sash_id = 33
|
7
7
|
|
8
|
-
point = Merit::
|
8
|
+
point = Merit::QalamScore::Point.new
|
9
9
|
point.score = score
|
10
10
|
|
11
11
|
_(point.sash_id).must_be :==, score.sash_id
|
data/test/unit/sash_test.rb
CHANGED
@@ -10,7 +10,7 @@ class SashTest < ActiveSupport::TestCase
|
|
10
10
|
describe "when category specified" do
|
11
11
|
it "should create a new Point with specified category" do
|
12
12
|
@sash.add_points 5, category: @custom_category
|
13
|
-
score = Merit::
|
13
|
+
score = Merit::QalamScore.last
|
14
14
|
point = score.score_points.last
|
15
15
|
|
16
16
|
assert_equal point.num_points, 5
|
@@ -19,10 +19,10 @@ class SashTest < ActiveSupport::TestCase
|
|
19
19
|
end
|
20
20
|
|
21
21
|
it "should create a new Point in category default with specified number of points" do
|
22
|
-
assert_difference("Merit::
|
22
|
+
assert_difference("Merit::QalamScore::Point.count", 1) do
|
23
23
|
@sash.add_points 5
|
24
24
|
end
|
25
|
-
score = Merit::
|
25
|
+
score = Merit::QalamScore.last
|
26
26
|
point = score.score_points.last
|
27
27
|
|
28
28
|
assert_equal point.num_points, 5
|
@@ -34,7 +34,7 @@ class SashTest < ActiveSupport::TestCase
|
|
34
34
|
describe "when category specified" do
|
35
35
|
it "should create a new Point with specified category" do
|
36
36
|
@sash.subtract_points 5, category: @custom_category
|
37
|
-
score = Merit::
|
37
|
+
score = Merit::QalamScore.last
|
38
38
|
point = score.score_points.last
|
39
39
|
|
40
40
|
assert_equal point.num_points, -5
|
@@ -43,10 +43,10 @@ class SashTest < ActiveSupport::TestCase
|
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should create a new Point in category default with inverse of specified number of points" do
|
46
|
-
assert_difference("Merit::
|
46
|
+
assert_difference("Merit::QalamScore::Point.count", 1) do
|
47
47
|
@sash.subtract_points 5
|
48
48
|
end
|
49
|
-
score = Merit::
|
49
|
+
score = Merit::QalamScore.last
|
50
50
|
point = score.score_points.last
|
51
51
|
|
52
52
|
assert_equal point.num_points, -5
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qalam_merit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.5.04
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tute Costa
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-02-
|
12
|
+
date: 2021-02-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: zeitwerk
|
@@ -147,19 +147,19 @@ files:
|
|
147
147
|
- lib/merit/generators/merit_generator.rb
|
148
148
|
- lib/merit/generators/remove_generator.rb
|
149
149
|
- lib/merit/generators/templates/badge.erb
|
150
|
-
- lib/merit/generators/templates/badge_sash.erb
|
151
150
|
- lib/merit/generators/templates/merit.erb
|
152
151
|
- lib/merit/generators/templates/merit_badge_rules.erb
|
153
152
|
- lib/merit/generators/templates/merit_point_rules.erb
|
154
153
|
- lib/merit/generators/templates/merit_rank_rules.erb
|
155
|
-
- lib/merit/generators/templates/
|
154
|
+
- lib/merit/generators/templates/qalam_badge_sash.erb
|
155
|
+
- lib/merit/generators/templates/qalam_sash.erb
|
156
156
|
- lib/merit/judge.rb
|
157
157
|
- lib/merit/models/action_concern.rb
|
158
158
|
- lib/merit/models/active_record/action.rb
|
159
159
|
- lib/merit/models/active_record/activity_log.rb
|
160
160
|
- lib/merit/models/active_record/badges_sash.rb
|
161
|
+
- lib/merit/models/active_record/qalam_score.rb
|
161
162
|
- lib/merit/models/active_record/sash.rb
|
162
|
-
- lib/merit/models/active_record/score.rb
|
163
163
|
- lib/merit/models/badges_sash_concern.rb
|
164
164
|
- lib/merit/models/base/badges_sash.rb
|
165
165
|
- lib/merit/models/base/sash.rb
|
@@ -247,11 +247,11 @@ files:
|
|
247
247
|
- test/unit/action_test.rb
|
248
248
|
- test/unit/base_target_finder_test.rb
|
249
249
|
- test/unit/merit_unit_test.rb
|
250
|
+
- test/unit/qalam_score_test.rb
|
250
251
|
- test/unit/rule_unit_test.rb
|
251
252
|
- test/unit/rules_matcher_test.rb
|
252
253
|
- test/unit/sash_finder_test.rb
|
253
254
|
- test/unit/sash_test.rb
|
254
|
-
- test/unit/score_test.rb
|
255
255
|
- test/unit/target_finder_test.rb
|
256
256
|
homepage: https://github.com/merit-gem/merit
|
257
257
|
licenses:
|
@@ -352,9 +352,9 @@ test_files:
|
|
352
352
|
- test/unit/action_test.rb
|
353
353
|
- test/unit/base_target_finder_test.rb
|
354
354
|
- test/unit/merit_unit_test.rb
|
355
|
+
- test/unit/qalam_score_test.rb
|
355
356
|
- test/unit/rule_unit_test.rb
|
356
357
|
- test/unit/rules_matcher_test.rb
|
357
358
|
- test/unit/sash_finder_test.rb
|
358
359
|
- test/unit/sash_test.rb
|
359
|
-
- test/unit/score_test.rb
|
360
360
|
- test/unit/target_finder_test.rb
|