1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
|
%global _empty_manifest_terminate_build 0
Name: python-moodlexport
Version: 0.0.32
Release: 1
Summary: A package to export test questions into Moodle from python or latex
License: MIT
URL: https://github.com/Guillaume-Garrigos/moodlexport
Source0: https://mirrors.aliyun.com/pypi/web/packages/c8/21/14e88ffacb0a96b7563da67e61a574e3f9a96bea05a1ac642d327ee56d52/moodlexport-0.0.32.tar.gz
BuildArch: noarch
%description
# moodlexport
This Python module provides code which allows to easily generate families of questions (called *categories* in Moodle) that can be directly created from either Python or Latex document, and then directly exported into Moodle (through the Moodle XML import functionality), where they can be used to create a test.
| Overview of the possible conversions done within moodlexport |
| --- |
| <img src="doc/images/schema/schema.png" width="400"> |
### Installing
It can be installed with a pip command : `pip install moodlexport`
### A quick overview of what this Module can do
This module focuses on two type of questions provided by Moodle : the `multichoice` question (the student chooses one or more answers among others), and the `essay` question (the student is provided a space to type its answer, or upload a document).
| An essay question | A multichoice question |
| --- | --- |
| <img src="examples/simplest_essay_question_from_python/moodle.png" width="300"> | <img src="examples/simplest_multichoice_question_from_python/moodle.png" width="300"> |
Say that you want to define a multiple choice question in Moodle. This requires a lot of parameters to tune, but for now let's focus on the essential : what you basically needs is
1. The body/text of your question
2. A list of potential answers
3. Setting which answer is the good one (see the documentation for more advanced settings like having more than one good answer)
4. Exporting that to Moodle
Here is a short overview on how to do that from Pyhton with `moodlexport`.
| Writing a multichoice question from Python |
| --- |
| <img src="examples/simplest_multichoice_question_from_python/python.png" width="400"> |
| <img src="examples/simplest_multichoice_question_from_python/moodle.png" width="400"> |
| <img src="examples/simplest_multichoice_question_from_python/pdf.png" width="400"> |
| From top to bottom: 1) the python code defining our question and producing a .xml file; 2) that question in Moodle after importing the .xml file; 3) a .pdf produced by the Python code, for convenience. You can find the corresponding code [here](examples/simplest_multichoice_question_from_python/template.ipynb) |
You could equivalently obtain the very same result by typing the question in a Latex file, and using moodlexport to convert it:
| Writing a multichoice question from Latex |
| --- |
| <img src="examples/simplest_multichoice_question_from_latex/latex.png" width="200"> |
| <img src="examples/simplest_multichoice_question_from_latex/python.png" width="200"> |
| <img src="examples/simplest_multichoice_question_from_python/moodle.png" width="400"> |
| A latex file defining a question, and then converted to an .xml by Python. You can find the corresponding code [here](examples/simplest_multichoice_question_from_latex/template.ipynb) |
To write an essay question, the syntax is as simple:
| Writing an essay question from Python |
| --- |
| <img src="examples/simplest_essay_question_from_python/python.png" width="400"> |
| <img src="examples/simplest_essay_question_from_python/moodle.png" width="400"> |
| <img src="examples/simplest_essay_question_from_python/pdf.png" width="400"> |
| From top to bottom: 1) the python code defining our question and producing a .xml file; 2) that question in Moodle after importing the .xml file; 3) a .pdf produced by the Python code, for convenience. You can find the corresponding code [here](examples/simplest_essay_question_from_python/template.ipynb) |
The interest of writing your questions in Python is that you can easily generate random problems. Suppose for instance that we want a random question where we ask the student if a polynomial equation $aX^2 + bX +c = 0$, with integer coefficients, has a solution or no.
One way to go is to generate a bunch of those questions, and then let Moodle pick one question at random among those during a `test`. Here is one way to do:
| Generating random questions |
| --- |
| <img src="examples/simple_random_question/python.png" width="400"> |
| <img src="examples/simple_random_question/moodle_cat.png" width="400"> |
| <img src="examples/simple_random_question/moodle.png" width="400"> |
| <img src="examples/simple_random_question/pdf.png" width="400"> |
| From top to bottom: 1) the python code defining a category containing many variants of a same question, and producing a .xml file; 2) some of these questions appearing in a category in Moodle 3) one such question in Moodle; 4) a sample of the .pdf produced by the Python code. You can find the corresponding code [here](examples/simple_random_question/template.ipynb) |
### Motivation
The main motivation behind this module is that :
- it is more comfortable to type maths in your day-to-day Latex interface than within Moodle
- it is easier to define mathematical objects (vectors, matrix) in Python than in Moodle
- generating **random problems** is quite intricate in Moodle, because we quickly face issues such as solutions being too complicated for the students (e.g. non integer), or Moodle being unable to handle certain student's answers (how would could Moodle interpret that $x+x$ is the same than $2x$?). This is much simpler to handle in Python.
- it is easier to manipulate locally a Latex or Python file than doing it on the Moodle interface. It also simplifies collaborating projects.
- it is more convenient to store/read questions/answers in pdf files, than using the Moodle 'bank of questions' interface.
## More advanced documentation
To read more about what this module can do, on how the parameters of your question can be set, see the complete documentation [here](doc/documentation.md).
%package -n python3-moodlexport
Summary: A package to export test questions into Moodle from python or latex
Provides: python-moodlexport
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pip
%description -n python3-moodlexport
# moodlexport
This Python module provides code which allows to easily generate families of questions (called *categories* in Moodle) that can be directly created from either Python or Latex document, and then directly exported into Moodle (through the Moodle XML import functionality), where they can be used to create a test.
| Overview of the possible conversions done within moodlexport |
| --- |
| <img src="doc/images/schema/schema.png" width="400"> |
### Installing
It can be installed with a pip command : `pip install moodlexport`
### A quick overview of what this Module can do
This module focuses on two type of questions provided by Moodle : the `multichoice` question (the student chooses one or more answers among others), and the `essay` question (the student is provided a space to type its answer, or upload a document).
| An essay question | A multichoice question |
| --- | --- |
| <img src="examples/simplest_essay_question_from_python/moodle.png" width="300"> | <img src="examples/simplest_multichoice_question_from_python/moodle.png" width="300"> |
Say that you want to define a multiple choice question in Moodle. This requires a lot of parameters to tune, but for now let's focus on the essential : what you basically needs is
1. The body/text of your question
2. A list of potential answers
3. Setting which answer is the good one (see the documentation for more advanced settings like having more than one good answer)
4. Exporting that to Moodle
Here is a short overview on how to do that from Pyhton with `moodlexport`.
| Writing a multichoice question from Python |
| --- |
| <img src="examples/simplest_multichoice_question_from_python/python.png" width="400"> |
| <img src="examples/simplest_multichoice_question_from_python/moodle.png" width="400"> |
| <img src="examples/simplest_multichoice_question_from_python/pdf.png" width="400"> |
| From top to bottom: 1) the python code defining our question and producing a .xml file; 2) that question in Moodle after importing the .xml file; 3) a .pdf produced by the Python code, for convenience. You can find the corresponding code [here](examples/simplest_multichoice_question_from_python/template.ipynb) |
You could equivalently obtain the very same result by typing the question in a Latex file, and using moodlexport to convert it:
| Writing a multichoice question from Latex |
| --- |
| <img src="examples/simplest_multichoice_question_from_latex/latex.png" width="200"> |
| <img src="examples/simplest_multichoice_question_from_latex/python.png" width="200"> |
| <img src="examples/simplest_multichoice_question_from_python/moodle.png" width="400"> |
| A latex file defining a question, and then converted to an .xml by Python. You can find the corresponding code [here](examples/simplest_multichoice_question_from_latex/template.ipynb) |
To write an essay question, the syntax is as simple:
| Writing an essay question from Python |
| --- |
| <img src="examples/simplest_essay_question_from_python/python.png" width="400"> |
| <img src="examples/simplest_essay_question_from_python/moodle.png" width="400"> |
| <img src="examples/simplest_essay_question_from_python/pdf.png" width="400"> |
| From top to bottom: 1) the python code defining our question and producing a .xml file; 2) that question in Moodle after importing the .xml file; 3) a .pdf produced by the Python code, for convenience. You can find the corresponding code [here](examples/simplest_essay_question_from_python/template.ipynb) |
The interest of writing your questions in Python is that you can easily generate random problems. Suppose for instance that we want a random question where we ask the student if a polynomial equation $aX^2 + bX +c = 0$, with integer coefficients, has a solution or no.
One way to go is to generate a bunch of those questions, and then let Moodle pick one question at random among those during a `test`. Here is one way to do:
| Generating random questions |
| --- |
| <img src="examples/simple_random_question/python.png" width="400"> |
| <img src="examples/simple_random_question/moodle_cat.png" width="400"> |
| <img src="examples/simple_random_question/moodle.png" width="400"> |
| <img src="examples/simple_random_question/pdf.png" width="400"> |
| From top to bottom: 1) the python code defining a category containing many variants of a same question, and producing a .xml file; 2) some of these questions appearing in a category in Moodle 3) one such question in Moodle; 4) a sample of the .pdf produced by the Python code. You can find the corresponding code [here](examples/simple_random_question/template.ipynb) |
### Motivation
The main motivation behind this module is that :
- it is more comfortable to type maths in your day-to-day Latex interface than within Moodle
- it is easier to define mathematical objects (vectors, matrix) in Python than in Moodle
- generating **random problems** is quite intricate in Moodle, because we quickly face issues such as solutions being too complicated for the students (e.g. non integer), or Moodle being unable to handle certain student's answers (how would could Moodle interpret that $x+x$ is the same than $2x$?). This is much simpler to handle in Python.
- it is easier to manipulate locally a Latex or Python file than doing it on the Moodle interface. It also simplifies collaborating projects.
- it is more convenient to store/read questions/answers in pdf files, than using the Moodle 'bank of questions' interface.
## More advanced documentation
To read more about what this module can do, on how the parameters of your question can be set, see the complete documentation [here](doc/documentation.md).
%package help
Summary: Development documents and examples for moodlexport
Provides: python3-moodlexport-doc
%description help
# moodlexport
This Python module provides code which allows to easily generate families of questions (called *categories* in Moodle) that can be directly created from either Python or Latex document, and then directly exported into Moodle (through the Moodle XML import functionality), where they can be used to create a test.
| Overview of the possible conversions done within moodlexport |
| --- |
| <img src="doc/images/schema/schema.png" width="400"> |
### Installing
It can be installed with a pip command : `pip install moodlexport`
### A quick overview of what this Module can do
This module focuses on two type of questions provided by Moodle : the `multichoice` question (the student chooses one or more answers among others), and the `essay` question (the student is provided a space to type its answer, or upload a document).
| An essay question | A multichoice question |
| --- | --- |
| <img src="examples/simplest_essay_question_from_python/moodle.png" width="300"> | <img src="examples/simplest_multichoice_question_from_python/moodle.png" width="300"> |
Say that you want to define a multiple choice question in Moodle. This requires a lot of parameters to tune, but for now let's focus on the essential : what you basically needs is
1. The body/text of your question
2. A list of potential answers
3. Setting which answer is the good one (see the documentation for more advanced settings like having more than one good answer)
4. Exporting that to Moodle
Here is a short overview on how to do that from Pyhton with `moodlexport`.
| Writing a multichoice question from Python |
| --- |
| <img src="examples/simplest_multichoice_question_from_python/python.png" width="400"> |
| <img src="examples/simplest_multichoice_question_from_python/moodle.png" width="400"> |
| <img src="examples/simplest_multichoice_question_from_python/pdf.png" width="400"> |
| From top to bottom: 1) the python code defining our question and producing a .xml file; 2) that question in Moodle after importing the .xml file; 3) a .pdf produced by the Python code, for convenience. You can find the corresponding code [here](examples/simplest_multichoice_question_from_python/template.ipynb) |
You could equivalently obtain the very same result by typing the question in a Latex file, and using moodlexport to convert it:
| Writing a multichoice question from Latex |
| --- |
| <img src="examples/simplest_multichoice_question_from_latex/latex.png" width="200"> |
| <img src="examples/simplest_multichoice_question_from_latex/python.png" width="200"> |
| <img src="examples/simplest_multichoice_question_from_python/moodle.png" width="400"> |
| A latex file defining a question, and then converted to an .xml by Python. You can find the corresponding code [here](examples/simplest_multichoice_question_from_latex/template.ipynb) |
To write an essay question, the syntax is as simple:
| Writing an essay question from Python |
| --- |
| <img src="examples/simplest_essay_question_from_python/python.png" width="400"> |
| <img src="examples/simplest_essay_question_from_python/moodle.png" width="400"> |
| <img src="examples/simplest_essay_question_from_python/pdf.png" width="400"> |
| From top to bottom: 1) the python code defining our question and producing a .xml file; 2) that question in Moodle after importing the .xml file; 3) a .pdf produced by the Python code, for convenience. You can find the corresponding code [here](examples/simplest_essay_question_from_python/template.ipynb) |
The interest of writing your questions in Python is that you can easily generate random problems. Suppose for instance that we want a random question where we ask the student if a polynomial equation $aX^2 + bX +c = 0$, with integer coefficients, has a solution or no.
One way to go is to generate a bunch of those questions, and then let Moodle pick one question at random among those during a `test`. Here is one way to do:
| Generating random questions |
| --- |
| <img src="examples/simple_random_question/python.png" width="400"> |
| <img src="examples/simple_random_question/moodle_cat.png" width="400"> |
| <img src="examples/simple_random_question/moodle.png" width="400"> |
| <img src="examples/simple_random_question/pdf.png" width="400"> |
| From top to bottom: 1) the python code defining a category containing many variants of a same question, and producing a .xml file; 2) some of these questions appearing in a category in Moodle 3) one such question in Moodle; 4) a sample of the .pdf produced by the Python code. You can find the corresponding code [here](examples/simple_random_question/template.ipynb) |
### Motivation
The main motivation behind this module is that :
- it is more comfortable to type maths in your day-to-day Latex interface than within Moodle
- it is easier to define mathematical objects (vectors, matrix) in Python than in Moodle
- generating **random problems** is quite intricate in Moodle, because we quickly face issues such as solutions being too complicated for the students (e.g. non integer), or Moodle being unable to handle certain student's answers (how would could Moodle interpret that $x+x$ is the same than $2x$?). This is much simpler to handle in Python.
- it is easier to manipulate locally a Latex or Python file than doing it on the Moodle interface. It also simplifies collaborating projects.
- it is more convenient to store/read questions/answers in pdf files, than using the Moodle 'bank of questions' interface.
## More advanced documentation
To read more about what this module can do, on how the parameters of your question can be set, see the complete documentation [here](doc/documentation.md).
%prep
%autosetup -n moodlexport-0.0.32
%build
%py3_build
%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .
%files -n python3-moodlexport -f filelist.lst
%dir %{python3_sitelib}/*
%files help -f doclist.lst
%{_docdir}/*
%changelog
* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.0.32-1
- Package Spec generated
|