Source code for mathmaker.lib.shared

# -*- coding: utf-8 -*-

# Mathmaker creates automatically maths exercises sheets
# with their answers
# Copyright 2006-2017 Nicolas Hainaux <nh.techn@gmail.com>

# This file is part of Mathmaker.

# Mathmaker is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# any later version.

# Mathmaker is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with Mathmaker; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

import sqlite3

from mathmaker import settings
from mathmaker.lib.machine import LaTeX
from mathmaker.lib.constants import latex


[docs]def init(): global db global shapes_db global three_letters_words_source global four_letters_words_source global five_letters_words_source global names_source global mini_problems_wordings_source global mini_problems_prop_wordings_source global markup global deci_int_triples_for_prop_source global int_pairs_source global int_triples_source global int_quadruples_source global int_quintuples_source global int_sextuples_source global simple_fractions_source global single_ints_source global single_deci1_source global angle_ranges_source global int_deci_clever_pairs_source global digits_places_source global fracdigits_places_source global int_fracs_source global deci_10_100_1000_multi_source global deci_10_100_1000_divi_source global deci_one_digit_multi_source global deci_one_digit_divi_source global trigo_functions_source global trigo_vocabulary_source global mc_source global machine global number_of_the_question global order_of_operations_variants_source global unitspairs_source global alternate_source # , alternate_source2 global alternate_2masks_source global alternate_3masks_source global alternate_4masks_source global alternate_nb2nb3_in_mini_pb_prop_source global decimals_source global extdecimals_source global dvipsnames_selection_source global polygons_source global scalene_triangle_shapes_source global right_triangle_shapes_source global isosceles_triangle_shapes_source global equilateral_triangle_shapes_source global quadrilateral_1_1_1_1_shapes_source global quadrilateral_2_1_1_shapes_source global quadrilateral_2_2_shapes_source global quadrilateral_3_1_shapes_source global quadrilateral_4_shapes_source global pentagon_1_1_1_1_1_shapes_source global pentagon_2_1_1_1_shapes_source global pentagon_2_2_1_shapes_source global pentagon_3_1_1_shapes_source global pentagon_3_2_shapes_source global pentagon_4_1_shapes_source global pentagon_5_shapes_source global hexagon_1_1_1_1_1_1_shapes_source global hexagon_2_1_1_1_1_shapes_source global hexagon_2_2_1_1_shapes_source global hexagon_2_2_2_shapes_source global hexagon_3_1_1_1_shapes_source global hexagon_3_2_1_shapes_source global hexagon_3_3_shapes_source global hexagon_4_1_1_shapes_source global hexagon_4_2_shapes_source global hexagon_5_1_shapes_source global hexagon_6_shapes_source global ls_marks_source global enable_js_form enable_js_form = False log = settings.mainlogger db = sqlite3.connect(settings.path.db) shapes_db = sqlite3.connect(settings.path.shapes_db) from mathmaker.lib.tools import database three_letters_words_source = database.source("w3l", ["id", "word"], language=settings.language) four_letters_words_source = database.source("w4l", ["id", "word"], language=settings.language) five_letters_words_source = database.source("w5l", ["id", "word"], language=settings.language) names_source = database.source("names", ["id", "name"], language=settings.language) mini_problems_wordings_source = database.source("mini_pb_wordings", ["id", "wording_context", "wording"]) mini_problems_prop_wordings_source = database.source( "mini_pb_prop_wordings", ["id", "wording_context", "wording", "nb1_xcoeff", "nb2_xcoeff", "nb3_xcoeff"]) deci_int_triples_for_prop_source = database.source( "deci_int_triples_for_prop", ["id", "coeff", "nb1", "nb2", "nb3", "solution"]) int_pairs_source = database.source("int_pairs", ["id", "nb1", "nb2"]) int_triples_source = database.source("int_triples", ["id", "nb1", "nb2", "nb3"]) int_quadruples_source = database.source("int_quadruples", ["id", "nb1", "nb2", "nb3", "nb4"]) int_quintuples_source = database.source("int_quintuples", ["id", "nb1", "nb2", "nb3", "nb4", "nb5"]) int_sextuples_source = database.source("int_sextuples", ["id", "nb1", "nb2", "nb3", "nb4", "nb5", "nb6"]) simple_fractions_source = database.source('simple_fractions', ['id', 'nb1', 'nb2']) single_ints_source = database.source("single_ints", ["id", "nb1"]) single_deci1_source = database.source("single_deci1", ["id", "nb1"]) angle_ranges_source = database.source("angle_ranges", ["id", "nb1", "nb2"]) int_deci_clever_pairs_source = database.source("int_deci_clever_pairs", ["id", "nb1", "nb2"]) order_of_operations_variants_source = database.source( 'order_of_operations_variants', ['id', 'nb1']) unitspairs_source = database.source('units_conversions', ['id', 'unit1', 'unit2', 'direction', 'category', 'level']) decimals_source = database.source('decimals', ['id', 'nb1']) digits_places_source = database.source('digits_places', ['id', 'place']) fracdigits_places_source = database.source('fracdigits_places', ['id', 'place']) dvipsnames_selection_source = database.source('dvipsnames_selection', ['id', 'color_name']) ls_marks_source = database.source('ls_marks', ['id', 'mark']) polygons_source = database.source('polygons', ['id', 'sides_nb', 'type', 'special', 'codename', 'sides_particularity', 'level', 'variant', 'table2', 'table3', 'table4', 'table5', 'table6'], db=shapes_db) scalene_triangle_shapes_source = database.source('scalene_triangle_shapes', ['id', 'shape_nb'], db=shapes_db) right_triangle_shapes_source = database.source('right_triangle_shapes', ['id', 'shape_nb'], db=shapes_db) isosceles_triangle_shapes_source = database.source( 'isosceles_triangle_shapes', ['id', 'shape_nb'], db=shapes_db) equilateral_triangle_shapes_source = database.source( 'equilateral_triangle_shapes', ['id', 'shape_nb'], db=shapes_db) quadrilateral_1_1_1_1_shapes_source = database.source( 'quadrilateral_1_1_1_1_shapes', ['id', 'shape_nb'], db=shapes_db) quadrilateral_2_1_1_shapes_source = database.source( 'quadrilateral_2_1_1_shapes', ['id', 'shape_nb'], db=shapes_db) quadrilateral_2_2_shapes_source = database.source( 'quadrilateral_2_2_shapes', ['id', 'shape_nb'], db=shapes_db) quadrilateral_3_1_shapes_source = database.source( 'quadrilateral_3_1_shapes', ['id', 'shape_nb'], db=shapes_db) quadrilateral_4_shapes_source = database.source( 'quadrilateral_4_shapes', ['id', 'shape_nb'], db=shapes_db) pentagon_1_1_1_1_1_shapes_source = database.source( 'pentagon_1_1_1_1_1_shapes', ['id', 'shape_nb'], db=shapes_db) pentagon_2_1_1_1_shapes_source = database.source( 'pentagon_2_1_1_1_shapes', ['id', 'shape_nb'], db=shapes_db) pentagon_2_2_1_shapes_source = database.source( 'pentagon_2_2_1_shapes', ['id', 'shape_nb'], db=shapes_db) pentagon_3_1_1_shapes_source = database.source( 'pentagon_3_1_1_shapes', ['id', 'shape_nb'], db=shapes_db) pentagon_3_2_shapes_source = database.source( 'pentagon_3_2_shapes', ['id', 'shape_nb'], db=shapes_db) pentagon_4_1_shapes_source = database.source( 'pentagon_4_1_shapes', ['id', 'shape_nb'], db=shapes_db) pentagon_5_shapes_source = database.source( 'pentagon_5_shapes', ['id', 'shape_nb'], db=shapes_db) hexagon_1_1_1_1_1_1_shapes_source = database.source( 'hexagon_1_1_1_1_1_1_shapes', ['id', 'shape_nb'], db=shapes_db) hexagon_2_1_1_1_1_shapes_source = database.source( 'hexagon_2_1_1_1_1_shapes', ['id', 'shape_nb'], db=shapes_db) hexagon_2_2_1_1_shapes_source = database.source( 'hexagon_2_2_1_1_shapes', ['id', 'shape_nb'], db=shapes_db) hexagon_2_2_2_shapes_source = database.source( 'hexagon_2_2_1_1_shapes', ['id', 'shape_nb'], db=shapes_db) hexagon_3_1_1_1_shapes_source = database.source( 'hexagon_3_1_1_1_shapes', ['id', 'shape_nb'], db=shapes_db) hexagon_3_2_1_shapes_source = database.source( 'hexagon_3_2_1_shapes', ['id', 'shape_nb'], db=shapes_db) hexagon_3_3_shapes_source = database.source( 'hexagon_3_3_shapes', ['id', 'shape_nb'], db=shapes_db) hexagon_4_1_1_shapes_source = database.source( 'hexagon_4_1_1_shapes', ['id', 'shape_nb'], db=shapes_db) hexagon_4_2_shapes_source = database.source( 'hexagon_4_2_shapes', ['id', 'shape_nb'], db=shapes_db) hexagon_5_1_shapes_source = database.source( 'hexagon_5_1_shapes', ['id', 'shape_nb'], db=shapes_db) hexagon_6_shapes_source = database.source( 'hexagon_6_shapes', ['id', 'shape_nb'], db=shapes_db) markup = latex.MARKUP from mathmaker.lib.tools.database import sub_source, mc_source from mathmaker.lib.tools.database import generate_random_decimal_nb extdecimals_source = sub_source('extdecimals', ondemand=True, generator_fct=generate_random_decimal_nb) alternate_source = sub_source('alternate') alternate_2masks_source = sub_source('alternate_2masks') alternate_3masks_source = sub_source('alternate_3masks') alternate_4masks_source = sub_source('alternate_4masks') alternate_nb2nb3_in_mini_pb_prop_source = \ sub_source('alternate_nb2nb3_in_mini_pb_prop') # alternate_source2 = sub_source('alternate2') trigo_functions_source = sub_source('trigo_functions') trigo_vocabulary_source = sub_source('trigo_vocabulary') int_fracs_source = sub_source('int_irreducible_frac') deci_10_100_1000_multi_source = sub_source( 'decimal_and_10_100_1000_for_multi') deci_10_100_1000_divi_source = sub_source( 'decimal_and_10_100_1000_for_divi') deci_one_digit_multi_source = sub_source( 'decimal_and_one_digit_for_multi') deci_one_digit_divi_source = sub_source( 'decimal_and_one_digit_for_divi') mc_source = mc_source() try: machine = LaTeX(settings.language) except TypeError: log.error('An exception occured while creating the LaTeX machine.', exc_info=True) raise RuntimeError('Could not create the machine object! ' 'Check logfile') number_of_the_question = 0