mumuki-domain 9.15.0 → 9.16.0

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: 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