Skip to content
This repository was archived by the owner on Feb 21, 2022. It is now read-only.

Commit 84ab43d

Browse files
committed
feat(entity): import services and libraries into entity model
1 parent 2c8bb9b commit 84ab43d

File tree

5 files changed

+112
-4
lines changed

5 files changed

+112
-4
lines changed

test/globalsearch/test_indexer.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@
1111

1212
def _initialize(client, models):
1313
for model, index in models:
14-
client.create_index(
15-
uid=index, options={"name": model.__name__, "primaryKey": "id"}
16-
)
14+
client.create_index(uid=index, options={"primaryKey": "id"})
1715

1816

1917
def test_index_model():

zoo/entities/migrations/0002_auto_20211007_1000.py renamed to zoo/entities/migrations/0002_allow_null_product_owner_on_group.py

File renamed without changes.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Generated by Django 2.2.19 on 2021-10-13 09:52
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
("entities", "0002_allow_null_product_owner_on_group"),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name="entity",
16+
name="group",
17+
field=models.OneToOneField(
18+
blank=True,
19+
null=True,
20+
on_delete=django.db.models.deletion.CASCADE,
21+
to="entities.Group",
22+
),
23+
),
24+
]
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
import structlog
2+
from django.db import migrations
3+
4+
from zoo.entities.enums import Kind
5+
6+
log = structlog.get_logger()
7+
8+
9+
def service_to_entity(apps, _):
10+
Service = apps.get_model("services", "Service")
11+
Entity = apps.get_model("entities", "Entity")
12+
Link = apps.get_model("entities", "Link")
13+
for service in Service.objects.all():
14+
if service.repository:
15+
log.info("entity.import_services.processing", service=service)
16+
entity = Entity.objects.create(
17+
name=service.name,
18+
owner=service.owner,
19+
description=service.description,
20+
kind=Kind.COMPONENT,
21+
type="service",
22+
source=service.repository,
23+
tags=service.tags,
24+
service=service,
25+
)
26+
27+
if service.docs_url:
28+
Link.objects.create(
29+
name="Documentation", url=service.docs_url, entity=entity
30+
)
31+
32+
if service.slack_channel:
33+
Link.objects.create(
34+
name="Discussion",
35+
url=f"https://app.slack.com/client/T024Z3H2Y/{service.slack_channel}",
36+
entity=entity,
37+
)
38+
39+
40+
def library_to_entity(apps, _):
41+
Library = apps.get_model("libraries", "Library")
42+
Entity = apps.get_model("entities", "Entity")
43+
Link = apps.get_model("entities", "Link")
44+
for library in Library.objects.all():
45+
if library.repository:
46+
log.info("entity.import_libraries.processing", library=library)
47+
entity = Entity.objects.create(
48+
name=library.name,
49+
owner=library.owner,
50+
description=library.description,
51+
kind=Kind.COMPONENT,
52+
type="library",
53+
source=library.repository,
54+
tags=library.tags,
55+
library=library,
56+
)
57+
58+
if library.docs_url:
59+
Link.objects.create(
60+
name="Documentation", url=library.docs_url, entity=entity
61+
)
62+
63+
if library.slack_channel:
64+
Link.objects.create(
65+
name="Discussion",
66+
url=f"https://app.slack.com/client/T024Z3H2Y/{library.slack_channel}",
67+
entity=entity,
68+
)
69+
70+
if library.library_url:
71+
Link.objects.create(
72+
name="Library URL", url=library.library_url, entity=entity
73+
)
74+
75+
76+
class Migration(migrations.Migration):
77+
78+
dependencies = [
79+
("entities", "0003_allow_blank_on_group"),
80+
]
81+
82+
operations = [
83+
migrations.RunPython(service_to_entity),
84+
migrations.RunPython(library_to_entity),
85+
]

zoo/entities/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ class Meta:
5757
group = models.OneToOneField(
5858
"entities.Group",
5959
on_delete=models.CASCADE,
60-
default=None,
60+
null=True,
61+
blank=True,
6162
)
6263
source = models.ForeignKey(
6364
"repos.Repository",

0 commit comments

Comments
 (0)