in src/wagtail_localize_smartling/models.py [0:0]
def get_current(cls) -> "Project":
"""
Returns the current Project as per the PROJECT_ID setting. The first
time this is called, the project details are fetched from the Smartling
API and a Project instance is created/updated as appropriate before
being returned. Subsequent calls returned that instance from cache.
"""
now = timezone.now()
project_details = client.get_project_details()
try:
project = cls.objects.get(
environment=smartling_settings.ENVIRONMENT,
account_uid=project_details["accountUid"],
project_id=project_details["projectId"],
)
except Project.DoesNotExist:
project = cls(
environment=smartling_settings.ENVIRONMENT,
account_uid=project_details["accountUid"],
project_id=project_details["projectId"],
first_synced_at=now,
)
project.archived = project_details["archived"]
project.name = project_details["projectName"]
project.type_code = project_details["projectTypeCode"]
project.source_locale_description = project_details["sourceLocaleDescription"]
project.source_locale_id = project_details["sourceLocaleId"]
project.last_synced_at = now
project.save()
seen_target_locale_ids: set[str] = set()
for target_locale_data in project_details["targetLocales"]:
seen_target_locale_ids.add(target_locale_data["localeId"])
ProjectTargetLocale.objects.update_or_create(
project=project,
locale_id=target_locale_data["localeId"],
defaults={
"description": target_locale_data["description"],
"enabled": target_locale_data["enabled"],
},
)
project.target_locales.exclude(locale_id__in=seen_target_locale_ids).delete()
logger.info("Synced project %s", project)
return project