Skip to content

Commit

Permalink
Merge pull request #95 from fga-gpp-mds/TS04/ContactUs
Browse files Browse the repository at this point in the history
Ts04/contact us
  • Loading branch information
mateusdemorais authored Jun 15, 2018
2 parents ed27f1c + ed24e86 commit 4e74479
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 8 deletions.
30 changes: 28 additions & 2 deletions api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,13 @@
('6', '25000.00+'),
)

CONTACT_CHOICES = (
('A', 'Dúvida'),
('B', 'Sugestão'),
('C', 'Reclamação'),
('D', 'Outro'),
)


class SocialInformation(models.Model):

Expand All @@ -81,9 +88,17 @@ class SocialInformation(models.Model):
related_name='social_information',
on_delete=models.CASCADE
)
federal_unit = models.CharField(max_length=150, choices=UF_CHOICES, default='N')
federal_unit = models.CharField(
max_length=150,
choices=UF_CHOICES,
default='N'
)
city = models.CharField(max_length=150, blank=True)
income = models.CharField(max_length=100, choices=INCOME_CHOICES, default='-1')
income = models.CharField(
max_length=100,
choices=INCOME_CHOICES,
default='-1'
)
education = models.CharField(
max_length=150, choices=EDUCATION_CHOICES, default='N'
)
Expand Down Expand Up @@ -210,3 +225,14 @@ class ExtendedUser(models.Model):
related_name='extended_user'
)
should_update = models.BooleanField(default=True)


class ContactUs(models.Model):
topic = models.CharField(max_length=150)
email = models.EmailField(max_length=250, blank=True)
choice = models.CharField(
max_length=1,
choices=CONTACT_CHOICES,
default='A'
)
text = models.CharField(max_length=500)
14 changes: 13 additions & 1 deletion api/serializers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from .models import (
Compatibility, ExtendedUser, Parliamentary, ParliamentaryVote, Proposition,
SocialInformation, UserFollowing, UserVote
SocialInformation, UserFollowing, UserVote, ContactUs
)
from rest_framework import serializers
from django.contrib.auth.models import User
Expand Down Expand Up @@ -149,3 +149,15 @@ class Meta:
'matching_votes',
'compatibility'
]


class ContactUsSerializer(serializers.ModelSerializer):
class Meta:
model = ContactUs
fields = [
'id',
'topic',
'email',
'choice',
'text'
]
4 changes: 2 additions & 2 deletions api/tests.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import datetime
from django.test import Client
from django.contrib.auth.models import User
from .models import SocialInformation
from .models import SocialInformation, ContactUs
from django.urls import include, path, reverse
from rest_framework.test import APIRequestFactory, APITestCase
from .views import SocialInformationViewset, UserViewset
from .views import SocialInformationViewset, UserViewset, ContactUsViewset
from rest_framework import serializers, status
from django.utils.translation import ugettext_lazy as _
# Create your tests here.
Expand Down
41 changes: 39 additions & 2 deletions api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@

from .models import (
ExtendedUser, Parliamentary, ParliamentaryVote, Proposition,
SocialInformation, UserFollowing, UserVote
SocialInformation, UserFollowing, UserVote, ContactUs
)
from .permissions import SocialInformationPermissions, UserPermissions
from .serializers import (
CompatibilitySerializer, ParliamentarySerializer, PropositionSerializer,
SocialInformationSerializer, UserFollowingSerializer, UserSerializer,
UserVoteSerializer
UserVoteSerializer, ContactUsSerializer
)
from .utils import (
parliamentarians_filter,
Expand Down Expand Up @@ -1196,3 +1196,40 @@ def most_compatible(self, request):
return paginator.get_paginated_response(page)

return Response(compatibilities_list)


class ContactUsViewset(mixins.CreateModelMixin,
viewsets.GenericViewSet):
"""Description: ContactUsViewset.
API endpoint that allows contact us
to be viewed, created, deleted or edited.
"""
serializer_class = ContactUsSerializer
class_name = ContactUs
queryset = ContactUs.objects.all()

def create(self, request):
"""
API endpoint that allows all 'contact us' to be created.
---
Body example:
```
{
"topic": "title",
"email": "email@email.com",
"choice": "A",
"text": "message"
}
```
Response example:
```
{
"id": 1,
"topic": "title",
"email": "email@email.com",
"choice": "A",
"text": "message"
}
```
"""
return super(ContactUsViewset, self).create(request)
3 changes: 2 additions & 1 deletion voxpopapi/urls.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from api.views import (
CustomObtainToken, LoaderViewSet, ParliamentaryViewset, PropositionViewset,
SocialInformationViewset, StatisticViewset, UserFollowingViewset,
UserViewset, UserVoteViewset
UserViewset, UserVoteViewset, ContactUsViewset
)

from django.conf.urls import include, url
Expand All @@ -14,6 +14,7 @@
schema_view = get_swagger_view(title='VoxPop API')

router = routers.DefaultRouter()
router.register(r'contact_us', ContactUsViewset)
router.register(r'users', UserViewset)
router.register(r'social_informations', SocialInformationViewset)
router.register(r'loader', LoaderViewSet, 'loader')
Expand Down

0 comments on commit 4e74479

Please sign in to comment.