qalam_merit 4.5.03 → 4.5.08

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: 386d3c62bf3b26c03ad135cb78787e94dcba50aa9ff8e00901fff50f1970816a
4
- data.tar.gz: 16d3cf72df7b2a8418577409d475ed76feeb01fb262f2652c83072ddda0c05e0
3
+ metadata.gz: 3d1f73f153930fdd73e1ba773d40feb481ab847a7d6857623779de05eacb8817
4
+ data.tar.gz: 62ddf64eecbb98665f47c841476fc1d5045813ff97db1bcf9c8fe8347c026f57
5
5
  SHA512:
6
- metadata.gz: aab0e7d069c2e76f8cf494cf066b912526ffbab7a85a460db9b0c4b1217a9040ca0285435905ed50626eb8c7036c73aa4fe8a65f2eca3ee23957bcd2563a7f0c
7
- data.tar.gz: c65518af9ab3c4beee883147a93a50edcd2884d65f27d1d939245c8e13895a2508f899f65f281e5efc8f4a2059cfc0b451a5922fbc8c80f939b90dac4c211bbb
6
+ metadata.gz: 8e1b99abd43904c894b2e75d590c0d901ab090a24a5f5d83fdd16af6c0307301a74ee93752e5c30f52a3281e763bb8132bb0a4ae14195ec546b29613c3cb6cb5
7
+ data.tar.gz: e976e63ad65c74580397199ea05e8f413a17a51834226066774b83c24517f8feb62cff128be39bb1e6c7e3ceccb338f15d21bfcd1e6121bc38ca94e183abb292
@@ -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 rm_badge
19
+ methods = %w(badge_ids badges points add_badge add_qalam_badge rm_badge
20
20
  add_points subtract_points score_points)
21
21
  methods.each { |method| delegate method, to: :_sash }
22
22
  end
@@ -9,7 +9,6 @@ class CreateMeritBadges < ActiveRecord::Migration<%= migration_version %>
9
9
  t.string :difficulty
10
10
  t.boolean :active, default: true
11
11
  t.references :user, limit: 8, foreign_key: true, index: true, null: true
12
- t.references :root_account, foreign_key: { to_table: 'accounts'}, limit: 8, null: false, index: true
13
12
 
14
13
  t.timestamps
15
14
  end
@@ -8,8 +8,10 @@ module Merit
8
8
  def inject_merit_content
9
9
  if model_exists?
10
10
  inject_into_class(model_path, class_name, " ### END ###\n\n")
11
- inject_into_class(model_path, class_name, " has_many :created_badges, class_name: 'Merit::Badge'\n")
12
- inject_into_class(model_path, class_name, " belongs_to :sash, foreign_key: 'sash_id', class_name: 'Merit::Sash'\n")
11
+ inject_into_class(model_path, class_name, " has_many :created_badges, class_name: 'Merit::Badge', :dependent => :destroy\n")
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
+ inject_into_class(model_path, class_name, " belongs_to :sash, foreign_key: 'sash_id', class_name: 'Merit::Sash', :dependent => :destroy\n")
13
15
  inject_into_class(model_path, class_name, " has_merit\n")
14
16
  inject_into_class(model_path, class_name, " ### QALAM_MERIT ###\n")
15
17
  end
@@ -1,6 +1,9 @@
1
1
  ### QALAM_MERIT ###
2
2
  class Merit::Badge < ActiveRecord::Base
3
+ # include Workflow
4
+ # include Context
3
5
  self.table_name = "merit_badges"
6
+ @valid_images = ["image/jpeg", "image/png", "image/bmp", "image/jpg"]
4
7
 
5
8
  before_validation :strip_whitespace
6
9
  def strip_whitespace
@@ -8,19 +11,27 @@ class Merit::Badge < ActiveRecord::Base
8
11
  self.description = self.description.strip unless self.description.nil?
9
12
  end
10
13
 
11
- validates :root_account_id, presence: true
12
- validates :name, presence: true, length: { minimum: 3, maximum: 10 }
14
+ validates :name, presence: true, length: { minimum: 3, maximum: 20 }
13
15
  validates :points, presence: true, numericality: true, :inclusion => 1..100
14
- validates :description, presence: false, length: { maximum: 50 }
16
+ validates :description, presence: true, length: { minimum: 3, maximum: 50 }
15
17
 
16
18
  has_one :image, :class_name => 'Attachment', :as => :context, :inverse_of => :context, :dependent => :destroy
17
- belongs_to :root_account, foreign_key: "root_account_id", class_name: 'Account'
18
19
  belongs_to :created_by, foreign_key: "user_id", class_name: 'User'
19
- has_many :badges_sashes, class_name: 'Merit::QalamBadgeSash'
20
- has_many :sashes, through: :badges_sashes, source: :sash
21
20
 
22
21
  def image_url
23
- # self.image.public_url if self.image
22
+ if self.image
23
+ return self.image.public_url
24
+ else
25
+ return '/images/apple-touch-icon.png'
26
+ end
27
+ end
28
+
29
+ def self.valid_images
30
+ @valid_images
31
+ end
32
+
33
+ def badges_sashes
34
+ Merit::BadgesSash.where(badge_id: self.id)
24
35
  end
25
36
 
26
37
  class << self
@@ -47,9 +58,6 @@ class Merit::Badge < ActiveRecord::Base
47
58
  badge
48
59
  end
49
60
 
50
- # Defines Badge#meritable_models method, to get related
51
- # entries with certain badge. For instance, Badge.find(3).users
52
- # orm-specified
53
61
  def _define_related_entries_method(meritable_class_name)
54
62
  define_method(:"#{meritable_class_name.underscore.pluralize}") do
55
63
  sashes = Merit::QalamBadgeSash.where(badge_id: id).pluck(:sash_id)
@@ -58,11 +66,19 @@ class Merit::Badge < ActiveRecord::Base
58
66
  end
59
67
 
60
68
  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
69
+ return true if ((attachment.nil? || attachment.to_s == "null") || account.nil? || badge.nil?)
70
+ if attachment.content_type && @valid_images.include?(attachment.content_type)
71
+ account.shard.activate do
72
+ att = Attachment.create_data_attachment(badge, attachment)
73
+ badge.image = att
74
+ badge.save!
75
+ badge
76
+ end
77
+ return true
78
+ else
79
+ badge.errors.add(:image, :invalid_format, message: 'invalid image format')
80
+ badge.destroy if badge.id
81
+ return false
66
82
  end
67
83
  end
68
84
  end
@@ -6,6 +6,7 @@ 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
10
 
10
11
  validates_presence_of :badge_id, :sash
11
12
  end
@@ -1,18 +1,24 @@
1
1
  module Merit::Models::ActiveRecord
2
2
  class QalamScore < ActiveRecord::Base
3
3
  self.table_name = :merit_scores
4
- belongs_to :sash
4
+ belongs_to :sash,
5
+ foreign_key: "sash_id",
6
+ class_name: 'Merit::Sash'
5
7
  has_many :score_points,
6
- dependent: :destroy,
7
- class_name: 'Merit::QalamScore::Point'
8
+ dependent: :destroy,
9
+ foreign_key: "score_id",
10
+ class_name: 'Merit::QalamScore::Point'
8
11
 
9
12
  def points
10
13
  score_points.group(:score_id).sum(:num_points).values.first || 0
11
14
  end
12
15
 
13
16
  class Point < ActiveRecord::Base
14
- belongs_to :score, class_name: 'Merit::QalamScore'
15
- has_one :sash, through: :score
17
+ self.table_name = :merit_score_points
18
+ belongs_to :score,
19
+ foreign_key: "score_id",
20
+ class_name: 'Merit::QalamScore'
21
+ has_one :sash, through: :score, source: :sash
16
22
  has_many :activity_logs,
17
23
  class_name: 'Merit::ActivityLog',
18
24
  as: :related_change
@@ -8,16 +8,31 @@ module Merit::Models
8
8
  badges_sashes.map(&:badge_id)
9
9
  end
10
10
 
11
- def add_badge(badge_id)
12
- bs = Merit::BadgesSash.new(badge_id: badge_id.to_i)
13
- badges_sashes << bs
14
- bs
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)
14
+ else
15
+ bs = Merit::BadgesSash.new(badge_id: badge_id.to_i)
16
+ end
17
+ badges_sashes << bs
18
+ bs
15
19
  end
16
20
 
17
- def rm_badge(badge_id)
18
- badges_sashes.where(badge_id: badge_id.to_i).first.try(:destroy)
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)
24
+ else
25
+ badges_sashes.where(badge_id: badge_id.to_i).first.try(:destroy)
26
+ end
19
27
  end
20
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###################################
21
36
  # Retrieve the number of points from a category
22
37
  # By default all points are summed up
23
38
  # @param category [String] The category
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.5.03'
9
+ s.version = '4.5.08'
10
10
  s.authors = ["Tute Costa", "Ahmed Abdelhamid"]
11
11
  s.email = ['tutecosta@gmail.com', 'a.hamid@nezam.io']
12
12
 
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.5.03
4
+ version: 4.5.08
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-28 00:00:00.000000000 Z
12
+ date: 2021-03-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: zeitwerk