diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3ee80fea1755bc0f0e4f87963dbb9d0b97d44433..18cb1929d41de851a4a52f49550171c8bcdd6806 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,23 +1,23 @@ include: - - project: "AlekSIS/official/AlekSIS" - file: /ci/general.yml - - project: "AlekSIS/official/AlekSIS" - file: /ci/prepare/lock.yml - - project: "AlekSIS/official/AlekSIS" - file: /ci/test/lint.yml - - project: "AlekSIS/official/AlekSIS" - file: /ci/test/test.yml - - project: "AlekSIS/official/AlekSIS" - file: /ci/test/security.yml - - project: "AlekSIS/official/AlekSIS" - file: /ci/build/dist.yml - - project: "AlekSIS/official/AlekSIS" - file: /ci/build/docs.yml - - project: "AlekSIS/official/AlekSIS" - file: "/ci/deploy/trigger_dist.yml" - - project: "AlekSIS/official/AlekSIS" - file: /ci/publish/pypi.yml - - project: "AlekSIS/official/AlekSIS" - file: /ci/deploy/pages.yml - - project: "AlekSIS/official/AlekSIS" - file: /ci/docker/image.yml + - project: "AlekSIS/official/AlekSIS" + file: /ci/general.yml + - project: "AlekSIS/official/AlekSIS" + file: /ci/prepare/lock.yml + - project: "AlekSIS/official/AlekSIS" + file: /ci/test/lint.yml + - project: "AlekSIS/official/AlekSIS" + file: /ci/test/test.yml + - project: "AlekSIS/official/AlekSIS" + file: /ci/test/security.yml + - project: "AlekSIS/official/AlekSIS" + file: /ci/build/dist.yml + - project: "AlekSIS/official/AlekSIS" + file: /ci/build/docs.yml + - project: "AlekSIS/official/AlekSIS" + file: "/ci/deploy/trigger_dist.yml" + - project: "AlekSIS/official/AlekSIS" + file: /ci/publish/pypi.yml + - project: "AlekSIS/official/AlekSIS" + file: /ci/deploy/pages.yml + - project: "AlekSIS/official/AlekSIS" + file: /ci/docker/image.yml diff --git a/aleksis/apps/csv_import/default_templates.yaml b/aleksis/apps/csv_import/default_templates.yaml index 4be2c97133c524f92df16d9e0877e087c199c0d9..914a678d7ed549ad1514fee9d59114228bb480a1 100644 --- a/aleksis/apps/csv_import/default_templates.yaml +++ b/aleksis/apps/csv_import/default_templates.yaml @@ -1,6 +1,6 @@ pedasos_teachers: model: core.Person - verbose_name: 'Pedasos: Teachers' + verbose_name: "Pedasos: Teachers" extra_args: has_header_row: true separator: "\t" @@ -15,7 +15,7 @@ pedasos_teachers: - ignore pedasos_classes: model: core.Group - verbose_name: 'Pedasos: Classes' + verbose_name: "Pedasos: Classes" extra_args: has_header_row: true separator: "\t" @@ -26,7 +26,7 @@ pedasos_classes: - group_owner_short_name pedasos_courses: model: core.Group - verbose_name: 'Pedasos: Courses' + verbose_name: "Pedasos: Courses" extra_args: has_header_row: true separator: "\t" @@ -38,7 +38,7 @@ pedasos_courses: - group_owner_short_name pedasos_students: model: core.Person - verbose_name: 'Pedasos: Students' + verbose_name: "Pedasos: Students" extra_args: has_header_row: true separator: "\t" @@ -84,7 +84,7 @@ pedasos_students: - group_membership_short_name pedasos_guardians_1: model: core.Person - verbose_name: 'Pedasos: Guardians 1' + verbose_name: "Pedasos: Guardians 1" extra_args: has_header_row: true separator: "\t" @@ -130,7 +130,7 @@ pedasos_guardians_1: - ignore pedasos_guardians_2: model: core.Person - verbose_name: 'Pedasos: Guardians 2' + verbose_name: "Pedasos: Guardians 2" extra_args: has_header_row: true separator: "\t" @@ -176,7 +176,7 @@ pedasos_guardians_2: - ignore schild_nrw_students: model: core.Person - verbose_name: 'Schild-NRW: Students' + verbose_name: "Schild-NRW: Students" extra_args: has_header_row: true separator: ; @@ -208,7 +208,7 @@ schild_nrw_students: - phone_number schild_nrw_teachers: model: core.Person - verbose_name: 'Schild-NRW: Teachers' + verbose_name: "Schild-NRW: Teachers" extra_args: has_header_row: true separator: ; diff --git a/aleksis/apps/csv_import/frontend/index.js b/aleksis/apps/csv_import/frontend/index.js index 4ce39967f46ae64a8ef67bc74f80f6956d2a3273..1abbf2c11a809e26d58bcc20a60b2e8d4310638a 100644 --- a/aleksis/apps/csv_import/frontend/index.js +++ b/aleksis/apps/csv_import/frontend/index.js @@ -1,49 +1,49 @@ export default { - name: "csv", - path: "#", - component: () => import("aleksis.core/components/Parent.vue"), - meta: { + name: "csv", + path: "#", + component: () => import("aleksis.core/components/Parent.vue"), + meta: { + inMenu: true, + titleKey: "csv.menu_title", + icon: "mdi-swap-vertical", + permission: "csv_import.view_csv_menu_rule", + }, + children: [ + { + path: "import/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "csv.csvImport", + meta: { inMenu: true, - titleKey: "csv.menu_title", - icon: "mdi-swap-vertical", - permission: "csv_import.view_csv_menu_rule", + titleKey: "csv.import.menu_title", + icon: "mdi-table-arrow-left", + permission: "csv_import.import_data_rule", + }, + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, }, - children: [ - { - path: "import/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "csv.csvImport", - meta: { - inMenu: true, - titleKey: "csv.import.menu_title", - icon: "mdi-table-arrow-left", - permission: "csv_import.import_data_rule", - }, - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "templates/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "csv.importTemplates", - meta: { - inMenu: true, - titleKey: "csv.import_template.menu_title", - icon: "mdi-table-cog", - permission: "csv_import.view_importtemplate_rule" - }, - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - { - path: "templates/upload/", - component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), - name: "csv.uploadImportTemplate", - props: { - byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, - }, - }, - ] -} + { + path: "templates/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "csv.importTemplates", + meta: { + inMenu: true, + titleKey: "csv.import_template.menu_title", + icon: "mdi-table-cog", + permission: "csv_import.view_importtemplate_rule", + }, + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + { + path: "templates/upload/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "csv.uploadImportTemplate", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, + ], +}; diff --git a/aleksis/apps/csv_import/frontend/messages/de.json b/aleksis/apps/csv_import/frontend/messages/de.json index 47dcaa606a989d50db1f3c278f1ad802078899d6..8f23f114f8912bbd46d3edd8867964824e81d761 100644 --- a/aleksis/apps/csv_import/frontend/messages/de.json +++ b/aleksis/apps/csv_import/frontend/messages/de.json @@ -1,11 +1,11 @@ { - "csv": { - "menu_title": "CSV-Import", - "import": { - "menu_title": "CSV-Datei importieren" - }, - "import_template": { - "menu_title": "Import-Vorlagen" - } + "csv": { + "menu_title": "CSV-Import", + "import": { + "menu_title": "CSV-Datei importieren" + }, + "import_template": { + "menu_title": "Import-Vorlagen" } + } } diff --git a/aleksis/apps/csv_import/frontend/messages/en.json b/aleksis/apps/csv_import/frontend/messages/en.json index f02d651cc4828195584696c6c024297d81888f0b..b8a3bcdef1f2991bb0ab2703f3de14fdfcb2954b 100644 --- a/aleksis/apps/csv_import/frontend/messages/en.json +++ b/aleksis/apps/csv_import/frontend/messages/en.json @@ -1,11 +1,11 @@ { - "csv": { - "menu_title": "CSV Import", - "import": { - "menu_title": "Import CSV File" - }, - "import_template": { - "menu_title": "Import Templates" - } + "csv": { + "menu_title": "CSV Import", + "import": { + "menu_title": "Import CSV File" + }, + "import_template": { + "menu_title": "Import Templates" } + } } diff --git a/aleksis/apps/csv_import/frontend/messages/ru.json b/aleksis/apps/csv_import/frontend/messages/ru.json index 295d48fd0fd1868b445e460e47769391ecd20837..21b1997e5cd6e6509d26b55358dbf3c921960291 100644 --- a/aleksis/apps/csv_import/frontend/messages/ru.json +++ b/aleksis/apps/csv_import/frontend/messages/ru.json @@ -1,11 +1,11 @@ { - "csv": { - "import": { - "menu_title": "Импорт файла CSV" - }, - "import_template": { - "menu_title": "Импортировать шаблоны" - }, - "menu_title": "Импорт CSV" - } + "csv": { + "import": { + "menu_title": "Импорт файла CSV" + }, + "import_template": { + "menu_title": "Импортировать шаблоны" + }, + "menu_title": "Импорт CSV" + } } diff --git a/aleksis/apps/csv_import/frontend/messages/uk.json b/aleksis/apps/csv_import/frontend/messages/uk.json index 11961dfae686cb8086c4f51904f7b63b7bba42b9..0e6b3befce7bf030589f015caf78c6e395494397 100644 --- a/aleksis/apps/csv_import/frontend/messages/uk.json +++ b/aleksis/apps/csv_import/frontend/messages/uk.json @@ -1,11 +1,11 @@ { - "csv": { - "menu_title": "Імпорт CSV", - "import_template": { - "menu_title": "Імпортувати шаблони" - }, - "import": { - "menu_title": "Імпорт файлу CSV" - } + "csv": { + "menu_title": "Імпорт CSV", + "import_template": { + "menu_title": "Імпортувати шаблони" + }, + "import": { + "menu_title": "Імпорт файлу CSV" } + } } diff --git a/aleksis/apps/csv_import/rules.py b/aleksis/apps/csv_import/rules.py index a30f37ac5967f6ab6a0929759f5ab8f48bd25c3e..fcb0355cd230aa0283a4aa5b9c5885732b5e23d8 100644 --- a/aleksis/apps/csv_import/rules.py +++ b/aleksis/apps/csv_import/rules.py @@ -14,5 +14,7 @@ upload_importtemplate_predicate = has_person & ( ) add_perm("csv_import.upload_importtemplate_rule", upload_importtemplate_predicate) -view_csv_menu_predicate = import_data_predicate | view_importtemplate_predicate | upload_importtemplate_predicate +view_csv_menu_predicate = ( + import_data_predicate | view_importtemplate_predicate | upload_importtemplate_predicate +) add_perm("csv_import.view_csv_menu_rule", view_csv_menu_predicate) diff --git a/aleksis/apps/csv_import/util/process.py b/aleksis/apps/csv_import/util/process.py index eee177030fc70a0d019009318141c344f02d65fc..d0fbecc75d548c039d25aa9729e8b04dea3b4ff7 100644 --- a/aleksis/apps/csv_import/util/process.py +++ b/aleksis/apps/csv_import/util/process.py @@ -169,7 +169,10 @@ def import_csv( # Determine available fields for finding existing instances get_dict = {} match_field_priority = 0 - for (column_name, field_type,) in sorted( + for ( + column_name, + field_type, + ) in sorted( filter(lambda f: isinstance(f[1], MatchFieldType), field_types.items()), key=lambda f: f[1].priority, ):