djangoldp-ds4go 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- djangoldp_ds4go-1.0.0/PKG-INFO +13 -0
- djangoldp_ds4go-1.0.0/README.md +20 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go/__init__.py +1 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go/admin.py +35 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go/apps.py +5 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go/migrations/0001_initial.py +331 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go/migrations/0002_djangoldp_i18n.py +161 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go/migrations/__init__.py +0 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go/models/__base_model.py +30 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go/models/__base_named_model.py +22 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go/models/__init__.py +5 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go/models/category.py +23 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go/models/fact.py +46 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go/models/media.py +43 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go/translation.py +18 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go.egg-info/PKG-INFO +13 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go.egg-info/SOURCES.txt +21 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go.egg-info/dependency_links.txt +1 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go.egg-info/requires.txt +5 -0
- djangoldp_ds4go-1.0.0/djangoldp_ds4go.egg-info/top_level.txt +1 -0
- djangoldp_ds4go-1.0.0/setup.cfg +29 -0
- djangoldp_ds4go-1.0.0/setup.py +7 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: djangoldp_ds4go
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: djangoldp package for dataspace interoperability framework
|
|
5
|
+
Home-page: https://git.startinblox.com/djangoldp-packages/djangoldp-ds4go
|
|
6
|
+
Author: Startin'blox
|
|
7
|
+
Author-email: jbaptiste@startinblox.com
|
|
8
|
+
License: MIT
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Requires-Dist: djangoldp~=5.0.0
|
|
11
|
+
Requires-Dist: djangoldp-i18n~=5.0.0
|
|
12
|
+
Provides-Extra: include-package-data
|
|
13
|
+
Requires-Dist: True; extra == "include-package-data"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# DjangoLDP DS4GO
|
|
2
|
+
|
|
3
|
+
This is a Django project for DS4GO ecosystem.
|
|
4
|
+
|
|
5
|
+
See [DS4GO](https://dsif.eu/).
|
|
6
|
+
|
|
7
|
+
## Server settings
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
USE_I18N: True
|
|
11
|
+
# Your application default language, will be served if no header are provided
|
|
12
|
+
LANGUAGE_CODE: fr
|
|
13
|
+
# Your application fallback language, will be served when a translation is not available
|
|
14
|
+
MODELTRANSLATION_DEFAULT_LANGUAGE: fr
|
|
15
|
+
# A list of all supported languages, you **must** make a migration afterwise
|
|
16
|
+
LANGUAGES:
|
|
17
|
+
- ['fr', 'Français']
|
|
18
|
+
- ['en', 'English']
|
|
19
|
+
- ['es', 'Español']
|
|
20
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '1.0.0'
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from django.contrib import admin
|
|
2
|
+
from djangoldp.admin import DjangoLDPAdmin
|
|
3
|
+
from djangoldp_i18n.admin import DjangoLDPI18nAdmin
|
|
4
|
+
|
|
5
|
+
from djangoldp_ds4go.models import *
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@admin.register(
|
|
9
|
+
Category,
|
|
10
|
+
Media,
|
|
11
|
+
)
|
|
12
|
+
class DS4GOModelAdmin(DjangoLDPI18nAdmin, DjangoLDPAdmin):
|
|
13
|
+
readonly_fields = (
|
|
14
|
+
"created_at",
|
|
15
|
+
"updated_at",
|
|
16
|
+
)
|
|
17
|
+
exclude = ("is_backlink", "allow_create_backlink")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class MediaInline(admin.TabularInline):
|
|
21
|
+
model = Media
|
|
22
|
+
extra = 1
|
|
23
|
+
fields = (
|
|
24
|
+
"url",
|
|
25
|
+
"file_size",
|
|
26
|
+
"width",
|
|
27
|
+
"height",
|
|
28
|
+
"file_type",
|
|
29
|
+
"description",
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@admin.register(Fact)
|
|
34
|
+
class FactAdmin(DS4GOModelAdmin):
|
|
35
|
+
inlines = [MediaInline]
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
# Generated by Django 5.2.10 on 2026-01-08 11:47
|
|
2
|
+
|
|
3
|
+
import django.db.models.deletion
|
|
4
|
+
import djangoldp.fields
|
|
5
|
+
from django.db import migrations, models
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
|
|
10
|
+
initial = True
|
|
11
|
+
|
|
12
|
+
dependencies = []
|
|
13
|
+
|
|
14
|
+
operations = [
|
|
15
|
+
migrations.CreateModel(
|
|
16
|
+
name="Category",
|
|
17
|
+
fields=[
|
|
18
|
+
(
|
|
19
|
+
"id",
|
|
20
|
+
models.AutoField(
|
|
21
|
+
auto_created=True,
|
|
22
|
+
primary_key=True,
|
|
23
|
+
serialize=False,
|
|
24
|
+
verbose_name="ID",
|
|
25
|
+
),
|
|
26
|
+
),
|
|
27
|
+
(
|
|
28
|
+
"urlid",
|
|
29
|
+
djangoldp.fields.LDPUrlField(
|
|
30
|
+
blank=True, db_index=True, null=True, unique=True
|
|
31
|
+
),
|
|
32
|
+
),
|
|
33
|
+
(
|
|
34
|
+
"is_backlink",
|
|
35
|
+
models.BooleanField(
|
|
36
|
+
default=False,
|
|
37
|
+
help_text="set automatically to indicate the Model is a backlink",
|
|
38
|
+
),
|
|
39
|
+
),
|
|
40
|
+
(
|
|
41
|
+
"allow_create_backlink",
|
|
42
|
+
models.BooleanField(
|
|
43
|
+
default=True,
|
|
44
|
+
help_text="set to False to disable backlink creation after Model save",
|
|
45
|
+
),
|
|
46
|
+
),
|
|
47
|
+
(
|
|
48
|
+
"created_at",
|
|
49
|
+
djangoldp.fields.DateTimeField(
|
|
50
|
+
auto_now_add=True, verbose_name="Creation Date"
|
|
51
|
+
),
|
|
52
|
+
),
|
|
53
|
+
(
|
|
54
|
+
"updated_at",
|
|
55
|
+
djangoldp.fields.DateTimeField(
|
|
56
|
+
auto_now=True, verbose_name="Update Date"
|
|
57
|
+
),
|
|
58
|
+
),
|
|
59
|
+
(
|
|
60
|
+
"name",
|
|
61
|
+
djangoldp.fields.CharField(
|
|
62
|
+
blank=True, max_length=255, null=True, verbose_name="Name"
|
|
63
|
+
),
|
|
64
|
+
),
|
|
65
|
+
(
|
|
66
|
+
"parent_category",
|
|
67
|
+
djangoldp.fields.ForeignKey(
|
|
68
|
+
blank=True,
|
|
69
|
+
null=True,
|
|
70
|
+
on_delete=django.db.models.deletion.SET_NULL,
|
|
71
|
+
to="djangoldp_ds4go.category",
|
|
72
|
+
),
|
|
73
|
+
),
|
|
74
|
+
],
|
|
75
|
+
options={
|
|
76
|
+
"verbose_name": "Category",
|
|
77
|
+
"verbose_name_plural": "Categories",
|
|
78
|
+
"abstract": False,
|
|
79
|
+
"default_permissions": {"add", "change", "control", "delete", "view"},
|
|
80
|
+
"rdf_type": "ds4go:Category",
|
|
81
|
+
"serializer_fields": [
|
|
82
|
+
"@id",
|
|
83
|
+
"created_at",
|
|
84
|
+
"updated_at",
|
|
85
|
+
"name",
|
|
86
|
+
"parent_category",
|
|
87
|
+
],
|
|
88
|
+
"nested_fields": [],
|
|
89
|
+
"depth": 0,
|
|
90
|
+
},
|
|
91
|
+
),
|
|
92
|
+
migrations.CreateModel(
|
|
93
|
+
name="Fact",
|
|
94
|
+
fields=[
|
|
95
|
+
(
|
|
96
|
+
"id",
|
|
97
|
+
models.AutoField(
|
|
98
|
+
auto_created=True,
|
|
99
|
+
primary_key=True,
|
|
100
|
+
serialize=False,
|
|
101
|
+
verbose_name="ID",
|
|
102
|
+
),
|
|
103
|
+
),
|
|
104
|
+
(
|
|
105
|
+
"urlid",
|
|
106
|
+
djangoldp.fields.LDPUrlField(
|
|
107
|
+
blank=True, db_index=True, null=True, unique=True
|
|
108
|
+
),
|
|
109
|
+
),
|
|
110
|
+
(
|
|
111
|
+
"is_backlink",
|
|
112
|
+
models.BooleanField(
|
|
113
|
+
default=False,
|
|
114
|
+
help_text="set automatically to indicate the Model is a backlink",
|
|
115
|
+
),
|
|
116
|
+
),
|
|
117
|
+
(
|
|
118
|
+
"allow_create_backlink",
|
|
119
|
+
models.BooleanField(
|
|
120
|
+
default=True,
|
|
121
|
+
help_text="set to False to disable backlink creation after Model save",
|
|
122
|
+
),
|
|
123
|
+
),
|
|
124
|
+
(
|
|
125
|
+
"created_at",
|
|
126
|
+
djangoldp.fields.DateTimeField(
|
|
127
|
+
auto_now_add=True, verbose_name="Creation Date"
|
|
128
|
+
),
|
|
129
|
+
),
|
|
130
|
+
(
|
|
131
|
+
"updated_at",
|
|
132
|
+
djangoldp.fields.DateTimeField(
|
|
133
|
+
auto_now=True, verbose_name="Update Date"
|
|
134
|
+
),
|
|
135
|
+
),
|
|
136
|
+
(
|
|
137
|
+
"name",
|
|
138
|
+
djangoldp.fields.CharField(
|
|
139
|
+
blank=True, max_length=255, null=True, verbose_name="Name"
|
|
140
|
+
),
|
|
141
|
+
),
|
|
142
|
+
(
|
|
143
|
+
"rss_guid",
|
|
144
|
+
djangoldp.fields.LDPUrlField(
|
|
145
|
+
blank=True, null=True, verbose_name="Related RSS GUID"
|
|
146
|
+
),
|
|
147
|
+
),
|
|
148
|
+
(
|
|
149
|
+
"link",
|
|
150
|
+
djangoldp.fields.LDPUrlField(
|
|
151
|
+
blank=True, null=True, verbose_name="Link"
|
|
152
|
+
),
|
|
153
|
+
),
|
|
154
|
+
(
|
|
155
|
+
"review",
|
|
156
|
+
djangoldp.fields.JSONField(
|
|
157
|
+
blank=True, default=dict, null=True, verbose_name="Review"
|
|
158
|
+
),
|
|
159
|
+
),
|
|
160
|
+
(
|
|
161
|
+
"description",
|
|
162
|
+
djangoldp.fields.TextField(
|
|
163
|
+
blank=True, null=True, verbose_name="Description"
|
|
164
|
+
),
|
|
165
|
+
),
|
|
166
|
+
(
|
|
167
|
+
"content",
|
|
168
|
+
djangoldp.fields.TextField(
|
|
169
|
+
blank=True, null=True, verbose_name="Content"
|
|
170
|
+
),
|
|
171
|
+
),
|
|
172
|
+
(
|
|
173
|
+
"author",
|
|
174
|
+
djangoldp.fields.TextField(
|
|
175
|
+
blank=True, null=True, verbose_name="Author"
|
|
176
|
+
),
|
|
177
|
+
),
|
|
178
|
+
(
|
|
179
|
+
"enclosure",
|
|
180
|
+
djangoldp.fields.LDPUrlField(
|
|
181
|
+
blank=True, null=True, verbose_name="Enclosure"
|
|
182
|
+
),
|
|
183
|
+
),
|
|
184
|
+
(
|
|
185
|
+
"categories",
|
|
186
|
+
djangoldp.fields.ManyToManyField(
|
|
187
|
+
blank=True,
|
|
188
|
+
related_name="facts",
|
|
189
|
+
to="djangoldp_ds4go.category",
|
|
190
|
+
verbose_name="Categories",
|
|
191
|
+
),
|
|
192
|
+
),
|
|
193
|
+
],
|
|
194
|
+
options={
|
|
195
|
+
"verbose_name": "Fact",
|
|
196
|
+
"verbose_name_plural": "Facts",
|
|
197
|
+
"abstract": False,
|
|
198
|
+
"default_permissions": {"add", "change", "control", "delete", "view"},
|
|
199
|
+
"rdf_type": "ds4go:Fact",
|
|
200
|
+
"serializer_fields": [
|
|
201
|
+
"@id",
|
|
202
|
+
"created_at",
|
|
203
|
+
"updated_at",
|
|
204
|
+
"name",
|
|
205
|
+
"link",
|
|
206
|
+
"description",
|
|
207
|
+
"content",
|
|
208
|
+
"author",
|
|
209
|
+
"categories",
|
|
210
|
+
"enclosure",
|
|
211
|
+
"medias",
|
|
212
|
+
"review",
|
|
213
|
+
],
|
|
214
|
+
"nested_fields": ["medias"],
|
|
215
|
+
"depth": 0,
|
|
216
|
+
},
|
|
217
|
+
),
|
|
218
|
+
migrations.CreateModel(
|
|
219
|
+
name="Media",
|
|
220
|
+
fields=[
|
|
221
|
+
(
|
|
222
|
+
"id",
|
|
223
|
+
models.AutoField(
|
|
224
|
+
auto_created=True,
|
|
225
|
+
primary_key=True,
|
|
226
|
+
serialize=False,
|
|
227
|
+
verbose_name="ID",
|
|
228
|
+
),
|
|
229
|
+
),
|
|
230
|
+
(
|
|
231
|
+
"urlid",
|
|
232
|
+
djangoldp.fields.LDPUrlField(
|
|
233
|
+
blank=True, db_index=True, null=True, unique=True
|
|
234
|
+
),
|
|
235
|
+
),
|
|
236
|
+
(
|
|
237
|
+
"is_backlink",
|
|
238
|
+
models.BooleanField(
|
|
239
|
+
default=False,
|
|
240
|
+
help_text="set automatically to indicate the Model is a backlink",
|
|
241
|
+
),
|
|
242
|
+
),
|
|
243
|
+
(
|
|
244
|
+
"allow_create_backlink",
|
|
245
|
+
models.BooleanField(
|
|
246
|
+
default=True,
|
|
247
|
+
help_text="set to False to disable backlink creation after Model save",
|
|
248
|
+
),
|
|
249
|
+
),
|
|
250
|
+
(
|
|
251
|
+
"created_at",
|
|
252
|
+
djangoldp.fields.DateTimeField(
|
|
253
|
+
auto_now_add=True, verbose_name="Creation Date"
|
|
254
|
+
),
|
|
255
|
+
),
|
|
256
|
+
(
|
|
257
|
+
"updated_at",
|
|
258
|
+
djangoldp.fields.DateTimeField(
|
|
259
|
+
auto_now=True, verbose_name="Update Date"
|
|
260
|
+
),
|
|
261
|
+
),
|
|
262
|
+
(
|
|
263
|
+
"url",
|
|
264
|
+
djangoldp.fields.LDPUrlField(
|
|
265
|
+
blank=True, null=True, verbose_name="URL"
|
|
266
|
+
),
|
|
267
|
+
),
|
|
268
|
+
(
|
|
269
|
+
"file_size",
|
|
270
|
+
djangoldp.fields.IntegerField(
|
|
271
|
+
blank=True, null=True, verbose_name="File Size"
|
|
272
|
+
),
|
|
273
|
+
),
|
|
274
|
+
(
|
|
275
|
+
"width",
|
|
276
|
+
djangoldp.fields.IntegerField(
|
|
277
|
+
blank=True, null=True, verbose_name="Width"
|
|
278
|
+
),
|
|
279
|
+
),
|
|
280
|
+
(
|
|
281
|
+
"height",
|
|
282
|
+
djangoldp.fields.IntegerField(
|
|
283
|
+
blank=True, null=True, verbose_name="Height"
|
|
284
|
+
),
|
|
285
|
+
),
|
|
286
|
+
(
|
|
287
|
+
"file_type",
|
|
288
|
+
djangoldp.fields.TextField(
|
|
289
|
+
blank=True, null=True, verbose_name="Type"
|
|
290
|
+
),
|
|
291
|
+
),
|
|
292
|
+
(
|
|
293
|
+
"description",
|
|
294
|
+
djangoldp.fields.TextField(
|
|
295
|
+
blank=True, null=True, verbose_name="Description"
|
|
296
|
+
),
|
|
297
|
+
),
|
|
298
|
+
(
|
|
299
|
+
"related_fact",
|
|
300
|
+
djangoldp.fields.ForeignKey(
|
|
301
|
+
blank=True,
|
|
302
|
+
null=True,
|
|
303
|
+
on_delete=django.db.models.deletion.SET_NULL,
|
|
304
|
+
related_name="medias",
|
|
305
|
+
to="djangoldp_ds4go.fact",
|
|
306
|
+
verbose_name="Related Fact",
|
|
307
|
+
),
|
|
308
|
+
),
|
|
309
|
+
],
|
|
310
|
+
options={
|
|
311
|
+
"verbose_name": "Media",
|
|
312
|
+
"verbose_name_plural": "Medias",
|
|
313
|
+
"abstract": False,
|
|
314
|
+
"default_permissions": {"add", "change", "control", "delete", "view"},
|
|
315
|
+
"rdf_type": "ds4go:Media",
|
|
316
|
+
"serializer_fields": [
|
|
317
|
+
"@id",
|
|
318
|
+
"created_at",
|
|
319
|
+
"updated_at",
|
|
320
|
+
"url",
|
|
321
|
+
"file_size",
|
|
322
|
+
"width",
|
|
323
|
+
"height",
|
|
324
|
+
"file_type",
|
|
325
|
+
"description",
|
|
326
|
+
],
|
|
327
|
+
"nested_fields": [],
|
|
328
|
+
"depth": 0,
|
|
329
|
+
},
|
|
330
|
+
),
|
|
331
|
+
]
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# Generated by Django 5.2.10 on 2026-01-08 12:02
|
|
2
|
+
|
|
3
|
+
import djangoldp.fields
|
|
4
|
+
from django.db import migrations
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
dependencies = [
|
|
10
|
+
("djangoldp_ds4go", "0001_initial"),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AddField(
|
|
15
|
+
model_name="category",
|
|
16
|
+
name="name_en",
|
|
17
|
+
field=djangoldp.fields.CharField(
|
|
18
|
+
blank=True, max_length=255, null=True, verbose_name="Name"
|
|
19
|
+
),
|
|
20
|
+
),
|
|
21
|
+
migrations.AddField(
|
|
22
|
+
model_name="category",
|
|
23
|
+
name="name_es",
|
|
24
|
+
field=djangoldp.fields.CharField(
|
|
25
|
+
blank=True, max_length=255, null=True, verbose_name="Name"
|
|
26
|
+
),
|
|
27
|
+
),
|
|
28
|
+
migrations.AddField(
|
|
29
|
+
model_name="category",
|
|
30
|
+
name="name_fr",
|
|
31
|
+
field=djangoldp.fields.CharField(
|
|
32
|
+
blank=True, max_length=255, null=True, verbose_name="Name"
|
|
33
|
+
),
|
|
34
|
+
),
|
|
35
|
+
migrations.AddField(
|
|
36
|
+
model_name="fact",
|
|
37
|
+
name="author_en",
|
|
38
|
+
field=djangoldp.fields.TextField(
|
|
39
|
+
blank=True, null=True, verbose_name="Author"
|
|
40
|
+
),
|
|
41
|
+
),
|
|
42
|
+
migrations.AddField(
|
|
43
|
+
model_name="fact",
|
|
44
|
+
name="author_es",
|
|
45
|
+
field=djangoldp.fields.TextField(
|
|
46
|
+
blank=True, null=True, verbose_name="Author"
|
|
47
|
+
),
|
|
48
|
+
),
|
|
49
|
+
migrations.AddField(
|
|
50
|
+
model_name="fact",
|
|
51
|
+
name="author_fr",
|
|
52
|
+
field=djangoldp.fields.TextField(
|
|
53
|
+
blank=True, null=True, verbose_name="Author"
|
|
54
|
+
),
|
|
55
|
+
),
|
|
56
|
+
migrations.AddField(
|
|
57
|
+
model_name="fact",
|
|
58
|
+
name="content_en",
|
|
59
|
+
field=djangoldp.fields.TextField(
|
|
60
|
+
blank=True, null=True, verbose_name="Content"
|
|
61
|
+
),
|
|
62
|
+
),
|
|
63
|
+
migrations.AddField(
|
|
64
|
+
model_name="fact",
|
|
65
|
+
name="content_es",
|
|
66
|
+
field=djangoldp.fields.TextField(
|
|
67
|
+
blank=True, null=True, verbose_name="Content"
|
|
68
|
+
),
|
|
69
|
+
),
|
|
70
|
+
migrations.AddField(
|
|
71
|
+
model_name="fact",
|
|
72
|
+
name="content_fr",
|
|
73
|
+
field=djangoldp.fields.TextField(
|
|
74
|
+
blank=True, null=True, verbose_name="Content"
|
|
75
|
+
),
|
|
76
|
+
),
|
|
77
|
+
migrations.AddField(
|
|
78
|
+
model_name="fact",
|
|
79
|
+
name="description_en",
|
|
80
|
+
field=djangoldp.fields.TextField(
|
|
81
|
+
blank=True, null=True, verbose_name="Description"
|
|
82
|
+
),
|
|
83
|
+
),
|
|
84
|
+
migrations.AddField(
|
|
85
|
+
model_name="fact",
|
|
86
|
+
name="description_es",
|
|
87
|
+
field=djangoldp.fields.TextField(
|
|
88
|
+
blank=True, null=True, verbose_name="Description"
|
|
89
|
+
),
|
|
90
|
+
),
|
|
91
|
+
migrations.AddField(
|
|
92
|
+
model_name="fact",
|
|
93
|
+
name="description_fr",
|
|
94
|
+
field=djangoldp.fields.TextField(
|
|
95
|
+
blank=True, null=True, verbose_name="Description"
|
|
96
|
+
),
|
|
97
|
+
),
|
|
98
|
+
migrations.AddField(
|
|
99
|
+
model_name="fact",
|
|
100
|
+
name="enclosure_en",
|
|
101
|
+
field=djangoldp.fields.LDPUrlField(
|
|
102
|
+
blank=True, null=True, verbose_name="Enclosure"
|
|
103
|
+
),
|
|
104
|
+
),
|
|
105
|
+
migrations.AddField(
|
|
106
|
+
model_name="fact",
|
|
107
|
+
name="enclosure_es",
|
|
108
|
+
field=djangoldp.fields.LDPUrlField(
|
|
109
|
+
blank=True, null=True, verbose_name="Enclosure"
|
|
110
|
+
),
|
|
111
|
+
),
|
|
112
|
+
migrations.AddField(
|
|
113
|
+
model_name="fact",
|
|
114
|
+
name="enclosure_fr",
|
|
115
|
+
field=djangoldp.fields.LDPUrlField(
|
|
116
|
+
blank=True, null=True, verbose_name="Enclosure"
|
|
117
|
+
),
|
|
118
|
+
),
|
|
119
|
+
migrations.AddField(
|
|
120
|
+
model_name="fact",
|
|
121
|
+
name="name_en",
|
|
122
|
+
field=djangoldp.fields.CharField(
|
|
123
|
+
blank=True, max_length=255, null=True, verbose_name="Name"
|
|
124
|
+
),
|
|
125
|
+
),
|
|
126
|
+
migrations.AddField(
|
|
127
|
+
model_name="fact",
|
|
128
|
+
name="name_es",
|
|
129
|
+
field=djangoldp.fields.CharField(
|
|
130
|
+
blank=True, max_length=255, null=True, verbose_name="Name"
|
|
131
|
+
),
|
|
132
|
+
),
|
|
133
|
+
migrations.AddField(
|
|
134
|
+
model_name="fact",
|
|
135
|
+
name="name_fr",
|
|
136
|
+
field=djangoldp.fields.CharField(
|
|
137
|
+
blank=True, max_length=255, null=True, verbose_name="Name"
|
|
138
|
+
),
|
|
139
|
+
),
|
|
140
|
+
migrations.AddField(
|
|
141
|
+
model_name="media",
|
|
142
|
+
name="description_en",
|
|
143
|
+
field=djangoldp.fields.TextField(
|
|
144
|
+
blank=True, null=True, verbose_name="Description"
|
|
145
|
+
),
|
|
146
|
+
),
|
|
147
|
+
migrations.AddField(
|
|
148
|
+
model_name="media",
|
|
149
|
+
name="description_es",
|
|
150
|
+
field=djangoldp.fields.TextField(
|
|
151
|
+
blank=True, null=True, verbose_name="Description"
|
|
152
|
+
),
|
|
153
|
+
),
|
|
154
|
+
migrations.AddField(
|
|
155
|
+
model_name="media",
|
|
156
|
+
name="description_fr",
|
|
157
|
+
field=djangoldp.fields.TextField(
|
|
158
|
+
blank=True, null=True, verbose_name="Description"
|
|
159
|
+
),
|
|
160
|
+
),
|
|
161
|
+
]
|
|
File without changes
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from django.utils.translation import gettext_lazy as _
|
|
2
|
+
from djangoldp import fields
|
|
3
|
+
from djangoldp.models import Model
|
|
4
|
+
from djangoldp.permissions import AuthenticatedOnly, ReadOnly
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class baseModel(Model):
|
|
8
|
+
created_at = fields.DateTimeField(
|
|
9
|
+
auto_now_add=True, verbose_name=_("Creation Date")
|
|
10
|
+
)
|
|
11
|
+
updated_at = fields.DateTimeField(
|
|
12
|
+
auto_now=True, verbose_name=_("Update Date")
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
def __str__(self):
|
|
16
|
+
return self.urlid
|
|
17
|
+
|
|
18
|
+
class Meta(Model.Meta):
|
|
19
|
+
abstract = True
|
|
20
|
+
verbose_name = _("Unknown Object")
|
|
21
|
+
verbose_name_plural = _("Unknown Objects")
|
|
22
|
+
|
|
23
|
+
serializer_fields = [
|
|
24
|
+
"@id",
|
|
25
|
+
"created_at",
|
|
26
|
+
"updated_at",
|
|
27
|
+
]
|
|
28
|
+
nested_fields = []
|
|
29
|
+
rdf_type = "ds4go:BasicObject"
|
|
30
|
+
permission_classes = [AuthenticatedOnly & ReadOnly]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from django.utils.translation import gettext_lazy as _
|
|
2
|
+
from djangoldp import fields
|
|
3
|
+
|
|
4
|
+
from djangoldp_ds4go.models.__base_model import baseModel
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class baseNamedModel(baseModel):
|
|
8
|
+
name = fields.CharField(
|
|
9
|
+
max_length=255,
|
|
10
|
+
blank=True,
|
|
11
|
+
null=True,
|
|
12
|
+
verbose_name=_("Name"),
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
def __str__(self):
|
|
16
|
+
return self.name or self.urlid
|
|
17
|
+
|
|
18
|
+
class Meta(baseModel.Meta):
|
|
19
|
+
abstract = True
|
|
20
|
+
serializer_fields = baseModel.Meta.serializer_fields + [
|
|
21
|
+
"name",
|
|
22
|
+
]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
from django.utils.translation import gettext_lazy as _
|
|
3
|
+
from djangoldp import fields
|
|
4
|
+
from djangoldp_i18n.views import I18nLDPViewSet
|
|
5
|
+
|
|
6
|
+
from djangoldp_ds4go.models.__base_named_model import baseNamedModel
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class Category(baseNamedModel):
|
|
10
|
+
parent_category = fields.ForeignKey(
|
|
11
|
+
"self", on_delete=models.SET_NULL, blank=True, null=True
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
class Meta(baseNamedModel.Meta):
|
|
15
|
+
verbose_name = _("Category")
|
|
16
|
+
verbose_name_plural = _("Categories")
|
|
17
|
+
|
|
18
|
+
rdf_type = "ds4go:Category"
|
|
19
|
+
serializer_fields = baseNamedModel.Meta.serializer_fields + [
|
|
20
|
+
"parent_category",
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
view_set = I18nLDPViewSet
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from django.utils.translation import gettext_lazy as _
|
|
2
|
+
from djangoldp import fields
|
|
3
|
+
from djangoldp_i18n.views import I18nLDPViewSet
|
|
4
|
+
|
|
5
|
+
from djangoldp_ds4go.models.__base_named_model import baseNamedModel
|
|
6
|
+
from djangoldp_ds4go.models.category import Category
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class Fact(baseNamedModel):
|
|
10
|
+
rss_guid = fields.LDPUrlField(
|
|
11
|
+
blank=True, null=True, verbose_name=_("Related RSS GUID")
|
|
12
|
+
)
|
|
13
|
+
link = fields.LDPUrlField(blank=True, null=True, verbose_name=_("Link"))
|
|
14
|
+
review = fields.JSONField(
|
|
15
|
+
blank=True, null=True, default=dict, verbose_name=_("Review")
|
|
16
|
+
)
|
|
17
|
+
description = fields.TextField(blank=True, null=True, verbose_name=_("Description"))
|
|
18
|
+
content = fields.TextField(blank=True, null=True, verbose_name=_("Content"))
|
|
19
|
+
author = fields.TextField(blank=True, null=True, verbose_name=_("Author"))
|
|
20
|
+
categories = fields.ManyToManyField(
|
|
21
|
+
Category,
|
|
22
|
+
blank=True,
|
|
23
|
+
verbose_name=_("Categories"),
|
|
24
|
+
related_name="facts",
|
|
25
|
+
)
|
|
26
|
+
enclosure = fields.LDPUrlField(blank=True, null=True, verbose_name=_("Enclosure"))
|
|
27
|
+
|
|
28
|
+
class Meta(baseNamedModel.Meta):
|
|
29
|
+
verbose_name = _("Fact")
|
|
30
|
+
verbose_name_plural = _("Facts")
|
|
31
|
+
|
|
32
|
+
rdf_type = "ds4go:Fact"
|
|
33
|
+
serializer_fields = baseNamedModel.Meta.serializer_fields + [
|
|
34
|
+
"link",
|
|
35
|
+
"description",
|
|
36
|
+
"content",
|
|
37
|
+
"author",
|
|
38
|
+
"categories",
|
|
39
|
+
"enclosure",
|
|
40
|
+
"medias",
|
|
41
|
+
"review",
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
nested_fields = baseNamedModel.Meta.nested_fields + ["medias"]
|
|
45
|
+
|
|
46
|
+
view_set = I18nLDPViewSet
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
from django.utils.translation import gettext_lazy as _
|
|
3
|
+
from djangoldp import fields
|
|
4
|
+
from djangoldp_i18n.views import I18nLDPViewSet
|
|
5
|
+
|
|
6
|
+
from djangoldp_ds4go.models.__base_model import baseModel
|
|
7
|
+
from djangoldp_ds4go.models.fact import Fact
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Media(baseModel):
|
|
11
|
+
url = fields.LDPUrlField(blank=True, null=True, verbose_name=_("URL"))
|
|
12
|
+
file_size = fields.IntegerField(blank=True, null=True, verbose_name=_("File Size"))
|
|
13
|
+
width = fields.IntegerField(blank=True, null=True, verbose_name=_("Width"))
|
|
14
|
+
height = fields.IntegerField(blank=True, null=True, verbose_name=_("Height"))
|
|
15
|
+
file_type = fields.TextField(blank=True, null=True, verbose_name=_("Type"))
|
|
16
|
+
description = fields.TextField(blank=True, null=True, verbose_name=_("Description"))
|
|
17
|
+
related_fact = fields.ForeignKey(
|
|
18
|
+
Fact,
|
|
19
|
+
on_delete=models.SET_NULL,
|
|
20
|
+
blank=True,
|
|
21
|
+
null=True,
|
|
22
|
+
verbose_name=_("Related Fact"),
|
|
23
|
+
related_name="medias",
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
def __str__(self):
|
|
27
|
+
return self.url or self.urlid
|
|
28
|
+
|
|
29
|
+
class Meta(baseModel.Meta):
|
|
30
|
+
verbose_name = _("Media")
|
|
31
|
+
verbose_name_plural = _("Medias")
|
|
32
|
+
|
|
33
|
+
rdf_type = "ds4go:Media"
|
|
34
|
+
serializer_fields = baseModel.Meta.serializer_fields + [
|
|
35
|
+
"url",
|
|
36
|
+
"file_size",
|
|
37
|
+
"width",
|
|
38
|
+
"height",
|
|
39
|
+
"file_type",
|
|
40
|
+
"description",
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
view_set = I18nLDPViewSet
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from modeltranslation.translator import TranslationOptions, register
|
|
2
|
+
|
|
3
|
+
from djangoldp_ds4go.models import Category, Fact, Media
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@register(Fact)
|
|
7
|
+
class FactTranslationOptions(TranslationOptions):
|
|
8
|
+
fields = ("name", "description", "content", "author", "enclosure")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@register(Category)
|
|
12
|
+
class CategoryTranslationOptions(TranslationOptions):
|
|
13
|
+
fields = ("name",)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@register(Media)
|
|
17
|
+
class MediaTranslationOptions(TranslationOptions):
|
|
18
|
+
fields = ("description",)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: djangoldp_ds4go
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: djangoldp package for dataspace interoperability framework
|
|
5
|
+
Home-page: https://git.startinblox.com/djangoldp-packages/djangoldp-ds4go
|
|
6
|
+
Author: Startin'blox
|
|
7
|
+
Author-email: jbaptiste@startinblox.com
|
|
8
|
+
License: MIT
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Requires-Dist: djangoldp~=5.0.0
|
|
11
|
+
Requires-Dist: djangoldp-i18n~=5.0.0
|
|
12
|
+
Provides-Extra: include-package-data
|
|
13
|
+
Requires-Dist: True; extra == "include-package-data"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
setup.cfg
|
|
3
|
+
setup.py
|
|
4
|
+
djangoldp_ds4go/__init__.py
|
|
5
|
+
djangoldp_ds4go/admin.py
|
|
6
|
+
djangoldp_ds4go/apps.py
|
|
7
|
+
djangoldp_ds4go/translation.py
|
|
8
|
+
djangoldp_ds4go.egg-info/PKG-INFO
|
|
9
|
+
djangoldp_ds4go.egg-info/SOURCES.txt
|
|
10
|
+
djangoldp_ds4go.egg-info/dependency_links.txt
|
|
11
|
+
djangoldp_ds4go.egg-info/requires.txt
|
|
12
|
+
djangoldp_ds4go.egg-info/top_level.txt
|
|
13
|
+
djangoldp_ds4go/migrations/0001_initial.py
|
|
14
|
+
djangoldp_ds4go/migrations/0002_djangoldp_i18n.py
|
|
15
|
+
djangoldp_ds4go/migrations/__init__.py
|
|
16
|
+
djangoldp_ds4go/models/__base_model.py
|
|
17
|
+
djangoldp_ds4go/models/__base_named_model.py
|
|
18
|
+
djangoldp_ds4go/models/__init__.py
|
|
19
|
+
djangoldp_ds4go/models/category.py
|
|
20
|
+
djangoldp_ds4go/models/fact.py
|
|
21
|
+
djangoldp_ds4go/models/media.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
djangoldp_ds4go
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
[metadata]
|
|
2
|
+
name = djangoldp_ds4go
|
|
3
|
+
version = attr: djangoldp_ds4go.__version__
|
|
4
|
+
url = https://git.startinblox.com/djangoldp-packages/djangoldp-ds4go
|
|
5
|
+
author = Startin'blox
|
|
6
|
+
author_email = jbaptiste@startinblox.com
|
|
7
|
+
description = djangoldp package for dataspace interoperability framework
|
|
8
|
+
license = MIT
|
|
9
|
+
classifiers =
|
|
10
|
+
Programming Language :: Python :: 3
|
|
11
|
+
|
|
12
|
+
[options]
|
|
13
|
+
packages = find:
|
|
14
|
+
install_requires =
|
|
15
|
+
djangoldp~=5.0.0
|
|
16
|
+
djangoldp-i18n~=5.0.0
|
|
17
|
+
|
|
18
|
+
[options.extras_require]
|
|
19
|
+
include_package_data = True
|
|
20
|
+
|
|
21
|
+
[semantic_release]
|
|
22
|
+
version_source = tag
|
|
23
|
+
version_variable = djangoldp_ds4go/__init__.py:__version__
|
|
24
|
+
commit_parser = commit_parser.parse
|
|
25
|
+
|
|
26
|
+
[egg_info]
|
|
27
|
+
tag_build =
|
|
28
|
+
tag_date = 0
|
|
29
|
+
|