Skip to content
Snippets Groups Projects
Verified Commit d07e75d9 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Improve import process for rooms

parent 3207b91d
No related branches found
No related tags found
1 merge request!13Resolve "Support import from MySQL"
...@@ -48,6 +48,11 @@ CONSTANCE_CONFIG = { ...@@ -48,6 +48,11 @@ CONSTANCE_CONFIG = {
_("Overwrite existing owners?"), _("Overwrite existing owners?"),
bool, bool,
), ),
"UNTIS_IMPORT_MYSQL_UPDATE_ROOMS_NAME": (
True,
_("Update name of existing rooms?"),
bool,
),
} }
CONSTANCE_CONFIG_FIELDSETS = { CONSTANCE_CONFIG_FIELDSETS = {
...@@ -65,5 +70,6 @@ CONSTANCE_CONFIG_FIELDSETS = { ...@@ -65,5 +70,6 @@ CONSTANCE_CONFIG_FIELDSETS = {
"UNTIS_IMPORT_MYSQL_UPDATE_GROUPS_SHORT_NAME", "UNTIS_IMPORT_MYSQL_UPDATE_GROUPS_SHORT_NAME",
"UNTIS_IMPORT_MYSQL_UPDATE_GROUPS_NAME", "UNTIS_IMPORT_MYSQL_UPDATE_GROUPS_NAME",
"UNTIS_IMPORT_MYSQL_UPDATE_GROUPS_OVERWRITE_OWNERS", "UNTIS_IMPORT_MYSQL_UPDATE_GROUPS_OVERWRITE_OWNERS",
"UNTIS_IMPORT_MYSQL_UPDATE_ROOMS_NAME",
), ),
} }
...@@ -223,25 +223,52 @@ def import_classes( ...@@ -223,25 +223,52 @@ def import_classes(
def import_rooms() -> Dict[int, chronos_models.Room]: def import_rooms() -> Dict[int, chronos_models.Room]:
""" Import rooms """ """ Import rooms """
rooms_ref = {} ref = {}
# Get rooms
rooms = run_default_filter(mysql_models.Room.objects) rooms = run_default_filter(mysql_models.Room.objects)
for room in rooms: for room in rooms:
if not room.name: if not room.name:
raise Exception("Short name needed.") logger.error(
"Room ID {}: Cannot import room without short name.".format(
room.room_id
)
)
continue
# Build values
short_name = room.name[:10] short_name = room.name[:10]
name = room.longname[:30] if room.longname else short_name name = room.longname[:30] if room.longname else short_name
import_ref = room.room_id
logger.info("Import room {} …".format(short_name))
new_room, created = chronos_models.Room.objects.get_or_create( new_room, created = chronos_models.Room.objects.get_or_create(
short_name=short_name, defaults={"name": name} short_name=short_name, defaults={"name": name, "import_ref_untis": import_ref}
) )
new_room.name = name if created:
new_room.save() logger.info(" New room created")
changed = False
if config.UNTIS_IMPORT_MYSQL_UPDATE_ROOMS_NAME and new_room.name != name:
new_room.name = name
changed = True
logger.info(" Name updated")
if new_room.import_ref_untis != import_ref:
new_room.import_ref_untis = import_ref
changed = True
logger.info(" Import reference updated")
if changed:
new_room.save()
rooms_ref[room.room_id] = new_room ref[import_ref] = new_room
return rooms_ref return ref
def import_supervision_areas() -> Dict[int, chronos_models.SupervisionArea]: def import_supervision_areas() -> Dict[int, chronos_models.SupervisionArea]:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment