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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb1129dc2d896557cf6d10ff44b69774fba8c6f665463a11dff9e03700d01122
4
- data.tar.gz: 96b5f59cf1ad71cfe5f1aadee19b81442b9787a5972c01f0ae9d273e0eac8901
3
+ metadata.gz: 140a8d032105ba04f4aa8437a96c11a3dfb16d8a0f69f0d8f35ffba23fed32cc
4
+ data.tar.gz: 19c14cbe7e3bd1b43ad3a40bd708fb1c4b987200ec6644286b069cc3d69c7384
5
5
  SHA512:
6
- metadata.gz: a4766494fb1d6fbb73b559648bde642f9216871148bcde5493413aefa9b664e992bd679ae0a943d05ce2e2b1488c0063074a91dc993a1cc0bc94bdb5a3f3abf6
7
- data.tar.gz: 1f6cd67f0fa33b5ea14c64ec2b5b98ffa153a3fb05324ba6cc11b954ed40981c1509667e9f8fe99c6d3e0ee69aae956f1b860cdc667fcb95315b4379b65ceb54
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 'sash.erb', 'app/models/merit/sash.rb'
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 'badge_sash.erb', 'app/models/merit/badge_sash.rb'
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 < ApplicationRecord
2
+ class Merit::Badge < ActiveRecord::Base
3
3
  self.table_name = "merit_badges"
4
4
 
5
- validates :name, presence: true, length: { minimum: 3 }
6
- validates :points, numericality: true, :inclusion => 1..20
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::BadgeSash'
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::BadgeSash.where(badge_id: id).pluck(:sash_id)
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::BadgeSash < ApplicationRecord
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::Sash'
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::BadgeSash.find(badge_sash_id)
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::Sash < ApplicationRecord
2
+ class Merit::QalamSash < ActiveRecord::Base
3
3
  self.table_name = "sashes"
4
- has_many :badges_sashes, class_name: 'Merit::BadgeSash'
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 Score < ActiveRecord::Base
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::Score::Point'
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::Score'
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::Score < Merit::Models::ActiveRecord::Score; end
25
- class Merit::Score::Point < Merit::Models::ActiveRecord::Score::Point; end
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 :scores, dependent: :destroy, class_name: 'Merit::Score'
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::Score::Point
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::Score::Point.new
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::Score.create
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::Score::Point.new
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::Score.create
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.0.35'
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::Score::Point.count
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::Score::Point.count
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::Score do
3
+ describe Merit::QalamScore do
4
4
  it 'Point#sash_id delegates to Score' do
5
- score = Merit::Score.new
5
+ score = Merit::QalamScore.new
6
6
  score.sash_id = 33
7
7
 
8
- point = Merit::Score::Point.new
8
+ point = Merit::QalamScore::Point.new
9
9
  point.score = score
10
10
 
11
11
  _(point.sash_id).must_be :==, score.sash_id
@@ -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::Score.last
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::Score::Point.count", 1) do
22
+ assert_difference("Merit::QalamScore::Point.count", 1) do
23
23
  @sash.add_points 5
24
24
  end
25
- score = Merit::Score.last
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::Score.last
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::Score::Point.count", 1) do
46
+ assert_difference("Merit::QalamScore::Point.count", 1) do
47
47
  @sash.subtract_points 5
48
48
  end
49
- score = Merit::Score.last
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.0.35
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-15 00:00:00.000000000 Z
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/sash.erb
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