From 6eb3492a97409fa7121cf49882b2bafd46589dc3 Mon Sep 17 00:00:00 2001 From: Matheus-mVilela Date: Mon, 13 Dec 2021 09:18:50 -0300 Subject: [PATCH] method export to_csv --- pluto/requirements.txt | 5 ----- pluto/starfish/models.py | 20 ++++++++++++++++---- pluto/starfish/routes.py | 4 ++-- pluto/starfish/views.py | 16 +++++++++++++++- requirements.txt | 2 ++ 5 files changed, 35 insertions(+), 12 deletions(-) delete mode 100644 pluto/requirements.txt diff --git a/pluto/requirements.txt b/pluto/requirements.txt deleted file mode 100644 index c49a76e..0000000 --- a/pluto/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -Django==3.2.10 -axblack==20210720 -djangorestframework==3.12.4 -pytz==2021.3 -django-cors-headers==3.10.1 \ No newline at end of file diff --git a/pluto/starfish/models.py b/pluto/starfish/models.py index 9abcaa2..10add24 100644 --- a/pluto/starfish/models.py +++ b/pluto/starfish/models.py @@ -1,7 +1,8 @@ from django.db import models - from starfish import choices - +import pandas as pd +import pendulum +import os class Team(models.Model): name = models.CharField(verbose_name="Nome", max_length=64, null=False) @@ -76,5 +77,16 @@ class Meta: def __str__(self): return self.goal - def export(self): - pass + def export(self, data): + now = pendulum.now().strftime("%Y-%m-%dT%H:%M:%S") + filename = f"review-{now}.csv" + filepath = 'csv_review' + + if not os.path.exists(filepath): + os.mkdir(filepath) + + dir = os.path.join(filepath, filename) + df = pd.DataFrame.from_dict(data, orient= 'index') + df.to_csv(dir) + + return filename diff --git a/pluto/starfish/routes.py b/pluto/starfish/routes.py index a2d43f0..b54c7dc 100644 --- a/pluto/starfish/routes.py +++ b/pluto/starfish/routes.py @@ -5,6 +5,6 @@ router = routers.DefaultRouter() router.register(r"teams", views.TeamViewSet, basename="team") -router.register(r"members", views.TeamViewSet, basename="member") -router.register(r"reviews", views.TeamViewSet, basename="review") +router.register(r"members", views.MemberViewSet, basename="member") +router.register(r"reviews", views.ReviewViewSet, basename="review") router.register(r"suggestions", views.SuggestionViewSet, basename="suggestions") diff --git a/pluto/starfish/views.py b/pluto/starfish/views.py index a82728a..50bc6ef 100644 --- a/pluto/starfish/views.py +++ b/pluto/starfish/views.py @@ -38,6 +38,21 @@ class ReviewViewSet(viewsets.ModelViewSet): search_fields = ["goal", "suggestions__text"] ordering_fields = ["-id"] + @decorators.action( + methods=["post"], + url_path="export", + url_name="export", + detail=True, + ) + def export_csv(self, request, pk): + review = models.Review.objects.get(id=pk) + serializer = serializers.ReviewSerializer(review) + + review.export(data=serializer.data) + + return response.Response(status=status.HTTP_200_OK) + + class SuggestionViewSet(viewsets.ModelViewSet): queryset = models.Suggestion.objects.all() @@ -55,5 +70,4 @@ def vote(self, request, pk): member = models.Member.objects.get(id=request.data["id_member"]) suggestion.vote(member=member) - return response.Response(status=status.HTTP_200_OK) diff --git a/requirements.txt b/requirements.txt index 485fcfd..0215cfc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,3 +6,5 @@ django-filter==1.0.1 django-cors-headers==3.10.1 django-jsonfield==1.4.1 django-utils-six==2.0 +pandas==1.3.4 +pendulum==2.1.2 \ No newline at end of file