mirror of
https://github.com/etesync/server
synced 2025-04-25 04:39:00 +00:00
Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
6ac5412104 | ||
![]() |
cc54a136f1 | ||
![]() |
386c01d89e | ||
![]() |
f35b4b94e5 | ||
![]() |
19aba5345a |
@ -1,5 +1,9 @@
|
||||
# Changelog
|
||||
|
||||
## Version 0.14.2
|
||||
- Fix issue with some requests failing in some scenarios with the JS client.
|
||||
- The JS client was omitting optional fields which were accidentally made to be required. It happened because pydantic v2 changed the behavior in a few ways (for the better fwiw) and we missed a few places when upgrading.
|
||||
|
||||
## Version 0.14.1
|
||||
- Fix issue with serializing non utf8 422 errors
|
||||
- Appease django warnings about default auto field
|
||||
|
@ -72,7 +72,7 @@ class CollectionItemRevisionInOut(BaseModel):
|
||||
class CollectionItemCommon(BaseModel):
|
||||
uid: str
|
||||
version: int
|
||||
encryptionKey: t.Optional[bytes]
|
||||
encryptionKey: t.Optional[bytes] = None
|
||||
content: CollectionItemRevisionInOut
|
||||
|
||||
|
||||
@ -93,12 +93,12 @@ class CollectionItemOut(CollectionItemCommon):
|
||||
|
||||
|
||||
class CollectionItemIn(CollectionItemCommon):
|
||||
etag: t.Optional[str]
|
||||
etag: t.Optional[str] = None
|
||||
|
||||
|
||||
class CollectionCommon(BaseModel):
|
||||
# FIXME: remove optional once we finish collection-type-migration
|
||||
collectionType: t.Optional[bytes]
|
||||
collectionType: t.Optional[bytes] = None
|
||||
collectionKey: bytes
|
||||
|
||||
|
||||
@ -132,7 +132,7 @@ class RemovedMembershipOut(BaseModel):
|
||||
|
||||
class CollectionListResponse(BaseModel):
|
||||
data: t.List[CollectionOut]
|
||||
stoken: t.Optional[str]
|
||||
stoken: t.Optional[str] = None
|
||||
done: bool
|
||||
|
||||
removedMemberships: t.Optional[t.List[RemovedMembershipOut]] = None
|
||||
@ -140,13 +140,13 @@ class CollectionListResponse(BaseModel):
|
||||
|
||||
class CollectionItemListResponse(BaseModel):
|
||||
data: t.List[CollectionItemOut]
|
||||
stoken: t.Optional[str]
|
||||
stoken: t.Optional[str] = None
|
||||
done: bool
|
||||
|
||||
|
||||
class CollectionItemRevisionListResponse(BaseModel):
|
||||
data: t.List[CollectionItemRevisionInOut]
|
||||
iterator: t.Optional[str]
|
||||
iterator: t.Optional[str] = None
|
||||
done: bool
|
||||
|
||||
|
||||
@ -173,7 +173,7 @@ class ItemDepIn(BaseModel):
|
||||
|
||||
class ItemBatchIn(BaseModel):
|
||||
items: t.List[CollectionItemIn]
|
||||
deps: t.Optional[t.List[ItemDepIn]]
|
||||
deps: t.Optional[t.List[ItemDepIn]] = None
|
||||
|
||||
def validate_db(self):
|
||||
if self.deps is not None:
|
||||
@ -342,7 +342,10 @@ def _create(data: CollectionIn, user: UserType):
|
||||
# TODO
|
||||
process_revisions_for_item(main_item, data.item.content)
|
||||
|
||||
collection_type_obj, _ = models.CollectionType.objects.get_or_create(uid=data.collectionType, owner=user)
|
||||
try:
|
||||
collection_type_obj, _ = models.CollectionType.objects.get_or_create(uid=data.collectionType, owner=user)
|
||||
except IntegrityError:
|
||||
raise ValidationError("bad_collection_type", "collectionType is null")
|
||||
|
||||
models.CollectionMember(
|
||||
collection=instance,
|
||||
|
@ -85,7 +85,7 @@ class CollectionInvitationOut(CollectionInvitationCommon):
|
||||
|
||||
class InvitationListResponse(BaseModel):
|
||||
data: t.List[CollectionInvitationOut]
|
||||
iterator: t.Optional[str]
|
||||
iterator: t.Optional[str] = None
|
||||
done: bool
|
||||
|
||||
|
||||
|
@ -48,7 +48,7 @@ class CollectionMemberOut(BaseModel):
|
||||
|
||||
class MemberListResponse(BaseModel):
|
||||
data: t.List[CollectionMemberOut]
|
||||
iterator: t.Optional[str]
|
||||
iterator: t.Optional[str] = None
|
||||
done: bool
|
||||
|
||||
|
||||
|
@ -164,6 +164,8 @@ if any(os.path.isfile(x) for x in config_locations):
|
||||
|
||||
if "allowed_hosts" in config:
|
||||
ALLOWED_HOSTS = [y for x, y in config.items("allowed_hosts")]
|
||||
CSRF_TRUSTED_ORIGINS = ["https://" + y for x, y in config.items("allowed_hosts")] + \
|
||||
["http://" + y for x, y in config.items("allowed_hosts")]
|
||||
|
||||
if "database" in config:
|
||||
DATABASES = {"default": {x.upper(): y for x, y in config.items("database")}}
|
||||
|
@ -25,7 +25,7 @@ click==8.1.7
|
||||
# via
|
||||
# typer
|
||||
# uvicorn
|
||||
django==4.2.13
|
||||
django==4.2.14
|
||||
# via -r requirements.in/base.txt
|
||||
dnspython==2.6.1
|
||||
# via email-validator
|
||||
|
Loading…
Reference in New Issue
Block a user