Skip to content

Commit 2d65a81

Browse files
fixup! chore(organization): sync organization data into firebase.
1 parent beeeb6f commit 2d65a81

File tree

4 files changed

+37
-24
lines changed

4 files changed

+37
-24
lines changed

apps/project/firebase.py

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,57 @@
11
import logging
2+
import typing
23

34
from celery import shared_task
45
from django.utils import timezone
56
from firebase_admin.db import Reference as FbReference
6-
77
from pyfirebase_mapswipe import models as firebase_models
88
from pyfirebase_mapswipe import utils as firebase_utils
9-
from pyfirebase_mapswipe import models as firebase_models
109

11-
from main.logging import log_extra
10+
from apps.project.models import FirebasePushStatusEnum, Organization
1211
from main.config import Config
13-
from apps.project.models import Organization, FirebasePushStatusEnum
14-
12+
from main.logging import log_extra
1513

1614
logger = logging.getLogger(__name__)
1715

1816

1917
class InvalidOrganizationPushException(Exception): ...
2018

2119

22-
def handle_new_organization_on_firebase(organization: Organization, orgnization_ref: FbReference):
23-
20+
def handle_new_organization_on_firebase(organization: Organization, organization_ref: FbReference):
2421
organization_data = firebase_models.FbOrganisation(
2522
name=organization.name,
2623
nameKey=organization.unique_name,
27-
description=organization.description,
24+
description=organization.description if organization.description else firebase_models.UNDEFINED,
25+
abbreviation=organization.abbreviation if organization.abbreviation else firebase_models.UNDEFINED,
2826
isArchived=organization.is_archived,
29-
archivedAt=organization.archived_at if organization.archived_at else firebase_models.UNDEFINED,
30-
archivedBy=organization.archived_by_id if organization.archived_by else firebase_models.UNDEFINED,
3127
)
3228

33-
orgnization_ref.set(
29+
organization_ref.set(
3430
value={
3531
**firebase_utils.serialize(organization_data),
3632
},
3733
)
3834

35+
36+
def handle_organization_update_on_firebase(organization: Organization, organization_ref: FbReference):
37+
organization_ref.update(
38+
value=firebase_utils.serialize(
39+
firebase_models.FbOrganisation(
40+
name=organization.name,
41+
nameKey=organization.unique_name,
42+
description=organization.description if organization.description else firebase_models.UNDEFINED,
43+
abbreviation=organization.abbreviation if organization.abbreviation else firebase_models.UNDEFINED,
44+
isArchived=organization.is_archived,
45+
),
46+
),
47+
)
48+
49+
3950
@shared_task
4051
def push_organization_to_firebase(organization_id: int):
4152
organization = Organization.objects.filter(id=organization_id).first()
53+
if not organization:
54+
return
4255
organization.update_firebase_push_status(FirebasePushStatusEnum.PROCESSING)
4356

4457
try:

firebase

main/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def project_tasks(project_id: str | int):
4444

4545
@staticmethod
4646
def organization(organization_id: str | int):
47-
return f"/v2/organization/{organization_id}/"
47+
return f"/v2/organisation/{organization_id}/"
4848

4949

5050
# FIXME: Import utils/geo/raster_tile_server/config.py here

utils/common.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from django.core.exceptions import ValidationError
1010
from django.core.serializers.json import DjangoJSONEncoder
1111
from django.utils.translation import gettext
12+
from ulid import ULID
1213

1314

1415
def validate_imagery_url(url: str, *, support_quadkey: bool | None = True):
@@ -35,17 +36,16 @@ def validate_imagery_url(url: str, *, support_quadkey: bool | None = True):
3536

3637

3738
def validate_ulid(val: str):
38-
# if val == "":
39-
# raise ValidationError(
40-
# gettext("Empty string is not a valid ULID value"),
41-
# )
42-
# try:
43-
# ULID.from_str(val)
44-
# except (ValueError, TypeError) as e:
45-
# raise ValidationError(
46-
# gettext("'%s' is not a valid ULID value") % val,
47-
# ) from e
48-
pass
39+
if val == "":
40+
raise ValidationError(
41+
gettext("Empty string is not a valid ULID value"),
42+
)
43+
try:
44+
ULID.from_str(val)
45+
except (ValueError, TypeError) as e:
46+
raise ValidationError(
47+
gettext("'%s' is not a valid ULID value") % val,
48+
) from e
4949

5050

5151
def clean_up_none_keys(data: typing.Any):

0 commit comments

Comments
 (0)