localcosmos-app-kit 0.9.15__py3-none-any.whl → 0.9.16__py3-none-any.whl
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.
- app_kit/admin_urls.py +5 -0
- app_kit/appbuilder/TaxonBuilder.py +31 -23
- app_kit/appbuilder/__pycache__/TaxonBuilder.cpython-313.pyc +0 -0
- app_kit/features/taxon_profiles/templates/taxon_profiles/ajax/delete_all_manually_added_images.html +37 -0
- app_kit/features/taxon_profiles/templates/taxon_profiles/manage_taxon_profiles.html +16 -0
- app_kit/features/taxon_profiles/tests/__pycache__/test_views.cpython-313.pyc +0 -0
- app_kit/features/taxon_profiles/tests/test_views.py +100 -3
- app_kit/features/taxon_profiles/urls.py +3 -0
- app_kit/features/taxon_profiles/views.py +38 -1
- app_kit/forms.py +8 -0
- app_kit/locale/de/LC_MESSAGES/django.mo +0 -0
- app_kit/locale/de/LC_MESSAGES/django.po +247 -93
- app_kit/taxonomy/lazy.py +6 -6
- app_kit/templates/app_kit/ajax/list_images_and_licences_content.html +44 -0
- app_kit/templates/app_kit/ajax/manage_content_licence.html +25 -0
- app_kit/templates/app_kit/list_images_and_licences.html +25 -0
- app_kit/templates/app_kit/manage_app.html +10 -1
- app_kit/templatetags/app_tags.py +23 -3
- app_kit/views.py +61 -2
- {localcosmos_app_kit-0.9.15.dist-info → localcosmos_app_kit-0.9.16.dist-info}/METADATA +1 -1
- {localcosmos_app_kit-0.9.15.dist-info → localcosmos_app_kit-0.9.16.dist-info}/RECORD +24 -20
- {localcosmos_app_kit-0.9.15.dist-info → localcosmos_app_kit-0.9.16.dist-info}/WHEEL +1 -1
- {localcosmos_app_kit-0.9.15.dist-info → localcosmos_app_kit-0.9.16.dist-info}/licenses/LICENCE +0 -0
- {localcosmos_app_kit-0.9.15.dist-info → localcosmos_app_kit-0.9.16.dist-info}/top_level.txt +0 -0
app_kit/taxonomy/lazy.py
CHANGED
|
@@ -115,14 +115,14 @@ class LazyTaxon(LazyTaxonBase):
|
|
|
115
115
|
|
|
116
116
|
if db_lazy_taxon.taxon_nuid != self.taxon_nuid:
|
|
117
117
|
self.changed_taxon_nuid_in_reference = True
|
|
118
|
-
self.reference_errors.append(_('Taxon %s has changed its position in %s') %
|
|
118
|
+
self.reference_errors.append(_('Taxon %(taxon)s has changed its position in %(tree)s') % {'taxon': self, 'tree': verbose_taxon_source})
|
|
119
119
|
|
|
120
120
|
if str(taxon.name_uuid) != str(self.name_uuid):
|
|
121
121
|
self.changed_name_uuid_in_reference = True
|
|
122
|
-
self.reference_errors.append(_('Taxon %s has changed its identifier in %s') %
|
|
122
|
+
self.reference_errors.append(_('Taxon %(taxon)s has changed its identifier in %(tree)s') % {'taxon': self, 'tree': verbose_taxon_source})
|
|
123
123
|
|
|
124
124
|
if tree_query.count() > 1:
|
|
125
|
-
self.reference_errors.append(_('Taxon %s found multiple times in %s') %
|
|
125
|
+
self.reference_errors.append(_('Taxon %(taxon)s found multiple times in %(tree)s') % {'taxon': self, 'tree': verbose_taxon_source})
|
|
126
126
|
|
|
127
127
|
else:
|
|
128
128
|
synonyms_model = self.models.TaxonSynonymModel
|
|
@@ -135,11 +135,11 @@ class LazyTaxon(LazyTaxonBase):
|
|
|
135
135
|
self.reference_synonym = synonym
|
|
136
136
|
accepted_name = synonym.taxon
|
|
137
137
|
self.reference_accepted_name = LazyTaxon(instance=accepted_name)
|
|
138
|
-
self.reference_errors.append(_('Taxon %s not found as accepted name, but as synonym of %s') %
|
|
139
|
-
accepted_name)
|
|
138
|
+
self.reference_errors.append(_('Taxon %(taxon)s not found as accepted name, but as synonym of %(accepted_name)s') % {'taxon': self,
|
|
139
|
+
'accepted_name': accepted_name})
|
|
140
140
|
|
|
141
141
|
else:
|
|
142
|
-
self.reference_errors.append(_('Taxon %s not found in %s') %
|
|
142
|
+
self.reference_errors.append(_('Taxon %(taxon)s not found in %(tree)s') % {'taxon': self, 'tree': verbose_taxon_source})
|
|
143
143
|
|
|
144
144
|
|
|
145
145
|
taxon_latnames_query = self.models.TaxonTreeModel.objects.filter(
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{% load i18n el_pagination_tags app_tags %}
|
|
2
|
+
|
|
3
|
+
{% paginate 28 registry_entries %}
|
|
4
|
+
|
|
5
|
+
{% show_pages %}
|
|
6
|
+
|
|
7
|
+
<div class="row">
|
|
8
|
+
{% for entry in registry_entries %}
|
|
9
|
+
<div class="col-12 col-md-6 col-lg-3">
|
|
10
|
+
{% get_object_from_licence entry as licenced_object %}
|
|
11
|
+
{% if licenced_object.is_imagestore %}
|
|
12
|
+
<div class="row mb-2">
|
|
13
|
+
<div class="col-6">
|
|
14
|
+
{% if licenced_object.object %}
|
|
15
|
+
<img src="{{ licenced_object.object.source_image.url }}" class="img-thumbnail img-fluid" alt="Content Image">
|
|
16
|
+
{% else %}
|
|
17
|
+
deleted image
|
|
18
|
+
{% endif %}
|
|
19
|
+
</div>
|
|
20
|
+
<div class="col-6 p-1">
|
|
21
|
+
<small>
|
|
22
|
+
{% trans 'Author' %}: {{ entry.creator_name}}<br>
|
|
23
|
+
{% trans 'Licence' %}: {{ entry.licence }} {{ entry.licence_version }}
|
|
24
|
+
{% if entry.creator_link %}
|
|
25
|
+
<br>(<a href="{{ entry.creator_link }}" target="_blank" rel="noopener noreferrer">{% trans 'Link to author' %}</a>)
|
|
26
|
+
{% endif %}
|
|
27
|
+
{% if entry.source_link %}
|
|
28
|
+
<br>(<a href="{{ entry.source_link }}" target="_blank" rel="noopener noreferrer">{% trans 'Link to source' %}</a>)
|
|
29
|
+
{% endif %}
|
|
30
|
+
<br>
|
|
31
|
+
{% if licenced_object.object %}
|
|
32
|
+
<a class="btn btn-xs btn-outline-primary mt-2 xhr" ajax-target="ModalContent" href="{% url 'manage_content_licence' meta_app.id entry.id %}">{% trans 'Edit licence' %}</a>
|
|
33
|
+
{% endif %}
|
|
34
|
+
</small>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
{% else %}
|
|
38
|
+
|
|
39
|
+
{% endif %}
|
|
40
|
+
</div>
|
|
41
|
+
{% endfor %}
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
{% show_pages %}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{% extends 'localcosmos_server/modals/modal_form.html' %}
|
|
2
|
+
{% load i18n localcosmos_tags %}
|
|
3
|
+
|
|
4
|
+
{% block action %}
|
|
5
|
+
{% url 'manage_content_licence' meta_app.id registry_entry.id %}
|
|
6
|
+
{% endblock %}
|
|
7
|
+
|
|
8
|
+
{% block title %}
|
|
9
|
+
{% blocktrans %}Manage Licence{% endblocktrans %}
|
|
10
|
+
{% endblock %}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
{% block footer %}
|
|
14
|
+
{% include 'localcosmos_server/modals/footers/save.html' %}
|
|
15
|
+
{% endblock %}
|
|
16
|
+
|
|
17
|
+
{% block script %}
|
|
18
|
+
{% if success %}
|
|
19
|
+
|
|
20
|
+
<script>
|
|
21
|
+
$("#LargeModal").modal("hide");
|
|
22
|
+
window.location.reload();
|
|
23
|
+
</script>
|
|
24
|
+
{% endif %}
|
|
25
|
+
{% endblock %}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{% extends 'app_kit/base.html' %}
|
|
2
|
+
{% load i18n static app_tags localcosmos_tags %}
|
|
3
|
+
|
|
4
|
+
{% block content %}
|
|
5
|
+
<br>
|
|
6
|
+
<div class="container">
|
|
7
|
+
<div class="row">
|
|
8
|
+
<div class="col-12">
|
|
9
|
+
<br>
|
|
10
|
+
<h3>
|
|
11
|
+
{% trans 'Images and Licences' %}
|
|
12
|
+
</h3>
|
|
13
|
+
|
|
14
|
+
<hr>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
<div class="row">
|
|
18
|
+
<div class="col-12">
|
|
19
|
+
<div id="images-and-licences-content">
|
|
20
|
+
{% include 'app_kit/ajax/list_images_and_licences_content.html' %}
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
{% endblock %}
|
|
@@ -60,7 +60,16 @@
|
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
{% block generic_content_specific %}
|
|
63
|
-
|
|
63
|
+
<div>
|
|
64
|
+
<div class="card">
|
|
65
|
+
<div class="card-body">
|
|
66
|
+
<h5 class="card-title">{% trans 'Images and Licences' %}</h5>
|
|
67
|
+
<div>
|
|
68
|
+
<a href="{% url 'list_images_and_licences' meta_app.id %}" class="btn btn-outline-primary">{% trans 'Manage Images and Licences' %}</a>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
64
73
|
{% endblock %}
|
|
65
74
|
|
|
66
75
|
{% block extra_script %}
|
app_kit/templatetags/app_tags.py
CHANGED
|
@@ -9,7 +9,7 @@ from django.contrib.staticfiles import finders
|
|
|
9
9
|
from django.db.models import Q
|
|
10
10
|
|
|
11
11
|
from app_kit.models import MetaApp, AppKitExternalMedia
|
|
12
|
-
from localcosmos_server.models import EXTERNAL_MEDIA_TYPES
|
|
12
|
+
from localcosmos_server.models import EXTERNAL_MEDIA_TYPES, ServerImageStore
|
|
13
13
|
|
|
14
14
|
from app_kit.features.backbonetaxonomy.models import TaxonRelationship, TaxonRelationshipType
|
|
15
15
|
|
|
@@ -28,7 +28,7 @@ def ranged(number):
|
|
|
28
28
|
return range(1,int(number)+1)
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
from app_kit.models import ContentImage
|
|
31
|
+
from app_kit.models import ContentImage, ImageStore
|
|
32
32
|
@register.simple_tag
|
|
33
33
|
def content_image(instance, image_type=None):
|
|
34
34
|
|
|
@@ -310,4 +310,24 @@ def render_taxon_relationships(context, meta_app, lazy_taxon):
|
|
|
310
310
|
'taxon_relationship_types': relationship_types,
|
|
311
311
|
}
|
|
312
312
|
|
|
313
|
-
return tag_context
|
|
313
|
+
return tag_context
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
@register.simple_tag()
|
|
317
|
+
def get_object_from_licence(licence_registry_entry):
|
|
318
|
+
|
|
319
|
+
content = licence_registry_entry.content
|
|
320
|
+
content_type = licence_registry_entry.content_type
|
|
321
|
+
|
|
322
|
+
image_store_content_type = ContentType.objects.get_for_model(ImageStore)
|
|
323
|
+
server_image_store_content_type = ContentType.objects.get_for_model(ServerImageStore)
|
|
324
|
+
|
|
325
|
+
licenced_object = {
|
|
326
|
+
'is_imagestore': False,
|
|
327
|
+
'object': content,
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
if content_type == image_store_content_type or content_type == server_image_store_content_type:
|
|
331
|
+
licenced_object['is_imagestore'] = True
|
|
332
|
+
|
|
333
|
+
return licenced_object
|
app_kit/views.py
CHANGED
|
@@ -22,7 +22,7 @@ from .forms import (AddLanguageForm, MetaAppOptionsForm, TagAnyElementForm, Gene
|
|
|
22
22
|
CreateGenericContentForm, AddExistingGenericContentForm, TranslateAppForm,
|
|
23
23
|
EditGenericContentNameForm, ManageContentImageWithTextForm,
|
|
24
24
|
ZipImportForm, BuildAppForm, CreateAppForm, ManageLocalizedContentImageForm,
|
|
25
|
-
TranslateVernacularNamesForm)
|
|
25
|
+
TranslateVernacularNamesForm, ManageContentLicenceForm)
|
|
26
26
|
|
|
27
27
|
from django_tenants.utils import get_tenant_domain_model
|
|
28
28
|
Domain = get_tenant_domain_model()
|
|
@@ -53,6 +53,8 @@ from django.db import connection
|
|
|
53
53
|
# activate permission rules
|
|
54
54
|
from .permission_rules import *
|
|
55
55
|
|
|
56
|
+
from content_licencing.models import ContentLicenceRegistry
|
|
57
|
+
|
|
56
58
|
LOCALCOSMOS_COMMERCIAL_BUILDER = getattr(settings, 'LOCALCOSMOS_COMMERCIAL_BUILDER', True)
|
|
57
59
|
|
|
58
60
|
|
|
@@ -1732,6 +1734,62 @@ class DeleteAppKitExternalMedia(MetaAppMixin, AjaxDeleteView):
|
|
|
1732
1734
|
context = super().get_context_data(**kwargs)
|
|
1733
1735
|
context['external_media_object'] = self.object.content_object
|
|
1734
1736
|
return context
|
|
1737
|
+
|
|
1738
|
+
|
|
1739
|
+
class ListImagesAndLicences(MetaAppMixin, TemplateView):
|
|
1740
|
+
|
|
1741
|
+
template_name = 'app_kit/list_images_and_licences.html'
|
|
1742
|
+
ajax_template_name = 'app_kit/ajax/list_images_and_licences_content.html'
|
|
1743
|
+
|
|
1744
|
+
def get_context_data(self, **kwargs):
|
|
1745
|
+
context = super().get_context_data(**kwargs)
|
|
1746
|
+
registry_entries = ContentLicenceRegistry.objects.all().order_by('creator_name', 'pk')
|
|
1747
|
+
context['registry_entries'] = registry_entries
|
|
1748
|
+
return context
|
|
1749
|
+
|
|
1750
|
+
|
|
1751
|
+
class ManageContentLicence(MetaAppMixin, LicencingFormViewMixin, FormView):
|
|
1752
|
+
|
|
1753
|
+
form_class = ManageContentLicenceForm
|
|
1754
|
+
|
|
1755
|
+
template_name = 'app_kit/ajax/manage_content_licence.html'
|
|
1756
|
+
|
|
1757
|
+
@method_decorator(ajax_required)
|
|
1758
|
+
def dispatch(self, request, *args, **kwargs):
|
|
1759
|
+
self.set_instance(**kwargs)
|
|
1760
|
+
return super().dispatch(request, *args, **kwargs)
|
|
1761
|
+
|
|
1762
|
+
def set_instance(self, **kwargs):
|
|
1763
|
+
self.licence_registry_entry = ContentLicenceRegistry.objects.get(pk=kwargs['registry_entry_id'])
|
|
1764
|
+
|
|
1765
|
+
def get_form(self, form_class=None):
|
|
1766
|
+
if form_class is None:
|
|
1767
|
+
form_class = self.get_form_class()
|
|
1768
|
+
return form_class(self.licence_registry_entry.model_field, **self.get_form_kwargs())
|
|
1769
|
+
|
|
1770
|
+
def get_initial(self):
|
|
1771
|
+
initial = super().get_initial()
|
|
1772
|
+
|
|
1773
|
+
licencing_initial = self.get_licencing_initial()
|
|
1774
|
+
initial.update(licencing_initial)
|
|
1775
|
+
|
|
1776
|
+
return initial
|
|
1777
|
+
|
|
1778
|
+
|
|
1779
|
+
def get_context_data(self, **kwargs):
|
|
1780
|
+
context = super().get_context_data(**kwargs)
|
|
1781
|
+
context['registry_entry'] = self.licence_registry_entry
|
|
1782
|
+
return context
|
|
1783
|
+
|
|
1784
|
+
def form_valid(self, form):
|
|
1785
|
+
if self.licence_registry_entry.content:
|
|
1786
|
+
self.register_content_licence(form, self.licence_registry_entry.content, self.licence_registry_entry.model_field)
|
|
1787
|
+
|
|
1788
|
+
context = self.get_context_data(**self.kwargs)
|
|
1789
|
+
context['form'] = form
|
|
1790
|
+
context['success'] = True
|
|
1791
|
+
return self.render_to_response(context)
|
|
1792
|
+
|
|
1735
1793
|
|
|
1736
1794
|
# LEGAL
|
|
1737
1795
|
class IdentityMixin:
|
|
@@ -1759,4 +1817,5 @@ class PrivacyStatement(IdentityMixin, TemplateView):
|
|
|
1759
1817
|
@method_decorator(csrf_exempt)
|
|
1760
1818
|
@method_decorator(requires_csrf_token)
|
|
1761
1819
|
def dispatch(self, request, *args, **kwargs):
|
|
1762
|
-
return super().dispatch(request, *args, **kwargs)
|
|
1820
|
+
return super().dispatch(request, *args, **kwargs)
|
|
1821
|
+
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
app_kit/__init__.py,sha256=kiJCX4I2Cx21HFl05-DT8ETzQ2Ctr_eHQ_tW8ui7VoA,330
|
|
2
2
|
app_kit/admin.py,sha256=6RhzQBKMGjPeDmTBlGgJfmhV36wqkrGgt1kWxSUG1nc,225
|
|
3
|
-
app_kit/admin_urls.py,sha256=
|
|
3
|
+
app_kit/admin_urls.py,sha256=QULsIyrrhiH5Cxr58-vvrD2PnRGir5dYRO0_kYgccEU,9633
|
|
4
4
|
app_kit/apps.py,sha256=ZjMEcU1EVFkXzL1rYRkB3STC-I3ZKeGIi7QsRhudDpE,88
|
|
5
5
|
app_kit/context_processors.py,sha256=a206olavyckiIOO9kwAoslSKwMZf8l92-sk5w4VaKZw,713
|
|
6
6
|
app_kit/definitions.py,sha256=qPfyqMKr71qvBgOj8M7j_7ZbMlFo5sdvfQUUAL0IBBU,82
|
|
7
|
-
app_kit/forms.py,sha256=
|
|
7
|
+
app_kit/forms.py,sha256=09xz8t7j7opzAXkBAkSjpjAUFygXHXsSjD62515gRxI,20281
|
|
8
8
|
app_kit/generic.py,sha256=NZDUpyX9Il3NN-kIXwDJGd30s_keRjt2dlAXHEuWfNE,5224
|
|
9
9
|
app_kit/generic_content_validation.py,sha256=d9zM35OaOV382GMRSnIBQXzRcqiPDIaE03OAWtoHgQ4,1146
|
|
10
10
|
app_kit/generic_content_zip_import.py,sha256=LOkLgSNHEZDJHqa2P2ngRVinFefPGQFWKyEZyf4A6uQ,38495
|
|
@@ -18,7 +18,7 @@ app_kit/urls.py,sha256=LbC2phhp1fw4LWQN2Voy4QDtOBGq2f2WNmYb4APeGC8,511
|
|
|
18
18
|
app_kit/utils.py,sha256=GYljQ6av1u82QzY9JugDeL6enfMSzaozPTk959ngpl0,6725
|
|
19
19
|
app_kit/validators.py,sha256=KkCo50Vs9Kc9Pl4-KgkYIo0evwoHB7_SzkMQm27Lx3c,698
|
|
20
20
|
app_kit/view_mixins.py,sha256=Ht6i6P7m1cFafYpNzJ2xrD3GwJpgppRwsSKQfM9aYxM,1320
|
|
21
|
-
app_kit/views.py,sha256=
|
|
21
|
+
app_kit/views.py,sha256=GqF-oMw7fLgPrgohq80dtfdPl5nZt8xeFwtDz3YNhiI,63202
|
|
22
22
|
app_kit/app_kit_api/__init__.py,sha256=ZHly-ZuMEfMC8Aw_y3aR5ovob7nelArdaSjawJLuxOw,64
|
|
23
23
|
app_kit/app_kit_api/admin.py,sha256=dCntbI8CI_EtDpbPr7eFsjjzyAweU44ZF0S-VjW8eP4,287
|
|
24
24
|
app_kit/app_kit_api/apps.py,sha256=XHq_7ePVs53aM6-y8y-vc0MGLNA_w2beZ78h12TJqrE,103
|
|
@@ -40,7 +40,7 @@ app_kit/appbuilder/AppPreviewBuilder.py,sha256=C0oSh_i1Cx4vLW01T0qJeo-MrtqqjD72H
|
|
|
40
40
|
app_kit/appbuilder/AppReleaseBuilder.py,sha256=Xh1G8DI5azLLA1_uE-S_4HQDACs2xqxbA87bBGhdBeo,131151
|
|
41
41
|
app_kit/appbuilder/ContentImageBuilder.py,sha256=k9YdH2d5oIyfbeoA9H_DaUigc1SQ69WnXFy9e00DdfA,7332
|
|
42
42
|
app_kit/appbuilder/GBIFlib.py,sha256=iGj01hrk0iG-qjEkPM8ez_lNKL_zJedPTS3oUZDd8vg,989
|
|
43
|
-
app_kit/appbuilder/TaxonBuilder.py,sha256=
|
|
43
|
+
app_kit/appbuilder/TaxonBuilder.py,sha256=4c9tDVxWoHIXiy3z-hHku2OXceQDJDjrehvm8spXtuE,15983
|
|
44
44
|
app_kit/appbuilder/__init__.py,sha256=PIqSBvR4NFND1zb_KOryk3PFZ5yhiGwaZIZSRSTp1JY,152
|
|
45
45
|
app_kit/appbuilder/precompile_fulltree.py,sha256=Lrf5j0xGY2FgpuuWdUrfef1ZlLs-GntFYpngtZ5pTF0,2005
|
|
46
46
|
app_kit/appbuilder/JSONBuilders/BackboneTaxonomyJSONBuilder.py,sha256=worozLAgqxKJSdBzQ45zlCL3l4BnpZAYX-Dl4SfmwUs,6488
|
|
@@ -90,7 +90,7 @@ app_kit/appbuilder/__pycache__/ContentImageBuilder.cpython-313.pyc,sha256=K6b-Gl
|
|
|
90
90
|
app_kit/appbuilder/__pycache__/GBIFlib.cpython-311.pyc,sha256=NNB_AHGQnN0ld82WuJHxGn5RthLO_fGkpVAfAHaDyMU,1945
|
|
91
91
|
app_kit/appbuilder/__pycache__/GBIFlib.cpython-313.pyc,sha256=13SE5Ayqrg8n90KGWbLE7rQ-UPaU2Q0XbY5dQENpXTA,1962
|
|
92
92
|
app_kit/appbuilder/__pycache__/TaxonBuilder.cpython-311.pyc,sha256=7JVnCo4-CVmaX_EIzU05is5ySaqWPA86QBlFM-B4Trw,16273
|
|
93
|
-
app_kit/appbuilder/__pycache__/TaxonBuilder.cpython-313.pyc,sha256=
|
|
93
|
+
app_kit/appbuilder/__pycache__/TaxonBuilder.cpython-313.pyc,sha256=mxUE3vbiXd4R9F3iFOdPIAuZySRhBJ6KIeGllVJp4Uw,16957
|
|
94
94
|
app_kit/appbuilder/__pycache__/__init__.cpython-311.pyc,sha256=KkcyxSIx1hiGZkOwMG8qWGJQ-RPacWMKpfpnP-naNv4,388
|
|
95
95
|
app_kit/appbuilder/__pycache__/__init__.cpython-313.pyc,sha256=iHwg7gUn2XzOOz0SNmIeY6GVMxTcc5NKM3gzSz4pLnA,329
|
|
96
96
|
app_kit/appbuilder/app/frontends/Multiverse/settings.json,sha256=dCcy0ZGor57YhlrPUJVj-IADrF413gBBWFUfletZW6g,2026
|
|
@@ -400,8 +400,8 @@ app_kit/features/taxon_profiles/admin.py,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0F
|
|
|
400
400
|
app_kit/features/taxon_profiles/apps.py,sha256=c0nynglV50B8qvXTnu7v6LZHT6N5nOTayOasKICAAJE,119
|
|
401
401
|
app_kit/features/taxon_profiles/forms.py,sha256=T5mU0QGhG_fSNppzuzTxjxb078VA4IckOPOaP7nM5fE,16998
|
|
402
402
|
app_kit/features/taxon_profiles/models.py,sha256=xYDHT_KI_xatFUwYYnkogXeqd70kr9Dp8YVum8hzvRw,24214
|
|
403
|
-
app_kit/features/taxon_profiles/urls.py,sha256=
|
|
404
|
-
app_kit/features/taxon_profiles/views.py,sha256=
|
|
403
|
+
app_kit/features/taxon_profiles/urls.py,sha256=wamGUfN5cpCvYEfNnTTbdqBt1GeFQbybmzsG7_KtpvA,10814
|
|
404
|
+
app_kit/features/taxon_profiles/views.py,sha256=WCA2C8D6eyghFg42CRBQZlyvcy_UWf2iDcZPwOcRzSc,61245
|
|
405
405
|
app_kit/features/taxon_profiles/zip_import.py,sha256=aYFEtaMjn5Qebj0eaOeM-WVdvMUDymH4wUOnhAItN9I,29883
|
|
406
406
|
app_kit/features/taxon_profiles/migrations/0001_initial.py,sha256=aknHwoaZMBwDWMnp7dftXToVGuyN4f9xy3epQSqGkxQ,3659
|
|
407
407
|
app_kit/features/taxon_profiles/migrations/0002_taxontext_long_text.py,sha256=FN2GAdO4paIgX8FpREoLk7cihlHRRaehVY7_Ve0K97w,383
|
|
@@ -419,7 +419,7 @@ app_kit/features/taxon_profiles/migrations/0013_alter_taxonprofile_options_and_m
|
|
|
419
419
|
app_kit/features/taxon_profiles/migrations/0014_alter_taxonprofile_unique_together_and_more.py,sha256=wPO0TfoU_I9_BBLOSe3gvzMzEeGpxP5exnwuGT_ngUU,2501
|
|
420
420
|
app_kit/features/taxon_profiles/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
421
421
|
app_kit/features/taxon_profiles/templates/taxon_profiles/manage_taxon_profile.html,sha256=9uqOz0oQuA8Yxyg1yTSZs0RCWpjASOS6mIZgJm6uJFQ,11184
|
|
422
|
-
app_kit/features/taxon_profiles/templates/taxon_profiles/manage_taxon_profiles.html,sha256=
|
|
422
|
+
app_kit/features/taxon_profiles/templates/taxon_profiles/manage_taxon_profiles.html,sha256=NJGnmoa5da40e-hUpZAG2V-UZGqf_oxAd8bIABfuaKw,9304
|
|
423
423
|
app_kit/features/taxon_profiles/templates/taxon_profiles/manage_taxon_texts.html,sha256=q1Do_NKTwkQ8sHWY4Zx4CXaWbpfFBGxn6_8Uc3N4EVA,1353
|
|
424
424
|
app_kit/features/taxon_profiles/templates/taxon_profiles/ajax/backbone_taxa_taxonlist.html,sha256=6zEHqwPnU0bJJmyQqkXxWw90D0IQ1WPtm4sCCKXFJMQ,656
|
|
425
425
|
app_kit/features/taxon_profiles/templates/taxon_profiles/ajax/batch_change_taxon_profiles_publication_status.html,sha256=4v7a305Z0YSXgABho64S8JH5hQ62dvzU8kjXiZ4U6MU,655
|
|
@@ -428,6 +428,7 @@ app_kit/features/taxon_profiles/templates/taxon_profiles/ajax/change_taxon_profi
|
|
|
428
428
|
app_kit/features/taxon_profiles/templates/taxon_profiles/ajax/collected_taxon_images.html,sha256=a6HQJ6p4QMSpDqYraentxFyGmIxs-5uypFbWIyoR4q8,3654
|
|
429
429
|
app_kit/features/taxon_profiles/templates/taxon_profiles/ajax/collected_taxon_traits.html,sha256=PkA7sGNPBFQ_t1Pb4X1avCd_n9SVFKedN0BIsYyB0Eg,2470
|
|
430
430
|
app_kit/features/taxon_profiles/templates/taxon_profiles/ajax/create_taxon_profile.html,sha256=TylM_rq_aARbxzBgLZ8iGO6BNMFiGCue9-4saUZdS4c,1092
|
|
431
|
+
app_kit/features/taxon_profiles/templates/taxon_profiles/ajax/delete_all_manually_added_images.html,sha256=_zOaLGeVD3AKPmIzwRTr-eHi0Lo38dOTsSzYI-Oz_rE,1022
|
|
431
432
|
app_kit/features/taxon_profiles/templates/taxon_profiles/ajax/delete_navigation_entry.html,sha256=kCNgH9qiAvF5Y3XP6UPA-XZeFb0Uw2CZakkYY-JjZD0,226
|
|
432
433
|
app_kit/features/taxon_profiles/templates/taxon_profiles/ajax/delete_navigation_entry_taxon.html,sha256=xn3CFCzn1qZS5tM76GeQn4-2_WL4zLo5OxUTAD47XiQ,410
|
|
433
434
|
app_kit/features/taxon_profiles/templates/taxon_profiles/ajax/delete_navigation_image.html,sha256=NY9VNsS6ZPIx9rjdikOg-SnNgvJn75xYglZRWMUkyMQ,309
|
|
@@ -462,7 +463,7 @@ app_kit/features/taxon_profiles/templatetags/taxon_profile_tags.py,sha256=nfriKw
|
|
|
462
463
|
app_kit/features/taxon_profiles/tests/common.py,sha256=r27zMWP3LhUCLNv2nSnbLZSb2S0JyT4EwV7b1ZcEPrI,1589
|
|
463
464
|
app_kit/features/taxon_profiles/tests/test_forms.py,sha256=tQ4NHGxZz2dzae16tu0JXazTqEskzdv473Ni_ncUaUA,16374
|
|
464
465
|
app_kit/features/taxon_profiles/tests/test_models.py,sha256=-gj-EHBWuFG1mxoOMnwSY2lo0azevO00p0yS-txKcHI,33605
|
|
465
|
-
app_kit/features/taxon_profiles/tests/test_views.py,sha256=
|
|
466
|
+
app_kit/features/taxon_profiles/tests/test_views.py,sha256=8jgvwNe2j79CcoR-FXBI6x9ZnzzxhZLTbX_LGZDgauQ,85993
|
|
466
467
|
app_kit/features/taxon_profiles/tests/test_zip_import.py,sha256=IkW_Of1Dgb3j0aIKoWsUMQajPAX2aQeR31vCUn7N3d4,27185
|
|
467
468
|
app_kit/features/taxon_profiles/tests/__pycache__/common.cpython-311.pyc,sha256=VPg2JQrdcN4hlBj-fGZvvyBb1F79FRk9QI5Wd3HlN04,2573
|
|
468
469
|
app_kit/features/taxon_profiles/tests/__pycache__/common.cpython-313.pyc,sha256=mZa0QDG_CtG8ZTIiQMWSqeBuRzSo8kKqAumsGzZUEus,2397
|
|
@@ -471,10 +472,10 @@ app_kit/features/taxon_profiles/tests/__pycache__/test_forms.cpython-313.pyc,sha
|
|
|
471
472
|
app_kit/features/taxon_profiles/tests/__pycache__/test_models.cpython-311.pyc,sha256=lSdWjfvqyZfdOGYW43vTHLg0Lt9uN-b82qfLNq4G8oY,27401
|
|
472
473
|
app_kit/features/taxon_profiles/tests/__pycache__/test_models.cpython-313.pyc,sha256=Yh5pGcitUJjxGCfpgLknzn_9pBxK2iBoHXz8jXmtQyY,37911
|
|
473
474
|
app_kit/features/taxon_profiles/tests/__pycache__/test_views.cpython-311.pyc,sha256=LP0Ax_996RBcO7iKOAXLfuPYBkescBUMQage7UNx6eU,94047
|
|
474
|
-
app_kit/features/taxon_profiles/tests/__pycache__/test_views.cpython-313.pyc,sha256=
|
|
475
|
+
app_kit/features/taxon_profiles/tests/__pycache__/test_views.cpython-313.pyc,sha256=v10_fLVPmVHlQusn-wEobwC5JstZLzfnevMJB7k9VkI,124656
|
|
475
476
|
app_kit/features/taxon_profiles/tests/__pycache__/test_zip_import.cpython-313.pyc,sha256=nfMAbWoVuc43-Gn2dHkmGbvu1J0mppy_9X82vXDUsGw,35276
|
|
476
|
-
app_kit/locale/de/LC_MESSAGES/django.mo,sha256=
|
|
477
|
-
app_kit/locale/de/LC_MESSAGES/django.po,sha256=
|
|
477
|
+
app_kit/locale/de/LC_MESSAGES/django.mo,sha256=tSX2dudjFlnL9Vgr8ueLZQ3AxyAzFR6vQtkSRTd3FTs,89194
|
|
478
|
+
app_kit/locale/de/LC_MESSAGES/django.po,sha256=4gLbkP8aCbPWx4stAUFce2OadMQtk_CcNnXdE8MMXnQ,179096
|
|
478
479
|
app_kit/locale/en/LC_MESSAGES/django.mo,sha256=N1pb17IfLd0ASiKO8d68-B4ygSpDkhKOCs8YTzMXQo0,380
|
|
479
480
|
app_kit/locale/en/LC_MESSAGES/django.po,sha256=jhD_BqtvCqoH-3NeWsLZy9v4DJ3vGYt1U3M6vpOU-FU,94673
|
|
480
481
|
app_kit/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -1751,7 +1752,7 @@ app_kit/taxonomy/admin.py,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0FESABHOSc-vg,63
|
|
|
1751
1752
|
app_kit/taxonomy/apps.py,sha256=Obl-J7-a-DsyR-zPYwVfzZh-NFXFVEOiQmKBXldPsRA,149
|
|
1752
1753
|
app_kit/taxonomy/fields.py,sha256=JrI4Q-3WskNUZ955N0Ryb38RO8VPHUAzol0LZha92Xw,208
|
|
1753
1754
|
app_kit/taxonomy/forms.py,sha256=qc9WoxhxINL-wseHTF3nhoRovuI-3X2eOPKhgX1RRWc,1621
|
|
1754
|
-
app_kit/taxonomy/lazy.py,sha256=
|
|
1755
|
+
app_kit/taxonomy/lazy.py,sha256=b1wzHAKj7Ab16D5ZU0xsNLWNH37-WSqa_9FcahDH-AE,15664
|
|
1755
1756
|
app_kit/taxonomy/models.py,sha256=3d5RCnD3OdcnEkGaXhP_HvCBCEz20tq2qWbuBOyYV2M,10375
|
|
1756
1757
|
app_kit/taxonomy/signals.py,sha256=FZHsEUkWN0h7rQN22e8I8MTeP6HfBAzChBTko2PQEHE,1193
|
|
1757
1758
|
app_kit/taxonomy/urls.py,sha256=q7kE4C7cvgnKH40cUJ1q26MeuAmS7w5fFIJfQiIAgTo,668
|
|
@@ -1822,9 +1823,10 @@ app_kit/templates/app_kit/base.html,sha256=TrrkrMPcuPTN0ynBP7-EHBZqc-Zdi6_zuiWxz
|
|
|
1822
1823
|
app_kit/templates/app_kit/build_app.html,sha256=uveR0NpQcRC4Vo8yLHMAhmnKMi1F1hg4VRyd9DKz4NQ,14106
|
|
1823
1824
|
app_kit/templates/app_kit/content_images.html,sha256=lStH3sxMjY6Gp3aa8knLayGXANJEz7chW4ALcs-8vWI,164
|
|
1824
1825
|
app_kit/templates/app_kit/home.html,sha256=G4yt7BPIjjWXwj6TGRRazEhq05XYLYP5ZFRjmSgBxGA,239
|
|
1826
|
+
app_kit/templates/app_kit/list_images_and_licences.html,sha256=SQ4nsl3BfXN9X8vfeQzDGy5Bfh2nHyTIIbY6ba_SB4c,573
|
|
1825
1827
|
app_kit/templates/app_kit/list_manage_apps.html,sha256=XhKq2uv1haG3XPtzMbElHfLwiiKw2aUUAnco803uV28,789
|
|
1826
1828
|
app_kit/templates/app_kit/list_manage_generic_content.html,sha256=VL6-JgwiGWTzTAA7Lv9pJV8u_bcNu2Hg1zFyXHY9fFI,751
|
|
1827
|
-
app_kit/templates/app_kit/manage_app.html,sha256=
|
|
1829
|
+
app_kit/templates/app_kit/manage_app.html,sha256=g6YLwoqNvRo49TNEr0zjVIMXQO3RNWBnSOtZ9-rD6t0,3260
|
|
1828
1830
|
app_kit/templates/app_kit/manage_app_design.html,sha256=TSDF1vbn31MmBzmV1VnLDpOnHPDMELXKSPZuSo1GK6Q,374
|
|
1829
1831
|
app_kit/templates/app_kit/manage_generic_content.html,sha256=P6DxKyspU0AJdCKdUjXMEYw4frh_VfE_KJziWYUxKN0,3987
|
|
1830
1832
|
app_kit/templates/app_kit/start_new_app.html,sha256=MQgQbnOwiaBgyv0JpeHXil1OC9khcDcNtf9CvykTYr8,835
|
|
@@ -1854,8 +1856,10 @@ app_kit/templates/app_kit/ajax/external_media_list.html,sha256=1csYZaJohYC8TgyLl
|
|
|
1854
1856
|
app_kit/templates/app_kit/ajax/form_extended_with_content_image.html,sha256=BO8TbrN3fWWCqkIZXFGuT6x-tamcy9NqKGXBnWmh1Ok,479
|
|
1855
1857
|
app_kit/templates/app_kit/ajax/get_content_image_suggestions.html,sha256=u4LssjM3wwDZTceUPBbXgiJewc0v8TBLvdvKu_5ir8w,1087
|
|
1856
1858
|
app_kit/templates/app_kit/ajax/get_translation.html,sha256=XGWLLrBLqB6U4LvbsL1nh2gKjl3WD2NzqUES2GeCrYE,479
|
|
1859
|
+
app_kit/templates/app_kit/ajax/list_images_and_licences_content.html,sha256=S9L5QSrqfsCQb9JrojpuBGiPtv8nObgtobID1kAP74w,1998
|
|
1857
1860
|
app_kit/templates/app_kit/ajax/localized_content_image_form.html,sha256=H0a3F53LbaSVluuavgYwT6OUgg8ivpETFpS-OnUOFCI,1332
|
|
1858
1861
|
app_kit/templates/app_kit/ajax/manage_app_languages.html,sha256=IpRKVlWA2hJFIgAqn5RuFuiNoFbAs_AnUCpLao-b9w8,1361
|
|
1862
|
+
app_kit/templates/app_kit/ajax/manage_content_licence.html,sha256=9fFnKlZuqjZPqCc_2gIToOB5Jrr6o1C2rvPMrz4OLHY,541
|
|
1859
1863
|
app_kit/templates/app_kit/ajax/manage_external_media.html,sha256=vcyN04Fwfb9v6mMybGj-ch_xykIaDJOIdUjrpO12js0,1316
|
|
1860
1864
|
app_kit/templates/app_kit/ajax/manage_feature.html,sha256=h9E8BMcGesqNsZAVyH2oPSqpSCYr_A_zeSwjuwF_jaM,1792
|
|
1861
1865
|
app_kit/templates/app_kit/ajax/manage_object_order.html,sha256=hNPSA7fzDtWK8kVz1oB04sPoS7Bx8C0cAXCWe0KtOYM,1733
|
|
@@ -1876,7 +1880,7 @@ app_kit/templates/app_kit/legal/privacy_statement.html,sha256=2kcInnplDScckKSxE5
|
|
|
1876
1880
|
app_kit/templates/app_kit/scripts/deepl_translation_script.html,sha256=JfXDsl0WeFMuXBAVJk7pSM9KHJ43pCPKbUXnBTeD3mI,3180
|
|
1877
1881
|
app_kit/templates/app_kit/snippets/ckeditor_js_snippet.html,sha256=7GFVjVHJ2z_lRNJlglze64cSx099HypePeLklMKtAmk,1394
|
|
1878
1882
|
app_kit/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1879
|
-
app_kit/templatetags/app_tags.py,sha256=
|
|
1883
|
+
app_kit/templatetags/app_tags.py,sha256=yPL6QeWKsS0KlMUczW1XoHqWyGs436UUdK3GdtFcf9Y,9569
|
|
1880
1884
|
app_kit/tests/cases.py,sha256=OGjZnENc5aIxPB0T2LxZagCD87om0hImU-aDF5WlBU8,2693
|
|
1881
1885
|
app_kit/tests/common.py,sha256=KxGYN73HxNPyMrJxelXsN0NA5btQkleWoqTu87jUue8,12293
|
|
1882
1886
|
app_kit/tests/mixins.py,sha256=K0iR7WSgPOKj3nFRDrm6b61EztaRcdunLlf4pEWshVw,18210
|
|
@@ -1930,8 +1934,8 @@ app_kit/tests/__pycache__/test_models.cpython-313.pyc,sha256=Lmv3BfjLs5Fg-olJeMl
|
|
|
1930
1934
|
app_kit/tests/__pycache__/test_utils.cpython-313.pyc,sha256=GX3REqZygi2eO_A2F2_KtYi7hg54X5QPtCTCGWuxGpM,14054
|
|
1931
1935
|
app_kit/tests/__pycache__/test_views.cpython-311.pyc,sha256=NDJR40TcMm-bXXC-wV7OgH1sGR3N7psSWYiUirkkrjU,133242
|
|
1932
1936
|
app_kit/tests/__pycache__/test_views.cpython-313.pyc,sha256=q851UqIZFCCTfQb1lF4SVxV1j_Vu1hJdOlpckmrGX28,125363
|
|
1933
|
-
localcosmos_app_kit-0.9.
|
|
1934
|
-
localcosmos_app_kit-0.9.
|
|
1935
|
-
localcosmos_app_kit-0.9.
|
|
1936
|
-
localcosmos_app_kit-0.9.
|
|
1937
|
-
localcosmos_app_kit-0.9.
|
|
1937
|
+
localcosmos_app_kit-0.9.16.dist-info/licenses/LICENCE,sha256=VnxALPSxXoU59rlNeRdJtwS_nU79IFpVWsZZCQUM4Mw,1086
|
|
1938
|
+
localcosmos_app_kit-0.9.16.dist-info/METADATA,sha256=dFda2jrSES7m8CBqR8DaaQnUQIfY-n_-Jseazqzr--Y,1388
|
|
1939
|
+
localcosmos_app_kit-0.9.16.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
|
|
1940
|
+
localcosmos_app_kit-0.9.16.dist-info/top_level.txt,sha256=F6H4pEBkCvUR_iwQHIy4K1iby-jzfWg3CTym5XJKeys,8
|
|
1941
|
+
localcosmos_app_kit-0.9.16.dist-info/RECORD,,
|
{localcosmos_app_kit-0.9.15.dist-info → localcosmos_app_kit-0.9.16.dist-info}/licenses/LICENCE
RENAMED
|
File without changes
|
|
File without changes
|