Fixup document that had no type. Remove dangling review document. Fixes #3145. Commit ready for merge.
- Legacy-Id: 18736
This commit is contained in:
parent
643749316b
commit
708ab108e6
100
ietf/review/migrations/0026_repair_more_assignments.py
Normal file
100
ietf/review/migrations/0026_repair_more_assignments.py
Normal file
|
@ -0,0 +1,100 @@
|
|||
# Copyright The IETF Trust 2020 All Rights Reserved
|
||||
|
||||
import os
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations
|
||||
|
||||
class Helper(object):
|
||||
|
||||
def __init__(self, review_path, comments_by, document_class):
|
||||
self.review_path = review_path
|
||||
self.comments_by = comments_by
|
||||
self.document_class = document_class
|
||||
|
||||
def remove_file(self,name):
|
||||
filename = os.path.join(self.review_path, '{}.txt'.format(name))
|
||||
os.remove(filename)
|
||||
|
||||
def rename_file(self, old_name, new_name):
|
||||
old_filename = os.path.join(self.review_path, '{}.txt'.format(old_name))
|
||||
new_filename = os.path.join(self.review_path, '{}.txt'.format(new_name))
|
||||
os.rename(old_filename, new_filename)
|
||||
|
||||
def add_comment(self, name, comment):
|
||||
doc = self.document_class.objects.get(name=name)
|
||||
doc.docevent_set.create(
|
||||
type = 'added_comment',
|
||||
by = self.comments_by,
|
||||
rev = doc.rev,
|
||||
desc = comment,
|
||||
)
|
||||
|
||||
def forward(apps,schema_editor):
|
||||
ReviewAssignment = apps.get_model('review','ReviewAssignment')
|
||||
Document = apps.get_model('doc','Document')
|
||||
State = apps.get_model('doc','State')
|
||||
Person = apps.get_model('person','Person')
|
||||
|
||||
# The calculation of review_path makes the assumption that DOCUMENT_PATH_PATTERN only uses
|
||||
# things that are invariant for review documents. For production, as of this commit, that's
|
||||
# DOCUMENT_PATH_PATTERN = '/a/www/ietf-ftp/{doc.type_id}/'. There are plans to change that pattern
|
||||
# soon to '/a/ietfdata/doc/{doc.type_id}/'
|
||||
|
||||
helper = Helper(
|
||||
review_path = settings.DOCUMENT_PATH_PATTERN.format(doc=Document.objects.filter(type_id='review').last()),
|
||||
comments_by = Person.objects.get(name='(System)'),
|
||||
document_class = Document,
|
||||
)
|
||||
|
||||
# In [2]: for d in Document.objects.filter(name__startswith='review-ietf-capport-api-07-opsdir'):
|
||||
# ...: print(d.name,d.time)
|
||||
# review-ietf-capport-api-07-opsdir-lc-dunbar-2020-05-09 2020-05-09 14:59:40
|
||||
# review-ietf-capport-api-07-opsdir-lc-dunbar-2020-05-09-2 2020-05-09 15:06:44
|
||||
# This is similar to draft-ietf-capport-architecture-08-genart-lc-halpern...
|
||||
# Only -2 exists on disk.
|
||||
# But the Document for ...-2020-05-09 has not type or state - it was very incompletely set up - deleting it results in:
|
||||
# (3,
|
||||
# {'community.CommunityList_added_docs': 0,
|
||||
# 'community.SearchRule_name_contains_index': 0,
|
||||
# 'doc.RelatedDocument': 0,
|
||||
# 'doc.DocumentAuthor': 0,
|
||||
# 'doc.Document_states': 0,
|
||||
# 'doc.Document_tags': 0,
|
||||
# 'doc.Document_formal_languages': 0,
|
||||
# 'doc.DocumentURL': 0,
|
||||
# 'doc.DocExtResource': 0,
|
||||
# 'doc.DocAlias_docs': 1,
|
||||
# 'doc.DocReminder': 0,
|
||||
# 'group.GroupMilestone_docs': 0,
|
||||
# 'group.GroupMilestoneHistory_docs': 0,
|
||||
# 'liaisons.LiaisonStatementAttachment': 0,
|
||||
# 'meeting.SessionPresentation': 0,
|
||||
# 'message.Message_related_docs': 0,
|
||||
# 'review.ReviewWish': 0,
|
||||
# 'doc.DocEvent': 1,
|
||||
# 'doc.Document': 1})
|
||||
# Repairing that back to remove the -2 will hide more information than simply removing the incompletely set up document object.
|
||||
# But the -2 document currently has no type (see #3145)
|
||||
Document.objects.get(name='review-ietf-capport-api-07-opsdir-lc-dunbar-2020-05-09').delete()
|
||||
review = Document.objects.get(name='review-ietf-capport-api-07-opsdir-lc-dunbar-2020-05-09-2')
|
||||
review.type_id='review'
|
||||
review.save()
|
||||
helper.add_comment('draft-ietf-capport-api','Removed an unintended duplicate version of the opsdir lc review')
|
||||
|
||||
def reverse(apps,schema_editor):
|
||||
# There is no point in returning to the broken version
|
||||
pass
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('review', '0025_repair_assignments'),
|
||||
('doc','0039_auto_20201109_0439'),
|
||||
('person','0018_auto_20201109_0439'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(forward, reverse),
|
||||
]
|
Loading…
Reference in a new issue