Skip to content

Commit b9cc350

Browse files
author
Niklaus Johner
committed
Improve naming: OperationItem to RepositoryPosition.
1 parent 80af7bf commit b9cc350

File tree

1 file changed

+65
-66
lines changed

1 file changed

+65
-66
lines changed

opengever/maintenance/scripts/repository_migration_analyse.py

Lines changed: 65 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def __iter__(self):
121121
self.patch_refs(ReportSection, '__iter__', __iter__)
122122

123123

124-
class OperationItem(object):
124+
class RepositoryPosition(object):
125125

126126
def __init__(self, position=None, title=None, description=None):
127127
self.position = self.cleanup_position(position)
@@ -159,7 +159,7 @@ def parent_position(self):
159159
return self.position[:-1]
160160

161161
def __repr__(self):
162-
return u"OperationItem({}, {}, {})".format(self.position, self.title, self.description).encode('utf-8')
162+
return u"RepositoryPosition({}, {}, {})".format(self.position, self.title, self.description).encode('utf-8')
163163

164164
def __eq__(self, other):
165165
return all((self.position == other.position,
@@ -284,24 +284,23 @@ def analyse(self):
284284
data_extractor = ExcelDataExtractor(self.diff_xlsx_path)
285285

286286
for row in data_extractor.get_data():
287-
new_item = {}
288287
if row.new_position in ['', u'l\xf6schen', '-']:
289288
# Position should be deleted
290-
new_item = OperationItem()
289+
new_repo_pos = RepositoryPosition()
291290
else:
292-
new_item = OperationItem(row.new_position, row.new_title, row.new_description)
291+
new_repo_pos = RepositoryPosition(row.new_position, row.new_title, row.new_description)
293292
if row.old_position == '':
294293
# Position did not exist
295-
old_item = OperationItem()
294+
old_repo_pos = RepositoryPosition()
296295
else:
297-
old_item = OperationItem(row.old_position, row.old_title, row.old_description)
296+
old_repo_pos = RepositoryPosition(row.old_position, row.old_title, row.old_description)
298297

299298
# Ignore empty rows
300-
if not old_item.position and not new_item.position:
299+
if not old_repo_pos.position and not new_repo_pos.position:
301300
continue
302301

303302
# Skip positions that should be deleted
304-
if not new_item.position:
303+
if not new_repo_pos.position:
305304
logger.info("Skipping, we do not support deletion: {}".format(row))
306305
continue
307306

@@ -316,32 +315,32 @@ def analyse(self):
316315

317316
permissions = None
318317

319-
needs_creation = not bool(old_item.position)
320-
need_number_change, need_move, need_merge = self.needs_number_change_move_or_merge(new_item, old_item)
318+
needs_creation = not bool(old_repo_pos.position)
319+
need_number_change, need_move, need_merge = self.needs_number_change_move_or_merge(new_repo_pos, old_repo_pos)
321320

322321
if need_number_change:
323-
new_number = self.get_new_number(new_item)
322+
new_number = self.get_new_number(new_repo_pos)
324323
if need_move:
325-
new_parent_position, new_parent_uid = self.get_new_parent_position_and_uid(new_item)
324+
new_parent_position, new_parent_uid = self.get_new_parent_position_and_uid(new_repo_pos)
326325
if need_merge:
327-
merge_into = self.get_position_and_uid_to_merge_into(new_item)
326+
merge_into = self.get_position_and_uid_to_merge_into(new_repo_pos)
328327
if needs_creation:
329-
new_position_parent_position, new_position_parent_guid = self.get_parent_of_new_position(new_item)
328+
new_position_parent_position, new_position_parent_guid = self.get_parent_of_new_position(new_repo_pos)
330329
new_position_guid = uuid4().hex[:8]
331330
permissions = self.extract_permissions(row)
332331

333332
operation = {
334-
'uid': self.get_uuid_for_position(old_item.position),
333+
'uid': self.get_uuid_for_position(old_repo_pos.position),
335334
'new_position_parent_position': new_position_parent_position,
336335
'new_position_parent_guid': new_position_parent_guid,
337336
'new_position_guid': new_position_guid,
338-
'new_title': self.get_new_title(new_item, old_item) if not (needs_creation or need_merge) else None,
337+
'new_title': self.get_new_title(new_repo_pos, old_repo_pos) if not (needs_creation or need_merge) else None,
339338
'new_number': new_number,
340339
'new_parent_position': new_parent_position,
341340
'new_parent_uid': new_parent_uid,
342341
'merge_into': merge_into,
343-
'old_item': old_item,
344-
'new_item': new_item,
342+
'old_repo_pos': old_repo_pos,
343+
'new_repo_pos': new_repo_pos,
345344
'permissions': permissions
346345
}
347346
self.validate_operation(operation)
@@ -350,9 +349,9 @@ def analyse(self):
350349
if need_merge:
351350
pass
352351
elif not needs_creation:
353-
self.position_uid_mapping[new_item.position] = operation['uid']
352+
self.position_uid_mapping[new_repo_pos.position] = operation['uid']
354353
else:
355-
self.position_guid_mapping[new_item.position] = new_position_guid
354+
self.position_guid_mapping[new_repo_pos.position] = new_position_guid
356355

357356
def validate_operation(self, operation):
358357
"""Make sure that operation satisfies all necessary conditions and add
@@ -373,7 +372,7 @@ def validate_operation(self, operation):
373372
operation['is_valid'] = False
374373

375374
# Each operation should have new position
376-
if not operation['new_item'].position:
375+
if not operation['new_repo_pos'].position:
377376
logger.warning("Invalid operation: needs new position. {}".format(
378377
operation))
379378
operation['is_valid'] = False
@@ -392,7 +391,7 @@ def validate_operation(self, operation):
392391
operation['is_valid'] = False
393392

394393
# Make sure that if a position is being created, its parent will be found
395-
if not bool(operation['old_item'].position) and not operation['new_position_parent_guid']:
394+
if not bool(operation['old_repo_pos'].position) and not operation['new_position_parent_guid']:
396395
parent = self.get_object_for_position(
397396
operation['new_position_parent_position'])
398397

@@ -406,7 +405,7 @@ def validate_operation(self, operation):
406405
self.check_leaf_node_principle_violation(operation)
407406

408407
# Each existing position can only have one row in the excel
409-
old_position = operation['old_item'].position
408+
old_position = operation['old_repo_pos'].position
410409
if old_position:
411410
if old_position in self.positions:
412411
logger.warning(
@@ -416,7 +415,7 @@ def validate_operation(self, operation):
416415
self.positions.add(old_position)
417416

418417
# Each new position can only have one row in the excel except for merge operations
419-
new_position = operation['new_item'].position
418+
new_position = operation['new_repo_pos'].position
420419
if new_position and not operation['merge_into']:
421420
if new_position in self.new_positions:
422421
logger.warning(
@@ -425,23 +424,23 @@ def validate_operation(self, operation):
425424
operation['is_valid'] = False
426425
self.new_positions.add(new_position)
427426

428-
def get_new_title(self, new_item, old_item):
427+
def get_new_title(self, new_repo_pos, old_repo_pos):
429428
"""Returns the new title or none if no rename is necessary."""
430-
if new_item.title != old_item.title:
431-
return new_item.title
429+
if new_repo_pos.title != old_repo_pos.title:
430+
return new_repo_pos.title
432431

433432
return None
434433

435-
def get_new_number(self, new_item):
434+
def get_new_number(self, new_repo_pos):
436435
"""Returns latest part of the position - the new referencenumber
437436
prefix"""
438-
return new_item.reference_number_prefix
437+
return new_repo_pos.reference_number_prefix
439438

440-
def get_new_parent_position_and_uid(self, new_item):
439+
def get_new_parent_position_and_uid(self, new_repo_pos):
441440
"""Returns the new parent position and the uid. If the object does not
442441
yet exists it returns the guid."""
443442

444-
parent_position = new_item.parent_position
443+
parent_position = new_repo_pos.parent_position
445444
if not parent_position:
446445
# We are moving into the reporoot
447446
return parent_position, self.reporoot.UID()
@@ -453,11 +452,11 @@ def get_new_parent_position_and_uid(self, new_item):
453452

454453
return parent_position, self.position_uid_mapping[parent_position]
455454

456-
def get_position_and_uid_to_merge_into(self, new_item):
455+
def get_position_and_uid_to_merge_into(self, new_repo_pos):
457456
"""Returns the position and the uid this should be merged into.
458457
If the object does not yet exists it returns the guid."""
459458

460-
position = new_item.position
459+
position = new_repo_pos.position
461460

462461
if position not in self.position_uid_mapping:
463462
# Parent does not exist yet and will be created in the
@@ -466,51 +465,51 @@ def get_position_and_uid_to_merge_into(self, new_item):
466465

467466
return self.position_uid_mapping[position]
468467

469-
def get_parent_of_new_position(self, new_item):
470-
final_parent_position = new_item.parent_position
468+
def get_parent_of_new_position(self, new_repo_pos):
469+
final_parent_position = new_repo_pos.parent_position
471470
if not final_parent_position:
472471
# We are creating a new position in the reporoot
473472
return final_parent_position, self.reporoot_guid
474473

475474
parent_row = [item for item in self.analysed_rows
476-
if item['new_item'].position == final_parent_position]
475+
if item['new_repo_pos'].position == final_parent_position]
477476

478477
if not parent_row:
479478
# bundle import (ConstructorSection) will find parent from
480479
# the reference number
481480
return final_parent_position, None
482481

483482
# Two possibilities, the new parent is being created or moved.
484-
if parent_row[0]['old_item'].position:
483+
if parent_row[0]['old_repo_pos'].position:
485484
# The parent will be moved to the right position so we need to add
486485
# the subrepofolder on the "old position"
487-
return parent_row[0]['old_item'].position, None
486+
return parent_row[0]['old_repo_pos'].position, None
488487
else:
489488
# The parent is being created, so we will identify it through its guid.
490489
return None, parent_row[0]['new_position_guid']
491490

492-
def needs_number_change_move_or_merge(self, new_item, old_item):
491+
def needs_number_change_move_or_merge(self, new_repo_pos, old_repo_pos):
493492
"""Check if a number change, a move or a merge is necessary
494493
"""
495494
need_number_change = False
496495
need_move = False
497496
need_merge = False
498497

499-
if new_item.position and old_item.position and new_item.position != old_item.position:
500-
self.number_changes[new_item.position] = old_item.position
498+
if new_repo_pos.position and old_repo_pos.position and new_repo_pos.position != old_repo_pos.position:
499+
self.number_changes[new_repo_pos.position] = old_repo_pos.position
501500

502501
# If the new position is already in position_uid_mapping or
503502
# position_guid_mapping, it means that a previous operation will
504503
# move or create a repository_folder to that position. This means
505504
# this operation is a merge into an existing position.
506-
if (new_item.position in self.position_uid_mapping or
507-
new_item.position in self.position_guid_mapping):
505+
if (new_repo_pos.position in self.position_uid_mapping or
506+
new_repo_pos.position in self.position_guid_mapping):
508507
need_merge = True
509508
return need_number_change, need_move, need_merge
510509

511510
# check if move is necessary
512-
new_parent = new_item.parent_position
513-
old_parent = old_item.parent_position
511+
new_parent = new_repo_pos.parent_position
512+
old_parent = old_repo_pos.parent_position
514513
if new_parent != old_parent:
515514
need_move = True
516515
# check whether the parent is being moved
@@ -524,7 +523,7 @@ def needs_number_change_move_or_merge(self, new_item, old_item):
524523
need_number_change = True
525524

526525
# check if number change is necessary
527-
if new_item.reference_number_prefix != old_item.reference_number_prefix:
526+
if new_repo_pos.reference_number_prefix != old_repo_pos.reference_number_prefix:
528527
need_number_change = True
529528

530529
return need_number_change, need_move, need_merge
@@ -533,8 +532,8 @@ def check_repository_depth_violation(self, operation):
533532
max_depth = api.portal.get_registry_record(
534533
interface=IRepositoryFolderRecords, name='maximum_repository_depth')
535534

536-
new_item = operation['new_item']
537-
if new_item.position and len(new_item.position) > max_depth:
535+
new_repo_pos = operation['new_repo_pos']
536+
if new_repo_pos.position and len(new_repo_pos.position) > max_depth:
538537
logger.warning(
539538
"Invalid operation: repository depth violated. {}".format(operation))
540539
operation['is_valid'] = False
@@ -659,12 +658,12 @@ def insert_value_rows(self, sheet, rows):
659658
for row, data in enumerate(rows, 2):
660659
values = [
661660
data['uid'],
662-
data['new_item'].position,
663-
data['new_item'].title,
664-
data['new_item'].description,
665-
data['old_item'].position,
666-
data['old_item'].title,
667-
data['old_item'].description,
661+
data['new_repo_pos'].position,
662+
data['new_repo_pos'].title,
663+
data['new_repo_pos'].description,
664+
data['old_repo_pos'].position,
665+
data['old_repo_pos'].title,
666+
data['old_repo_pos'].description,
668667
data['new_position_parent_position'] or data['new_position_parent_guid'],
669668
data['new_title'],
670669
data['new_number'],
@@ -742,12 +741,12 @@ def create_repository_folders(self, items):
742741

743742
bundle_items.append(
744743
{'guid': item['new_position_guid'],
745-
'description': item['new_item'].description,
744+
'description': item['new_repo_pos'].description,
746745
'parent_reference': parent_reference,
747746
'parent_guid': item['new_position_parent_guid'],
748-
'reference_number_prefix': item['new_item'].reference_number_prefix,
747+
'reference_number_prefix': item['new_repo_pos'].reference_number_prefix,
749748
'review_state': 'repositoryfolder-state-active',
750-
'title_de': item['new_item'].title,
749+
'title_de': item['new_repo_pos'].title,
751750
'_permissions': item['permissions']
752751
})
753752

@@ -858,7 +857,7 @@ def update_description(self, items):
858857
if not repo:
859858
continue
860859

861-
new_description = item['new_item'].description
860+
new_description = item['new_repo_pos'].description
862861
if repo.description != new_description:
863862
repo.description = new_description
864863
self.add_to_reindexing_queue(item['uid'], ('Description',))
@@ -924,7 +923,7 @@ def validate(self):
924923

925924
# Assert reference number, title and description on the object
926925
uid = obj.UID()
927-
new = operation['new_item']
926+
new = operation['new_repo_pos']
928927
self.assertEqual(uid, new.position, obj.get_repository_number().replace('.', ''), 'incorrect number')
929928
self.assertEqual(uid, new.title, obj.title_de, 'incorrect title')
930929
self.assertEqual(uid, new.description, obj.description, 'incorrect description')
@@ -934,12 +933,12 @@ def validate(self):
934933

935934
# Store some migration information on the object
936935
IAnnotations(obj)[MIGRATION_KEY] = {
937-
'old_position': operation['old_item'].position,
938-
'new_position': operation['new_item'].position,
939-
'old_title': operation['old_item'].title,
940-
'new_title': operation['new_item'].title,
941-
'old_description': operation['old_item'].title,
942-
'new_description': operation['new_item'].title,
936+
'old_position': operation['old_repo_pos'].position,
937+
'new_position': operation['new_repo_pos'].position,
938+
'old_title': operation['old_repo_pos'].title,
939+
'new_title': operation['new_repo_pos'].title,
940+
'old_description': operation['old_repo_pos'].title,
941+
'new_description': operation['new_repo_pos'].title,
943942
'new_parent_uid': operation['new_parent_uid'],
944943
'merge_into': operation['merge_into'],
945944
'new_position_parent_guid': operation['new_position_parent_guid'],

0 commit comments

Comments
 (0)