本文整理汇总了Python中relate.utils.string_concat函数的典型用法代码示例。如果您正苦于以下问题:Python string_concat函数的具体用法?Python string_concat怎么用?Python string_concat使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了string_concat函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: get_auto_feedback
def get_auto_feedback(correctness):
# type: (Optional[float]) -> Text
correctness = validate_point_count(correctness)
if correctness is None:
return six.text_type(
ugettext_noop("No information on correctness of answer."))
if correctness == 0:
return six.text_type(ugettext_noop("Your answer is not correct."))
elif correctness == 1:
return six.text_type(ugettext_noop("Your answer is correct."))
elif correctness > 1:
return six.text_type(
string_concat(
ugettext_noop(
"Your answer is correct and earned bonus points."),
" (%.1f %%)")
% (100*correctness))
elif correctness > 0.5:
return six.text_type(
string_concat(
ugettext_noop("Your answer is mostly correct."),
" (%.1f %%)")
% (100*correctness))
else:
return six.text_type(
string_concat(
ugettext_noop("Your answer is somewhat correct. "),
"(%.1f%%)")
% (100*correctness))
开发者ID:inducer,项目名称:relate,代码行数:32,代码来源:base.py
示例2: __init__
def __init__(self, vctx, location, page_desc):
super(FileUploadQuestion, self).__init__(vctx, location, page_desc)
if not (set(page_desc.mime_types) <= set(self.ALLOWED_MIME_TYPES)):
raise ValidationError(
string_concat(
location, ": ",
_("unrecognized mime types"),
" '%(presenttype)s'")
% {
'presenttype': ", ".join(
set(page_desc.mime_types)
- set(self.ALLOWED_MIME_TYPES))})
if page_desc.maximum_megabytes <= 0:
raise ValidationError(
string_concat(
location, ": ",
_("'maximum_megabytes' expects a positive value, "
"got %(value)s instead")
% {'value': str(page_desc.maximum_megabytes)}))
if vctx is not None:
if not hasattr(page_desc, "value"):
vctx.add_warning(location, _("upload question does not have "
"assigned point value"))
开发者ID:inducer,项目名称:relate,代码行数:26,代码来源:upload.py
示例3: get_matcher_class
def get_matcher_class(location, matcher_type, pattern_type):
for matcher_class in TEXT_ANSWER_MATCHER_CLASSES:
if matcher_class.type == matcher_type:
if matcher_class.pattern_type != pattern_type:
raise ValidationError(
string_concat(
"%(location)s: ",
# Translators: a "matcher" is used to determine
# if the answer to text question (blank filling
# question) is correct.
_("%(matcherclassname)s only accepts "
"'%(matchertype)s' patterns"))
% {
'location': location,
'matcherclassname': matcher_class.__name__,
'matchertype': matcher_class.pattern_type})
return matcher_class
raise ValidationError(
string_concat(
"%(location)s: ",
_("unknown match type '%(matchertype)s'"))
% {
'location': location,
'matchertype': matcher_type})
开发者ID:ishitatsuyuki,项目名称:relate,代码行数:27,代码来源:text.py
示例4: __init__
def __init__(self, vctx, location, page_desc):
super(ChoiceQuestion, self).__init__(vctx, location, page_desc)
if self.correct_choice_count < 1:
raise ValidationError(
string_concat(
"%(location)s: ",
_("one or more correct answer(s) "
"expected, %(n_correct)d found"))
% {
'location': location,
'n_correct': self.correct_choice_count})
if self.disregard_choice_count:
raise ValidationError(
string_concat(
"%(location)s: ",
_("ChoiceQuestion does not allow any choices "
"marked 'disregard'"))
% {'location': location})
if self.always_correct_choice_count:
raise ValidationError(
string_concat(
"%(location)s: ",
_("ChoiceQuestion does not allow any choices "
"marked 'always_correct'"))
% {'location': location})
开发者ID:ishitatsuyuki,项目名称:relate,代码行数:28,代码来源:choice.py
示例5: __init__
def __init__(self, vctx, location, page_desc):
super(TextQuestion, self).__init__(vctx, location, page_desc)
if len(page_desc.answers) == 0:
raise ValidationError(
string_concat(
"%s: ",
_("at least one answer must be provided"))
% location)
self.matchers = [
parse_matcher(
vctx,
"%s, answer %d" % (location, i+1),
answer)
for i, answer in enumerate(page_desc.answers)]
if not any(matcher.correct_answer_text() is not None
for matcher in self.matchers):
raise ValidationError(
string_concat(
"%s: ",
_("no matcher is able to provide a plain-text "
"correct answer"))
% location)
开发者ID:ishitatsuyuki,项目名称:relate,代码行数:25,代码来源:text.py
示例6: __init__
def __init__(self, vctx, location, page_desc):
super(PythonCodeQuestionWithHumanTextFeedback, self).__init__(
vctx, location, page_desc)
if vctx is not None:
if (
hasattr(self.page_desc, "human_feedback_value")
and hasattr(self.page_desc, "human_feedback_percentage")):
raise ValidationError(
string_concat(
"%(location)s: ",
_("'human_feedback_value' and "
"'human_feedback_percentage' are not "
"allowed to coexist"))
% {'location': location}
)
if not (hasattr(self.page_desc, "human_feedback_value")
or hasattr(self.page_desc, "human_feedback_percentage")):
raise ValidationError(
string_concat(
"%(location)s: ",
_("expecting either 'human_feedback_value' "
"or 'human_feedback_percentage', found neither."))
% {'location': location}
)
if hasattr(self.page_desc, "human_feedback_value"):
vctx.add_warning(
location,
_("Used deprecated 'human_feedback_value' attribute--"
"use 'human_feedback_percentage' instead."))
if self.page_desc.value == 0:
raise ValidationError("".join([
"%s: ",
_("'human_feedback_value' attribute is not allowed "
"if value of question is 0, use "
"'human_feedback_percentage' instead")])
% location)
if self.page_desc.human_feedback_value > self.page_desc.value:
raise ValidationError("".join([
"%s: ",
_("human_feedback_value greater than overall "
"value of question")])
% location)
if hasattr(self.page_desc, "human_feedback_percentage"):
if not (
0 <= self.page_desc.human_feedback_percentage <= 100):
raise ValidationError("".join([
"%s: ",
_("the value of human_feedback_percentage "
"must be between 0 and 100")])
% location)
if hasattr(self.page_desc, "human_feedback_value"):
self.human_feedback_percentage = (
self.page_desc.human_feedback_value * 100 / self.page_desc.value)
else:
self.human_feedback_percentage = (
self.page_desc.human_feedback_percentage)
开发者ID:inducer,项目名称:relate,代码行数:58,代码来源:code.py
示例7: __init__
def __init__(self, vctx, location, name, answers_desc):
super(ChoicesAnswer, self).__init__(
vctx, location, name, answers_desc)
validate_struct(
vctx,
location,
answers_desc,
required_attrs=(
("type", str),
("choices", list)
),
allowed_attrs=(
("weight", (int, float)),
("hint", str),
("hint_title", str),
("required", bool),
),
)
self.weight = getattr(answers_desc, "weight", 0)
correct_choice_count = 0
for choice_idx, choice in enumerate(answers_desc.choices):
try:
choice = str(choice)
except Exception:
raise ValidationError(
string_concat(
"%(location)s: '%(answer_name)s' ",
_("choice %(idx)d: unable to convert to string")
)
% {'location': location,
'answer_name': self.name,
'idx': choice_idx+1})
if choice.startswith(self.CORRECT_TAG):
correct_choice_count += 1
if vctx is not None:
validate_markup(vctx, location,
remove_prefix(self.CORRECT_TAG, choice))
if correct_choice_count < 1:
raise ValidationError(
string_concat(
"%(location)s: ",
_("one or more correct answer(s) expected "
" for question '%(question_name)s', "
"%(n_correct)d found"))
% {
'location': location,
'question_name': self.name,
'n_correct': correct_choice_count})
self.hint = getattr(self.answers_desc, "hint", "")
self.width = 0
开发者ID:inducer,项目名称:relate,代码行数:57,代码来源:inline.py
示例8: csv_data_importable
def csv_data_importable(file_contents, column_idx_list, header_count):
import csv
spamreader = csv.reader(file_contents)
n_header_row = 0
try:
if six.PY2:
row0 = spamreader.next()
else:
row0 = spamreader.__next__()
except Exception as e:
err_msg = type(e).__name__
err_str = str(e)
if err_msg == "Error":
err_msg = ""
else:
err_msg += ": "
err_msg += err_str
if "line contains NULL byte" in err_str:
err_msg = err_msg.rstrip(".") + ". "
err_msg += _("Are you sure the file is a CSV file other "
"than a Microsoft Excel file?")
return False, (
string_concat(
pgettext_lazy("Starting of Error message", "Error"),
": %s" % err_msg))
from itertools import chain
for row in chain([row0], spamreader):
n_header_row += 1
if n_header_row <= header_count:
continue
try:
for column_idx in column_idx_list:
if column_idx is not None:
six.text_type(get_col_contents_or_empty(row, column_idx-1))
except UnicodeDecodeError:
return False, (
_("Error: Columns to be imported contain "
"non-ASCII characters. "
"Please save your CSV file as utf-8 encoded "
"and import again.")
)
except Exception as e:
return False, (
string_concat(
pgettext_lazy("Starting of Error message",
"Error"),
": %(err_type)s: %(err_str)s")
% {
"err_type": type(e).__name__,
"err_str": str(e)}
)
return True, ""
开发者ID:inducer,项目名称:relate,代码行数:57,代码来源:utils.py
示例9: make_time_histogram
def make_time_histogram(pctx, flow_id):
qset = FlowSession.objects.filter(
course=pctx.course,
flow_id=flow_id)
from relate.utils import string_concat
hist = Histogram(
num_log_bins=True,
num_bin_title_formatter=(
lambda minutes: string_concat(
"$>$ %.1f ",
pgettext("Minute (time unit)", "min"))
% minutes))
for session in qset:
if session.in_progress:
hist.add_data_point(
"".join(["<",
pgettext("Status of session", "in progress"),
">"]))
else:
delta = session.completion_time - session.start_time
minutes = delta.total_seconds() / 60
hist.add_data_point(minutes)
return hist
开发者ID:ishitatsuyuki,项目名称:relate,代码行数:25,代码来源:analytics.py
示例10: __init__
def __init__(self, vctx, location, page_desc):
super(PageBaseWithTitle, self).__init__(vctx, location, page_desc)
title = None
try:
title = self.page_desc.title
except AttributeError:
pass
if title is None:
try:
md_body = self.markup_body_for_title()
except NotImplementedError:
from warnings import warn
warn(_("PageBaseWithTitle subclass '%s' does not implement "
"markdown_body_for_title()")
% type(self).__name__)
else:
from course.content import extract_title_from_markup
title = extract_title_from_markup(md_body)
if title is None:
raise ValidationError(
string_concat(
"%s: ",
_("no title found in body or title attribute"))
% (location))
self._title = title
开发者ID:ishitatsuyuki,项目名称:relate,代码行数:29,代码来源:base.py
示例11: parse_matcher_string
def parse_matcher_string(vctx, location, matcher_desc):
match = MATCHER_RE.match(matcher_desc)
if match is not None:
matcher_type = match.group(1)
pattern = match.group(2)
else:
match = MATCHER_RE_2.match(matcher_desc)
if match is None:
raise ValidationError(
string_concat(
"%s: ",
_("does not specify match type"))
% location)
matcher_type = match.group(1)
pattern = match.group(2)
if vctx is not None:
vctx.add_warning(location,
_("uses deprecated 'matcher:answer' style"))
return (get_matcher_class(location, matcher_type, "string")
(vctx, location, pattern))
开发者ID:ishitatsuyuki,项目名称:relate,代码行数:25,代码来源:text.py
示例12: parse_validator
def parse_validator(vctx, location, validator_desc):
if not isinstance(validator_desc, Struct):
raise ValidationError(
string_concat(
"%s: ",
_("must be struct or string"))
% location)
if not hasattr(validator_desc, "type"):
raise ValidationError(
string_concat(
"%s: ",
"matcher must supply 'type'")
% location)
return (get_validator_class(location, validator_desc.type)
(vctx, location, validator_desc))
开发者ID:ishitatsuyuki,项目名称:relate,代码行数:17,代码来源:text.py
示例13: __init__
def __init__(self, vctx, location, page_desc):
super(PageBaseWithValue, self).__init__(vctx, location, page_desc)
if vctx is not None:
if hasattr(page_desc, "value") and self.is_optional_page:
raise ValidationError(
string_concat(
location,
_("Attribute 'value' should be removed when "
"'is_optional_page' is True.")))
if hasattr(page_desc, "value") and page_desc.value < 0:
raise ValidationError(
string_concat(
location,
_("Attribute 'value' expects a non-negative value, "
"got %s instead") % str(page_desc.value)))
开发者ID:inducer,项目名称:relate,代码行数:17,代码来源:base.py
示例14: get_length_attr_em
def get_length_attr_em(location, width_attr):
# type: (Text, Text) -> Optional[float]
"""
generate the length for input box, the unit is 'em'
"""
if width_attr is None:
return None
if isinstance(width_attr, (int, float)):
return width_attr
width_re_match = WIDTH_STR_RE.match(width_attr)
if width_re_match:
length_value = width_re_match.group(1)
length_unit = width_re_match.group(2)
else:
raise ValidationError(
string_concat(
"%(location)s: ",
_("unrecogonized width attribute string: "
"'%(width_attr)s'"))
% {
"location": location,
"width_attr": width_attr
})
if length_unit not in ALLOWED_LENGTH_UNIT:
raise ValidationError(
string_concat(
"%(location)s: ",
_("unsupported length unit '%(length_unit)s', "
"expected length unit can be "
"%(allowed_length_unit)s", ))
% {
"location": location,
"length_unit": length_unit,
"allowed_length_unit": ", ".join(
["'" + item + "'"
for item in ALLOWED_LENGTH_UNIT])
})
if length_unit == "%":
return float(length_value)*DEFAULT_WIDTH/100.0
else:
return float(length_value)/cast(float, EM_LEN_DICT[length_unit])
开发者ID:inducer,项目名称:relate,代码行数:46,代码来源:inline.py
示例15: correct_answer
def correct_answer(self, page_context, page_data, answer_data, grade_data):
corr_idx_list = self.unpermuted_correct_indices()
always_correct_idx_list = self.unpermuted_always_correct_indices()
result = (string_concat(_("The correct answer is"), ": %s")
% self.get_answer_html(page_context, corr_idx_list))
if len(always_correct_idx_list) > 0:
result = (string_concat(result,
string_concat(_("Additional acceptable options are"),
": %s")
% self.get_answer_html(page_context,
always_correct_idx_list)))
if hasattr(self.page_desc, "answer_explanation"):
result += markup_to_html(page_context, self.page_desc.answer_explanation)
return result
开发者ID:ishitatsuyuki,项目名称:relate,代码行数:18,代码来源:choice.py
示例16: get_page_id
def get_page_id(self, obj):
if obj.page_data.page_ordinal is None:
return string_concat("%s/%s (", _("not in use"), ")") % (
obj.page_data.group_id,
obj.page_data.page_id)
else:
return "%s/%s (%s)" % (
obj.page_data.group_id,
obj.page_data.page_id,
obj.page_data.page_ordinal)
开发者ID:inducer,项目名称:relate,代码行数:10,代码来源:admin.py
示例17: parse_question
def parse_question(vctx, location, name, answers_desc):
if isinstance(answers_desc, Struct):
return (get_question_class(location, answers_desc.type, answers_desc)
(vctx, location, name, answers_desc))
else:
raise ValidationError(
string_concat(
"%s: ",
_("Embedded question '%s' must be a struct" % name))
% location)
开发者ID:inducer,项目名称:relate,代码行数:10,代码来源:inline.py
示例18: get_validator_class
def get_validator_class(location, validator_type):
for validator_class in TEXT_ANSWER_VALIDATOR_CLASSES:
if validator_class.type == validator_type:
return validator_class
raise ValidationError(
string_concat(
"%(location)s: ",
_("unknown validator type"),
"'%(type)s'")
% {'location': location, 'type': validator_type})
开发者ID:ishitatsuyuki,项目名称:relate,代码行数:11,代码来源:text.py
示例19: get_default_option
def get_default_option():
# type: () -> Tuple[Text, Text]
# For the default language used, if USE_I18N is True, display
# "Disabled". Otherwise display its lang info.
if not settings.USE_I18N:
formatted_descr = (
get_formatted_options(settings.LANGUAGE_CODE, None)[1])
else:
formatted_descr = _("disabled (i.e., displayed language is "
"determined by user's browser preference)")
return "", string_concat("%s: " % _("Default"), formatted_descr)
开发者ID:inducer,项目名称:relate,代码行数:11,代码来源:utils.py
示例20: parse_matcher
def parse_matcher(vctx, location, matcher_desc):
if isinstance(matcher_desc, six.string_types):
return parse_matcher_string(vctx, location, matcher_desc)
else:
if not isinstance(matcher_desc, Struct):
raise ValidationError(
string_concat(
"%s: ",
_("must be struct or string"))
% location)
if not hasattr(matcher_desc, "type"):
raise ValidationError(
string_concat(
"%s: ",
_("matcher must supply 'type'"))
% location)
return (get_matcher_class(location, matcher_desc.type, "struct")
(vctx, location, matcher_desc))
开发者ID:ishitatsuyuki,项目名称:relate,代码行数:20,代码来源:text.py
注:本文中的relate.utils.string_concat函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论