{% from "macros.jinja.html" import information %} {% extends "admin/master.html" %} {% block body %} {{ information(current_user, active_semester_str, role="admin") }} <hr> {% for error in form.file.errors %} <div class="alert alert-danger"> <strong>Error!</strong> {{ error }} </div> {% endfor %} <form method="POST" enctype="multipart/form-data"> {{ form.csrf_token }} {{ form.file.label }} {{ form.file }} {{ form.submit }} </form> <hr> <h3>Help</h3> <p> The import file has to be a text file (with <code>.txt</code> at the end) encoded in UTF-8. It has to <strong>strictly</strong> follow the required format. </p> <p> You can take a look at the file <a href="{{ url_for('static', filename='example_database_import.txt') }}" target="_blank" rel="noopener noreferrer" > example_database_import.txt </a> for an example. </p> <h4>Required manipulation using the web interface</h4> <p> The following tables can not be imported from a file and have to be manipulated using the web interface. </p> <ul> <li> Semester </li> <li> Program </li> <li> Part </li> <li> User </li> <li> Assistant </li> <li> Experiment </li> <li> Semester Experiment </li> </ul> <h4>Optional values</h4> <p> If an attribute is optional/nullable and has no value, then <code>NULL</code> (uppercase) has to be written. </p> <h4>How to understand the tables in the next section</h4> <h5>ID</h5> <p> None of the mentioned ids in the import file is meant as a database id. The ids here only refer to the imported instances. The id in the database is assigned automatically. </p> <p> Here is the format of a table in the "Tables" section: </p> <h5>Table</h5> <ul> <li> id → 0 / 1 / 2 / ... (starts with 0 and has step 1) </li> <li> attribute → example1 / example2 / ... (explanation) </li> <li> ... </li> </ul> <p> The type of attributes can be seen in the drawio file <a href="{{ url_for('static', filename='DB.drawio') }}" > DB.drawio </a> which can be opened using <a href="https://www.diagrams.net/" target="_blank" rel="noopener noreferrer" > diagrams.net </a>. Some attributes have constraints marked also in the drawio file. </p> <h4>Tables</h4> <h5>Semester (only one!)</h5> <ul> <li> label → WS / SS </li> <li> year → 22 / 23 / ... </li> </ul> <h5>Part</h5> <ul> <li> id </li> <li> number → 1 / 2 / ... </li> <li> program_label → BS / MS / BE / ... (for bachelor of science, master of science, bachelor of education, etc.) </li> </ul> <h5>Student</h5> <ul> <li> <code>student_number</code> </li> <li> <code>first_name</code> </li> <li> <code>last_name</code> </li> <li> <code>uni_email</code> </li> <li> <code><em>contact_email</em></code> (optional) </li> <li> <code><em>bachelor_thesis</em></code> (optional) </li> <li> <code><em>bachelor_thesis_work_group</em></code> (optional) </li> <li> <code><em>note</em></code> (optional) </li> </ul> <div style="font-size: 90%;"> Notes: <ul> <li> If <code>student_number</code> is found in the database but <code>first_name</code>, <code>last_name</code> or <code>uni_email</code> do not match, a warning is given during the import. Pay attention to warnings! </li> <li> <code>bachelor_thesis</code> and <code>bachelor_thesis_work_group</code> are only updated in the database if they are not <code>NULL</code>. This prevents overriding values written using the web interface. </li> <li> If <code>note</code> is not <code>NULL</code> then it is appended to the note in the database if the student already exists in the database. It will not overwrite existing notes. </li> </ul> </div> <h5>Group</h5> <ul> <li> <code>id</code> </li> <li> <code>number</code> → 1 / 2 / ... </li> <li> <code>program_label</code> </li> </ul> <h5>PartStudent</h5> <ul> <li> <code>student_number</code> </li> <li> <code>part_id</code> </li> <li> <code>group_id</code> </li> </ul> <h5>Experiment</h5> <ul> <li> <code>id</code> </li> <li> <code>number</code> → 1 / 2 / ... </li> <li> <code>program_label</code> </li> </ul> <h5>GroupExperiment</h5> <ul> <li> <code>id</code> </li> <li> <code>experiment_id</code> </li> <li> <code>group_id</code> </li> </ul> <h5>Appointment</h5> <ul> <li> <code>date</code> → 12.09.2022 </li> <li> <code>special</code> → 1 / 0 </li> <li> <code>group_experiment_id</code> </li> <li> <code>assistant_email</code> </li> </ul> {{ footer|safe }} {% endblock body %}