Beispiel #1
0
 def validate_field_data(self, validation, data):
     """
     Validate this block's field data. Instead of checking fields like self.name, check the
     fields set on data, e.g. data.name. This allows the same validation method to be re-used
     for the studio editor.
     """
     if len(data.source_block_ids) > self.MAX_BLOCKS_ALLOWED:
         # Because importing library blocks is an expensive operation
         validation.add(
             ValidationMessage(
                 ValidationMessage.ERROR,
                 _(u"A maximum of {0} components may be added.").format(
                     self.MAX_BLOCKS_ALLOWED)))
Beispiel #2
0
    def validate(self):
        """
        Validates the state of this xblock
        """
        _ = self.runtime.service(self, "i18n").ugettext
        validation = super(ForumLeaderboardXBlock, self).validate()

        if not self.discussion_id:
            validation.add(
                ValidationMessage(
                    ValidationMessage.WARNING,
                    _(u"You will need to configure this XBlock with a Discussion ID."
                      )))
        return validation
Beispiel #3
0
 def validate_field_data(self, validation, data):
     super(GroupActivityXBlock, self).validate_field_data(validation, data)
     should_be_ints = ('weight', 'group_reviews_required_count',
                       'user_review_count')
     for field_name in should_be_ints:
         try:
             int(getattr(data, field_name))
         except (TypeError, ValueError):
             message = _(
                 u"{field_name} must be integer, {field_value} given"
             ).format(field_name=field_name,
                      field_value=getattr(data, field_name))
             validation.add(
                 ValidationMessage(ValidationMessage.ERROR, message))
Beispiel #4
0
    def test_copy(self):
        validation = Validation("id")
        validation.add(ValidationMessage(ValidationMessage.ERROR, u"Error message"))

        studio_validation = StudioValidation.copy(validation)
        self.assertIsInstance(studio_validation, StudioValidation)
        self.assertFalse(studio_validation)
        self.assertEqual(1, len(studio_validation.messages))
        expected = {
            "type": StudioValidationMessage.ERROR,
            "text": u"Error message"
        }
        self.assertEqual(expected, studio_validation.messages[0].to_json())
        self.assertIsNone(studio_validation.summary)
Beispiel #5
0
 def validate(self):
     """
     Validates the state of this XBlock.
     """
     validation = super(ChoiceBlock, self).validate()
     if self.get_parent().all_choice_values.count(self.value) > 1:
         validation.add(
             ValidationMessage(ValidationMessage.ERROR, self._(
                 u"This choice has a non-unique ID and won't work properly. "
                 "This can happen if you duplicate a choice rather than use the Add Choice button."
             ))
         )
     print(self.get_parent().all_choice_values)
     return validation
Beispiel #6
0
    def validate(self):
        """
        Validates the state of this xblock instance.
        """
        _ = self.runtime.service(self, "i18n").ugettext
        validation = super(LmsBlockMixin, self).validate()
        has_invalid_user_partitions = False
        has_invalid_groups = False
        for user_partition_id, group_ids in self.group_access.iteritems():
            try:
                user_partition = self._get_user_partition(user_partition_id)
            except NoSuchUserPartitionError:
                has_invalid_user_partitions = True
            else:
                # Skip the validation check if the partition has been disabled
                if user_partition.active:
                    for group_id in group_ids:
                        try:
                            user_partition.get_group(group_id)
                        except NoSuchUserPartitionGroupError:
                            has_invalid_groups = True

        if has_invalid_user_partitions:
            validation.add(
                ValidationMessage(
                    ValidationMessage.ERROR,
                    _(u"This component refers to deleted or invalid content group configurations.")
                )
            )
        if has_invalid_groups:
            validation.add(
                ValidationMessage(
                    ValidationMessage.ERROR,
                    _(u"This component refers to deleted or invalid content groups.")
                )
            )
        return validation
Beispiel #7
0
    def test_copy(self):
        validation = Validation("id")
        validation.add(
            ValidationMessage(ValidationMessage.ERROR, "Error message"))

        studio_validation = StudioValidation.copy(validation)
        assert isinstance(studio_validation, StudioValidation)
        assert not studio_validation
        assert 1 == len(studio_validation.messages)
        expected = {
            "type": StudioValidationMessage.ERROR,
            "text": "Error message"
        }
        assert expected == studio_validation.messages[0].to_json()
        assert studio_validation.summary is None
Beispiel #8
0
    def test_to_json(self):
        """
        Test the ability to serialize a `Validation` instance.
        """
        validation = Validation("id")
        expected = {
            "xblock_id": "id",
            "messages": [],
            "empty": True
        }
        self.assertEqual(expected, validation.to_json())

        validation.add(ValidationMessage(ValidationMessage.ERROR, "Error message"))
        validation.add(ValidationMessage(ValidationMessage.WARNING, "Warning message"))

        expected = {
            "xblock_id": "id",
            "messages": [
                {"type": ValidationMessage.ERROR, "text": "Error message"},
                {"type": ValidationMessage.WARNING, "text": "Warning message"}
            ],
            "empty": False
        }
        self.assertEqual(expected, validation.to_json())
 def test_generate_validation_message(self):
     # pylint: disable=invalid-name, protected-access
     """
     Checks classmethod _generate_validation_message
     """
     msg = 'weight attempts cannot be negative'
     result = ValidationMessage(ValidationMessage.ERROR, _(msg))
     test_result = self.xblock._generate_validation_message(msg)
     self.assertEqual(
         type(result),
         type(test_result),
     )
     self.assertEqual(
         result.text,
         test_result.text,
     )
 def test_generate_validation_message(self):
     # pylint: disable=invalid-name, protected-access
     """
     Checks classmethod _generate_validation_message
     """
     msg = u'some fake message'
     result = ValidationMessage(ValidationMessage.ERROR, _(msg))
     test_result = AdaptiveNumericInput.generate_validation_message(msg)
     self.assertEquals(
         type(result),
         type(test_result),
     )
     self.assertEquals(
         result.text,
         test_result.text,
     )
Beispiel #11
0
 def validate_field_data(self, validation, data):
     """
     Validate this block's field data. We are validating that the chosen
     freetextresponse xblocks ID's exist in the course
     """
     for x_id, x_type in data.xblock_list:
         try:
             usage_key =\
                 self.scope_ids.usage_id.course_key.make_usage_key(
                     x_type,
                     x_id
                 )
             self.runtime.get_block(usage_key)
         except Exception as e:
             logger.warn(e)
             validation.add(
                 ValidationMessage(
                     ValidationMessage.ERROR,
                     u"Component freetextresponse ID: {} does not exist.".format(x_id)
                 )
             )
Beispiel #12
0
 def add_error(msg):
     validation.add(ValidationMessage(ValidationMessage.ERROR, msg))
Beispiel #13
0
 def validate_field_data(self, validation, data):
     if data.href != '' and not VIDEO_URL_RE.match(data.href):
         validation.add(
             ValidationMessage(ValidationMessage.ERROR,
                               _("Incorrect video url, please recheck")))
Beispiel #14
0
 def test_validation_has_graded_questions(self):
     questions = [self._make_question(graded=True)]
     categories = [GroupProjectReviewQuestionXBlock.CATEGORY, PeerSelectorXBlock.CATEGORY]
     expected_message = ValidationMessage(ValidationMessage.ERROR, u"Graded questions are not supported")
     self.validate_and_check_message(categories, questions, expected_message)
Beispiel #15
0
 def add_error_msg(msg):
     """ Add validation error with the passed error message. """
     validation.add(ValidationMessage(ValidationMessage.ERROR, msg))
Beispiel #16
0
 def add_error(msg):
     """ Helper function for adding validation messages. """
     validation.add(ValidationMessage(ValidationMessage.ERROR, msg))
 def add_error(msg):
     """Add a validation error."""
     validation.add(ValidationMessage(ValidationMessage.ERROR, msg))
Beispiel #18
0
 def validate_field_data(self, validation, data):
     if not isinstance(data.custom_parameters, list):
         _ = self.runtime.service(self, "i18n").ugettext
         validation.add(ValidationMessage(ValidationMessage.ERROR, unicode(_("Custom Parameters must be a list"))))