Skip to content

Commit

Permalink
Merge pull request #14 from Ilhasoft/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
dyohan9 authored Jan 20, 2021
2 parents 32dc63e + 0d73fe7 commit 1c64d0c
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 3 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ You can set environment variables in your OS, write on ```.env``` file or pass v
| AWS_SECRET_ACCESS_KEY | ```string``` | ```None``` | Specify Secret Access Key ID S3.
| AWS_STORAGE_BUCKET_NAME | ```string``` | ```None``` | Specify Bucket Name S3.
| AWS_S3_REGION_NAME | ```string``` | ```None``` | Specify the Bucket S3 region.
| INTELIGENCE_URL | ```string``` | ```https://bothub.it/``` | Specify the URL of the intelligence service.
| FLOWS_URL | ```string``` | ```https://new.push.al/``` | Specify the URL of the flows service.


## License
Expand Down
22 changes: 22 additions & 0 deletions weni/api/v1/dashboard/serializers.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from django.conf import settings
from rest_framework import serializers

from weni.authentication.models import User
from weni.common.models import Newsletter, ServiceStatus


Expand Down Expand Up @@ -28,3 +30,23 @@ class Meta:
service__url = serializers.CharField(source="service.url")
service__default = serializers.BooleanField(source="service.default")
service__last_updated = serializers.DateTimeField(source="service.last_updated")


class DashboardInfoSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ["menu"]
ref_name = None

menu = serializers.SerializerMethodField()

def get_menu(self, obj):
return {
"inteligence": settings.INTELIGENCE_URL,
"flows": settings.FLOWS_URL,
"chat": list(
obj.service_status.filter(service__rocket_chat=True).values_list(
"service__url", flat=True
)
),
}
22 changes: 22 additions & 0 deletions weni/api/v1/dashboard/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
from weni.api.v1.dashboard.serializers import (
NewsletterSerializer,
StatusServiceSerializer,
DashboardInfoSerializer,
)
from weni.authentication.models import User
from weni.common.models import Newsletter, ServiceStatus


Expand Down Expand Up @@ -35,3 +37,23 @@ def get_queryset(self, *args, **kwargs):
return self.queryset.filter(
Q(user=self.request.user) | Q(service__default=True)
)


class DashboardInfoViewSet(mixins.RetrieveModelMixin, GenericViewSet):
"""
Manager Dashboard
"""

serializer_class = DashboardInfoSerializer
queryset = User.objects
lookup_field = None
permission_classes = [IsAuthenticated]

def get_object(self, *args, **kwargs):
request = self.request
user = request.user

# May raise a permission denied
self.check_object_permissions(self.request, user)

return user
7 changes: 6 additions & 1 deletion weni/api/v1/routers.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
from rest_framework import routers

from weni.api.v1.account.views import MyUserProfileViewSet
from weni.api.v1.dashboard.views import NewsletterViewSet, StatusServiceViewSet
from weni.api.v1.dashboard.views import (
NewsletterViewSet,
StatusServiceViewSet,
DashboardInfoViewSet,
)


class Router(routers.SimpleRouter): # pragma: no cover
Expand Down Expand Up @@ -80,4 +84,5 @@ def get_lookup_regex(self, viewset, lookup_prefix=""): # pragma: no cover
router = Router()
router.register("dashboard/newsletter", NewsletterViewSet)
router.register("dashboard/status-service", StatusServiceViewSet)
router.register("dashboard/info", DashboardInfoViewSet)
router.register("account/my-profile", MyUserProfileViewSet)
31 changes: 29 additions & 2 deletions weni/api/v1/tests/test_dashboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
from django.test import RequestFactory, TestCase
from rest_framework import status

from weni.api.v1.dashboard.views import StatusServiceViewSet
from weni.api.v1.dashboard.views import StatusServiceViewSet, DashboardInfoViewSet
from weni.api.v1.tests.utils import create_user_and_token
from weni.common.models import Service
from weni.common.models import Service, ServiceStatus


class ListStatusServiceTestCase(TestCase):
Expand Down Expand Up @@ -33,3 +33,30 @@ def test_status_okay(self):
self.assertEqual(content_data["count"], 1)
self.assertEqual(len(content_data["results"]), 1)
self.assertEqual(response.status_code, status.HTTP_200_OK)


class RetrieveDashboardInfoTestCase(TestCase):
def setUp(self):
self.factory = RequestFactory()

self.service = Service.objects.create(
url="http://test-rocketchat.com", status=False, rocket_chat=True
)

self.user, self.token = create_user_and_token()

def request(self, token):
authorization_header = {"HTTP_AUTHORIZATION": "Token {}".format(token)}
request = self.factory.get("/v1/dashboard/info/", **authorization_header)
response = DashboardInfoViewSet.as_view({"get": "retrieve"})(request)
response.render()
content_data = json.loads(response.content)
return (response, content_data)

def test_okay(self):
ServiceStatus.objects.create(service=self.service, user=self.user)
response, content_data = self.request(self.token)
self.assertIsNotNone(content_data["menu"]["inteligence"])
self.assertIsNotNone(content_data["menu"]["flows"])
self.assertEqual(len(content_data["menu"]["chat"]), 1)
self.assertEqual(response.status_code, status.HTTP_200_OK)
7 changes: 7 additions & 0 deletions weni/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
AWS_SECRET_ACCESS_KEY=(str, None),
AWS_STORAGE_BUCKET_NAME=(str, None),
AWS_S3_REGION_NAME=(str, None),
INTELIGENCE_URL=(str, "https://bothub.it/"),
FLOWS_URL=(str, "https://new.push.al/"),
)

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
Expand Down Expand Up @@ -215,3 +217,8 @@
# cors headers

CORS_ORIGIN_ALLOW_ALL = True

# Products URL

INTELIGENCE_URL = env.str("INTELIGENCE_URL")
FLOWS_URL = env.str("FLOWS_URL")

0 comments on commit 1c64d0c

Please sign in to comment.