Page MenuHomeSoftware Heritage

D8246.id29788.diff
No OneTemporary

D8246.id29788.diff

diff --git a/assets/src/bundles/add_forge/index.js b/assets/src/bundles/add_forge/index.js
--- a/assets/src/bundles/add_forge/index.js
+++ b/assets/src/bundles/add_forge/index.js
@@ -24,7 +24,7 @@
'FIRST_ORIGIN_LOADED': 'First origin loaded',
'REJECTED': 'Rejected',
'SUSPENDED': 'Suspended',
- 'DENIED': 'Denied'
+ 'UNSUCCESSFUL': 'Unsuccessful'
};
return status in statusLabel ? statusLabel[status] : status;
}
diff --git a/assets/src/bundles/add_forge/request-dashboard.js b/assets/src/bundles/add_forge/request-dashboard.js
--- a/assets/src/bundles/add_forge/request-dashboard.js
+++ b/assets/src/bundles/add_forge/request-dashboard.js
@@ -105,7 +105,7 @@
'FIRST_ORIGIN_LOADED': [],
'REJECTED': [],
'SUSPENDED': ['PENDING'],
- 'DENIED': []
+ 'UNSUCCESSFUL': []
};
// Determine the possible next status out of the current one
diff --git a/swh/web/add_forge_now/migrations/0007_rename_denied_request_status.py b/swh/web/add_forge_now/migrations/0007_rename_denied_request_status.py
new file mode 100644
--- /dev/null
+++ b/swh/web/add_forge_now/migrations/0007_rename_denied_request_status.py
@@ -0,0 +1,51 @@
+# Generated by Django 2.2.28 on 2022-08-16 14:13
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("swh_web_add_forge_now", "0006_request_add_new_fields"),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name="request",
+ name="status",
+ field=models.TextField(
+ choices=[
+ ("PENDING", "Pending"),
+ ("WAITING_FOR_FEEDBACK", "Waiting for feedback"),
+ ("FEEDBACK_TO_HANDLE", "Feedback to handle"),
+ ("ACCEPTED", "Accepted"),
+ ("SCHEDULED", "Scheduled"),
+ ("FIRST_LISTING_DONE", "First listing done"),
+ ("FIRST_ORIGIN_LOADED", "First origin loaded"),
+ ("REJECTED", "Rejected"),
+ ("SUSPENDED", "Suspended"),
+ ("UNSUCCESSFUL", "Unsuccessful"),
+ ],
+ default="PENDING",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="requesthistory",
+ name="new_status",
+ field=models.TextField(
+ choices=[
+ ("PENDING", "Pending"),
+ ("WAITING_FOR_FEEDBACK", "Waiting for feedback"),
+ ("FEEDBACK_TO_HANDLE", "Feedback to handle"),
+ ("ACCEPTED", "Accepted"),
+ ("SCHEDULED", "Scheduled"),
+ ("FIRST_LISTING_DONE", "First listing done"),
+ ("FIRST_ORIGIN_LOADED", "First origin loaded"),
+ ("REJECTED", "Rejected"),
+ ("SUSPENDED", "Suspended"),
+ ("UNSUCCESSFUL", "Unsuccessful"),
+ ],
+ null=True,
+ ),
+ ),
+ ]
diff --git a/swh/web/add_forge_now/models.py b/swh/web/add_forge_now/models.py
--- a/swh/web/add_forge_now/models.py
+++ b/swh/web/add_forge_now/models.py
@@ -32,7 +32,7 @@
FIRST_ORIGIN_LOADED = "First origin loaded"
REJECTED = "Rejected"
SUSPENDED = "Suspended"
- DENIED = "Denied"
+ UNSUCCESSFUL = "Unsuccessful"
@classmethod
def choices(cls):
@@ -47,6 +47,7 @@
self.ACCEPTED,
self.REJECTED,
self.SUSPENDED,
+ self.UNSUCCESSFUL,
],
self.ACCEPTED: [self.SCHEDULED],
self.SCHEDULED: [
@@ -58,7 +59,7 @@
self.FIRST_ORIGIN_LOADED: [],
self.REJECTED: [],
self.SUSPENDED: [self.PENDING],
- self.DENIED: [],
+ self.UNSUCCESSFUL: [],
}
return next_statuses[self] # type: ignore
diff --git a/swh/web/templates/add_forge_now/help.html b/swh/web/templates/add_forge_now/help.html
--- a/swh/web/templates/add_forge_now/help.html
+++ b/swh/web/templates/add_forge_now/help.html
@@ -81,7 +81,7 @@
<li><strong>Rejected:</strong>The request is invalid. It is rejected by a moderator with an explanation.</li>
- <li><strong>Denied:</strong>The forge administrator(s) denied the request to list their forge.</li>
+ <li><strong>Unsuccessful:</strong>An issue has been encountered which currently prevents the full archival.</li>
<li><strong>Suspended:</strong>The forge listing is not supported yet.</li>
</ul>
diff --git a/swh/web/tests/add_forge_now/test_migration.py b/swh/web/tests/add_forge_now/test_migration.py
--- a/swh/web/tests/add_forge_now/test_migration.py
+++ b/swh/web/tests/add_forge_now/test_migration.py
@@ -7,6 +7,8 @@
import pytest
+from django.core.exceptions import ValidationError
+
from swh.web.add_forge_now.apps import APP_LABEL
MIGRATION_0001 = "0001_initial"
@@ -14,6 +16,7 @@
MIGRATION_0003 = "0003_request_submitter_forward_username"
MIGRATION_0005 = "0005_prepare_inbound_email"
MIGRATION_0006 = "0006_request_add_new_fields"
+MIGRATION_0007 = "0007_rename_denied_request_status"
def now() -> datetime:
@@ -166,3 +169,45 @@
history = history.order_by("id")
assert request.last_modified_date == history.last().date
assert request.last_moderator == history.last().actor
+
+
+def test_add_forge_now_denied_status_renamed_to_unsuccesful(migrator):
+
+ state = migrator.apply_tested_migration((APP_LABEL, MIGRATION_0006))
+ Request = state.apps.get_model(APP_LABEL, "Request")
+
+ from swh.web.add_forge_now.models import RequestStatus
+
+ req = Request(
+ status=RequestStatus.UNSUCCESSFUL.name,
+ submitter_name="dudess",
+ submitter_email="dudess@orga.org",
+ forge_type="cgit",
+ forge_url="https://example.org/forge",
+ forge_contact_email="forge@example.org",
+ forge_contact_name="forge",
+ forge_contact_comment=(
+ "Discovered on the main forge homepag, following contact link."
+ ),
+ last_modified_date=datetime.now(timezone.utc),
+ )
+ with pytest.raises(ValidationError):
+ req.clean_fields()
+
+ state = migrator.apply_tested_migration((APP_LABEL, MIGRATION_0007))
+ Request = state.apps.get_model(APP_LABEL, "Request")
+
+ req = Request(
+ status=RequestStatus.UNSUCCESSFUL.name,
+ submitter_name="dudess",
+ submitter_email="dudess@orga.org",
+ forge_type="cgit",
+ forge_url="https://example.org/forge",
+ forge_contact_email="forge@example.org",
+ forge_contact_name="forge",
+ forge_contact_comment=(
+ "Discovered on the main forge homepag, following contact link."
+ ),
+ last_modified_date=datetime.now(timezone.utc),
+ )
+ req.clean_fields()
diff --git a/swh/web/tests/add_forge_now/test_models.py b/swh/web/tests/add_forge_now/test_models.py
--- a/swh/web/tests/add_forge_now/test_models.py
+++ b/swh/web/tests/add_forge_now/test_models.py
@@ -20,6 +20,16 @@
],
),
(RequestStatus.WAITING_FOR_FEEDBACK, [RequestStatus.FEEDBACK_TO_HANDLE]),
+ (
+ RequestStatus.FEEDBACK_TO_HANDLE,
+ [
+ RequestStatus.WAITING_FOR_FEEDBACK,
+ RequestStatus.ACCEPTED,
+ RequestStatus.REJECTED,
+ RequestStatus.SUSPENDED,
+ RequestStatus.UNSUCCESSFUL,
+ ],
+ ),
],
)
def test_allowed_next_statuses(current_status, allowed_next_statuses):

File Metadata

Mime Type
text/plain
Expires
Thu, Jul 3, 3:33 PM (1 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3218809

Event Timeline