From 53a0fd66635ef721fda402454606dc34e122868e Mon Sep 17 00:00:00 2001 From: sudjoao Date: Thu, 24 Mar 2022 10:25:14 -0300 Subject: [PATCH 001/144] Create ListTextWidget class and update ExhbitForm Co-authored-by: Hugo Sobral --- src/ARte/core/forms.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/ARte/core/forms.py b/src/ARte/core/forms.py index 4bdaeeb2..b5d4fd40 100644 --- a/src/ARte/core/forms.py +++ b/src/ARte/core/forms.py @@ -4,6 +4,25 @@ class UploadFileForm(forms.Form): file = forms.ImageField(required=False) +class ListTextWidget(forms.TextInput): + def __init__(self, *args, **kwargs): + super(ListTextWidget, self).__init__(*args, **kwargs) + self._name = 'exhibit-list' + self._list = Exhibit.objects.all().order_by('name') + self.attrs.update({'list':f'list__{self._name}'}) + + def render(self, name, value, attrs=None, renderer=None): + text_html = super(ListTextWidget, self).render(name, value, attrs=attrs) + data_list = f'' + for item in self._list: + data_list += f'' + data_list += '' + return (text_html + data_list) class ExhibitForm(forms.Form): - exhibit = forms.ModelChoiceField(queryset=Exhibit.objects.all().order_by('name')) \ No newline at end of file + exhibit = forms.CharField(required=True) + + def __init__(self, *args, **kwargs): + super(ExhibitForm, self).__init__(*args, **kwargs) + self.fields['exhibit'].widget = ListTextWidget() + self.fields['exhibit'].label = "" \ No newline at end of file From f623f4f2bef9b69191899e44c25047c3ca35f64b Mon Sep 17 00:00:00 2001 From: sudjoao Date: Thu, 24 Mar 2022 10:27:03 -0300 Subject: [PATCH 002/144] Update exhibit_select function to receiven just the exhibit Co-authored-by: Hugo Sobral --- src/ARte/core/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ARte/core/views.py b/src/ARte/core/views.py index f93e5d92..4eb3fa6f 100644 --- a/src/ARte/core/views.py +++ b/src/ARte/core/views.py @@ -88,7 +88,7 @@ def exhibit_select(request): form = ExhibitForm(request.POST) if form.is_valid(): exhibit = form.cleaned_data.get('exhibit') - return redirect("/" + exhibit.slug) + return redirect("/" + exhibit) else: form = ExhibitForm() From 36053f1b32d442c1f378972e3d50c26cb8c8aae3 Mon Sep 17 00:00:00 2001 From: sudjoao Date: Thu, 24 Mar 2022 10:28:42 -0300 Subject: [PATCH 003/144] Add new form in exhibit_select screen and remove unsed function Co-authored-by: Hugo Sobral Co-authored-by: Sofia Patrocinio --- .../core/jinja2/core/exhibit_select.jinja2 | 28 ++----------------- 1 file changed, 2 insertions(+), 26 deletions(-) diff --git a/src/ARte/core/jinja2/core/exhibit_select.jinja2 b/src/ARte/core/jinja2/core/exhibit_select.jinja2 index b0270085..22be5ce5 100644 --- a/src/ARte/core/jinja2/core/exhibit_select.jinja2 +++ b/src/ARte/core/jinja2/core/exhibit_select.jinja2 @@ -14,17 +14,9 @@

{{_("Choose the Exhibition you're seeing")}}

-
- -
-
+ {{ csrf_input }} - {% for field in form.visible_fields() %} -

- {{ field }} - {{ field.errors }} -

- {% endfor %} + {{form}}
@@ -32,22 +24,6 @@ {% endblock %} \ No newline at end of file From 24e5da07cdd4d2d7179082deb31be9ba83645e5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20Chaves?= Date: Mon, 30 Jan 2023 19:56:32 -0300 Subject: [PATCH 013/144] Feat: Add pagination to see all markers page. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Jonathan Oliveira Co-Authored-By: Antônio Rangel --- src/core/jinja2/core/collection.jinja2 | 15 ++++++++++++++- src/core/urls.py | 11 ++++++----- src/core/views/markers.py | 15 +++++++++++++++ .../jinja2/users/components/elements-modal.jinja2 | 2 +- 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/core/jinja2/core/collection.jinja2 b/src/core/jinja2/core/collection.jinja2 index 9522a24a..e9a0fc0b 100644 --- a/src/core/jinja2/core/collection.jinja2 +++ b/src/core/jinja2/core/collection.jinja2 @@ -35,7 +35,20 @@ {% include "users/components/item-list.jinja2" %} {% endwith %} {% if seeall == False %} - {{_("All Markers")}} + {{_("All Markers")}} + {% endif %} + {% if seeall == True %} + {% endif %} {% endif %} diff --git a/src/core/urls.py b/src/core/urls.py index c8572022..38add3fb 100644 --- a/src/core/urls.py +++ b/src/core/urls.py @@ -26,14 +26,15 @@ ) api_router = DefaultRouter() -api_router.register("markers", MarkerViewset, basename="marker") -api_router.register("objects", ObjectViewset, basename="object") -api_router.register("artworks", ArtworkViewset, basename="artwork") -api_router.register("exhibits", ExhibitViewset, basename="exhibit") +# api_router.register("markers", MarkerViewset, basename="marker") +# api_router.register("objects", ObjectViewset, basename="object") +# api_router.register("artworks", ArtworkViewset, basename="artwork") +# api_router.register("exhibits", ExhibitViewset, basename="exhibit") urlpatterns = [ path("", home, name="home"), - path("api/v1/", include(api_router.urls)), + # path("api/v1/", include(api_router.urls)), + path("api/v1/markers/", MarkerViewset.see_markers, name="markers-list"), path("documentation/", documentation, name="documentation"), path("community/", community, name="community"), path("collection/", collection, name="collection"), diff --git a/src/core/views/markers.py b/src/core/views/markers.py index bd185f5a..d20141e0 100644 --- a/src/core/views/markers.py +++ b/src/core/views/markers.py @@ -1,5 +1,8 @@ from rest_framework.mixins import ListModelMixin, RetrieveModelMixin from rest_framework.viewsets import GenericViewSet +from django.views.decorators.http import require_http_methods +from django.shortcuts import redirect, render +from django.core.paginator import Paginator from core.models import Marker from core.serializers.markers import MarkerSerializer @@ -8,3 +11,15 @@ class MarkerViewset(ListModelMixin, RetrieveModelMixin, GenericViewSet): serializer_class = MarkerSerializer queryset = Marker.objects.all().order_by("id") + + @require_http_methods(["GET"]) + def see_markers(request): + all_markers = Marker.objects.all().order_by("id") + marker_paginator = Paginator(all_markers, 3) + marker_page_number = request.GET.get("page", 1) + marker_list = marker_paginator.get_page(marker_page_number) + ctx = { + "markers": marker_list, + "seeall": True, + } + return render(request, "core/collection.jinja2", ctx) diff --git a/src/users/jinja2/users/components/elements-modal.jinja2 b/src/users/jinja2/users/components/elements-modal.jinja2 index d06d1d9e..ae0b79a4 100644 --- a/src/users/jinja2/users/components/elements-modal.jinja2 +++ b/src/users/jinja2/users/components/elements-modal.jinja2 @@ -92,7 +92,7 @@ $('#modal-title').text({{ _("This is a Jandig ")|tojson }} + elemType); } - let elemUrl = {{url('marker-list')|tojson}}; + let elemUrl = {{url('markers-list')|tojson}}; elemUrl += element.attr('id'); if(elemType != "artwork"){ From b7234df01fa3cbdd752d2871df6ae7e50fbfe674 Mon Sep 17 00:00:00 2001 From: Jonathan Oliveira Date: Mon, 30 Jan 2023 21:46:01 -0300 Subject: [PATCH 014/144] feat(Collection): add pagination for all elements of collection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Antônio Rangel Co-Authored-By: João Pedro Chaves issue https://github.com/memeLab/Jandig/issues/518 fix the error caused by https://github.com/memeLab/Jandig/pull/516 --- src/core/jinja2/core/collection.jinja2 | 74 +++++++------------ src/core/urls.py | 11 ++- src/core/views/markers.py | 15 ---- src/core/views/views.py | 41 +++++----- .../users/components/elements-modal.jinja2 | 2 +- 5 files changed, 52 insertions(+), 91 deletions(-) diff --git a/src/core/jinja2/core/collection.jinja2 b/src/core/jinja2/core/collection.jinja2 index e9a0fc0b..c58dae76 100644 --- a/src/core/jinja2/core/collection.jinja2 +++ b/src/core/jinja2/core/collection.jinja2 @@ -5,66 +5,44 @@ {% endblock %}
- {# FIXME: maybe this can be improved #} - {% if exhibits %} -

{{_("Jandig Exhibitions")}}

- {% with repository_list = exhibits, element_type="exhibit"%} - {% include "users/components/item-list.jinja2" %} - {% endwith %} - {% if seeall == False %} - {{_("All Exhibits")}} - {% endif %} - {% endif %} - - {% if artworks %} -

{{_("Jandig Artworks")}}

- {% with repository_list = artworks, element_type="artwork" %} - {% include "users/components/item-list.jinja2" %} - {% endwith %} - {% if seeall == False %} - {{_("All Artworks")}} - {% endif %} - {% endif %} - - {% if markers %} -

{{_("Jandig Markers")}}

- {% with repository_list = markers, element_type="marker"%} + {% for element_type, repository_list, class_type in [("exhibit",exhibits, "titExb"), + ("artwork",artworks, "titArt"), + ("marker",markers, "titMrk"), + ("object",objects, "titObj") + ]%} + + {% if repository_list %} +

{{_("Jandig " + element_type.capitalize() + "s")}}

+ {% with repository_list = repository_list, element_type=element_type %} {% include "users/components/item-list.jinja2" %} {% endwith %} {% if seeall == False %} - {{_("All Markers")}} + {{_("All " + element_type.capitalize() + "s")}} {% endif %} {% if seeall == True %} - + {% endif %} {% endif %} + {% endfor %} + {% if not exhibits and not artworks and not markers and not objects %} +

{{_("We found no content on your Collection, try uploading an object.")}}

+ {% endif %} - {% if objects %} -

{{_("Jandig Objects")}}

- {% with repository_list = objects, element_type="object" %} - {% include "users/components/item-list.jinja2" %} - {% endwith%} - {% if seeall == False %} - {{_("All Objects")}} - {% endif %} - {% endif %} - {% if not exhibits and not artworks and not markers and not objects %} -

{{_("We found no content on your Collection, try uploading an object.")}}

- {% endif %} {% include "users/components/elements-modal.jinja2" %}
diff --git a/src/core/urls.py b/src/core/urls.py index 38add3fb..c8572022 100644 --- a/src/core/urls.py +++ b/src/core/urls.py @@ -26,15 +26,14 @@ ) api_router = DefaultRouter() -# api_router.register("markers", MarkerViewset, basename="marker") -# api_router.register("objects", ObjectViewset, basename="object") -# api_router.register("artworks", ArtworkViewset, basename="artwork") -# api_router.register("exhibits", ExhibitViewset, basename="exhibit") +api_router.register("markers", MarkerViewset, basename="marker") +api_router.register("objects", ObjectViewset, basename="object") +api_router.register("artworks", ArtworkViewset, basename="artwork") +api_router.register("exhibits", ExhibitViewset, basename="exhibit") urlpatterns = [ path("", home, name="home"), - # path("api/v1/", include(api_router.urls)), - path("api/v1/markers/", MarkerViewset.see_markers, name="markers-list"), + path("api/v1/", include(api_router.urls)), path("documentation/", documentation, name="documentation"), path("community/", community, name="community"), path("collection/", collection, name="collection"), diff --git a/src/core/views/markers.py b/src/core/views/markers.py index d20141e0..bd185f5a 100644 --- a/src/core/views/markers.py +++ b/src/core/views/markers.py @@ -1,8 +1,5 @@ from rest_framework.mixins import ListModelMixin, RetrieveModelMixin from rest_framework.viewsets import GenericViewSet -from django.views.decorators.http import require_http_methods -from django.shortcuts import redirect, render -from django.core.paginator import Paginator from core.models import Marker from core.serializers.markers import MarkerSerializer @@ -11,15 +8,3 @@ class MarkerViewset(ListModelMixin, RetrieveModelMixin, GenericViewSet): serializer_class = MarkerSerializer queryset = Marker.objects.all().order_by("id") - - @require_http_methods(["GET"]) - def see_markers(request): - all_markers = Marker.objects.all().order_by("id") - marker_paginator = Paginator(all_markers, 3) - marker_page_number = request.GET.get("page", 1) - marker_list = marker_paginator.get_page(marker_page_number) - ctx = { - "markers": marker_list, - "seeall": True, - } - return render(request, "core/collection.jinja2", ctx) diff --git a/src/core/views/views.py b/src/core/views/views.py index 7c825482..a3511f1a 100644 --- a/src/core/views/views.py +++ b/src/core/views/views.py @@ -1,3 +1,4 @@ +from django.core.paginator import Paginator from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import redirect, render from django.urls import reverse @@ -31,10 +32,10 @@ def index(request): @require_http_methods(["GET"]) def collection(request): - exhibits = Exhibit.objects.all().order_by("-id")[:4] - artworks = Artwork.objects.all().order_by("-id")[:6] - markers = Marker.objects.all().order_by("-id")[:8] - objects = Object.objects.all().order_by("-id")[:8] + exhibits = Exhibit.objects.all().order_by("creation_date")[:4] + artworks =Artwork.objects.all().order_by("created_at")[:6] + markers = Marker.objects.all().order_by("uploaded_at")[:8] + objects = Object.objects.all().order_by("uploaded_at")[:8] ctx = { "artworks": artworks, @@ -52,24 +53,22 @@ def collection(request): def see_all(request): request_type = request.GET.get("which") ctx = {} - if request_type == "objects": - ctx = { - "objects": Object.objects.all(), - "seeall": True, - } - elif request_type == "markers": - ctx = { - "markers": Marker.objects.all(), - "seeall": True, - } - elif request_type == "artworks": - ctx = { - "artworks": Artwork.objects.all().order_by("-id"), - "seeall": True, - } - elif request_type == "exhibits": + per_page = 20 + page = request.GET.get("page", 1) + + data_types = { + "objects": Object.objects.all().order_by("uploaded_at"), + "markers": Marker.objects.all().order_by("uploaded_at"), + "artworks": Artwork.objects.all().order_by("created_at"), + "exhibits": Exhibit.objects.all().order_by("creation_date"), + } + + data = data_types.get(request_type) + if data: + paginator = Paginator(data, per_page) + data = paginator.get_page(page) ctx = { - "exhibits": Exhibit.objects.all(), + request_type: data, "seeall": True, } diff --git a/src/users/jinja2/users/components/elements-modal.jinja2 b/src/users/jinja2/users/components/elements-modal.jinja2 index ae0b79a4..d06d1d9e 100644 --- a/src/users/jinja2/users/components/elements-modal.jinja2 +++ b/src/users/jinja2/users/components/elements-modal.jinja2 @@ -92,7 +92,7 @@ $('#modal-title').text({{ _("This is a Jandig ")|tojson }} + elemType); } - let elemUrl = {{url('markers-list')|tojson}}; + let elemUrl = {{url('marker-list')|tojson}}; elemUrl += element.attr('id'); if(elemType != "artwork"){ From 031b0f7927fdbccea790f9a87498fda680bc9c75 Mon Sep 17 00:00:00 2001 From: Jonathan Oliveira Date: Tue, 7 Feb 2023 10:44:00 -0300 Subject: [PATCH 015/144] feat(Pagination): create paging buttons dynamically --- src/core/jinja2/core/collection.jinja2 | 23 ++++++++++++++++------- src/core/urls.py | 2 +- src/core/views/views.py | 8 +++++--- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/core/jinja2/core/collection.jinja2 b/src/core/jinja2/core/collection.jinja2 index c58dae76..455fd010 100644 --- a/src/core/jinja2/core/collection.jinja2 +++ b/src/core/jinja2/core/collection.jinja2 @@ -25,13 +25,22 @@ {% if seeall == True %} diff --git a/src/core/urls.py b/src/core/urls.py index c8572022..eb4cc5f7 100644 --- a/src/core/urls.py +++ b/src/core/urls.py @@ -45,7 +45,7 @@ path("manifest.json", manifest, name="manifest"), path("upload", upload_image, name="upload-image"), path("i18n/", include("django.conf.urls.i18n")), - path("see_all/", see_all, name="see-all"), + path("see_all/", see_all, name="see_all"), path("robots.txt/", robots_txt), path(settings.HEALTH_CHECK_URL, health_check), ] diff --git a/src/core/views/views.py b/src/core/views/views.py index a3511f1a..8e38659d 100644 --- a/src/core/views/views.py +++ b/src/core/views/views.py @@ -19,7 +19,9 @@ def service_worker(request): @cache_page(60 * 60) @require_http_methods(["GET"]) def manifest(request): - return render(request, "core/manifest.json", content_type="application/x-javascript") + return render( + request, "core/manifest.json", content_type="application/x-javascript" + ) def index(request): @@ -31,9 +33,8 @@ def index(request): @cache_page(60 * 2) @require_http_methods(["GET"]) def collection(request): - exhibits = Exhibit.objects.all().order_by("creation_date")[:4] - artworks =Artwork.objects.all().order_by("created_at")[:6] + artworks = Artwork.objects.all().order_by("created_at")[:6] markers = Marker.objects.all().order_by("uploaded_at")[:8] objects = Object.objects.all().order_by("uploaded_at")[:8] @@ -67,6 +68,7 @@ def see_all(request): if data: paginator = Paginator(data, per_page) data = paginator.get_page(page) + data.adjusted_elided_pages = paginator.get_elided_page_range(page) ctx = { request_type: data, "seeall": True, From 52d3051abb9d579e0e8c68218977e6963b0de363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20Chaves?= Date: Wed, 8 Feb 2023 17:13:17 -0300 Subject: [PATCH 016/144] feat(Pagination): add style to current page identifier. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Jonathan Oliveira Co-Authored-By: Antônio Rangel --- src/core/jinja2/core/collection.jinja2 | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/core/jinja2/core/collection.jinja2 b/src/core/jinja2/core/collection.jinja2 index 455fd010..cd4133ff 100644 --- a/src/core/jinja2/core/collection.jinja2 +++ b/src/core/jinja2/core/collection.jinja2 @@ -26,13 +26,12 @@