Remove tombstone support from the code, importing drafts with their

version number unhacked
 - Legacy-Id: 3803
This commit is contained in:
Ole Laursen 2012-01-12 16:50:26 +00:00
parent 06b1ecf90c
commit dceedbf53d
6 changed files with 15 additions and 45 deletions

View file

@ -203,17 +203,6 @@ def expire_idREDESIGN(doc):
for t in file_types:
move_file("%s-%s.%s" % (doc.name, doc.rev, t))
# make tombstone
new_revision = "%02d" % (int(doc.rev) + 1)
new_file = open(os.path.join(settings.IDSUBMIT_REPOSITORY_PATH, "%s-%s.txt" % (doc.name, new_revision)), 'w')
txt = render_to_string("idrfc/expire_textREDESIGN.txt",
dict(doc=doc,
authors=[(e.get_name(), e.address) for e in doc.authors.all()],
expire_days=InternetDraft.DAYS_TO_EXPIRE))
new_file.write(txt)
new_file.close()
# now change the state
save_document_in_history(doc)
@ -233,7 +222,6 @@ def expire_idREDESIGN(doc):
e.desc = "Document has expired"
e.save()
doc.rev = new_revision # FIXME: incrementing the revision like this is messed up
doc.set_state(State.objects.get(type="draft", slug="expired"))
doc.time = datetime.datetime.now()
doc.save()
@ -300,7 +288,7 @@ def clean_up_id_files():
def clean_up_id_filesREDESIGN():
"""Move unidentified and old files out of the Internet Draft directory."""
cut_off = datetime.date.today() - datetime.timedelta(days=settings.INTERNET_DRAFT_DAYS_TO_EXPIRE)
cut_off = datetime.date.today()
pattern = os.path.join(settings.IDSUBMIT_REPOSITORY_PATH, "draft-*.*")
files = []
@ -340,21 +328,19 @@ def clean_up_id_filesREDESIGN():
try:
doc = Document.objects.get(name=filename, rev=revision)
if doc.get_state_slug() == "rfc":
state = doc.get_state_slug()
if state == "rfc":
if ext != ".txt":
move_file_to("unknown_ids")
elif doc.get_state_slug() in ("expired", "repl", "auth-rm", "ietf-rm"):
if doc.expires and doc.expires.date() < cut_off:
# Expired, Withdrawn by Author, Replaced, Withdrawn by IETF,
# and expired more than DAYS_TO_EXPIRE ago
if os.path.getsize(path) < 1500:
move_file_to("deleted_tombstones")
# revert version after having deleted tombstone
doc.rev = "%02d" % (int(revision) - 1) # FIXME: messed up
doc.save()
doc.tags.add(DocTagName.objects.get(slug='exp-tomb'))
else:
move_file_to("expired_without_tombstone")
elif state in ("expired", "repl", "auth-rm", "ietf-rm") and doc.expires and doc.expires.date() < cut_off:
# Expired, Replaced, Withdrawn by Author/IETF, and expired
if os.path.getsize(path) < 1500:
# we don't make tombstones any more so this should
# go away in the future
move_file_to("deleted_tombstones")
else:
move_file_to("expired_without_tombstone")
except Document.DoesNotExist:
move_file_to("unknown_ids")

View file

@ -913,19 +913,14 @@ class ExpireIDsTestCase(django.test.TestCase):
txt = "%s-%s.txt" % (draft.name, draft.rev)
self.write_id_file(txt, 5000)
revision_before = draft.rev
expire_id(draft)
draft = Document.objects.get(name=draft.name)
self.assertEquals(draft.get_state_slug(), "expired")
self.assertEquals(int(draft.rev), int(revision_before) + 1)
self.assertEquals(draft.get_state_slug("draft-iesg"), "dead")
self.assertTrue(draft.latest_event(type="expired_document"))
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, txt)))
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, txt)))
new_txt = "%s-%s.txt" % (draft.name, draft.rev)
self.assertTrue(os.path.exists(os.path.join(self.id_dir, new_txt)))
def test_clean_up_id_files(self):
draft = make_test_data()
@ -1004,10 +999,6 @@ class ExpireIDsTestCase(django.test.TestCase):
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, txt)))
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, "deleted_tombstones", txt)))
draft = Document.objects.get(name=draft.name)
self.assertEquals(int(draft.rev), int(revision_before) - 1)
self.assertTrue(draft.tags.filter(slug="exp-tomb"))
class ExpireLastCallTestCase(django.test.TestCase):
fixtures = ['names']

View file

@ -96,7 +96,6 @@ def perform_postREDESIGN(request, submission):
try:
draft = Document.objects.get(name=submission.filename)
save_document_in_history(draft)
draft.tags.remove(DocTagName.objects.get(slug="exp-tomb"))
except Document.DoesNotExist:
draft = Document(name=submission.filename)
draft.intended_std_level = None

View file

@ -158,7 +158,6 @@ class Document(DocumentInfo):
return u"<%s>" % self.filename_with_rev()
def filename_with_rev(self):
# FIXME: compensate for tombstones?
return u"%s-%s.txt" % (self.name, self.rev)
def latest_event(self, *args, **filter_args):

View file

@ -173,7 +173,7 @@ class InternetDraft(Document):
#expired_tombstone = models.BooleanField()
@property
def expired_tombstone(self):
return bool(self.tags.filter(slug='exp-tomb'))
return False
def calc_process_start_end(self):
import datetime
@ -238,10 +238,7 @@ class InternetDraft(Document):
def idstate(self):
return self.docstate()
def revision_display(self):
r = int(self.revision)
if self.get_state_slug() != 'active' and not self.expired_tombstone:
r = max(r - 1, 0)
return "%02d" % r
return self.rev
def expiration(self):
return self.expires.date()
def can_expire(self):

View file

@ -141,7 +141,6 @@ substate_mapping = {
tag_review_by_rfc_editor = name(DocTagName, 'rfc-rev', "Review by RFC Editor")
tag_via_rfc_editor = name(DocTagName, 'via-rfc', "Via RFC Editor")
tag_expired_tombstone = name(DocTagName, 'exp-tomb', "Expired tombstone")
tag_approved_in_minute = name(DocTagName, 'app-min', "Approved in minute")
tag_has_errata = name(DocTagName, 'errata', "Has errata")
@ -815,7 +814,7 @@ for index, o in enumerate(all_drafts.iterator()):
except State.MultipleObjectsReturned:
d.set_state(State.objects.get(type="draft-stream-%s" % d.stream_id, name=s.name))
d.rev = o.revision
d.rev = o.revision_display()
d.abstract = o.abstract
d.pages = o.txt_page_count
d.intended_std_level = intended_std_level_mapping[o.intended_status.intended_status]
@ -991,7 +990,6 @@ for index, o in enumerate(all_drafts.iterator()):
# tags
sync_tag(d, o.review_by_rfc_editor, tag_review_by_rfc_editor)
sync_tag(d, o.expired_tombstone, tag_expired_tombstone)
ctype = ContentType.objects.get_for_model(o)
used_tags = AnnotationTag.objects.filter(annotationtagobjectrelation__content_type=ctype, annotationtagobjectrelation__content_id=o.pk).values_list('name', flat=True)