Bug 26478 - Python-Schnittstelle für den Zugriff auf Import-Funktionalitäten
Python-Schnittstelle für den Zugriff auf Import-Funktionalitäten
Status: RESOLVED FIXED
Product: UCS@school
Classification: Unclassified
Component: Import scripts
UCS@school 3.0
Other Linux
: P3 minor (vote)
: UCS@school 4.1 R2
Assigned To: Daniel Tröder
Sönke Schwardt-Krummrich
: interim-1
Depends on: 41239
Blocks:
  Show dependency treegraph
 
Reported: 2012-03-13 17:26 CET by Alexander Kläser
Modified: 2016-09-30 11:53 CEST (History)
4 users (show)

See Also:
What kind of report is it?: Feature Request
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional): Cleanup
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Kläser univentionstaff 2012-03-13 17:26:24 CET
Das Import-Skript kann derzeit nur über die CLI aufgerufen werden. In Bug 26344 werden für UMC-Module zum Anlegen von Benutzern, Gruppen/Klassen und Rechnern die selben Funktionalitäten benötigt. Ziel ist es daher, das sowohl das Import-Skript als auch die UMC-Module die gleichen Python-Funktionen verwenden können. Dazu ist es notwendig, das Import-Skript anzupassen, so dass es Funktionen bereitstellt, denen die entsprechenden Parameter zum Anlegen dieser Objekte direkt übergeben werden können (derzeit werden sie aus einer Datei ausgelesen). Ferner ist es notwendig, dass die entsprechenden Exceptions in der Methode nicht abgefangen werden.
Comment 1 Felix Botner univentionstaff 2012-03-22 09:35:11 CET
Die Umstellung des Import Skript sollte zu einem späteren Zeitpunkt erfolgen. Hier sind größere Umbauten notwendig um daraus eine sinnvolle Bibliothek zu machen.

Das UMC Modul sollte erst einmal die cmdline Schnittstelle des Import-Skript verwenden.
Comment 2 Alexander Kläser univentionstaff 2012-08-17 10:05:18 CEST
Derzeit werden im UMC-Modul für Arbeitsgruppen Gruppen-Shares manuelle angelegt und gelöscht. Teile des Codes aus den Import-Skripten wurden dazu übernommen. Idealerweise möchte man auch hier auf eine entsprechende Bibliothek zugreifen.
Comment 3 Alexander Kläser univentionstaff 2012-08-17 10:05:45 CEST
(In reply to comment #2)
> Derzeit werden im UMC-Modul für Arbeitsgruppen Gruppen-Shares manuelle angelegt
> und gelöscht. Teile des Codes aus den Import-Skripten wurden dazu übernommen.
> Idealerweise möchte man auch hier auf eine entsprechende Bibliothek zugreifen.Bug 28211
Comment 4 Daniel Tröder univentionstaff 2016-05-10 14:28:45 CEST
Dependency on Bug #41239 only valid, if ucs@school >= 4.1r2.
Comment 5 Daniel Tröder univentionstaff 2016-05-31 16:22:48 CEST
Not sure this fulfills all requirements, but here is an example what you can currently do with the new import-lib:


from ucsschool.importer.utils.logging2udebug import get_logger, add_stdout_handler, add_file_handler
from ucsschool.importer.configuration import setup_configuration
from ucsschool.importer.factory import setup_factory
from ucsschool.importer.models.import_user import ImportStaff, ImportStudent, ImportTeacher, ImportTeachersAndStaff
from ucsschool.importer.utils.ldap_connection import get_admin_connection

conffile = "/usr/share/ucs-school-import/configs/new.json"
logger = get_logger()
add_stdout_handler(logger)
config = setup_configuration(conffile, sourceUID="my source", dry_run=False)
add_file_handler(logger, config["logfile"])

factory = setup_factory(config["factory"])
user_import = factory.make_user_importer(config["dry_run"])

i1 = ImportStudent(name="Ameise", school="schule1", firstname="A", lastname="Meise", email="a.m@uni.dtr")
i1.prepare_uids()
i2 = ImportStudent(name="Bmeise", school="schule1", firstname="B", lastname="Meise", email="b.m@uni.dtr")
i2.prepare_uids()
imported_users = [i1, i2]

user_import.create_and_modify_users(imported_users)
users_to_delete = user_import.detect_users_to_delete()
user_import.delete_users(users_to_delete)
Comment 6 Daniel Tröder univentionstaff 2016-05-31 16:23:42 CEST
Forget the last 2 lines - if you just want to add users they are not needed.
Comment 7 Daniel Tröder univentionstaff 2016-06-06 12:23:19 CEST
API is in ucsschool.importer.* in package ucs-school-import.