Skip to content

Commit

Permalink
adding cities and states, serializers and forms - institutotim#4
Browse files Browse the repository at this point in the history
  • Loading branch information
moacirmoda committed Oct 14, 2016
1 parent c3c468c commit b5754d0
Show file tree
Hide file tree
Showing 6 changed files with 28,007 additions and 4 deletions.
7 changes: 5 additions & 2 deletions accounts/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ class SignupForm(AcceptTermsForm):

first_name = forms.CharField(max_length=30, label=_('First Name'), required=False)
last_name = forms.CharField(max_length=30, label=_('Last Name'), required=False)
city = forms.CharField(max_length=30, label=_('City'), required=False)
state = StateChoiceField(label=_('Province'), required=False)
state = forms.CharField(max_length=2, label=_('Province'), widget=forms.Select, required=False)
city = forms.CharField(max_length=50, label=_('City'), widget=forms.Select, required=False)
how_you_know = forms.CharField(max_length=50, label=_('How do you know the platform?'), required=False)
how_you_know_complement = forms.CharField(max_length=50, label=_('Complement for "How do you know the platform?"'), required=False)

Expand All @@ -94,6 +94,9 @@ def __init__(self, *args, **kwargs):
self.fields['state'].widget.attrs['required'] = True
self.fields['state'].widget.attrs['class'] = 'form-control'

self.fields['city'].widget.attrs['required'] = True
self.fields['city'].widget.attrs['class'] = 'form-control'

def signup(self, request, user):
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
Expand Down
10 changes: 10 additions & 0 deletions accounts/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,13 @@ class TimtecUserAdminCertificateSerializer(TimtecUserSerializer):
class Meta:
model = get_user_model()
fields = ('id', 'name', 'email', 'username')


class StateSerializer(serializers.Serializer):
code = serializers.CharField(read_only=True)
name = serializers.CharField(read_only=True)


class CitySerializer(serializers.Serializer):
state = serializers.CharField(read_only=True)
name = serializers.CharField(read_only=True)
27 changes: 26 additions & 1 deletion accounts/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@
from accounts.models import UserSocialAccount
from accounts.forms import ProfileEditForm, AcceptTermsForm, UserSocialAccountForm
from accounts.serializers import TimtecUserSerializer, TimtecUserAdminSerializer
from accounts.serializers import StateSerializer, CitySerializer
from braces.views import LoginRequiredMixin
from rest_framework.response import Response
from core.permissions import IsAdminOrReadOnly

from rest_framework import viewsets
from rest_framework import filters
Expand Down Expand Up @@ -168,7 +171,7 @@ class AcceptTermsView(FormView):
success_url = reverse_lazy('courses')

def dispatch(self, request, *args, **kwargs):
if request.user.is_authenticated():
if request.user.is_authenticated() and request.user.accepted_terms:
return redirect(reverse_lazy('home_view'))
return super(AcceptTermsView, self).dispatch(request, *args, **kwargs)

Expand All @@ -192,3 +195,25 @@ def get_context_data(self, **kwargs):
if next_url:
context['next_url'] = next_url
return context


class StateViewSet(viewsets.ViewSet):
permission_classes = (IsAdminOrReadOnly,)

def list(self, request):
from utils.cities import states
serializer = StateSerializer(states, many=True)
return Response(serializer.data)


class CityViewSet(viewsets.ViewSet):
permission_classes = (IsAdminOrReadOnly,)

def list(self, request):
from utils.cities import cities

if self.request.GET.get('state', None):
cities = [item for item in cities if item['state'] == self.request.GET.get('state')]

serializer = CitySerializer(cities, many=True)
return Response(serializer.data)
5 changes: 4 additions & 1 deletion timtec/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
from django.views.generic import TemplateView
from accounts.views import (ProfileEditView, ProfileView, UserSearchView,
TimtecUserViewSet, TimtecUserAdminViewSet, StudentSearchView,
AcceptTermsView, UserSocialAccountCreateView, UserSocialAccountDeleteView)
AcceptTermsView, UserSocialAccountCreateView, UserSocialAccountDeleteView,
StateViewSet, CityViewSet)

from core.views import (CourseView, GenericCourseView, CourseViewSet,
CourseProfessorViewSet, EnrollCourseView, HomeView,
Expand Down Expand Up @@ -75,6 +76,8 @@
router.register(r'evaluation', EvaluationViewSet)
router.register(r'certificate_template', CertificateTemplateViewSet)
router.register(r'certificate_template_images', CertificateTemplateImageViewSet)
router.register(r'states', StateViewSet, 'test')
router.register(r'cities', CityViewSet, 'test2')

urlpatterns = patterns(
'',
Expand Down
Empty file added utils/__init__.py
Empty file.
Loading

0 comments on commit b5754d0

Please sign in to comment.