qalam_merit 4.5.08 → 4.5.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +0 -0
  3. data/CODE_OF_CONDUCT.md +0 -0
  4. data/Gemfile +0 -0
  5. data/LICENSE.txt +0 -0
  6. data/README.md +0 -0
  7. data/RELEASING.md +0 -0
  8. data/Rakefile +0 -0
  9. data/TESTING.txt +0 -0
  10. data/config/locales/en.yml +0 -0
  11. data/lib/merit/badge_rules_methods.rb +0 -0
  12. data/lib/merit/base_target_finder.rb +0 -0
  13. data/lib/merit/class_methods.rb +1 -1
  14. data/lib/merit/controller_extensions.rb +0 -0
  15. data/lib/merit/generators/active_record/install_generator.rb +0 -0
  16. data/lib/merit/generators/active_record/merit_generator.rb +0 -0
  17. data/lib/merit/generators/active_record/remove_generator.rb +0 -0
  18. data/lib/merit/generators/active_record/templates/add_merit_fields_to_model.erb +0 -0
  19. data/lib/merit/generators/active_record/templates/create_badges_sashes.erb +4 -1
  20. data/lib/merit/generators/active_record/templates/create_merit_actions.erb +0 -0
  21. data/lib/merit/generators/active_record/templates/create_merit_activity_logs.erb +0 -0
  22. data/lib/merit/generators/active_record/templates/create_merit_badges.erb +2 -0
  23. data/lib/merit/generators/active_record/templates/create_sashes.erb +0 -0
  24. data/lib/merit/generators/active_record/templates/create_scores_and_points.erb +6 -3
  25. data/lib/merit/generators/active_record/templates/remove_merit_fields_from_model.erb +0 -0
  26. data/lib/merit/generators/active_record/templates/remove_merit_tables.erb +0 -0
  27. data/lib/merit/generators/install_generator.rb +0 -0
  28. data/lib/merit/generators/merit_generator.rb +9 -1
  29. data/lib/merit/generators/remove_generator.rb +0 -0
  30. data/lib/merit/generators/templates/badge.erb +8 -3
  31. data/lib/merit/generators/templates/merit.erb +0 -0
  32. data/lib/merit/generators/templates/merit_badge_rules.erb +0 -0
  33. data/lib/merit/generators/templates/merit_point_rules.erb +0 -0
  34. data/lib/merit/generators/templates/merit_rank_rules.erb +0 -0
  35. data/lib/merit/generators/templates/qalam_badge_sash.erb +0 -0
  36. data/lib/merit/generators/templates/qalam_sash.erb +0 -0
  37. data/lib/merit/judge.rb +0 -0
  38. data/lib/merit/models/action_concern.rb +0 -0
  39. data/lib/merit/models/active_record/action.rb +0 -0
  40. data/lib/merit/models/active_record/activity_log.rb +0 -0
  41. data/lib/merit/models/active_record/badges_sash.rb +3 -1
  42. data/lib/merit/models/active_record/qalam_score.rb +1 -0
  43. data/lib/merit/models/active_record/sash.rb +2 -0
  44. data/lib/merit/models/badges_sash_concern.rb +0 -0
  45. data/lib/merit/models/base/badges_sash.rb +0 -0
  46. data/lib/merit/models/base/sash.rb +0 -0
  47. data/lib/merit/models/sash_concern.rb +8 -14
  48. data/lib/merit/point_rules_methods.rb +0 -0
  49. data/lib/merit/rank_rules_methods.rb +0 -0
  50. data/lib/merit/reputation_change_observer.rb +0 -0
  51. data/lib/merit/rule.rb +0 -0
  52. data/lib/merit/rules_matcher.rb +0 -0
  53. data/lib/merit/sash_finder.rb +0 -0
  54. data/lib/merit/target_finder.rb +0 -0
  55. data/lib/merit.rb +0 -0
  56. data/qalam_merit.gemspec +3 -3
  57. data/test/dummy/Rakefile +0 -0
  58. data/test/dummy/app/controllers/admin/users_controller.rb +0 -0
  59. data/test/dummy/app/controllers/api/comments_controller.rb +0 -0
  60. data/test/dummy/app/controllers/api/users_controller.rb +0 -0
  61. data/test/dummy/app/controllers/application_controller.rb +0 -0
  62. data/test/dummy/app/controllers/comments_controller.rb +0 -0
  63. data/test/dummy/app/controllers/registrations_controller.rb +0 -0
  64. data/test/dummy/app/controllers/users_controller.rb +0 -0
  65. data/test/dummy/app/helpers/application_helper.rb +0 -0
  66. data/test/dummy/app/models/address.rb +0 -0
  67. data/test/dummy/app/models/comment.rb +0 -0
  68. data/test/dummy/app/models/dummy_observer.rb +0 -0
  69. data/test/dummy/app/models/merit/badge_rules.rb +0 -0
  70. data/test/dummy/app/models/merit/point_rules.rb +0 -0
  71. data/test/dummy/app/models/merit/rank_rules.rb +0 -0
  72. data/test/dummy/app/models/user.rb +0 -0
  73. data/test/dummy/app/views/admin/users/index.html.erb +0 -0
  74. data/test/dummy/app/views/comments/_form.html.erb +0 -0
  75. data/test/dummy/app/views/comments/edit.html.erb +0 -0
  76. data/test/dummy/app/views/comments/index.html.erb +0 -0
  77. data/test/dummy/app/views/comments/new.html.erb +0 -0
  78. data/test/dummy/app/views/comments/show.html.erb +0 -0
  79. data/test/dummy/app/views/layouts/application.html.erb +0 -0
  80. data/test/dummy/app/views/users/_form.html.erb +0 -0
  81. data/test/dummy/app/views/users/edit.html.erb +0 -0
  82. data/test/dummy/app/views/users/index.html.erb +0 -0
  83. data/test/dummy/app/views/users/new.html.erb +0 -0
  84. data/test/dummy/app/views/users/show.html.erb +0 -0
  85. data/test/dummy/config/application.rb +0 -0
  86. data/test/dummy/config/application_api_only.rb +0 -0
  87. data/test/dummy/config/boot.rb +0 -0
  88. data/test/dummy/config/database.yml +0 -0
  89. data/test/dummy/config/environment.rb +0 -0
  90. data/test/dummy/config/environment_api_only.rb +0 -0
  91. data/test/dummy/config/environments/development.rb +0 -0
  92. data/test/dummy/config/environments/production.rb +0 -0
  93. data/test/dummy/config/environments/test.rb +0 -0
  94. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -0
  95. data/test/dummy/config/initializers/inflections.rb +0 -0
  96. data/test/dummy/config/initializers/merit.rb +0 -0
  97. data/test/dummy/config/initializers/mime_types.rb +0 -0
  98. data/test/dummy/config/initializers/new_framework_defaults.rb +0 -0
  99. data/test/dummy/config/initializers/secret_token.rb +0 -0
  100. data/test/dummy/config/initializers/session_store.rb +0 -0
  101. data/test/dummy/config/locales/en.yml +0 -0
  102. data/test/dummy/config/mongoid.yml +0 -0
  103. data/test/dummy/config/routes.rb +0 -0
  104. data/test/dummy/config.ru +0 -0
  105. data/test/dummy/db/migrate/20110421191249_create_users.rb +0 -0
  106. data/test/dummy/db/migrate/20110421191250_create_comments.rb +0 -0
  107. data/test/dummy/db/migrate/20120318022220_add_fields_to_users.rb +0 -0
  108. data/test/dummy/db/migrate/20130321082817_add_fields_to_comments.rb +0 -0
  109. data/test/dummy/db/migrate/20130329224406_create_merit_actions.rb +0 -0
  110. data/test/dummy/db/migrate/20130329224407_create_merit_activity_logs.rb +0 -0
  111. data/test/dummy/db/migrate/20130329224408_create_sashes.rb +0 -0
  112. data/test/dummy/db/migrate/20130329224409_create_badges_sashes.rb +0 -0
  113. data/test/dummy/db/migrate/20130329224410_create_scores_and_points.rb +0 -0
  114. data/test/dummy/db/migrate/20140211144001_create_addresses.rb +0 -0
  115. data/test/dummy/db/migrate/20140819133931_add_target_data_to_merit_actions.rb +0 -0
  116. data/test/dummy/db/schema.rb +0 -0
  117. data/test/dummy/db/seeds.rb +0 -0
  118. data/test/dummy/public/404.html +0 -0
  119. data/test/dummy/public/422.html +0 -0
  120. data/test/dummy/public/500.html +0 -0
  121. data/test/dummy/public/favicon.ico +0 -0
  122. data/test/dummy/public/rails.js +0 -0
  123. data/test/dummy/public/stylesheets/.gitkeep +0 -0
  124. data/test/dummy/public/stylesheets/scaffold.css +0 -0
  125. data/test/integration/navigation_test.rb +0 -0
  126. data/test/support/integration_case.rb +0 -0
  127. data/test/test_helper.rb +0 -0
  128. data/test/unit/action_test.rb +0 -0
  129. data/test/unit/base_target_finder_test.rb +0 -0
  130. data/test/unit/merit_unit_test.rb +0 -0
  131. data/test/unit/qalam_score_test.rb +0 -0
  132. data/test/unit/rule_unit_test.rb +0 -0
  133. data/test/unit/rules_matcher_test.rb +0 -0
  134. data/test/unit/sash_finder_test.rb +0 -0
  135. data/test/unit/sash_test.rb +0 -0
  136. data/test/unit/target_finder_test.rb +0 -0
  137. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3d1f73f153930fdd73e1ba773d40feb481ab847a7d6857623779de05eacb8817
4
- data.tar.gz: 62ddf64eecbb98665f47c841476fc1d5045813ff97db1bcf9c8fe8347c026f57
3
+ metadata.gz: bebc2893139c8f3842d8c2f48de029fb2fef9c4323725e237c3ef31eb7452d9b
4
+ data.tar.gz: aab590590e4ac73b91dd1abc8f6b6bfa3284cc92515001128fcb73d4f3a1b98b
5
5
  SHA512:
6
- metadata.gz: 8e1b99abd43904c894b2e75d590c0d901ab090a24a5f5d83fdd16af6c0307301a74ee93752e5c30f52a3281e763bb8132bb0a4ae14195ec546b29613c3cb6cb5
7
- data.tar.gz: e976e63ad65c74580397199ea05e8f413a17a51834226066774b83c24517f8feb62cff128be39bb1e6c7e3ceccb338f15d21bfcd1e6121bc38ca94e183abb292
6
+ metadata.gz: 31b5e8af9870057622b6f84feaf3816a34971e8af03b0f15b8307a9d68716def3168971400c535030a4eb95c8a84c134362a255508df7c2d091ed1d11700e82c
7
+ data.tar.gz: 3aef2ce1fe1a809077daedf6341672b353542f5dce166d714bf6abf6882c30278f5d982da75f52fc6d636db45446d13399752f539aa65c0b0b542ffdf5736431
data/CHANGELOG.md CHANGED
File without changes
data/CODE_OF_CONDUCT.md CHANGED
File without changes
data/Gemfile CHANGED
File without changes
data/LICENSE.txt CHANGED
File without changes
data/README.md CHANGED
File without changes
data/RELEASING.md CHANGED
File without changes
data/Rakefile CHANGED
File without changes
data/TESTING.txt CHANGED
File without changes
File without changes
File without changes
File without changes
@@ -16,7 +16,7 @@ module Merit
16
16
 
17
17
  # Delegate methods from meritable models to their sash
18
18
  def _merit_delegate_methods_to_sash
19
- methods = %w(badge_ids badges points add_badge add_qalam_badge rm_badge
19
+ methods = %w(badge_ids badges points add_badge rm_badge
20
20
  add_points subtract_points score_points)
21
21
  methods.each { |method| delegate method, to: :_sash }
22
22
  end
File without changes
@@ -2,9 +2,12 @@
2
2
  class CreateBadgesSashes < ActiveRecord::Migration<%= migration_version %>
3
3
  def self.up
4
4
  create_table :badges_sashes do |t|
5
+ t.boolean :active, default: true
5
6
  t.references :badge, limit: 8, foreign_key: { to_table: 'merit_badges'}, index: true, null: true
6
7
  t.references :sash, limit: 8, foreign_key: true, index: true, null: true
7
- t.datetime :created_at
8
+ t.integer :badge_type, default: 0
9
+ t.references :context, polymorphic: true
10
+ t.timestamps
8
11
  end
9
12
  end
10
13
 
@@ -8,7 +8,9 @@ class CreateMeritBadges < ActiveRecord::Migration<%= migration_version %>
8
8
  t.text :description
9
9
  t.string :difficulty
10
10
  t.boolean :active, default: true
11
+ t.datetime :deleted_at
11
12
  t.references :user, limit: 8, foreign_key: true, index: true, null: true
13
+ # t.references :root_account, foreign_key: { to_table: 'accounts'}, limit: 8, null: false, index: true
12
14
 
13
15
  t.timestamps
14
16
  end
@@ -2,15 +2,18 @@
2
2
  class CreateScoresAndPoints < ActiveRecord::Migration<%= migration_version %>
3
3
  def change
4
4
  create_table :merit_scores do |t|
5
- t.references :sash
6
5
  t.string :category, default: 'default'
6
+ t.boolean :active, default: true
7
+ t.references :sash
7
8
  end
8
9
 
9
10
  create_table :merit_score_points do |t|
10
- t.references :score
11
11
  t.bigint :num_points, default: 0
12
12
  t.string :log
13
- t.datetime :created_at
13
+ t.boolean :active, default: true
14
+ t.references :score
15
+ t.references :context, polymorphic: true
16
+ t.timestamps
14
17
  end
15
18
  end
16
19
  end
File without changes
@@ -10,10 +10,14 @@ module Merit
10
10
  inject_into_class(model_path, class_name, " ### END ###\n\n")
11
11
  inject_into_class(model_path, class_name, " has_many :created_badges, class_name: 'Merit::Badge', :dependent => :destroy\n")
12
12
  inject_into_class(model_path, class_name, " has_many :assigned_badges, through: :sash, source: :badges, :dependent => :destroy\n")
13
- inject_into_class(model_path, class_name, " has_many :badges_sashes, through: :sash, source: :badges_sashes, :dependent => :destroy\n")
14
13
  inject_into_class(model_path, class_name, " belongs_to :sash, foreign_key: 'sash_id', class_name: 'Merit::Sash', :dependent => :destroy\n")
15
14
  inject_into_class(model_path, class_name, " has_merit\n")
16
15
  inject_into_class(model_path, class_name, " ### QALAM_MERIT ###\n")
16
+
17
+ inject_into_class(course_path, "Course", " ### END ###\n\n")
18
+ inject_into_class(course_path, "Course", " has_many :badges_sashes, class_name: 'Merit::BadgesSash', :as => :context, :inverse_of => :context, :dependent => :destroy\n")
19
+ inject_into_class(course_path, "Course", " has_many :score_points, class_name: 'Merit::QalamScore::Point', :as => :context, :inverse_of => :context, :dependent => :destroy\n")
20
+ inject_into_class(course_path, "Course", " ### QALAM_MERIT ###\n")
17
21
  end
18
22
  end
19
23
 
@@ -30,6 +34,10 @@ module Merit
30
34
  def model_path
31
35
  @model_path ||= File.join('app', 'models', "#{file_path}.rb")
32
36
  end
37
+
38
+ def course_path
39
+ @course_path ||= File.join('app', 'models', "course.rb")
40
+ end
33
41
  end
34
42
  end
35
43
  end
File without changes
@@ -11,9 +11,9 @@ class Merit::Badge < ActiveRecord::Base
11
11
  self.description = self.description.strip unless self.description.nil?
12
12
  end
13
13
 
14
- validates :name, presence: true, length: { minimum: 3, maximum: 20 }
14
+ validates :name, presence: true, length: { minimum: 1, maximum: 20 }
15
15
  validates :points, presence: true, numericality: true, :inclusion => 1..100
16
- validates :description, presence: true, length: { minimum: 3, maximum: 50 }
16
+ validates :description, presence: true, length: { minimum: 3, maximum: 100 }
17
17
 
18
18
  has_one :image, :class_name => 'Attachment', :as => :context, :inverse_of => :context, :dependent => :destroy
19
19
  belongs_to :created_by, foreign_key: "user_id", class_name: 'User'
@@ -66,7 +66,12 @@ class Merit::Badge < ActiveRecord::Base
66
66
  end
67
67
 
68
68
  def create_with_attachment(account, badge, attachment)
69
- return true if ((attachment.nil? || attachment.to_s == "null") || account.nil? || badge.nil?)
69
+ if ((attachment.nil? || attachment.to_s == "null") || account.nil? || badge.nil?)
70
+ badge.errors.add(:image, :image_required, message: 'Image Required')
71
+ badge.destroy if badge.id
72
+ return false
73
+ end
74
+
70
75
  if attachment.content_type && @valid_images.include?(attachment.content_type)
71
76
  account.shard.activate do
72
77
  att = Attachment.create_data_attachment(badge, attachment)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/lib/merit/judge.rb CHANGED
File without changes
File without changes
File without changes
File without changes
@@ -6,7 +6,9 @@ module Merit::Models::ActiveRecord
6
6
  has_many :activity_logs,
7
7
  class_name: 'Merit::ActivityLog',
8
8
  as: :related_change
9
- belongs_to :course, foreign_key: "course_id", class_name: 'Course'
9
+ # belongs_to :course, foreign_key: "course_id", class_name: 'Course'
10
+ belongs_to :context, :polymorphic => true
11
+ enum badge_type: [:other, :start, :achieve, :pass, :active, :finish]
10
12
 
11
13
  validates_presence_of :badge_id, :sash
12
14
  end
@@ -23,6 +23,7 @@ module Merit::Models::ActiveRecord
23
23
  class_name: 'Merit::ActivityLog',
24
24
  as: :related_change
25
25
  delegate :sash_id, to: :score
26
+ belongs_to :context, :polymorphic => true
26
27
  end
27
28
  end
28
29
  end
@@ -12,6 +12,8 @@ module Merit::Models::ActiveRecord
12
12
  has_many :badges_sashes, dependent: :destroy
13
13
  has_many :badges, through: :badges_sashes, source: :badge
14
14
  has_many :scores, dependent: :destroy, class_name: 'Merit::QalamScore'
15
+ has_many :score_points, through: :scores, source: :badge
16
+
15
17
 
16
18
  after_create :create_scores
17
19
 
File without changes
File without changes
File without changes
@@ -9,8 +9,8 @@ module Merit::Models
9
9
  end
10
10
 
11
11
  def add_badge(badge_id, options = {})
12
- if (course_id = options[:course_id])
13
- bs = Merit::BadgesSash.new(badge_id: badge_id.to_i, course_id: course_id.to_i)
12
+ if (context = options[:context])
13
+ bs = Merit::BadgesSash.new(badge_id: badge_id.to_i, context: context, badge_type: options[:badge_type])
14
14
  else
15
15
  bs = Merit::BadgesSash.new(badge_id: badge_id.to_i)
16
16
  end
@@ -19,20 +19,13 @@ module Merit::Models
19
19
  end
20
20
 
21
21
  def rm_badge(badge_id, options = {})
22
- if (course_id = options[:course_id])
23
- badges_sashes.where(badge_id: badge_id.to_i, course_id: course_id.to_i).first.try(:destroy)
22
+ if (context = options[:context])
23
+ badges_sashes.where(badge_id: badge_id.to_i, context: context, badge_type: options[:badge_type]).first.try(:destroy)
24
24
  else
25
25
  badges_sashes.where(badge_id: badge_id.to_i).first.try(:destroy)
26
26
  end
27
27
  end
28
28
 
29
- ########################QALAM_DEV#########################
30
- def add_qalam_badge(badge_id, course_id)
31
- bs = Merit::BadgesSash.new(badge_id: badge_id.to_i, course_id: course_id.to_i)
32
- badges_sashes << bs
33
- bs
34
- end
35
- ########################END###################################
36
29
  # Retrieve the number of points from a category
37
30
  # By default all points are summed up
38
31
  # @param category [String] The category
@@ -48,10 +41,11 @@ module Merit::Models
48
41
  def add_points(num_points, options = {})
49
42
  point = Merit::QalamScore::Point.new
50
43
  point.num_points = num_points
44
+ point.context = options[:context]
51
45
  scores
52
- .where(category: options[:category] || 'default')
53
- .first_or_create
54
- .score_points << point
46
+ .where(category: options[:category] || 'default')
47
+ .first_or_create
48
+ .score_points << point
55
49
  point
56
50
  end
57
51
 
File without changes
File without changes
File without changes
data/lib/merit/rule.rb CHANGED
File without changes
File without changes
File without changes
File without changes
data/lib/merit.rb CHANGED
File without changes
data/qalam_merit.gemspec CHANGED
@@ -6,9 +6,9 @@ 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.5.08'
10
- s.authors = ["Tute Costa", "Ahmed Abdelhamid"]
11
- s.email = ['tutecosta@gmail.com', 'a.hamid@nezam.io']
9
+ s.version = '4.5.12'
10
+ s.authors = ["Ahmed Abdelhamid", "Zeyad Saleh"]
11
+ s.email = ['a.hamid@nezam.io', 'zeyad.saleh@nezam.io']
12
12
 
13
13
  s.required_ruby_version = '>= 2.3.0'
14
14
 
data/test/dummy/Rakefile CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/test/dummy/config.ru CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/test/test_helper.rb CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qalam_merit
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.5.08
4
+ version: 4.5.12
5
5
  platform: ruby
6
6
  authors:
7
- - Tute Costa
8
7
  - Ahmed Abdelhamid
8
+ - Zeyad Saleh
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-03-07 00:00:00.000000000 Z
12
+ date: 2021-09-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: zeitwerk
@@ -111,8 +111,8 @@ dependencies:
111
111
  version: '0'
112
112
  description: Manage badges, points and rankings (reputation) in your Rails app.
113
113
  email:
114
- - tutecosta@gmail.com
115
114
  - a.hamid@nezam.io
115
+ - zeyad.saleh@nezam.io
116
116
  executables: []
117
117
  extensions: []
118
118
  extra_rdoc_files: []
@@ -272,7 +272,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
272
272
  - !ruby/object:Gem::Version
273
273
  version: '0'
274
274
  requirements: []
275
- rubygems_version: 3.2.3
275
+ rubygems_version: 3.2.22
276
276
  signing_key:
277
277
  specification_version: 4
278
278
  summary: Reputation engine for Rails apps