Skip to content

Commit a9c35f9

Browse files
fix: blank not null for StoredObject doc_name/doc_rev (ietf-tools#10400)
* fix: blank not null for empty storedobject fields * refactor: None -> "" for uses of doc_name/doc_rev * chore: migration * fix: typo
1 parent 492888b commit a9c35f9

5 files changed

Lines changed: 41 additions & 17 deletions

File tree

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Copyright The IETF Trust 2026, All Rights Reserved
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("doc", "0030_alter_dochistory_title_alter_document_title"),
9+
]
10+
11+
operations = [
12+
migrations.AlterField(
13+
model_name="storedobject",
14+
name="doc_name",
15+
field=models.CharField(blank=True, default="", max_length=255),
16+
preserve_default=False,
17+
),
18+
migrations.AlterField(
19+
model_name="storedobject",
20+
name="doc_rev",
21+
field=models.CharField(blank=True, default="", max_length=16),
22+
preserve_default=False,
23+
),
24+
]

ietf/doc/models.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -818,8 +818,8 @@ def store_bytes(
818818
name: str,
819819
content: bytes,
820820
allow_overwrite: bool = False,
821-
doc_name: Optional[str] = None,
822-
doc_rev: Optional[str] = None
821+
doc_name: str = "",
822+
doc_rev: str = "",
823823
) -> None:
824824
return utils_store_bytes(self.type_id, name, content, allow_overwrite, self.name, self.rev)
825825

@@ -828,8 +828,8 @@ def store_file(
828828
name: str,
829829
file: Union[File, BufferedReader],
830830
allow_overwrite: bool = False,
831-
doc_name: Optional[str] = None,
832-
doc_rev: Optional[str] = None
831+
doc_name: str = "",
832+
doc_rev: str = "",
833833
) -> None:
834834
return utils_store_file(self.type_id, name, file, allow_overwrite, self.name, self.rev)
835835

@@ -1761,8 +1761,8 @@ class StoredObject(models.Model):
17611761
null=False,
17621762
help_text="Last instant object was modified. May not be the same as the storage's modified value for the instance. It will hold mtime for objects imported from older disk storage unless they've actually been overwritten more recently"
17631763
)
1764-
doc_name = models.CharField(max_length=255, null=True, blank=True)
1765-
doc_rev = models.CharField(max_length=16, null=True, blank=True)
1764+
doc_name = models.CharField(max_length=255, null=False, blank=True)
1765+
doc_rev = models.CharField(max_length=16, null=False, blank=True)
17661766
deleted = models.DateTimeField(null=True)
17671767

17681768
class Meta:

ietf/doc/storage.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
class StoredObjectFile(MetadataFile):
2020
"""Django storage File object that represents a StoredObject"""
21-
def __init__(self, file, name, mtime=None, content_type="", store=None, doc_name=None, doc_rev=None):
21+
def __init__(self, file, name, mtime=None, content_type="", store=None, doc_name="", doc_rev=""):
2222
super().__init__(
2323
file=file,
2424
name=name,
@@ -131,12 +131,12 @@ def _save_stored_object(self, name, content) -> StoredObject:
131131
doc_name=getattr(
132132
content,
133133
"doc_name", # Note that these are assumed to be invariant
134-
None, # should be blank?
134+
"",
135135
),
136136
doc_rev=getattr(
137137
content,
138138
"doc_rev", # for a given name
139-
None, # should be blank?
139+
"",
140140
),
141141
),
142142
)

ietf/doc/storage_utils.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ def store_file(
6666
name: str,
6767
file: Union[File, BufferedReader],
6868
allow_overwrite: bool = False,
69-
doc_name: Optional[str] = None,
70-
doc_rev: Optional[str] = None,
69+
doc_name: str = "",
70+
doc_rev: str = "",
7171
content_type: str="",
7272
mtime: Optional[datetime.datetime]=None,
7373
) -> None:
@@ -106,8 +106,8 @@ def store_bytes(
106106
name: str,
107107
content: bytes,
108108
allow_overwrite: bool = False,
109-
doc_name: Optional[str] = None,
110-
doc_rev: Optional[str] = None,
109+
doc_name: str = "",
110+
doc_rev: str = "",
111111
content_type: str = "",
112112
mtime: Optional[datetime.datetime] = None,
113113
) -> None:
@@ -136,8 +136,8 @@ def store_str(
136136
name: str,
137137
content: str,
138138
allow_overwrite: bool = False,
139-
doc_name: Optional[str] = None,
140-
doc_rev: Optional[str] = None,
139+
doc_name: str = "",
140+
doc_rev: str = "",
141141
content_type: str = "",
142142
mtime: Optional[datetime.datetime] = None,
143143
) -> None:

ietf/sync/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def load_rfcs_into_blobdb(numbers: list[int]):
4242
content=bytes,
4343
allow_overwrite=False, # Intentionally not allowing overwrite.
4444
doc_name=f"rfc{num}",
45-
doc_rev=None,
45+
doc_rev="",
4646
# Not setting content_type
4747
mtime=datetime.datetime.fromtimestamp(
4848
mtime, tz=datetime.UTC
@@ -65,7 +65,7 @@ def load_rfcs_into_blobdb(numbers: list[int]):
6565
content=bytes,
6666
allow_overwrite=False, # Intentionally not allowing overwrite.
6767
doc_name=f"rfc{num}",
68-
doc_rev=None,
68+
doc_rev="",
6969
# Not setting content_type
7070
mtime=datetime.datetime.fromtimestamp(mtime, tz=datetime.UTC),
7171
)

0 commit comments

Comments
 (0)