excel2moodle.core package
These Modules are the heart of the excel2moodle Package
Submodules
excel2moodle.core.category module
- class excel2moodle.core.category.Category(n, name, description, dataframe, points=0, version=0)[source]
Bases:
object
- Parameters:
n (int)
name (str)
description (str)
dataframe (DataFrame)
points (float)
version (int)
- getCategoryHeader()[source]
vor den Fragen einer Kategorie wird ein <question type='category'> eingefügt mit Name und Beschreibung
- Return type:
Element
- property id
- property name
excel2moodle.core.dataStructure module
Main Module which does the heavy lifting
At the heart is the class xmlTest
- class excel2moodle.core.dataStructure.QuestionDB(settings)[source]
Bases:
object
oberste Klasse für den Test
- Parameters:
settings (Settings)
- appendQuestions(questions, file=None)[source]
- Parameters:
questions (list[QuestionItem])
file (Path | None)
- dataChanged = <excel2moodle.QSignaler(0x5c309993c2c0)>
- retrieveCategoriesData()[source]
Scans through the sheet with the metadata for all the question categories
The information that will be shown in the UI like description and points is retrieved from one spreadsheet sheet. This method gathers this information and stores it in the
categoriesMetaData
dataframe- Return type:
None
excel2moodle.core.etHelpers module
Helper Module which aids in creating XML-Elements for the Questions
This module host different functions. All of them will return an lxml.etree.Element
- excel2moodle.core.etHelpers.getCdatTxtElement(subEle)[source]
Puts all
subEle
asstr
into a<text><![CDATA[...subEle...]]</text>
element- Return type:
Element
- Parameters:
subEle (_Element | list[_Element])
- excel2moodle.core.etHelpers.getElement(eleName, text, **attribs)[source]
Creates an XML-Element with text
If
type(text)``is a ``QuestionFields
, the specific field is directly read. Otherwise it will include whatever istext
as a string :rtype:Element
- Parameters:
**kwargs --
are treated as attributes for the Element
eleName (str)
text (str)
- Raises:
NanException if the spreadsheet cell of text -- QuestionFields is
nan
- Return type:
Element
- excel2moodle.core.etHelpers.getFeedBEle(feedback, text=None, style=None)[source]
Gets ET Elements with the feedback for the question.
- Return type:
Element
- Parameters:
feedback (XMLTags)
text (str | None)
style (TextElements | None)
excel2moodle.core.exceptions module
- exception excel2moodle.core.exceptions.InvalidFieldException(message, qID, field, *args, **kwargs)[source]
Bases:
Exception
- exception excel2moodle.core.exceptions.NanException(message, qID, field, *args, **kwargs)[source]
Bases:
QNotParsedException
excel2moodle.core.globals module
- class excel2moodle.core.globals.DFIndex(*values)[source]
Bases:
StrEnum
This Enum holds the identifier string for for the spreadsheet and the string for the xml-tag
Each enum corresponds to a list of two values. The first Value is the index in the spreadsheet, the second is the name of the xml-tag
- ANSTYPE = 'answerType'
- BPOINTS = 'bulletPoints'
- FALSE = 'false'
- NAME = 'name'
- NUMBER = 'number'
- PICTURE = 'picture'
- RESULT = 'result'
- TEXT = 'text'
- TRUE = 'true'
- TYPE = 'type'
- class excel2moodle.core.globals.TextElements(*values)[source]
Bases:
Enum
- LISTITEM = ('li', 'text-align: left;')
- PLEFT = ('p', 'text-align: left;')
- SPANGREEN = ('span', 'color: rgb(152, 202, 62)')
- SPANORANGE = ('span', 'color: rgb(152, 100, 100)')
- SPANRED = ('span', 'color: rgb(239, 69, 64)')
- ULIST = ('ul', '')
- property style: str
- class excel2moodle.core.globals.XMLTags(_, dfkey=None, getEle=None)[source]
Bases:
StrEnum
- ANSFEEDBACK = 'feedback'
- ANSWER = 'answer'
- CORFEEDB = 'correctfeedback'
- GENFEEDB = 'generalfeedback'
- HIDE = 'hidden'
- ID = 'idnumber'
- INCORFEEDB = 'incorrectfeedback'
- NAME = 'name'
- PCORFEEDB = 'partialcorrectfeedback'
- PENALTY = 'penalty'
- PICTURE = 'file'
- POINTS = 'defaultgrade'
- QTEXT = 'questiontext'
- QUESTION = 'question'
- TEXT = 'text'
- TOLERANCE = 'tolerance'
- TYPE = 'type'
- property dfkey: str
excel2moodle.core.numericMultiQ module
Numeric Multi Questions Module to calculate results from a formula
This module calculates a series of results from al matrix of variables. For each column in the matrix there will be one result. As well it returns a bullet points string that shows the numerical values corresponding to the set of variables
- excel2moodle.core.numericMultiQ.getVariablesDict(df, keyList, index)[source]
Liest alle Variablen-Listen deren Name in
keyList
ist aus dem DataFrame im Column[index]- Return type:
dict
- Parameters:
df (DataFrame)
keyList (list)
index (int)
- excel2moodle.core.numericMultiQ.getVarsList(bps)[source]
Durchsucht den bulletPoints String nach den Variablen, die als "{var}" gekennzeichnet sind
- Return type:
list
- Parameters:
bps (str)
- excel2moodle.core.numericMultiQ.insertVariablesToBPoints(varDict, bulletPoints, index)[source]
Für jeden Eintrag im varDict, wird im bulletPoints String der Substring "{key}" durch value[index] ersetzt
- Return type:
str
- Parameters:
varDict (dict)
bulletPoints (str)
index (int)
- excel2moodle.core.numericMultiQ.parseNumericMultiQuestion(datFrame, bulletPoints, equation, questionIndex)[source]
Berechnet die Ergebnisse anhand der Variablen in bulletPoints
Gibt eine Liste mit allen Ergebnissen zurück und eine Liste mit den bulletPoints-Strings, die die Numerischen Variablen enthalten
- Return type:
tuple
[list
[str
],list
[float
]]- Parameters:
datFrame (DataFrame)
bulletPoints (str)
equation (str)
questionIndex (int)
excel2moodle.core.parser module
- class excel2moodle.core.parser.MCQuestionParser(*args)[source]
Bases:
QuestionParser
- class excel2moodle.core.parser.NFMQuestionParser(question, dataframe)[source]
Bases:
QuestionParser
- Parameters:
question (Question)
dataframe (Series)
- getVariablesDict(keyList)[source]
Liest alle Variablen-Listen deren Name in
keyList
ist aus dem DataFrame im Column[index]- Return type:
tuple
[dict
[str
,list
[str
]],int
]- Parameters:
keyList (list)
- static getVarsList(bps)[source]
Durchsucht den bulletPoints String nach den Variablen, die als "{var}" gekennzeichnet sind
- Return type:
list
- Parameters:
bps (str | list[str])
- class excel2moodle.core.parser.NFQuestionParser(*args)[source]
Bases:
QuestionParser
- class excel2moodle.core.parser.QuestionParser(question, dataframe)[source]
Bases:
object
- Parameters:
question (Question)
dataframe (Series)
- appendFromSettings(key='standards')[source]
Appends 1 to 1 mapped Elements defined in the parserSettings to the element
- Return type:
None
- appendToQuestion(eleName, text, txtEle=False, **attribs)[source]
- Parameters:
eleName (str)
text (str | DFIndex)
- getFeedBEle(feedback, text=None, style=None)[source]
- Return type:
Element
- Parameters:
feedback (XMLTags)
text (str | None)
style (TextElements | None)
- static getNumericAnsElement(result, tolerance=0.01, fraction=100, format='moodle_auto_format')[source]
- Return type:
Element
- Parameters:
result (int | float)
tolerance (float)
fraction (int | float)
format (str)
Returns an
<answer/>
Element specific for the numerical Question The element contains those childs:<text/>
which holds the value of the answer<tolerace/>
with the relative tolerance for the result<feedback/>
with general feedback for a true answer
- hasPicture()[source]
Creates a
Picture
object insidequestion
, if the question needs a pic- Return type:
bool
- parse(xmlTree=None)[source]
Parses the Question
Generates an new Question Element stored as
self.tmpEle:ET.Element
if no Exceptions are raised,self.tmpEle
is passed toself.question.element
- Return type:
None
- Parameters:
xmlTree (_Element | None)
- setAnswers()[source]
Needs to be implemented in the type-specific subclasses
- Return type:
list
[Element
] |None
excel2moodle.core.question module
- class excel2moodle.core.question.Picture(picKey, imgFolder, question)[source]
Bases:
object
- Parameters:
picKey (str)
imgFolder (Path)
question (Question)
excel2moodle.core.questionValidator module
This Module checks if the data inside the Spreadsheet is valid
Those things are considered:
The mandatory entries must not be
Nan
All fields must have the right data-type
If Those checks pass, a question is created, which can be accessed via Validator.question
excel2moodle.core.questionWriter module
This Module holds the related Functions for writing the Questions to an xml-File
It is planned to rework those Functions, because they're not quite elegant.
excel2moodle.core.stringHelpers module
This Module holds small Helperfunctions related to string manipulation
- excel2moodle.core.stringHelpers.get_bullet_string(s)[source]
Formatiert die Angaben zum Statischen System hübsch