From 7bd689ae3e523eabc474634c83a544d0bb205202 Mon Sep 17 00:00:00 2001 From: Isha Gupta Date: Tue, 15 Oct 2019 09:25:23 +0530 Subject: [PATCH 01/11] second commit --- Team/Team/__init__.py | 0 Team/Team/__pycache__/__init__.cpython-37.pyc | Bin 0 -> 147 bytes Team/Team/__pycache__/settings.cpython-37.pyc | Bin 0 -> 2005 bytes Team/Team/__pycache__/urls.cpython-37.pyc | Bin 0 -> 975 bytes Team/Team/__pycache__/wsgi.cpython-37.pyc | Bin 0 -> 544 bytes Team/Team/settings.py | 125 ++++++++++++++++++ Team/Team/urls.py | 22 +++ Team/Team/wsgi.py | 16 +++ Team/db.sqlite3 | 0 Team/manage.py | 21 +++ Team/teammembers/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 154 bytes .../__pycache__/admin.cpython-37.pyc | Bin 0 -> 271 bytes .../__pycache__/apps.cpython-37.pyc | Bin 0 -> 380 bytes .../__pycache__/models.cpython-37.pyc | Bin 0 -> 765 bytes .../__pycache__/serializers.cpython-37.pyc | Bin 0 -> 2162 bytes .../__pycache__/urls.cpython-37.pyc | Bin 0 -> 362 bytes .../__pycache__/views.cpython-37.pyc | Bin 0 -> 1748 bytes Team/teammembers/admin.py | 6 + Team/teammembers/apps.py | 5 + Team/teammembers/migrations/0001_initial.py | 25 ++++ Team/teammembers/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-37.pyc | Bin 0 -> 815 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 165 bytes Team/teammembers/models.py | 17 +++ Team/teammembers/serializers.py | 48 +++++++ Team/teammembers/tests.py | 3 + Team/teammembers/urls.py | 9 ++ Team/teammembers/views.py | 44 ++++++ 29 files changed, 341 insertions(+) create mode 100644 Team/Team/__init__.py create mode 100644 Team/Team/__pycache__/__init__.cpython-37.pyc create mode 100644 Team/Team/__pycache__/settings.cpython-37.pyc create mode 100644 Team/Team/__pycache__/urls.cpython-37.pyc create mode 100644 Team/Team/__pycache__/wsgi.cpython-37.pyc create mode 100644 Team/Team/settings.py create mode 100644 Team/Team/urls.py create mode 100644 Team/Team/wsgi.py create mode 100644 Team/db.sqlite3 create mode 100755 Team/manage.py create mode 100644 Team/teammembers/__init__.py create mode 100644 Team/teammembers/__pycache__/__init__.cpython-37.pyc create mode 100644 Team/teammembers/__pycache__/admin.cpython-37.pyc create mode 100644 Team/teammembers/__pycache__/apps.cpython-37.pyc create mode 100644 Team/teammembers/__pycache__/models.cpython-37.pyc create mode 100644 Team/teammembers/__pycache__/serializers.cpython-37.pyc create mode 100644 Team/teammembers/__pycache__/urls.cpython-37.pyc create mode 100644 Team/teammembers/__pycache__/views.cpython-37.pyc create mode 100644 Team/teammembers/admin.py create mode 100644 Team/teammembers/apps.py create mode 100644 Team/teammembers/migrations/0001_initial.py create mode 100644 Team/teammembers/migrations/__init__.py create mode 100644 Team/teammembers/migrations/__pycache__/0001_initial.cpython-37.pyc create mode 100644 Team/teammembers/migrations/__pycache__/__init__.cpython-37.pyc create mode 100644 Team/teammembers/models.py create mode 100644 Team/teammembers/serializers.py create mode 100644 Team/teammembers/tests.py create mode 100644 Team/teammembers/urls.py create mode 100644 Team/teammembers/views.py diff --git a/Team/Team/__init__.py b/Team/Team/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/Team/Team/__pycache__/__init__.cpython-37.pyc b/Team/Team/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..387cb001eca49547e3613f19fb4af9248537df8a GIT binary patch literal 147 zcmZ?b<>g`kg6b>K!yVl7qb9~6oz01O-8?!3`HPe1o6v8KeRZts8~O< zI3rQtCAB!aB)>pEDKR-aH7`XsvA8%hJuf#kuS7p2H8B@L#K&jmWtPOp>lIYq;;_lh PPbtkwwF8;@8HgDGVi+Ur literal 0 HcmV?d00001 diff --git a/Team/Team/__pycache__/settings.cpython-37.pyc b/Team/Team/__pycache__/settings.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..033576ed44793d0ba28aa41e36745f955ace78da GIT binary patch literal 2005 zcmb7ES##S|6t*43Tb8C-+R_v%nvGB*Wt)&;3RA^af~St1u@nND0gbG4Z7b2@>RxBj zZ|MV_;e{9e2Y=zd!V7i2jh^23}hh(d6;Ns zj66)j6imYdn1P2di<}9VGbUlanE(M6;1N8AC-6~IaFX!!ozP4gQ?O`E!!!68K7r>T z!l&>8mfoeEr11cjjTu-m9-_BdeCP0;hgD+%Qd(kt&00?;68Yk}=C2Yhs6@39)Z+TiTZPQ2P)K zdO=7;$4A?q#hkzw@nJ0oy*V!V0-ck5i?KHSN|qt8snqi^h`x!;JnHV(gPGk9ij))VAmzLWh^#Aw@Nn^;-Uzp)UCEE5Q=cld6^c%1D z_RamPCF^TzWvk(P%gfQVd+n}n?yjzQWUH}qd3o`2$F_Y-k6thY)FWP)03PmVJR;A$@-sS{|vkb)BD@h znC)i%nwi)sHbxYLH2Q4R$bA_JNWIgHKK~DrA$f~k!=jgc+1u)j!Tf;b802VYMEDlK z4=4=w)&-t9PzrC{KsASs7hmJ<02jc*Znw zkeMb=1(XYIi?uLHC-kudc*d&JE+=c6ahI8gF5u2R>d@4^EHx zlu|BN&(xwB$D#4*Qbp5|g$zVUvQY>FC6_glEo+~Q461&y-R9UGUohnDFS*R9OR4W~;rcp%zvUpsxw6$O9t;$=Q z6`qcHx`C1EXsHl;`!x|R;dJbhzhB9x6z7~A<0%&jy}+3*_bYkB!eP|(J?uL<&Sj4b zrn%I<;n`PS03DZnGl2%Fjzmah$DU<`F(D3;zBn3~`K literal 0 HcmV?d00001 diff --git a/Team/Team/__pycache__/urls.cpython-37.pyc b/Team/Team/__pycache__/urls.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3536d7f044f4128a20a10b125fbedcd197d8be70 GIT binary patch literal 975 zcma)5!EO^V5cO_0P1v^3I|qDAS8CUyCls{^C{$EJ9H6~KLaDQ!Bu>}%%65SEns4F2 zFYT2Rzrcy{W+O#NNVT-qtTle~-kb58{r!~SdV2cf%d-w4zrxREB^bQI&xK8p5fPDy z%SgqeI0|v6?5JdvsP3p65$K8p646~ns~F=Qh!;DH-YTBOqrT{UCRv}Wn2;;rie7*E zK+lby%GuI#FO5#qt2xk{r7bJ&Jy`8-Xephi)+{}^aKTY;=vN8fTuv{HrOH^KQcsOl z4Fs)9;0~w*7^W20-22K6855>(xma*LGnF+9D12TR#Xz%@{DgT^$-=Ra%&@#;>AUY- zA(k7a7fW3PcI&bY=<}Su7J_n3rK*heLrSOCD5~zpysFy6t^AWVzmbdrwiM!36gxj0 z431h|bEDvhYOdgH5aL0Wo|oLY;|U5ATd4nIVf-9yAd)vmZRos5tcLvq*@XO@yKw+H z%>H3?sf%(cq@JM(O}!wkz-DgzxonJ~NCn#ya^Wze)7Hx2+OBmw@?iLeWSe``nDSt@ zlhVu>8n~%62nP-BAj{IMj>b>MX8%ZC;%O>+cg@Np^qWaV8b030T)$z29l_ z*~jcr-5ZZ_fX3s|pkp85+tRl6n-fu1xP>Ag3jgI+HtVVphwy10)B`BMi^qa8M%!o;@$B$*Kz zNvfk+6xNoeMQhfI2t=#)k1g4jTR&-tTHncRTha;XZ{Pin&nLqX%dA<$D<1z1y&&U$PHv*BM4jz5owC+XyHIvtINll1G!;PlJk zU9T=ZL2yo)9Qz&LNzhEjd-#dPaP$5^i6np@9MRo;7?g>Pdo2HK132&fQO3GW`{jllt$8I3Q8rrl= IU(lEIKM_=^@Bjb+ literal 0 HcmV?d00001 diff --git a/Team/Team/settings.py b/Team/Team/settings.py new file mode 100644 index 00000000..d029900d --- /dev/null +++ b/Team/Team/settings.py @@ -0,0 +1,125 @@ +""" +Django settings for Team project. + +Generated by 'django-admin startproject' using Django 2.2.6. + +For more information on this file, see +https://docs.djangoproject.com/en/2.2/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/2.2/ref/settings/ +""" + +import os + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'nzi^1z_nf@68_8w#a=a%1fnm$$zxlxl&04&%me1f%vvk+3ccna' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'teammembers.apps.TeammembersConfig', + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'Team.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'Team.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/2.2/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', + 'NAME': 'instawork', + 'HOST': 'localhost', + 'PORT': '3306', + 'USER': 'root', + 'PASSWORD': 'isha1234' + } +} + + +# Password validation +# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators + +# AUTH_PASSWORD_VALIDATORS = [ +# { +# 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', +# }, +# { +# 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', +# }, +# { +# 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', +# }, +# { +# 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', +# }, +# ] + + +# Internationalization +# https://docs.djangoproject.com/en/2.2/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/2.2/howto/static-files/ + +STATIC_URL = '/static/' diff --git a/Team/Team/urls.py b/Team/Team/urls.py new file mode 100644 index 00000000..ff764ce0 --- /dev/null +++ b/Team/Team/urls.py @@ -0,0 +1,22 @@ +"""Team URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/2.2/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import include, path + +urlpatterns = [ + path('api/', include('teammembers.urls')), + path('admin/', admin.site.urls), +] diff --git a/Team/Team/wsgi.py b/Team/Team/wsgi.py new file mode 100644 index 00000000..c9446eca --- /dev/null +++ b/Team/Team/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for Team project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Team.settings') + +application = get_wsgi_application() diff --git a/Team/db.sqlite3 b/Team/db.sqlite3 new file mode 100644 index 00000000..e69de29b diff --git a/Team/manage.py b/Team/manage.py new file mode 100755 index 00000000..4c55d0f8 --- /dev/null +++ b/Team/manage.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Team.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/Team/teammembers/__init__.py b/Team/teammembers/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/Team/teammembers/__pycache__/__init__.cpython-37.pyc b/Team/teammembers/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..83c53dd8ef26b0ae7ddcdc7f7d1d796ecdaef4b7 GIT binary patch literal 154 zcmZ?b<>g`kf*Gfm#DeI@AOZ#$feZ&AE@lA|DGb33nv8xc8Hzx{2;!HserR!OQL%nz zaYmxPOKNd;Nq&KTQetv;YF>(NVsUY1dR}g7UWtB4YGST_36RK5%}oMnh>y?A%PfhH Y*DI*J#bJ}1pHiBWY6mj>GY~TX0F{;}5&!@I literal 0 HcmV?d00001 diff --git a/Team/teammembers/__pycache__/admin.cpython-37.pyc b/Team/teammembers/__pycache__/admin.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d369f555e3b9edd52477f417cb25e4d13105be97 GIT binary patch literal 271 zcmXv|F;2rk5WMx-krgGpBQD7CfGCO(ZD@eT62&>UGMD(y(e0(6;wvE0@FiD~sPY9W z_KX;5XLnX3&D_rCQ^B}7e?GtQ{!Zc_l8+4!Etrfj&i&l3?hu9xgqjv}N=2{ck);si3rA!r>+!#!1th7A7 S4&{ooP93gOJxYNym}S41{6{MQ literal 0 HcmV?d00001 diff --git a/Team/teammembers/__pycache__/apps.cpython-37.pyc b/Team/teammembers/__pycache__/apps.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..36b4bd5cff76b058cf53a834bdfca659bf3f79a6 GIT binary patch literal 380 zcmYjNOHRWu5FN)sN`DgEfNd7k7eG)x61#4IO(bNw9TP%h$HeJ^H5`Hiu;DD+AX`>k zffeJVRXfsr-^{$xTuvrKAo=+Id{E?nLb8>Zf*GklCWC;i1j91M;07>4{tn1Bd*fMz z@hzkWztjaOYX=w3T~+q6$d{qA6-L2~)E|=3kTC?BWEsbZrg?jGrs6Dh4STFQ1PrKxaThIlOH%UYEiBo6)y>V#N2^LH-pJ?#{Qe^TOF`&Cmpu~5sE zws@kvFLGKK7{{zd(Tq*zn literal 0 HcmV?d00001 diff --git a/Team/teammembers/__pycache__/models.cpython-37.pyc b/Team/teammembers/__pycache__/models.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..154d7d8f78c979fdf4d047e143d11f236a24c9fb GIT binary patch literal 765 zcmZ8f&2G~`5Z+ze@ec_~d*OiNh2k41en?lvG=JU+X%;%X|zZ?uQf^zWt`}-*)P9hzfwN*w=suDx8u$+F>5asq0l61=`NNdnXYZhp2Xm0EAOTID=pnDvD%C z_buSj1Hbpck6SP543VZGJbMKdky_3kky9zT^f9U(B77k$+}soYM#PrbXjhlRnA qwXsPax>T)Xz1WP@tZOMc_rF{lzDL)xdrp@;?*@9|FR0x^pZx((mAB>q literal 0 HcmV?d00001 diff --git a/Team/teammembers/__pycache__/serializers.cpython-37.pyc b/Team/teammembers/__pycache__/serializers.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a63145dec4504facaf02b398bb900a36ceed4f9b GIT binary patch literal 2162 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 literal 0 HcmV?d00001 diff --git a/Team/teammembers/models.py b/Team/teammembers/models.py new file mode 100644 index 00000000..97ab2b82 --- /dev/null +++ b/Team/teammembers/models.py @@ -0,0 +1,17 @@ +from django.db import models + +class TeamMember(models.Model): + firstName = models.CharField(max_length=200, null=False, blank=False) + lastName = models.CharField(max_length=200, null=False, blank=False) + email = models.CharField(max_length=200, null=False, blank=False) + mobile = models.CharField(max_length=14, null=False, blank=False) # +91-9585364407 (14 chars) + ROLE_CHOICES = ( + (1, ("Admin")), + (2, ("Regular")), + ) + role = models.IntegerField(choices=ROLE_CHOICES, null=False, blank=False) + + def __str__(self): + return self.firstName + " " + self.lastName + +# Create your models here. diff --git a/Team/teammembers/serializers.py b/Team/teammembers/serializers.py new file mode 100644 index 00000000..c15a9428 --- /dev/null +++ b/Team/teammembers/serializers.py @@ -0,0 +1,48 @@ +""" + Serializers allow querysets and model instances + to be converted to python datatypes + that can be rendered into JSON/ XML +""" +from rest_framework import serializers +from .models import TeamMember +from collections import OrderedDict + +class RoleChoicesField(serializers.Field): + def __init__(self, choices, **kwargs): + self._choices = OrderedDict(choices) + super(RoleChoicesField, self).__init__(**kwargs) + + def to_representation(self, obj): + return self._choices[obj] + + def to_internal_value(self, data): + for i in self._choices: + if self._choices[i] == data: + return i + raise serializers.ValidationError( + "Acceptable values are {0}.".format(list(self._choices.values()))) + +class TeamMemberSerializer(serializers.Serializer): + # id = serializers.IntegerField(required=False) + id = serializers.IntegerField(required=False) + firstName = serializers.CharField(max_length=200) + lastName = serializers.CharField(max_length=200) + email = serializers.CharField(max_length=200) + mobile = serializers.CharField(max_length=14) + ROLE_CHOICES = ( + (1, ("Admin")), + (2, ("Regular")), + ) + role = RoleChoicesField(TeamMember.ROLE_CHOICES) + + def create(self, validated_data): + return TeamMember.objects.create(**validated_data) + + def update(self, instance, validated_data): + instance.firstName = validated_data.get('firstName', instance.firstName) + instance.lastName = validated_data.get('lastName', instance.lastName) + instance.email = validated_data.get('email', instance.email) + instance.mobile = validated_data.get('mobile', instance.mobile) + instance.role = validated_data.get('role', instance.role) + instance.save() + return instance \ No newline at end of file diff --git a/Team/teammembers/tests.py b/Team/teammembers/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/Team/teammembers/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/Team/teammembers/urls.py b/Team/teammembers/urls.py new file mode 100644 index 00000000..2afbc04b --- /dev/null +++ b/Team/teammembers/urls.py @@ -0,0 +1,9 @@ +from django.urls import path +from .views import TeamMemberListView + +app_name = "teammembers" # helps do a reverse lookup later + +urlpatterns = [ + path('teammembers/', TeamMemberListView.as_view()), + path('teammembers/', TeamMemberListView.as_view()), +] \ No newline at end of file diff --git a/Team/teammembers/views.py b/Team/teammembers/views.py new file mode 100644 index 00000000..fe2061b8 --- /dev/null +++ b/Team/teammembers/views.py @@ -0,0 +1,44 @@ +from django.http import JsonResponse, HttpResponse +from rest_framework.views import APIView +from rest_framework.response import Response +from .serializers import TeamMemberSerializer +from django.shortcuts import get_object_or_404 + +import json + +from .models import TeamMember + + +class TeamMemberListView(APIView): + def get(self, request): + team_member_list = TeamMember.objects.all() + serializer = TeamMemberSerializer(team_member_list, many=True) + return JsonResponse({'team_members': serializer.data}) + + def post(self, request): + team_member = request.data.get('team_member') + serializer = TeamMemberSerializer(data=team_member) + print(serializer) + if serializer.is_valid(raise_exception=True): + team_member_saved = serializer.save() + return JsonResponse(TeamMemberSerializer(team_member_saved).data) + + def put(self, request, pk): + saved_team_member = get_object_or_404(TeamMember, id=pk) + data = request.data.get('team_member') + serializer = TeamMemberSerializer(instance=saved_team_member, data=data, partial=True) + if serializer.is_valid(raise_exception=True): + team_member_saved = serializer.save() + return JsonResponse(TeamMemberSerializer(team_member_saved).data) + + def delete(self, request, pk): + team_member = get_object_or_404(TeamMember.objects.all(), id=pk) + team_member.delete() + return JsonResponse({"result": []}) + + + + + + +# Create your views here. From d53906bdb17422e0641dfad4d4f13f92540805eb Mon Sep 17 00:00:00 2001 From: Isha Gupta <38328301+iishagupta@users.noreply.github.com> Date: Tue, 15 Oct 2019 11:09:32 +0530 Subject: [PATCH 02/11] Update serializers.py --- Team/teammembers/serializers.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Team/teammembers/serializers.py b/Team/teammembers/serializers.py index c15a9428..a373c992 100644 --- a/Team/teammembers/serializers.py +++ b/Team/teammembers/serializers.py @@ -7,6 +7,7 @@ from .models import TeamMember from collections import OrderedDict +# Stack Overlflow class RoleChoicesField(serializers.Field): def __init__(self, choices, **kwargs): self._choices = OrderedDict(choices) @@ -45,4 +46,4 @@ def update(self, instance, validated_data): instance.mobile = validated_data.get('mobile', instance.mobile) instance.role = validated_data.get('role', instance.role) instance.save() - return instance \ No newline at end of file + return instance From c4d8d5a78c75948d7a960f229ab60bc30bd27038 Mon Sep 17 00:00:00 2001 From: Isha Gupta <38328301+iishagupta@users.noreply.github.com> Date: Tue, 15 Oct 2019 11:10:54 +0530 Subject: [PATCH 03/11] Update views.py --- Team/teammembers/views.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Team/teammembers/views.py b/Team/teammembers/views.py index fe2061b8..4e05b66c 100644 --- a/Team/teammembers/views.py +++ b/Team/teammembers/views.py @@ -18,7 +18,6 @@ def get(self, request): def post(self, request): team_member = request.data.get('team_member') serializer = TeamMemberSerializer(data=team_member) - print(serializer) if serializer.is_valid(raise_exception=True): team_member_saved = serializer.save() return JsonResponse(TeamMemberSerializer(team_member_saved).data) From 5792632fa3f63fd1bd8e6ae4772a1ef59cad9bb9 Mon Sep 17 00:00:00 2001 From: Isha Gupta <38328301+iishagupta@users.noreply.github.com> Date: Tue, 15 Oct 2019 11:12:42 +0530 Subject: [PATCH 04/11] Delete db.sqlite3 --- Team/db.sqlite3 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Team/db.sqlite3 diff --git a/Team/db.sqlite3 b/Team/db.sqlite3 deleted file mode 100644 index e69de29b..00000000 From 4535426251626f31f0d3ec630e4571282c16829c Mon Sep 17 00:00:00 2001 From: Isha Gupta <38328301+iishagupta@users.noreply.github.com> Date: Tue, 15 Oct 2019 11:13:15 +0530 Subject: [PATCH 05/11] Update urls.py --- Team/Team/urls.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/Team/Team/urls.py b/Team/Team/urls.py index ff764ce0..72fbc579 100644 --- a/Team/Team/urls.py +++ b/Team/Team/urls.py @@ -1,18 +1,4 @@ -"""Team URL Configuration -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/2.2/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" from django.contrib import admin from django.urls import include, path From d13924dc7d94b4bbacf4eecb953bfe3595ed3da8 Mon Sep 17 00:00:00 2001 From: Isha Gupta <38328301+iishagupta@users.noreply.github.com> Date: Tue, 15 Oct 2019 11:14:44 +0530 Subject: [PATCH 06/11] Update views.py --- Team/teammembers/views.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Team/teammembers/views.py b/Team/teammembers/views.py index 4e05b66c..1507ca74 100644 --- a/Team/teammembers/views.py +++ b/Team/teammembers/views.py @@ -35,9 +35,3 @@ def delete(self, request, pk): team_member.delete() return JsonResponse({"result": []}) - - - - - -# Create your views here. From b897eba5e04b4436aed8f063945621b77ea108fd Mon Sep 17 00:00:00 2001 From: Isha Gupta Date: Fri, 8 Nov 2019 12:51:10 +0530 Subject: [PATCH 07/11] second commit --- Team/Team/__pycache__/settings.cpython-37.pyc | Bin 2005 -> 2005 bytes .../__pycache__/models.cpython-37.pyc | Bin 765 -> 765 bytes .../__pycache__/serializers.cpython-37.pyc | Bin 2162 -> 2162 bytes .../__pycache__/urls.cpython-37.pyc | Bin 362 -> 362 bytes .../__pycache__/views.cpython-37.pyc | Bin 1748 -> 2722 bytes Team/teammembers/models.py | 5 +-- Team/teammembers/pagination.py | 4 ++ Team/teammembers/serializers.py | 16 +++++-- Team/teammembers/urls.py | 2 +- Team/teammembers/views.py | 40 ++++++++++++++++-- 10 files changed, 55 insertions(+), 12 deletions(-) create mode 100644 Team/teammembers/pagination.py diff --git a/Team/Team/__pycache__/settings.cpython-37.pyc b/Team/Team/__pycache__/settings.cpython-37.pyc index 033576ed44793d0ba28aa41e36745f955ace78da..4dd55754925e5b5681e293a08a90464264bfc076 100644 GIT binary patch delta 20 acmcc0f0duxiIV#SQ>8j0G_O delta 20 acmcc0f0duxiIi= delta 20 acmey%`j?g4iIl=KugWIRy&< delta 20 acmew)@JWE%iI+1${@jNwx0nwdD z^&m^N%o`7k8BFflJg=@le)v-?pP}nbhF@`dlIP2tGV1>z``c1&NEJs(Jd_IKi@VZ< z*>+EM(WvnDXSXrfhz4<}r7>~3t2-E|&7SVkQYOVlXAPJB8I@!K7c8)(-E&Uemn^8r zYT(JaUM;8#F0AJ)Xb4+4Xy=71DrlRcDm=6cvL)t3?KwN)!J?>(2F8}eylA4mBo=_6 zl`qZK@F>=Xgmx{wmI|$dt~cwN!dF)_c+FU8(m?Hdx(`y8AK} zpGI28yJ=shW|bDaN|Tgx=+#54S+5L^avRi_Xsv|+KD_*RZFji1*kj z7ll4!jVxik;K#PHNA?NlY=j*k(l5CBd}PyJ96P20JLd$?opA7QJ9+(#KJ2k0A`@+* zv!J3_%TWH-l>-xJX}hYH@k&JtR#jBFJ5X^7cCii*;YkAIqC=@jOxsmWvRk0)5*gRP zYV2?M;+a>5^o%HomenFzJA+J{E9mJ4D#jbU#y!*?A6~ft5?ObN3>8`%kt)340Xl{m z4mSLSb!>x}b!rO>9^n{gWRFTh_OUy1doF0Xp!Ma*J*|LN#Z+Na0WGVbRiPlTVo@mC zgsXUQs!f!3Wq~HI4kBeBvdz_7cyHTN9vVeCJN zf@}1|+fG&Db@ZnN~$hE@+<9qi*1j4{_-V zD#n*+=dWF`^X0@{N^exCokqyVxG{)-!A~rGlk$MD_C0l7SR)o%X${$dLnQjbLM+(B z`?WbAWphvZ;}nr8f3n3sLOSclNE^a`7Mnfaz>GrqmJh3~PL|58m2!f-7EYhI;Ui8Kc)^&?*+|0e|!>1R8Bx!d}TY(L(a0E03= z*1m{!w4F#X2I5oTI0UP0tB2^2{x*qWTDTYl-^{tot@9AP&;l&PN` z7=)HjDRid1RGc^0HBumD(tAo}D!)ue?(_vAs20chgh!EU&++&K0=^+06tB!_@?rY| z8W+#oX)otq7^YEQh9Mj@>}TR2p?)L8IT$77KV`BaUs3N;A7v#7ZMAu z-o5wT`qM|7;p6rD4?F9d4}a{0cOI>8Y$yuf^0at|dOlSY*10!O*#Ibx&bR_eJG1?T za5@Q89ThD?6A%yH@9>J{xgHg_QTM#UqP>{cMK4Nsvz0x34HZdM(Z&bM0Bgb>1>Mgw zwZBpvzKQ?_SI+%4*#bo|lhfjN5Vd1xlTDNTqD7@t0#=18h%=`OAwVDyEeBQ{BB52fwnUa>cV)XkQA-ak z+>pA;iCaP9z<=PtkKp7Be}$QBRThLJzj5q0Z=NUlvh*`*+=-%qz_{sseJAwzoN zd?x#jVS81DkIp`OVz^*?Z0Kh6kb)@R>c!OZA|34}p#k}RQR(Zrrs|+#z47)?4ve-e z&2#0!mco*ji`1ksFJ0$K%LZDiEX}jGQhg(;Q(ku-H6mc?8UUdI4a;}V`>txh8`f*8 zG}E##-wfo$WaClnRYz*EyvEiyn!r*mge8PFfNjrt>+AHD6sm)V6`Vr`pNzHXl*jDT z0jBk0X8mlWO*$ILO5J*sR2i@tQ*|B~v9ElTz-ykC$5nO3Wn5iAz{`TYGf&o;yiD4a zgZ`YSnE+ZD8?$~6', TeamMemberListView.as_view()), + path('teammembers//', TeamMemberListView.as_view()), ] \ No newline at end of file diff --git a/Team/teammembers/views.py b/Team/teammembers/views.py index fe2061b8..6c0ec784 100644 --- a/Team/teammembers/views.py +++ b/Team/teammembers/views.py @@ -3,6 +3,7 @@ from rest_framework.response import Response from .serializers import TeamMemberSerializer from django.shortcuts import get_object_or_404 +from rest_framework.settings import api_settings import json @@ -10,10 +11,15 @@ class TeamMemberListView(APIView): + queryset = TeamMember.objects.all() + serializer_class = TeamMemberSerializer + pagination_class = api_settings.DEFAULT_PAGINATION_CLASS + def get(self, request): - team_member_list = TeamMember.objects.all() - serializer = TeamMemberSerializer(team_member_list, many=True) - return JsonResponse({'team_members': serializer.data}) + page = self.paginate_queryset(self.queryset) + if page is not None: + serializer = self.serializer_class(page, many=True) + return self.get_paginated_response(serializer.data) def post(self, request): team_member = request.data.get('team_member') @@ -36,9 +42,35 @@ def delete(self, request, pk): team_member.delete() return JsonResponse({"result": []}) + @property + def paginator(self): + """ + The paginator instance associated with the view, or `None`. + """ + if not hasattr(self, '_paginator'): + if self.pagination_class is None: + self._paginator = None + else: + self._paginator = self.pagination_class() + + def paginate_queryset(self, queryset): + """ + Return a single page of results, or `None` if pagination is disabled. + """ + if self.paginator is None: + return None + return self.paginator.paginate_queryset(queryset, self.request, view=self) + + def get_paginated_response(self, data): + """ + Return a paginated style `Response` object for the given output data. + """ + assert self.paginator is not None + return self.paginator.get_paginated_response(data) + -# Create your views here. + # Create your views here. From e285b58b868977abd4a20845519355242f294933 Mon Sep 17 00:00:00 2001 From: Isha Gupta <38328301+iishagupta@users.noreply.github.com> Date: Fri, 8 Nov 2019 13:35:20 +0530 Subject: [PATCH 08/11] Update views.py --- Team/teammembers/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Team/teammembers/views.py b/Team/teammembers/views.py index eaa38e54..3777ac63 100644 --- a/Team/teammembers/views.py +++ b/Team/teammembers/views.py @@ -39,7 +39,7 @@ def put(self, request, pk): def delete(self, request, pk): team_member = get_object_or_404(TeamMember.objects.all(), id=pk) team_member.delete() - return JsonResponse({"result": []}) + return JsonResponse({"team_member": []}) @property def paginator(self): @@ -65,4 +65,4 @@ def get_paginated_response(self, data): Return a paginated style `Response` object for the given output data. """ assert self.paginator is not None - return self.paginator.get_paginated_response(data) \ No newline at end of file + return self.paginator.get_paginated_response(data) From f59a295dd5f944a76d7b71f5fbf238309c47952d Mon Sep 17 00:00:00 2001 From: Isha Gupta <38328301+iishagupta@users.noreply.github.com> Date: Fri, 8 Nov 2019 13:56:38 +0530 Subject: [PATCH 09/11] Update serializers.py --- Team/teammembers/serializers.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Team/teammembers/serializers.py b/Team/teammembers/serializers.py index 2d286ae7..d886f253 100644 --- a/Team/teammembers/serializers.py +++ b/Team/teammembers/serializers.py @@ -33,7 +33,7 @@ class TeamMemberSerializer(serializers.Serializer): mobile = serializers.CharField(max_length=14) role = RoleChoicesField(TeamMember.ROLE_CHOICES) - def create(self, validated_data): + def validate_data(self, validated_data): mobile = validated_data.get('mobile') email = validated_data.get('email') # 1) Begins with 0 or 91 @@ -45,9 +45,13 @@ def create(self, validated_data): epattern = re.compile("^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$") if not epattern.match(email): raise serializers.ValidationError('Invalid Email') + + def create(self, validated_data): + self.validate_data(validated_data) return TeamMember.objects.create(**validated_data) def update(self, instance, validated_data): + self.validate_data(validate_data) instance.firstName = validated_data.get('firstName', instance.firstName) instance.lastName = validated_data.get('lastName', instance.lastName) instance.email = validated_data.get('email', instance.email) From b2ea966fab46954e2f3001f87a56dbd14570439b Mon Sep 17 00:00:00 2001 From: Isha Gupta <38328301+iishagupta@users.noreply.github.com> Date: Fri, 8 Nov 2019 13:57:11 +0530 Subject: [PATCH 10/11] Update serializers.py --- Team/teammembers/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Team/teammembers/serializers.py b/Team/teammembers/serializers.py index d886f253..01b1d2a8 100644 --- a/Team/teammembers/serializers.py +++ b/Team/teammembers/serializers.py @@ -51,7 +51,7 @@ def create(self, validated_data): return TeamMember.objects.create(**validated_data) def update(self, instance, validated_data): - self.validate_data(validate_data) + self.validate_data(validated_data) instance.firstName = validated_data.get('firstName', instance.firstName) instance.lastName = validated_data.get('lastName', instance.lastName) instance.email = validated_data.get('email', instance.email) From 24007878651df84fe5e5dcdbddb19df5abb9f97d Mon Sep 17 00:00:00 2001 From: Isha Gupta <38328301+iishagupta@users.noreply.github.com> Date: Fri, 8 Nov 2019 14:07:45 +0530 Subject: [PATCH 11/11] Delete tests.py --- Team/teammembers/tests.py | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 Team/teammembers/tests.py diff --git a/Team/teammembers/tests.py b/Team/teammembers/tests.py deleted file mode 100644 index 7ce503c2..00000000 --- a/Team/teammembers/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here.