tg-prepare 1.1.0__py3-none-any.whl → 2.1.0b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of tg-prepare might be problematic. Click here for more details.
- {tg_prepare-1.1.0.dist-info → tg_prepare-2.1.0b1.dist-info}/METADATA +3 -3
- tg_prepare-2.1.0b1.dist-info/RECORD +54 -0
- {tg_prepare-1.1.0.dist-info → tg_prepare-2.1.0b1.dist-info}/WHEEL +1 -1
- tg_prepare-2.1.0b1.dist-info/projects/.secret_key +1 -0
- tgp_backend/__init__.py +3 -4
- tgp_backend/config.py +31 -0
- tgp_backend/directories.py +6 -8
- tgp_backend/nextcloud.py +40 -19
- tgp_backend/project.py +172 -45
- tgp_backend/session_manager.py +47 -0
- tgp_backend/util.py +73 -25
- tgp_ui/app.py +43 -335
- tgp_ui/routes/__init__.py +0 -0
- tgp_ui/routes/collection.py +272 -0
- tgp_ui/routes/data.py +228 -0
- tgp_ui/routes/project.py +102 -0
- tgp_ui/routes/publication.py +129 -0
- tgp_ui/routes/tabs.py +34 -0
- tgp_ui/routes/views.py +62 -0
- tgp_ui/static/css/navbar.css +92 -0
- tgp_ui/static/js/collectionManager.js +60 -0
- tgp_ui/static/js/fileManager.js +186 -0
- tgp_ui/static/js/main.js +32 -485
- tgp_ui/static/js/modalManager.js +105 -0
- tgp_ui/static/js/navbarManager.js +151 -0
- tgp_ui/static/js/projectManager.js +60 -0
- tgp_ui/static/js/require.js +5 -0
- tgp_ui/static/js/sidebarManager.js +32 -0
- tgp_ui/static/js/tabManager.js +79 -0
- tgp_ui/templates/layout.html +9 -48
- tgp_ui/templates/macros.html +79 -72
- tgp_ui/templates/project_main.html +36 -0
- tgp_ui/templates/project_navbar.html +81 -0
- tgp_ui/templates/{projects.html → projects_main.html} +13 -28
- tgp_ui/templates/tab_final_upload.html +29 -0
- tg_prepare-1.1.0.dist-info/RECORD +0 -39
- tgp_ui/templates/collection.html +0 -194
- tgp_ui/templates/file_upload.html +0 -24
- tgp_ui/templates/nxc_file_tree.html +0 -33
- tgp_ui/templates/project.html +0 -26
- tgp_ui/templates/storage.html +0 -49
- tgp_ui/templates/tei_explorer.html +0 -48
- tgp_ui/templates/xpath_parser_modal_content.html +0 -37
- {tg_prepare-1.1.0.dist-info → tg_prepare-2.1.0b1.dist-info}/entry_points.txt +0 -0
- {tg_prepare-1.1.0.dist-info → tg_prepare-2.1.0b1.dist-info}/licenses/LICENSE +0 -0
- {tg_prepare-1.1.0.dist-info → tg_prepare-2.1.0b1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
{% extends 'layout.html' %}
|
|
3
|
+
{% block content %}
|
|
4
|
+
<section class="">
|
|
5
|
+
<div class="container bg" id="navbar">
|
|
6
|
+
{% include 'project_navbar.html' %}
|
|
7
|
+
</div>
|
|
8
|
+
<div class="container tab-area mt-4 p-4 rounded-3">
|
|
9
|
+
<div class="tab-content">
|
|
10
|
+
<div class="tab-pane" id="tab-edit-project" role="tabpanel" aria-labelledby="tab-edit-project-tab"></div>
|
|
11
|
+
<div class="tab-pane" id="tab-edit-other-files" role="tabpanel" aria-labelledby="tab-edit-other-files-tab">
|
|
12
|
+
</div>
|
|
13
|
+
<div class="tab-pane" id="tab-import-data" role="tabpanel" aria-labelledby="tab-import-data-tab">
|
|
14
|
+
</div>
|
|
15
|
+
<div class="tab-pane" id="tab-select-directories" role="tabpanel" aria-labelledby="tab-set-collections-tab">
|
|
16
|
+
</div>
|
|
17
|
+
<div class="tab-pane" id="tab-set-collections" role="tabpanel" aria-labelledby="tab-set-collections-tab">
|
|
18
|
+
</div>
|
|
19
|
+
<div class="tab-pane" id="tab-prepare-metadata" role="tabpanel" aria-labelledby="tab-prepare-metadata-tab">
|
|
20
|
+
</div>
|
|
21
|
+
<div class="tab-pane" id="tab-check-metadata" role="tabpanel" aria-labelledby="tab-check-metadata-tab">
|
|
22
|
+
</div>
|
|
23
|
+
<div class="tab-pane" id="tab-prepare-upload" role="tabpanel" aria-labelledby="tab-prepare-upload-tab">
|
|
24
|
+
</div>
|
|
25
|
+
<div class="tab-pane" id="tab-check-results" role="tabpanel" aria-labelledby="tab-check-results-tab">
|
|
26
|
+
</div>
|
|
27
|
+
<div class="tab-pane" id="tab-final-upload" role="tabpanel" aria-labelledby="tab-final-upload-tab"></div>
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<!-- <a href="#" class="m-4 text-muted helper position-fixed bottom-0 end-0 mx-5"
|
|
31
|
+
data-bs-toggle="Contact ... for help" title="Need help?">
|
|
32
|
+
<i class="bi bi-question-circle fs-1"></i>
|
|
33
|
+
</a> -->
|
|
34
|
+
</div>
|
|
35
|
+
</section>
|
|
36
|
+
{% endblock %}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<div class="row align-items-center justify-content-between position-relative">
|
|
3
|
+
<!-- Line -->
|
|
4
|
+
<div class="line blank"></div>
|
|
5
|
+
<div class="line blue"></div>
|
|
6
|
+
|
|
7
|
+
<!-- Main Button 1: Manage Project -->
|
|
8
|
+
<div class="col-auto expanding-button text-center">
|
|
9
|
+
<button type="button" class="btn btn-light btn-circle btn-xl" id="tab-group-project" title="Manage Project">
|
|
10
|
+
<i class="bi bi-archive main-icon"></i>
|
|
11
|
+
<div class="row sub-buttons d-none nav">
|
|
12
|
+
<!-- Sub-Button: Project Settings -->
|
|
13
|
+
<div class="col-4 mx-3 btn-circle btn-sm btn-outline-secondary last-opened " data-bs-toggle="tab"
|
|
14
|
+
data-bs-target="#tab-edit-project"
|
|
15
|
+
data-url="{{ url_for('project.tab_edit_project', projectname=project.name) }}">
|
|
16
|
+
<i class="bi bi-pen fs-4"></i>
|
|
17
|
+
</div>
|
|
18
|
+
<!-- Sub-Button: Upload Data -->
|
|
19
|
+
<div class="col-4 mx-3 btn-circle btn-sm btn-outline-secondary" data-bs-toggle="tab"
|
|
20
|
+
data-bs-target="#tab-import-data"
|
|
21
|
+
data-url="{{ url_for('data.tab_import_data', projectname=project.name)}}">
|
|
22
|
+
<i class="bi bi-archive fs-4"></i>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
</button>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<!-- Main Button 2: Manage Collections -->
|
|
29
|
+
<div class="col-auto text-center">
|
|
30
|
+
<button type="button" class="btn btn-light btn-circle btn-xl" id="tab-group-collections"
|
|
31
|
+
title="Manage Collections">
|
|
32
|
+
<i class="bi bi-pencil"></i>
|
|
33
|
+
<div class="row sub-buttons d-none nav">
|
|
34
|
+
<!-- Sub-Button: Select Data -->
|
|
35
|
+
<div class="col-4 mx-3 btn-circle btn-sm btn-outline-secondary" data-bs-toggle="tab"
|
|
36
|
+
data-bs-target="#tab-select-directories"
|
|
37
|
+
data-url="{{ url_for('collection.tab_select_directories', projectname=project.name)}}">
|
|
38
|
+
<i class="bi bi-list-nested fs-4"></i>
|
|
39
|
+
</div>
|
|
40
|
+
<!-- Sub-Button: Manage Metadata -->
|
|
41
|
+
<div class="col-4 mx-3 btn-circle btn-sm btn-outline-secondary" data-bs-toggle="tab"
|
|
42
|
+
data-bs-target="#tab-set-collections"
|
|
43
|
+
data-url="{{ url_for('collection.tab_manage_collections', projectname=project.name)}}">
|
|
44
|
+
<i class="bi bi-pen fs-4"></i>
|
|
45
|
+
</div>
|
|
46
|
+
<!-- Sub-Button: Check Settings & Metadata -->
|
|
47
|
+
<div class="col-4 mx-3 btn-circle btn-sm btn-outline-secondary" data-bs-toggle="tab"
|
|
48
|
+
data-bs-target="#tab-check-metadata"
|
|
49
|
+
data-url="{{ url_for('collection.tab_validate_metadata', projectname=project.name)}}">
|
|
50
|
+
<i class="bi bi-list-check fs-4"></i>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</button>
|
|
54
|
+
</div>
|
|
55
|
+
<!-- Main Button 3: Upload & Publish to TextGrid -->
|
|
56
|
+
<div class="col-auto text-center">
|
|
57
|
+
<button type="button" class="btn btn-light btn-circle btn-xl" id="tab-group-upload">
|
|
58
|
+
<i class="bi bi-cloud"></i>
|
|
59
|
+
<div class="row sub-buttons d-none nav">
|
|
60
|
+
<!-- Sub-Button: TG-Sesssion-ID, -Project-ID & -Upload -->
|
|
61
|
+
<div class="col-4 mx-3 btn-circle btn-sm btn-outline-secondary" data-bs-toggle="tab"
|
|
62
|
+
data-bs-target="#tab-prepare-upload"
|
|
63
|
+
data-url="{{ url_for('publication.tab_upload', projectname=project.name)}}">
|
|
64
|
+
<i class="bi bi-key fs-4"></i>
|
|
65
|
+
</div>
|
|
66
|
+
<!-- Sub-Button: Check TG-Project -->
|
|
67
|
+
<div class="col-4 mx-3 btn-circle btn-sm btn-outline-secondary" data-bs-toggle="tab"
|
|
68
|
+
data-bs-target="#tab-check-results"
|
|
69
|
+
data-url="{{ url_for('publication.tab_check_result', projectname=project.name) }}">
|
|
70
|
+
<i class="bi bi-arrow-repeat fs-4"></i>
|
|
71
|
+
</div>
|
|
72
|
+
<!-- Sub-Button: TG-Publish -->
|
|
73
|
+
<div class="col-4 mx-3 btn-circle btn-sm btn-outline-secondary" data-bs-toggle="tab"
|
|
74
|
+
data-bs-target="#tab-final-upload"
|
|
75
|
+
data-url="{{ url_for('tab_final_upload', projectname=project.name)}}">
|
|
76
|
+
<i class="bi bi-cloud-upload fs-4"></i>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</button>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
@@ -1,15 +1,22 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
1
2
|
{% extends 'layout.html' %}
|
|
2
3
|
{% block content %}
|
|
4
|
+
<div class="row">
|
|
5
|
+
<div class="col-12">
|
|
6
|
+
<h1 class="text-center">Projects</h1>
|
|
7
|
+
<p class="text-center text-muted">Manage your projects here. You can create, edit, and delete projects.</p>
|
|
8
|
+
</div>
|
|
9
|
+
</div>
|
|
3
10
|
<div class="row row-cols-xxl-6 row-cols-lg-4 row-cols-md-2">
|
|
4
|
-
{% for project in
|
|
11
|
+
{% for project in get_projects() %}
|
|
5
12
|
<div class="card text-center m-1">
|
|
6
13
|
<div class="card-body">
|
|
7
14
|
<h5 class="card-title">{{ project.name }}</h5>
|
|
8
|
-
<a class="btn btn-secondary btn-forward" href="project/{{ project.
|
|
15
|
+
<a class="btn btn-secondary btn-forward" href="project/{{ project.path }}" title="Edit project">
|
|
9
16
|
<span class="bi bi-pencil-square"></span>
|
|
10
17
|
</a>
|
|
11
|
-
<a class="btn btn-danger
|
|
12
|
-
data-
|
|
18
|
+
<a class="btn btn-danger load-modal" title="Delete project"
|
|
19
|
+
data-url="{{ url_for('project.modal_delete_project', projectname=project.path) }}">
|
|
13
20
|
<span class="bi bi-trash"></span>
|
|
14
21
|
</a>
|
|
15
22
|
</div>
|
|
@@ -29,14 +36,14 @@
|
|
|
29
36
|
<div class="modal fade" id="newProject" tabindex="-1" aria-labelledby="newProjectLabel" aria-hidden="true">
|
|
30
37
|
<div class="modal-dialog">
|
|
31
38
|
<div class="modal-content">
|
|
32
|
-
<form action="{{ url_for('new_project') }}" method="POST">
|
|
39
|
+
<form action="{{ url_for('project.new_project') }}" method="POST">
|
|
33
40
|
<div class="modal-header">
|
|
34
41
|
<h5 class="modal-title" id="newProjectLabel">Create new Project</h5>
|
|
35
42
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
36
43
|
</div>
|
|
37
44
|
<div class="modal-body">
|
|
38
45
|
<div class="mb-3">
|
|
39
|
-
<input type="text" class="form-control"
|
|
46
|
+
<input type="text" id="projectNameInput" class="form-control" name="projectname"
|
|
40
47
|
placeholder="Projectname" value="{{ projectname }}">
|
|
41
48
|
</div>
|
|
42
49
|
</div>
|
|
@@ -48,26 +55,4 @@
|
|
|
48
55
|
</div>
|
|
49
56
|
</div>
|
|
50
57
|
</div>
|
|
51
|
-
|
|
52
|
-
<div class="modal fade" id="deleteProject" tabindex="-1" aria-labelledby="deleteProjectLabel" aria-hidden="true">
|
|
53
|
-
<div class="modal-dialog">
|
|
54
|
-
<div class="modal-content">
|
|
55
|
-
<form action="{{ url_for('projects') }}" method="POST">
|
|
56
|
-
<div class="modal-header">
|
|
57
|
-
<h5 class="modal-title" id="deleteProjectLabel">
|
|
58
|
-
<span>Delete Project:</span>
|
|
59
|
-
<i class="projectname"></i>
|
|
60
|
-
</h5>
|
|
61
|
-
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
62
|
-
</div>
|
|
63
|
-
<div class="modal-footer">
|
|
64
|
-
<input type="hidden" name="delete" value="true">
|
|
65
|
-
<input type="hidden" name="projectname">
|
|
66
|
-
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
|
67
|
-
<button type="submit" class="btn btn-danger">Delete</button>
|
|
68
|
-
</div>
|
|
69
|
-
</form>
|
|
70
|
-
</div>
|
|
71
|
-
</div>
|
|
72
|
-
</div>
|
|
73
58
|
{% endblock %}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<div class="container bg-white my-4 p-4 rounded">
|
|
2
|
+
<div class="row justify-content-center">
|
|
3
|
+
<div class="col-lg-8">
|
|
4
|
+
<div
|
|
5
|
+
class="bg-light rounded p-5 h-100 d-flex flex-column align-items-center justify-content-center shadow-sm">
|
|
6
|
+
<!-- TextGrid Logo -->
|
|
7
|
+
<img src="{{ url_for('static', filename='img/textgrid-logo.svg') }}" alt="TextGrid Logo"
|
|
8
|
+
style="max-width: 320px; height: auto;" class="mb-4">
|
|
9
|
+
<h2 class="fs-3 mb-4 text-center">
|
|
10
|
+
<i class="bi bi-cloud-upload text-primary me-2"></i>
|
|
11
|
+
Publish Project to <span class="text-primary">TextGrid Official Instance</span>
|
|
12
|
+
</h2>
|
|
13
|
+
<form method="POST"
|
|
14
|
+
action="{{ url_for('publication.upload_project', projectname=project.name, instance='live') }}"
|
|
15
|
+
class="w-100">
|
|
16
|
+
<button type="submit" class="btn btn-success btn-lg w-100 py-3" style="font-size:1.5rem;">
|
|
17
|
+
<i class="bi bi-rocket-takeoff me-2"></i>
|
|
18
|
+
Publish to Official Instance
|
|
19
|
+
</button>
|
|
20
|
+
</form>
|
|
21
|
+
<div class="alert alert-warning text-center mt-4 w-100" role="alert" style="font-size:1.1rem;">
|
|
22
|
+
<i class="bi bi-exclamation-triangle me-2"></i>
|
|
23
|
+
<b>Attention:</b> This action will publish your project to the official TextGrid instance.<br>
|
|
24
|
+
Please make sure you have checked your data carefully before proceeding!
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
tg_prepare-1.1.0.dist-info/licenses/LICENSE,sha256=deYu6g1OGKm0VUwhM4Octoh8qlzjsiHHxoI-KkCBVBE,11351
|
|
2
|
-
tgp_backend/__init__.py,sha256=4Q_pjhWDF2eAyPa8bvgIcBIrV0qGKa3uYgvYqTCmKWs,419
|
|
3
|
-
tgp_backend/auth.py,sha256=hUPd0rc01BTT003xpkdmhNc6o0JztbAdimyDb0B9oTQ,2293
|
|
4
|
-
tgp_backend/cli.py,sha256=iw_gknn-_m_UFZZUKfkV9aJixG3sVcHIONybNtOG40I,551
|
|
5
|
-
tgp_backend/directories.py,sha256=5w7FeEa0zcW4B_rkM0bLlaKdWUPrvtremlkgcU5W6dA,2385
|
|
6
|
-
tgp_backend/interfaces.py,sha256=SO7mOdhkd1f7irUBrwFhp5aKx3UKkkUzU9QBYDl0Tvc,91
|
|
7
|
-
tgp_backend/nextcloud.py,sha256=9p-YT-oN05seWo2zwnfHSbvVa4Am7qONczfR6Fx8pqM,4424
|
|
8
|
-
tgp_backend/project.py,sha256=Lsxvy8DTalHqgTkyZmja7nb7icdUinp0KY9DuEVqEmo,8908
|
|
9
|
-
tgp_backend/tgclient.py,sha256=QG2iFPrv2qLL4FRXoEfXzEMJriroiIaNL9rkreGtzuQ,2961
|
|
10
|
-
tgp_backend/util.py,sha256=PsRO7CGhHZjGubkM39KDuTwJwyfq_Gs7HM-n0DFlIZc,2210
|
|
11
|
-
tgp_ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
-
tgp_ui/app.py,sha256=cso4-T7a4uGgvVaMcFpqMT8to26c-7ASCOiVXVYIaGM,12252
|
|
13
|
-
tgp_ui/static/css/bootstrap-icons.min.css,sha256=XxUvYRPQvG4RTCkukUmXwvf1N0YF9KQ_ocuWV6O1dk8,85797
|
|
14
|
-
tgp_ui/static/css/bootstrap.min.css,sha256=djO3wMl9GeaC_u6K-ic4Uj_LKhRUSlUFcsruzS7v5ms,155845
|
|
15
|
-
tgp_ui/static/css/main.css,sha256=EK8euwgxX8I3qsBiDmIvj8UBIxkSKQZz1mo_OX4Q1FQ,2641
|
|
16
|
-
tgp_ui/static/css/simpleXML.css,sha256=dfY7UZCiC79BkNOT1hM0GQ6v_yLSxhKCnmV0RZIT9S8,961
|
|
17
|
-
tgp_ui/static/js/bootstrap.bundle.min.js,sha256=fh8VA992XMpeCZiRuU4xii75UIG6KvHrbUF8yIS_2_4,78743
|
|
18
|
-
tgp_ui/static/js/jquery.min.js,sha256=_xUj-3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej_m4,89501
|
|
19
|
-
tgp_ui/static/js/main.js,sha256=mTrA94R8ZeBYaFPs4NtIdTZ1RKdRnFjwqaIKdB7UW8k,17169
|
|
20
|
-
tgp_ui/static/js/simpleXML.js,sha256=jEkZe3TuiHuEt6V7If_1EmqYIgTywssJ3OwOQzOFYNg,8065
|
|
21
|
-
tgp_ui/templates/collection.html,sha256=WnYAH_5kJ6CzvVIqGk8XU_TZmhIrcOXggBoImyuGVZE,11416
|
|
22
|
-
tgp_ui/templates/file_tree.html,sha256=IKWp5MLUvnFF65cIUIxU4Jf5wi9Fg8koSXD96Mk328E,1640
|
|
23
|
-
tgp_ui/templates/file_upload.html,sha256=fIelltVaTnqUqxBZoMy859IWbuwqNjrDZbVh9JlYl-g,1004
|
|
24
|
-
tgp_ui/templates/layout.html,sha256=eB80fnfUw8q_PEO6wY8eefjnRUbqwZEbHCFAK8ccQaY,5026
|
|
25
|
-
tgp_ui/templates/macros.html,sha256=zpbduAoTNj5OD2o_9z1IY6pPm_KX8kSOSWWN264kWB4,4253
|
|
26
|
-
tgp_ui/templates/nxc_file_tree.html,sha256=i8nLf71c9vUyAP46eC6BdJJVXgAJcJd4xcIv7vW6Y9k,1275
|
|
27
|
-
tgp_ui/templates/nxc_login.html,sha256=tDxqHYPZqsY2ZNnkn4a5bMOYiD8ybcNRpzSq7MvMWCo,1269
|
|
28
|
-
tgp_ui/templates/nxc_tab.html,sha256=9HWCa7UZKxL0fZasT_g6uozI64L-497Y2LppPPTHF2M,517
|
|
29
|
-
tgp_ui/templates/project.html,sha256=35oPO8yPMXqJSjtXZrXegrhIqmutECY_nk1ZYPFwAsc,1106
|
|
30
|
-
tgp_ui/templates/projects.html,sha256=zUPCTPa129aTwfo-ZpMkhkmQvcO7HPY0TXwAi7MnIOE,3344
|
|
31
|
-
tgp_ui/templates/publication.html,sha256=TXCHCE2198cHFmN4_l4JNmq0nQoy8GwnESePjRfjliU,9357
|
|
32
|
-
tgp_ui/templates/storage.html,sha256=ZgLIawovCTkgQy7aX3QB0cMlQj4uiby68c8aJFQ_HNw,1985
|
|
33
|
-
tgp_ui/templates/tei_explorer.html,sha256=YPLYZcgsqvA2AAL8NQ61Eo1ekwn3FEQf6pB58lLLL8U,2472
|
|
34
|
-
tgp_ui/templates/xpath_parser_modal_content.html,sha256=Hm3VNtXbmEUIPFihGnE11AcSRdvMGro73IKjvDJAAqg,1573
|
|
35
|
-
tg_prepare-1.1.0.dist-info/METADATA,sha256=tJr1V2ztaQCVSpNpwO4Y9HYN2btX9knxnl7uSnBMmhE,532
|
|
36
|
-
tg_prepare-1.1.0.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
37
|
-
tg_prepare-1.1.0.dist-info/entry_points.txt,sha256=mbsfiEA8_fQdrFUE_oabDi-Syw8jjli37Ms7tawDDhs,78
|
|
38
|
-
tg_prepare-1.1.0.dist-info/top_level.txt,sha256=ueOyX_KdozreQJD_HRs6kAsvGNO4vfM9B_QqqhdyRPI,19
|
|
39
|
-
tg_prepare-1.1.0.dist-info/RECORD,,
|
tgp_ui/templates/collection.html
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
{% from "macros.html" import multi_input, xpath_or_value_input with context %}
|
|
2
|
-
<div class="row mb-4 text-center">
|
|
3
|
-
<h5>{{ collection.long_title }}</h5>
|
|
4
|
-
</div>
|
|
5
|
-
<form method="POST" class="row collection-form"
|
|
6
|
-
action="{{ url_for('save_collection', projectname=project.name, title=collection_title) }}" method="POST">
|
|
7
|
-
<div class="row mb-1">
|
|
8
|
-
<ul class="nav nav-tabs w-100 align-items-stretch" id="collectionTab{{ collection.short_title }}"
|
|
9
|
-
role="tablist">
|
|
10
|
-
<li class="nav-item col-12 col-lg-2 mb-2 mb-md-0" role="presentation">
|
|
11
|
-
<button class="nav-link text-dark active w-100 text-primary"
|
|
12
|
-
id="fixedAttributesTab_{{ collection_title }}" data-bs-toggle="tab"
|
|
13
|
-
data-bs-target="#fixedAttributesContent_{{ collection_title }}" type="button" role="tab"
|
|
14
|
-
aria-controls="fixedAttributesContent_{{ collection_title }}" aria-selected="true">
|
|
15
|
-
Project
|
|
16
|
-
</button>
|
|
17
|
-
</li>
|
|
18
|
-
<li class="nav-item col-12 col-lg-2 mb-2 mb-md-0" role="presentation">
|
|
19
|
-
<button class="nav-link text-dark w-100" id="classificationAttributesTab_{{ collection_title }}"
|
|
20
|
-
data-bs-toggle="tab" data-bs-target="#classificationAttributesContent_{{ collection_title }}"
|
|
21
|
-
type="button" role="tab" aria-controls="classificationAttributesContent_{{ collection_title }}"
|
|
22
|
-
aria-selected="false">
|
|
23
|
-
Classifications
|
|
24
|
-
</button>
|
|
25
|
-
</li>
|
|
26
|
-
<li class="nav-item col-12 col-lg-2 mb-2 mb-md-0" role="presentation">
|
|
27
|
-
<button class="nav-link text-dark w-100" id="workAttributesTab_{{ collection_title }}"
|
|
28
|
-
data-bs-toggle="tab" data-bs-target="#workAttributesContent_{{ collection_title }}" type="button"
|
|
29
|
-
role="tab" aria-controls="workAttributesContent_{{ collection_title }}" aria-selected="false">
|
|
30
|
-
Work
|
|
31
|
-
</button>
|
|
32
|
-
</li>
|
|
33
|
-
<li class="nav-item col-12 col-lg-2 mb-2 mb-md-0" role="presentation">
|
|
34
|
-
<button class="nav-link text-dark w-100" id="editionAttributesTab_{{ collection_title }}"
|
|
35
|
-
data-bs-toggle="tab" data-bs-target="#editionAttributesContent_{{ collection_title }}" type="button"
|
|
36
|
-
role="tab" aria-controls="editionAttributesContent_{{ collection_title }}" aria-selected="false">
|
|
37
|
-
Edition
|
|
38
|
-
</button>
|
|
39
|
-
</li>
|
|
40
|
-
<li class="nav-item col-12 col-lg-2 mb-2 mb-md-0" role="presentation">
|
|
41
|
-
<button class="nav-link text-dark w-100" id="eltecAttributesTab_{{ collection_title }}"
|
|
42
|
-
data-bs-toggle="tab" data-bs-target="#eltecAttributesContent_{{ collection_title }}" type="button"
|
|
43
|
-
role="tab" aria-controls="eltecAttributesContent_{{ collection_title }}" aria-selected="false">
|
|
44
|
-
ELTEC specifications
|
|
45
|
-
</button>
|
|
46
|
-
</li>
|
|
47
|
-
<li class="nav-item col-12 col-lg-2 mb-2 mb-md-0" role="presentation">
|
|
48
|
-
<button class="nav-link text-dark w-100 tei_explorer" id="teiExplorer_{{ collection_title }}"
|
|
49
|
-
data-bs-toggle="tab" data-bs-target="#teiExplorerContent_{{ collection_title }}" type="button"
|
|
50
|
-
role="tab" aria-controls="teiExplorerContent_{{ collection_title }}" aria-selected="false"
|
|
51
|
-
data-url="{{url_for('tei_explorer', projectname=project.name, title=collection_title)}}">
|
|
52
|
-
TEI explorer
|
|
53
|
-
</button>
|
|
54
|
-
</li>
|
|
55
|
-
</ul>
|
|
56
|
-
</div>
|
|
57
|
-
<div class="row my-2">
|
|
58
|
-
<li class="nav-item col-12 col-lg-2 mt-2 mt-md-0" role="presentation">
|
|
59
|
-
<button type="submit" class="btn btn-success w-100">
|
|
60
|
-
<span class="spinner-border spinner-border-sm d-none" role="status" aria-hidden="true"></span>
|
|
61
|
-
<span>Save</span>
|
|
62
|
-
</button>
|
|
63
|
-
</li>
|
|
64
|
-
</div>
|
|
65
|
-
<div class="row tab-content" id="collectionTabContent{{ collection.short_title }}">
|
|
66
|
-
<div class="tab-pane fade show active" id="fixedAttributesContent_{{ collection_title }}" role="tabpanel"
|
|
67
|
-
aria-labelledby="fixedAttributesTab_{{ collection_title }}">
|
|
68
|
-
<div class="col-12">
|
|
69
|
-
<div class="mb-3 row">
|
|
70
|
-
<label class="col-sm-2 col-form-label">Long title</label>
|
|
71
|
-
<div class="col-sm-10">
|
|
72
|
-
<input type="text" class="form-control" name="long_title" value="{{ collection.long_title }}">
|
|
73
|
-
</div>
|
|
74
|
-
</div>
|
|
75
|
-
<div class="mb-3 row">
|
|
76
|
-
<label class="col-sm-2 col-form-label">Short title</label>
|
|
77
|
-
<div class="col-sm-10">
|
|
78
|
-
<input type="text" class="form-control" name="short_title" value="{{ collection.short_title }}">
|
|
79
|
-
</div>
|
|
80
|
-
</div>
|
|
81
|
-
{{ multi_input('rights_holder', 'Rights Holder', collection.rights_holder, version=2) }}
|
|
82
|
-
{{ multi_input('collector', 'Collector', collection.collector, version=2) }}
|
|
83
|
-
</div>
|
|
84
|
-
</div>
|
|
85
|
-
{% set collection_parser = project.get_collection_parser(collection) %}
|
|
86
|
-
<div class="tab-pane fade" id="workAttributesContent_{{ collection_title }}" role="tabpanel"
|
|
87
|
-
aria-labelledby="workAttributesTab_{{ collection_title }}">
|
|
88
|
-
<div class="col-12">
|
|
89
|
-
<div class="mb-3 row">
|
|
90
|
-
<label class="col-sm-12 col-form-label"><b>General</b>
|
|
91
|
-
</label>
|
|
92
|
-
</div>
|
|
93
|
-
{{ xpath_or_value_input('ID', 'work_id',
|
|
94
|
-
collection.work_id, collection_parser) }}
|
|
95
|
-
{{ xpath_or_value_input('Title', 'work_title', collection.work_title, collection_parser) }}
|
|
96
|
-
{{ xpath_or_value_input('Genre', 'genre', collection.genre, collection_parser) }}
|
|
97
|
-
{{ xpath_or_value_input('Place of publication', 'work_publication_place',
|
|
98
|
-
collection.work_publication_place, collection_parser) }}
|
|
99
|
-
|
|
100
|
-
<div class="mb-3 row">
|
|
101
|
-
<label class="col-sm-12 col-form-label"><b>Author</b>
|
|
102
|
-
</label>
|
|
103
|
-
</div>
|
|
104
|
-
{{ xpath_or_value_input('ID', 'author_id', collection.author_id, collection_parser)
|
|
105
|
-
}}
|
|
106
|
-
{{ xpath_or_value_input('Firstname', 'author_firstname', collection.author_firstname, collection_parser)
|
|
107
|
-
}}
|
|
108
|
-
{{ xpath_or_value_input('Lastname', 'author_lastname', collection.author_lastname, collection_parser) }}
|
|
109
|
-
{{ xpath_or_value_input('Fullname', 'author_fullname', collection.author_fullname, collection_parser) }}
|
|
110
|
-
<div class="mb-3 row">
|
|
111
|
-
<label class="col-sm-12 col-form-label"><b>Date of Creation</b>
|
|
112
|
-
</label>
|
|
113
|
-
</div>
|
|
114
|
-
{{ xpath_or_value_input('Date', 'work_publication_date',
|
|
115
|
-
collection.work_publication_date,
|
|
116
|
-
collection_parser) }}
|
|
117
|
-
{{ xpath_or_value_input('notBefore', 'work_publication_notBefore',
|
|
118
|
-
collection.work_publication_notBefore,
|
|
119
|
-
collection_parser) }}
|
|
120
|
-
{{ xpath_or_value_input('notAfter', 'work_publication_notAfter',
|
|
121
|
-
collection.work_publication_notAfter,
|
|
122
|
-
collection_parser) }}
|
|
123
|
-
</div>
|
|
124
|
-
</div>
|
|
125
|
-
<div class="tab-pane fade" id="classificationAttributesContent_{{ collection_title }}" role="tabpanel"
|
|
126
|
-
aria-labelledby="classificationAttributesTab_{{ collection_title }}">
|
|
127
|
-
<div class="col-12">
|
|
128
|
-
{{ multi_input('basic_classifications', 'Basic classification', collection.basic_classifications,
|
|
129
|
-
version=1)
|
|
130
|
-
}}
|
|
131
|
-
{{ multi_input('gnd_subjects', 'GND Subject Areas', collection.gnd_subjects, version=1) }}
|
|
132
|
-
|
|
133
|
-
</div>
|
|
134
|
-
</div>
|
|
135
|
-
<div class="tab-pane fade" id="editionAttributesContent_{{ collection_title }}" role="tabpanel"
|
|
136
|
-
aria-labelledby="editionAttributesTab_{{ collection_title }}">
|
|
137
|
-
<div class="col-12">
|
|
138
|
-
<div class="mb-3 row">
|
|
139
|
-
<label class="col-sm-12 col-form-label"><b>General</b>
|
|
140
|
-
</label>
|
|
141
|
-
</div>
|
|
142
|
-
{{ xpath_or_value_input('Title', 'edition_title', collection.edition_title,
|
|
143
|
-
collection_parser) }}
|
|
144
|
-
{{ xpath_or_value_input('Author ID', 'edition_author', collection.edition_author,
|
|
145
|
-
collection_parser) }}
|
|
146
|
-
{{ xpath_or_value_input('Language', 'language', collection.language, collection_parser) }}
|
|
147
|
-
{{ xpath_or_value_input('Wordcount', 'wordcount', collection.wordcount, collection_parser) }}
|
|
148
|
-
|
|
149
|
-
<div class="mb-3 row">
|
|
150
|
-
<label class="col-sm-12 col-form-label"><i>Publication</i>
|
|
151
|
-
</label>
|
|
152
|
-
</div>
|
|
153
|
-
{{ xpath_or_value_input('Date', 'edition_publication_date',
|
|
154
|
-
collection.edition_publication_date, collection_parser) }}
|
|
155
|
-
{{ xpath_or_value_input('Place', 'edition_publication_place',
|
|
156
|
-
collection.edition_publication_place, collection_parser) }}
|
|
157
|
-
<div class="mb-3 row">
|
|
158
|
-
<label class="col-sm-12 col-form-label"><i>License</i>
|
|
159
|
-
</label>
|
|
160
|
-
</div>
|
|
161
|
-
{{ xpath_or_value_input('Title', 'edition_license_title',
|
|
162
|
-
collection.edition_license_title, collection_parser) }}
|
|
163
|
-
{{ xpath_or_value_input('URL', 'edition_license_url',
|
|
164
|
-
collection.edition_license_url, collection_parser) }}
|
|
165
|
-
|
|
166
|
-
</div>
|
|
167
|
-
</div>
|
|
168
|
-
<div class="tab-pane fade" id="eltecAttributesContent_{{ collection_title }}" role="tabpanel"
|
|
169
|
-
aria-labelledby="eltecAttributesTab_{{ collection_title }}">
|
|
170
|
-
<div class="col-12">
|
|
171
|
-
<div class="mb-3 row">
|
|
172
|
-
<label class="col-sm-12 col-form-label"><b>General</b>
|
|
173
|
-
</label>
|
|
174
|
-
</div>
|
|
175
|
-
{{ xpath_or_value_input('Author gender', 'eltec_author_gender', collection.eltec_author_gender,
|
|
176
|
-
collection_parser) }}
|
|
177
|
-
{{ xpath_or_value_input('Reprint count', 'eltec_reprintCount', collection.eltec_reprintCount,
|
|
178
|
-
collection_parser) }}
|
|
179
|
-
{{ xpath_or_value_input('Author gender', 'eltec_author_gender', collection.eltec_author_gender,
|
|
180
|
-
collection_parser) }}
|
|
181
|
-
{{ xpath_or_value_input('Timeslot', 'eltec_time_slot', collection.eltec_time_slot,
|
|
182
|
-
collection_parser) }}
|
|
183
|
-
{{ xpath_or_value_input('Corpus collection', 'eltec_corpus', collection.eltec_corpus,
|
|
184
|
-
collection_parser) }}
|
|
185
|
-
{{ xpath_or_value_input('Size', 'eltec_size', collection.eltec_size,
|
|
186
|
-
collection_parser) }}
|
|
187
|
-
</div>
|
|
188
|
-
</div>
|
|
189
|
-
|
|
190
|
-
<div class="tab-pane fade tei-explorer-content" id="teiExplorerContent_{{ collection_title }}" role="tabpanel"
|
|
191
|
-
aria-labelledby="teiExplorer_{{ collection_title }}">TEI
|
|
192
|
-
explorer</div>
|
|
193
|
-
</form>
|
|
194
|
-
</div>
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<form class="row mb-3" action="{{ url_for('upload_files', projectname=project.name) }}" method="POST"
|
|
2
|
-
enctype="multipart/form-data">
|
|
3
|
-
<h5>Upload Files or Folders</h5>
|
|
4
|
-
<div class="col-6">
|
|
5
|
-
<input type="file" class="form-control" name="files" multiple webkitdirectory onchange="this.form.submit()">
|
|
6
|
-
</div>
|
|
7
|
-
</form>
|
|
8
|
-
<form class="row" method="POST" data-url="{{ url_for('clone_git_project', projectname=project.name) }}" method="POST"
|
|
9
|
-
id="cloneFromGit">
|
|
10
|
-
<h5>Upload from git project</h5>
|
|
11
|
-
<i>Please be aware, that this can a take while (depending on the size of the git project)!</i>
|
|
12
|
-
<div class="col-6">
|
|
13
|
-
<input type="text" class="form-control" name="github_repo">
|
|
14
|
-
</div>
|
|
15
|
-
<div class="col-6">
|
|
16
|
-
<button type="submit" class="btn btn-primary">
|
|
17
|
-
<span class="spinner-border spinner-border-sm" style="display:none;" role="status"
|
|
18
|
-
aria-hidden="true"></span>
|
|
19
|
-
<span>Clone</span>
|
|
20
|
-
</button>
|
|
21
|
-
</div>
|
|
22
|
-
</form>
|
|
23
|
-
|
|
24
|
-
<br>
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
{% if item.type == 'folder' %}
|
|
2
|
-
<li class="list-group-item {{ active_class }} folder">
|
|
3
|
-
<div class="d-flex justify-content-between align-items-center">
|
|
4
|
-
<span>
|
|
5
|
-
<a href="#" class="badge text-dark show-files" title="Show files">
|
|
6
|
-
<span class="bi bi-eye-slash-fill"></span>
|
|
7
|
-
</a>
|
|
8
|
-
<span class="bi-folder-fill"></span>
|
|
9
|
-
{{ item.name }}
|
|
10
|
-
<a href="#" class="badge text-dark nxc_select-folder" title="Select folder" data-path="{{ item.path }}">
|
|
11
|
-
<span class="bi bi-circle" data-path="{{ item.path }}"></span>
|
|
12
|
-
</a>
|
|
13
|
-
<span class="spinner-border spinner-border-sm" style="display:none;"></span>
|
|
14
|
-
</span>
|
|
15
|
-
<span>
|
|
16
|
-
<span class="badge bg-primary rounded-pill">{{ item.children.count }}</span>
|
|
17
|
-
</span>
|
|
18
|
-
</div>
|
|
19
|
-
{% for child in item.children.list %}
|
|
20
|
-
{% with item=child %}
|
|
21
|
-
<ul class="list-group list-group-flush">
|
|
22
|
-
{% include 'nxc_file_tree.html' %}
|
|
23
|
-
</ul>
|
|
24
|
-
{% endwith %}
|
|
25
|
-
{% endfor %}
|
|
26
|
-
</li>
|
|
27
|
-
{% else %}
|
|
28
|
-
<li class="list-group-item p-0 ps-3 m-0 small text-muted {{ active_class }} file" style="display: none;">
|
|
29
|
-
<span class="bi-file-earmark-text-fill"></span>
|
|
30
|
-
{{ item.name }}
|
|
31
|
-
</span>
|
|
32
|
-
</li>
|
|
33
|
-
{% endif %}
|
tgp_ui/templates/project.html
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
{% extends 'layout.html' %}
|
|
2
|
-
{% block content %}
|
|
3
|
-
<div class="row">
|
|
4
|
-
<div class="tab-content pt-2" id="tab-content">
|
|
5
|
-
<div class="tab-pane {{'active' if tab=='storage' }}" id="tab_storage" role="tabpanel">
|
|
6
|
-
{% include 'storage.html' %}
|
|
7
|
-
</div>
|
|
8
|
-
{% for c in project.collections %}
|
|
9
|
-
{% set collection_config = project.collections[c]['config'] %}
|
|
10
|
-
<div class="tab-pane {{ 'active' if tab==collection_config.short_title }}" id="tab_{{ c }}" role="tabpanel">
|
|
11
|
-
</div>
|
|
12
|
-
{% endfor %}
|
|
13
|
-
<div class="tab-pane {{'active' if tab=='publish' }}" id="tab_publish_{{ project.name }}"
|
|
14
|
-
data-url="{{ url_for('publication', projectname=project.name) }}" role="tabpanel">
|
|
15
|
-
<span class="spinner-border spinner-border-sm" role="status"></span>
|
|
16
|
-
</div>
|
|
17
|
-
</div>
|
|
18
|
-
</div>
|
|
19
|
-
|
|
20
|
-
<div class=" modal fade" id="xpathParserModal" tabindex="-1" aria-labelledby="xpathParserModalLabel" aria-hidden="true">
|
|
21
|
-
</div>
|
|
22
|
-
|
|
23
|
-
<div class="modal fade" id="teiExplorer" tabindex="-1" aria-labelledby="teiExplorerLabel" aria-hidden="true">
|
|
24
|
-
</div>
|
|
25
|
-
|
|
26
|
-
{% endblock %}
|
tgp_ui/templates/storage.html
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
{% block content %}
|
|
2
|
-
<div class="row mb-4">
|
|
3
|
-
<ul class="nav nav-pills" id="" role="tablist">
|
|
4
|
-
<li class="nav-item me-2" role="presentation">
|
|
5
|
-
<button class="nav-link" data-bs-toggle="tab" href="#tab_upload" role="tab" aria-controls="tab_upload"
|
|
6
|
-
aria-selected="false">
|
|
7
|
-
<i class="bi bi-upload"></i>
|
|
8
|
-
Upload
|
|
9
|
-
</button>
|
|
10
|
-
</li>
|
|
11
|
-
<li class="nav-item">
|
|
12
|
-
<a class="nav-link" data-bs-toggle="tab" href="#tab_nextcloud" role="tab" aria-controls="tab_nextcloud"
|
|
13
|
-
aria-selected="false" data-url="{{ url_for('nextcloud_tab') }}" data-projectname="{{ project.name }}">
|
|
14
|
-
<i class="bi bi-cloud"></i>
|
|
15
|
-
Nextcloud
|
|
16
|
-
</a>
|
|
17
|
-
</li>
|
|
18
|
-
<li class="nav-item">
|
|
19
|
-
<a class="nav-link" data-bs-toggle="tab" href="#tab_files" role="tab" aria-controls="tab_files"
|
|
20
|
-
aria-selected="false">
|
|
21
|
-
<i class="bi bi-folder2-open"></i>
|
|
22
|
-
Local files
|
|
23
|
-
</a>
|
|
24
|
-
</li>
|
|
25
|
-
</ul>
|
|
26
|
-
</div>
|
|
27
|
-
<div class="row">
|
|
28
|
-
<div class="tab-content pt-2" id="tab-content">
|
|
29
|
-
<div class="tab-pane {{'active' if tab=='upload' }}" id="tab_upload" role="tabpanel">
|
|
30
|
-
{% include 'file_upload.html' %}
|
|
31
|
-
</div>
|
|
32
|
-
<div class="tab-pane {{'active' if tab=='files' }}" id="tab_files" role="tabpanel">
|
|
33
|
-
{% for item in project.list_files_and_folders() %}
|
|
34
|
-
{% include 'file_tree.html' %}
|
|
35
|
-
{% endfor %}
|
|
36
|
-
</div>
|
|
37
|
-
<div class="tab-pane {{'active' if tab=='nextcloud' }}" id="tab_nextcloud" role="tabpanel"
|
|
38
|
-
data-projectname="{{ project.name }}">
|
|
39
|
-
</div>
|
|
40
|
-
</div>
|
|
41
|
-
</div>
|
|
42
|
-
|
|
43
|
-
<div class=" modal fade" id="xpathParserModal" tabindex="-1" aria-labelledby="xpathParserModalLabel" aria-hidden="true">
|
|
44
|
-
</div>
|
|
45
|
-
|
|
46
|
-
<div class="modal fade" id="teiExplorer" tabindex="-1" aria-labelledby="teiExplorerLabel" aria-hidden="true">
|
|
47
|
-
</div>
|
|
48
|
-
|
|
49
|
-
{% endblock %}
|