1
0
Fork 0
mirror of https://codeberg.org/Mo8it/AdvLabDB.git synced 2024-12-20 23:41:20 +00:00
AdvLabDB/advlabdb/templates/admin_import.jinja.html
2022-11-10 13:19:48 +01:00

221 lines
5.6 KiB
HTML

{% extends "admin_base.jinja.html" %}
{% block content %}
{% for error in form.file.errors %}
<div class="alert alert-danger" role="alert">
<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 &#8594; 0 / 1 / 2 / ... (starts with 0 and has step
1)
</li>
<li>attribute &#8594; 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 &#8594; WS / SS</li>
<li>
year &#8594; 22 / 23 / ...
</li>
</ul>
<h5>
Part
</h5>
<ul>
<li>
id
</li>
<li>
number &#8594; 1 / 2 / ...
</li>
<li>
program_label &#8594; 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> &#8594; 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> &#8594; 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> &#8594; 12.09.2022
</li>
<li>
<code>special</code> &#8594; 1 / 0
</li>
<li>
<code>group_experiment_id</code>
</li>
<li>
<code>assistant_email</code>
</li>
</ul>
{% endblock %}