excel2moodle 0.7.0__py3-none-any.whl → 0.7.1__py3-none-any.whl

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.
@@ -60,6 +60,8 @@ class QuestionData(dict):
60
60
  Tags.QUESTIONPART,
61
61
  Tags.TEXT,
62
62
  Tags.MEDIASCRIPTS,
63
+ Tags.TRUEANSFB,
64
+ Tags.FALSEANSFB,
63
65
  ],
64
66
  default: object = None,
65
67
  ) -> list: ...
@@ -95,6 +95,8 @@ class Tags(StrEnum):
95
95
  FALSEFB = "falsefeedback", str, "Your answer is sadly wrong, try again!!!"
96
96
  PCORRECFB = "partialcorrectfeedback", str, "Your answer is partially right."
97
97
  GENERALFB = "feedback", str, "You answered this question."
98
+ TRUEANSFB = "trueanswerfeedback", list, None
99
+ FALSEANSFB = "falseanswerfeedback", list, None
98
100
 
99
101
  MEDIASCRIPTS = "mediascripts", list, None
100
102
  MEDIACALL = "parametricmedia", str, None
@@ -52,11 +52,21 @@ class MCQuestionParser(QuestionParser):
52
52
 
53
53
  def getAnsElementsList(
54
54
  self,
55
- answerList: list,
55
+ answerList: list[str],
56
+ feedbackList: list[str],
56
57
  fraction: float = 50,
57
58
  format="html",
58
59
  ) -> list[ET.Element]:
60
+ """Take the answer Strings and format them each into a xml-tree.
61
+
62
+ If a feedbackList is given it is used. Otherwise the standard feedbacks are used.
63
+ """
59
64
  elementList: list[ET.Element] = []
65
+ if feedbackList is None:
66
+ if fraction > 0:
67
+ feedbackList = [self.rawInput.get(Tags.FALSEFB) for _ in answerList]
68
+ else:
69
+ feedbackList = [self.rawInput.get(Tags.TRUEFB) for _ in answerList]
60
70
  for i, ans in enumerate(answerList):
61
71
  p = TextElements.PLEFT.create()
62
72
  if self.answerType == "picture":
@@ -72,7 +82,7 @@ class MCQuestionParser(QuestionParser):
72
82
  elementList[-1].append(
73
83
  self.getFeedBEle(
74
84
  XMLTags.ANSFEEDBACK,
75
- text=self.rawInput.get(Tags.FALSEFB),
85
+ text=feedbackList[i],
76
86
  style=TextElements.SPANRED,
77
87
  ),
78
88
  )
@@ -82,7 +92,7 @@ class MCQuestionParser(QuestionParser):
82
92
  elementList[-1].append(
83
93
  self.getFeedBEle(
84
94
  XMLTags.ANSFEEDBACK,
85
- text=self.rawInput.get(Tags.TRUEFB),
95
+ text=feedbackList[i],
86
96
  style=TextElements.SPANGREEN,
87
97
  ),
88
98
  )
@@ -121,12 +131,40 @@ class MCQuestionParser(QuestionParser):
121
131
  self.rawInput.get(Tags.FALSE), style=self.answerType
122
132
  )
123
133
  self.logger.debug(f"got the following false answers \n {falseAList=}")
134
+ trueFbs = self.rawInput.get(Tags.TRUEANSFB)
135
+ falseFbs = self.rawInput.get(Tags.FALSEANSFB)
136
+ if trueFbs is None:
137
+ trueFbs = [self.rawInput.get(Tags.FALSEFB) for _ in trueAnsList]
138
+ if falseFbs is None:
139
+ falseFbs = [self.rawInput.get(Tags.TRUEFB) for _ in falseAList]
140
+ if len(trueFbs) < len(trueAnsList):
141
+ self.logger.warning(
142
+ "There are less true-feedbacks than true-answers given. Using fallback feedback"
143
+ )
144
+ delta = len(trueAnsList) - len(trueFbs)
145
+ while delta > 0:
146
+ trueFbs.append(self.rawInput.get(Tags.TRUEFB))
147
+ delta -= 1
148
+ if len(falseFbs) < len(falseAList):
149
+ self.logger.warning(
150
+ "There are less false-feedbacks than false-answers given. Using fallback feedback"
151
+ )
152
+ delta = len(falseAList) - len(falseFbs)
153
+ while delta > 0:
154
+ falseFbs.append(self.rawInput.get(Tags.TRUEFB))
155
+ delta -= 1
124
156
  truefrac = 1 / len(trueAnsList) * 100
125
157
  falsefrac = 1 / len(falseAList) * (-100)
126
158
  self.tmpEle.find(XMLTags.PENALTY).text = str(round(truefrac / 100, 4))
127
- ansList = self.getAnsElementsList(trueAnsList, fraction=round(truefrac, 4))
159
+ ansList = self.getAnsElementsList(
160
+ answerList=trueAnsList, feedbackList=trueFbs, fraction=round(truefrac, 4)
161
+ )
128
162
  ansList.extend(
129
- self.getAnsElementsList(falseAList, fraction=round(falsefrac, 4)),
163
+ self.getAnsElementsList(
164
+ answerList=falseAList,
165
+ feedbackList=falseFbs,
166
+ fraction=round(falsefrac, 4),
167
+ ),
130
168
  )
131
169
  return ansList
132
170
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: excel2moodle
3
- Version: 0.7.0
3
+ Version: 0.7.1
4
4
  Summary: A package for converting questions from a spreadsheet, to valid moodle-xml
5
5
  Author: Jakob Bosse
6
6
  License-Expression: GPL-3.0-or-later
@@ -90,6 +90,17 @@ If You want to support my work as well, you can by me a [coffee](https://ko-fi.c
90
90
 
91
91
  # Changelogs
92
92
 
93
+ ## 0.7.1 (2025-10-04)
94
+ feedbacking improved
95
+
96
+ ### documentation (1 change)
97
+
98
+ - [documentation improvement](https://gitlab.com/jbosse3/excel2moodle/-/commit/1a1110d05b49175e049a9ca18a027216a765e277)
99
+
100
+ ### feature (1 change)
101
+
102
+ - [Added MC answer feedback support](https://gitlab.com/jbosse3/excel2moodle/-/commit/4f5fe550786cf29839ba54fbdfedbf03c72d3009)
103
+
93
104
  ## 0.7.0 (2025-09-30)
94
105
  Rework of the equation checker done!
95
106
 
@@ -9,8 +9,8 @@ excel2moodle/core/etHelpers.py,sha256=LzimWGuX6RH2TbfEnWUoAXT2Tr0z6P7bCANjxuANSX
9
9
  excel2moodle/core/exceptions.py,sha256=9xfsaIcm6Yej6QAZga0d3DK3jLQejdfgJARuAaG-uZY,739
10
10
  excel2moodle/core/globals.py,sha256=gvkl8Obq4XBW40B1L68Ewg06sonK27l-KIiodwFv8ic,2393
11
11
  excel2moodle/core/parser.py,sha256=hjbA0i7N1oHoJHhOmvEtVl4Ryaqd0eqUS26bXS47CBo,8467
12
- excel2moodle/core/question.py,sha256=bRQhWyJPwvNMOABlT-WCngTx-Bt8AuOoQXgyPTQh_aQ,14528
13
- excel2moodle/core/settings.py,sha256=_H3TJ67-4Q0hFi8g3JWFILJ6q3mfcEsBRaV74jhbko8,6531
12
+ excel2moodle/core/question.py,sha256=HQ6rC5JWfr4XF3m7ZHk1IKjjZZ_1AhvI77wqaTuq8fY,14585
13
+ excel2moodle/core/settings.py,sha256=rYGJZeXAQ4d3NKkme_YiG5uLi-cheIaAsoV6EDDGQsI,6631
14
14
  excel2moodle/core/stringHelpers.py,sha256=OzFZ6Eu3PeBLKb61K-aeVfUZmVuBerr9KfyOsuNRd7Y,2403
15
15
  excel2moodle/core/validator.py,sha256=6nZIyTwcXPT2jgi31QrBGur3Cq7A3Q9btLp5ALFEsKw,4998
16
16
  excel2moodle/extra/__init__.py,sha256=PM-id60HD21A3IcGC_fCYFihS8osBGZMIJCcN-ZRsIM,293
@@ -20,7 +20,7 @@ excel2moodle/extra/updateQuery.py,sha256=kD_L23Qea9Cx4zUwfQVNJXXFbybd9cwE8sSbZrz
20
20
  excel2moodle/extra/variableGenerator.py,sha256=jcXbyA1B3-uZHsovU9QhZ879FoemeHqAe_BxPT4ZXoY,11484
21
21
  excel2moodle/question_types/__init__.py,sha256=81mss0g7SVtnlb-WkydE28G_dEAAf6oT1uB8lpK2-II,1041
22
22
  excel2moodle/question_types/cloze.py,sha256=WGeA37Dq405Zda_WNU2SrAhfW9DNjkdnLBfM-JFM4lw,14656
23
- excel2moodle/question_types/mc.py,sha256=nx6PsbfLLH_4H5eCSjGcfgEC6EEVgseI7xy15jg5JmA,5482
23
+ excel2moodle/question_types/mc.py,sha256=qslqLRfqQuo_57IFXFMDGD4IJSCL3Ig29rppvKTplgc,7103
24
24
  excel2moodle/question_types/nf.py,sha256=HAolGy13-FbLVJskAUXCFy76NJu91IG9wtq6OI05Igw,1374
25
25
  excel2moodle/question_types/nfm.py,sha256=D5-aE4C7TAuwHFidXR15DLWNZ4JT-HVbPXI0CzGWOS0,3013
26
26
  excel2moodle/ui/UI_equationChecker.py,sha256=jA5gKemrgeertbp2iip-icQCRFKnV-dR-f0eODBBAp0,8910
@@ -33,9 +33,9 @@ excel2moodle/ui/__init__.py,sha256=4EdGtpzwH3rgw4xW9E5x9kdPQYwKbo9rehHRZTNxCrQ,4
33
33
  excel2moodle/ui/appUi.py,sha256=jlurK6sb_CVEV1vNAC_mL8lmX9H9Ex-QZ3BQXgAisJM,14887
34
34
  excel2moodle/ui/dialogs.py,sha256=du6v17lh6LhgDDK0QltPzD-z8wUn3aD4QzaAQBmiTBQ,7314
35
35
  excel2moodle/ui/treewidget.py,sha256=3hZRLlrhp4FMXFyNY0LGDy7k1RSuKH87QyqB1N4qOqg,2335
36
- excel2moodle-0.7.0.dist-info/licenses/LICENSE,sha256=ywQqe6Sitymkf2lV2NRcx_aGsaC-KbSl_EfEsRXmNRw,35135
37
- excel2moodle-0.7.0.dist-info/METADATA,sha256=f2ZbXDgR3FOXRwhJ7I2eUgCzsIaEVfuJdBkcYuAF_z0,12716
38
- excel2moodle-0.7.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
39
- excel2moodle-0.7.0.dist-info/entry_points.txt,sha256=myfMLDThuGgWHMJDPPfILiZqo_7D3fhmDdJGqWOAjPw,60
40
- excel2moodle-0.7.0.dist-info/top_level.txt,sha256=5V1xRUQ9o7UmOCmNoWCZPAuy5nXp3Qbzyqch8fUGT_c,13
41
- excel2moodle-0.7.0.dist-info/RECORD,,
36
+ excel2moodle-0.7.1.dist-info/licenses/LICENSE,sha256=ywQqe6Sitymkf2lV2NRcx_aGsaC-KbSl_EfEsRXmNRw,35135
37
+ excel2moodle-0.7.1.dist-info/METADATA,sha256=mAWPtJes2MEC75ot_dMaxGjC_pmFTwanHfh-B8Z8Mbg,13065
38
+ excel2moodle-0.7.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
39
+ excel2moodle-0.7.1.dist-info/entry_points.txt,sha256=myfMLDThuGgWHMJDPPfILiZqo_7D3fhmDdJGqWOAjPw,60
40
+ excel2moodle-0.7.1.dist-info/top_level.txt,sha256=5V1xRUQ9o7UmOCmNoWCZPAuy5nXp3Qbzyqch8fUGT_c,13
41
+ excel2moodle-0.7.1.dist-info/RECORD,,