Skip to content

Commit e94ed3f

Browse files
authored
Merge pull request #42 from atlanhq/fix-readme
Update create method of Readme asset
2 parents 0b1c9c4 + e45f556 commit e94ed3f

File tree

6 files changed

+833
-21
lines changed

6 files changed

+833
-21
lines changed

HISTORY.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.0.25 (May 2, 2023)
2+
3+
* Update create method for Readme asset
4+
15
## 0.0.24 (Apr 27, 2023)
26

37
* Fix broken link in README.md

pyatlan/generator/templates/entity.jinja2

+46-7
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ from pyatlan.model.structs import (
5151
PopularityInsights,
5252
)
5353
from pyatlan.utils import next_id
54+
from urllib.parse import quote, unquote
5455

5556
def validate_single_required_field(field_names: list[str], values: list[Any]):
5657
indexes = [idx for idx, value in enumerate(values) if value is not None]
@@ -231,7 +232,7 @@ class {{ entity_def.name }}({{super_classes[0]}} {%- if "Asset" in super_classes
231232

232233
ba_id = CustomMetadataCache.get_id_for_name(name)
233234
if ba_id is None:
234-
raise ValueError(f"No business attributes with the name: {name} exist")
235+
raise ValueError(f"No custom metadata with the name: {name} exist")
235236
for a_type in CustomMetadataCache.types_by_asset[self.type_name]:
236237
if (
237238
hasattr(a_type, "_meta_data_type_name")
@@ -343,15 +344,29 @@ class {{ entity_def.name }}({{super_classes[0]}} {%- if "Asset" in super_classes
343344
{%- if entity_def.name == "Readme" %}
344345
@classmethod
345346
# @validate_arguments()
346-
def create(cls, asset: Asset) -> Readme:
347+
def create(
348+
cls, *, asset: Asset, content: str, asset_name: Optional[str] = None
349+
) -> Readme:
347350
return Readme(
348-
attributes=Readme.Attributes(
349-
qualified_name=f"{asset.guid}/readme",
350-
name=f"{asset.attributes.name} Readme",
351-
),
351+
attributes=Readme.Attributes.create(
352+
asset=asset, content=content, asset_name=asset_name
353+
)
354+
)
355+
356+
@property
357+
def description(self) -> Optional[str]:
358+
ret_value = self.attributes.description
359+
return unquote(ret_value) if ret_value is not None else ret_value
360+
361+
@description.setter
362+
def description(self, description: Optional[str]):
363+
if self.attributes is None:
364+
self.attributes = self.Attributes()
365+
self.attributes.description = (
366+
quote(description) if description is not None else description
352367
)
353368
{%- endif %}
354-
{%- if entity_def.attribute_defs %}
369+
{%- if entity_def.attribute_defs or entity_def.relationship_attribute_defs %}
355370
class Attributes({{super_classes[0]}}.Attributes):
356371
{%- for attribute_def in entity_def.attribute_defs %}
357372
{%- set type = attribute_def.typeName | get_type %}
@@ -424,6 +439,30 @@ class {{ entity_def.name }}({{super_classes[0]}} {%- if "Asset" in super_classes
424439
raise ValueError(
425440
"One of admin_user, admin_groups or admin_roles is required"
426441
)
442+
{%- elif entity_def.name == "Readme" %}
443+
@classmethod
444+
# @validate_arguments()
445+
def create(
446+
cls, *, asset: Asset, content: str, asset_name: Optional[str] = None
447+
) -> Readme.Attributes:
448+
validate_required_fields(["asset", "content"], [asset, content])
449+
if not asset.name:
450+
if not asset_name:
451+
raise ValueError(
452+
"asset_name is required when name is not available from asset"
453+
)
454+
elif asset_name:
455+
raise ValueError(
456+
"asset_name can not be given when name is available from asset"
457+
)
458+
else:
459+
asset_name = asset.name
460+
return Readme.Attributes(
461+
qualified_name=f"{asset.guid}/readme",
462+
name=f"{asset_name} Readme",
463+
asset=asset,
464+
description=quote(content),
465+
)
427466
{%- elif entity_def.name == "Database" %}
428467
@classmethod
429468
# @validate_arguments()

0 commit comments

Comments
 (0)