mumuki-domain 9.15.0 → 9.16.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 304bef838324905dba928e6099d897752778b1781ce9c445448f8e9a6601c76d
4
- data.tar.gz: 28b4571ce4c641fec10223786b7e9ddd367d85e8b45fda84e315ef990efe35a7
3
+ metadata.gz: d6ca5bebdea5c189193c066336fc00f63aadee23e7a3d898fc90f9801eb118da
4
+ data.tar.gz: 4f6320243a816ca7be058072d587ee53765afb1eb5e5d25df5d5c774c4e79fc6
5
5
  SHA512:
6
- metadata.gz: 1727cf0e4115b793e472529251ed7754a2ec4adee510910f0a4d09ebd5c5aa04c2c59dc7b2459b8ab316391e4b0b26422d9c38c4321988b14ca5a27bfc965bcc
7
- data.tar.gz: e30036eb0b135ebdd26f8ec9fbb782b445955bc2c24695d6ec298f6b7229f26e54360fe7093a1640540081254f0e0e9f6ad469aa56fdf4af1e000b2c48ffde65
6
+ metadata.gz: 2cc91011652076858bef72e4e6bded616ab09ae49bc04f88161898546fe4ed5855ec7164d1f8b6999d270caefddb6f7965c16f641b417e6ddffa33716e4fe7a1
7
+ data.tar.gz: ce626e9a3577946dfbe671924bc1e444292cf5947bce1811739d8ad94b02f3c09c0f3a8fba825aa77967f123ede918ca1cfa19edd625c2709f41ddb1a6706bb5
@@ -38,6 +38,10 @@ class ExamRegistration::AuthorizationCriterion
38
38
  def meets_authorization_criteria?(authorization_request)
39
39
  meets_criterion? authorization_request.user, authorization_request.organization
40
40
  end
41
+
42
+ def authorization_criteria_matcher
43
+ criterion_matcher
44
+ end
41
45
  end
42
46
 
43
47
  class ExamRegistration::AuthorizationCriterion::None < ExamRegistration::AuthorizationCriterion
@@ -52,6 +56,10 @@ class ExamRegistration::AuthorizationCriterion::None < ExamRegistration::Authori
52
56
  def meets_criterion?(_user, _organization)
53
57
  true
54
58
  end
59
+
60
+ def criterion_matcher
61
+ {}
62
+ end
55
63
  end
56
64
 
57
65
  class ExamRegistration::AuthorizationCriterion::PassedExercises < ExamRegistration::AuthorizationCriterion
@@ -62,4 +70,8 @@ class ExamRegistration::AuthorizationCriterion::PassedExercises < ExamRegistrati
62
70
  def meets_criterion?(user, organization)
63
71
  user.passed_submissions_count_in(organization) >= value
64
72
  end
73
+
74
+ def criterion_matcher
75
+ { 'stats.passed': { '$gte': value.to_f } }
76
+ end
65
77
  end
@@ -12,7 +12,7 @@ class ExamRegistration < ApplicationRecord
12
12
 
13
13
  before_save :ensure_valid_authorization_criterion!
14
14
 
15
- delegate :meets_authorization_criteria?, :process_request!, to: :authorization_criterion
15
+ delegate :meets_authorization_criteria?, :process_request!, :authorization_criteria_matcher, to: :authorization_criterion
16
16
 
17
17
  alias_attribute :name, :description
18
18
 
@@ -21,7 +21,7 @@ class Organization < ApplicationRecord
21
21
 
22
22
  belongs_to :book
23
23
  has_many :usages
24
-
24
+ has_many :exam_registrations
25
25
  has_many :certificate_programs
26
26
 
27
27
  validates_presence_of :contact_email, :locale, :time_zone
@@ -23,7 +23,8 @@ class OrganizationAccessMode::Base
23
23
 
24
24
  def discuss_here?
25
25
  organization.forum_enabled? && user.discusser_of?(organization) &&
26
- user.trusted_as_discusser_in?(organization) && !user.banned_from_forum?
26
+ user.trusted_as_discusser_in?(organization) && !user.banned_from_forum? &&
27
+ !user.currently_in_exam?
27
28
  end
28
29
 
29
30
  def show_discussion_element?
data/app/models/user.rb CHANGED
@@ -158,6 +158,7 @@ class User < ApplicationRecord
158
158
  end
159
159
 
160
160
  def detach!(role, course)
161
+ make_ex_student_of! course.slug if student_of?(course.slug) && solved_any_exercises?(course.organization)
161
162
  remove_permission! role, course.slug
162
163
  save_and_notify!
163
164
  end
@@ -202,10 +203,6 @@ class User < ApplicationRecord
202
203
  sequence[0..count + lookahead - 1]
203
204
  end
204
205
 
205
- # Tells if the given user can discuss in an organization
206
- #
207
- # This is true only when this organization has the forum enabled and the user
208
- # has the discusser pseudo-permission and the discusser is trusted
209
206
  def can_discuss_in?(organization)
210
207
  organization.access_mode(self).discuss_here?
211
208
  end
@@ -0,0 +1,5 @@
1
+ FactoryBot.define do
2
+ factory :exam_authorization do
3
+ exam { create(:exam) }
4
+ end
5
+ end
@@ -9,6 +9,7 @@ require_relative './factories/complement_factory'
9
9
  require_relative './factories/course_factory'
10
10
  require_relative './factories/discussion_factory'
11
11
  require_relative './factories/exam_factory'
12
+ require_relative './factories/exam_authorization_factory'
12
13
  require_relative './factories/exam_authorization_request_factory'
13
14
  require_relative './factories/exam_registration_factory'
14
15
  require_relative './factories/exercise_factory'
@@ -1,5 +1,5 @@
1
1
  module Mumuki
2
2
  module Domain
3
- VERSION = '9.15.0'
3
+ VERSION = '9.16.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mumuki-domain
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.15.0
4
+ version: 9.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franco Leonardo Bulgarelli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-09 00:00:00.000000000 Z
11
+ date: 2021-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -721,6 +721,7 @@ files:
721
721
  - lib/mumuki/domain/factories/complement_factory.rb
722
722
  - lib/mumuki/domain/factories/course_factory.rb
723
723
  - lib/mumuki/domain/factories/discussion_factory.rb
724
+ - lib/mumuki/domain/factories/exam_authorization_factory.rb
724
725
  - lib/mumuki/domain/factories/exam_authorization_request_factory.rb
725
726
  - lib/mumuki/domain/factories/exam_factory.rb
726
727
  - lib/mumuki/domain/factories/exam_registration_factory.rb