From 6769721c4c4d5506ca55f1b22876ace3af32f6ea Mon Sep 17 00:00:00 2001 From: Bimo Iman Smartadi Date: Fri, 10 Apr 2020 18:05:34 +0700 Subject: [PATCH 1/8] [REFACTOR] Fixed error on request --- informasi_fasilitas/urls.py | 4 +-- informasi_fasilitas/views.py | 51 ++++++++++++++++++------------------ 2 files changed, 27 insertions(+), 28 deletions(-) diff --git a/informasi_fasilitas/urls.py b/informasi_fasilitas/urls.py index 7250129..09831e3 100644 --- a/informasi_fasilitas/urls.py +++ b/informasi_fasilitas/urls.py @@ -12,6 +12,6 @@ urlpatterns = [ path('lokasi/detail/', views.lokasi_details,name='lokasi-details'), path('lokasi/add/', views.add_lokasi,name='add-lokasi'), path('lokasi/add-fasilitas/', views.add_fasilitas, name='add-fasilitas'), - #path('lokasi/list-fasilitas/', views.list_fasilitas, name='list-fasilitas'), - path('lokasi/detail-fasilitas/', views.detail_fasilitas, name='detail-fasilitas'), + path('lokasi/list-fasilitas/', views.list_fasilitas, name='list-fasilitas'), + path('lokasi/detail-fasilitas//', views.detail_fasilitas, name='detail-fasilitas'), ] \ No newline at end of file diff --git a/informasi_fasilitas/views.py b/informasi_fasilitas/views.py index 1b27ffb..b8af48e 100644 --- a/informasi_fasilitas/views.py +++ b/informasi_fasilitas/views.py @@ -63,26 +63,26 @@ def add_lokasi(request): except KeyError as e: return JsonResponse({'response':'bad request. {} key needed'.format(str(e))}, status = 500) -# @api_view(['GET']) -# @authentication_classes([TokenAuthentication,]) -# @permission_classes([]) -# def list_fasilitas(request, nama_lokasi): -# try: -# if request.method == 'GET': -# lokasi = Lokasi.objects.get(name = nama_lokasi) -# fasilitas = Fasilitas.objects.get(lokasi=lokasi) -# name = request.POST['name'] -# latitude = request.POST['latitude'] -# longitude = request.POST['longitude'] -# alamat = request.POST['alamat'] -# no_telp = request.POST['no_telp'] -# image = request.POST['image'] -# Lokasi.objects.create(name=name, latitude=latitude, longitude=longitude, alamat=alamat, no_telp=no_telp, image=image) -# return JsonResponse({'response' : 'Location added', 'name':name}, status = 201) -# except KeyError as e: -# return JsonResponse({'response':'bad request. {} key needed'.format(str(e))}, status = 500) -# except: -# return JsonResponse({'response': 'lokasi might not be here'}) # Create your views here. +@api_view(['GET']) +@authentication_classes([TokenAuthentication,]) +@permission_classes([]) +def list_fasilitas(request, nama_lokasi): + try: + if request.method == 'GET': + lokasi = Lokasi.objects.get(name = nama_lokasi) + list_fasilitas = Fasilitas.objects.filter(lokasi=lokasi) + return_json = {} + for fasilitas in list_fasilitas: + return_json[fasilitas.id] = {} + fasilitas_details = return_json[fasilitas.id] + fasilitas_details["fasilitas_id"] = fasilitas.id + fasilitas_details["fasilitas_location"] = fasilitas.lokasi.name + fasilitas_details["creator"] = fasilitas.user.last_name + return JsonResponse(return_json, status = 201) + except KeyError as e: + return JsonResponse({'response':'bad request. {} key needed'.format(str(e))}, status = 500) + except: + return JsonResponse({'response': 'lokasi might not be here'}) # Create your views here. @api_view(['POST']) @authentication_classes([TokenAuthentication,]) @@ -94,7 +94,6 @@ def add_fasilitas(request, nama_lokasi): user = User.objects.get(email=str(request.user)) deskripsi = request.POST['deskripsi'] image = request.POST['image'] - fasilitas = Fasilitas.objects.create(lokasi=lokasi, user=user, deskripsi=deskripsi, @@ -110,18 +109,18 @@ def add_fasilitas(request, nama_lokasi): @api_view(['GET']) @authentication_classes([]) @permission_classes([]) -def detail_fasilitas(request, nama_lokasi): +def detail_fasilitas(request, nama_lokasi, id): try: if request.method == 'GET': lokasi = Lokasi.objects.get(name = nama_lokasi) - fasilitas = Fasilitas.objects.get(lokasi=lokasi) + fasilitas = Fasilitas.objects.get(lokasi=lokasi, id=id) user = fasilitas.user return_json = {"nama_lokasi": lokasi.name, "deskripsi":fasilitas.deskripsi, "creator":user.last_name, "date_time":fasilitas.date_time, - "like":fasilitas.like, "dislike":fasilitas.dislike, "rating":fasilitas.rating, "tag":fasilitas.tag, "image":fasilitas.image, "is_verified":fasilitas.is_verified} + "like":fasilitas.like, "dislike":fasilitas.dislike, "rating":fasilitas.rating, "tag":fasilitas.tag, "image":str(fasilitas.image), "is_verified":fasilitas.is_verified} return JsonResponse(return_json, status = 201) else: return JsonResponse({'response' : 'try get request instead'}, status = 400) except KeyError as e: return JsonResponse({'response':'bad request. {} key needed'.format(str(e))}, status = 500) - except: - return JsonResponse({'response': 'lokasi might not be here'}, status = 404) \ No newline at end of file + except Exception as e: + return JsonResponse({'response': str(e)}, status = 404) \ No newline at end of file -- GitLab From 0cf93d68b6cbe5c94152fbb0c91baeb14871bf7d Mon Sep 17 00:00:00 2001 From: Usman Sidiq Date: Fri, 10 Apr 2020 18:43:25 +0700 Subject: [PATCH 2/8] [REFACTOR] Change API endpoint for detail fasilitas --- README.md | 11 +++++++-- .../migrations/0002_auto_20200410_1721.py | 24 +++++++++++++++++++ informasi_fasilitas/models.py | 4 ++-- informasi_fasilitas/urls.py | 1 + informasi_fasilitas/views.py | 13 +++++----- 5 files changed, 42 insertions(+), 11 deletions(-) create mode 100644 informasi_fasilitas/migrations/0002_auto_20200410_1721.py diff --git a/README.md b/README.md index 74dee50..acaf281 100644 --- a/README.md +++ b/README.md @@ -105,10 +105,17 @@ Make `POST` request to API endpoint `/informasi-lokasi/lokasi/add-fasilitas/*nam Add this to your request header. `Authorization` with value `token *your_token_from_request*` ### 6. To see a facility details: -Make `GET` request to API endpoint `/informasi-lokasi/lokasi/detail-fasilitas/*nama-lokasi*` with `name` key.
+Make `GET` request to API endpoint `/informasi-lokasi/lokasi/detail-fasilitas/*nama-lokasi*/id-fasilitas` with `name` key.
It will return a json with the following key: * `nama_lokasi`: location name of the facility * `deskripsi`: the description -* `creator`: User's name who registered the facility +* `creator`: User's last name who registered the facility +* `date_time`: Date when the facility was made +* `like`: how many people like this facility. default is 0 +* `dislike`: how many people dislike this facility. default is 0 +* `rating`: rating of the facility. Default is 3 +* `tag`: Facility tag +* `image`: Image for facility +* `is_verified`: Verified status diff --git a/informasi_fasilitas/migrations/0002_auto_20200410_1721.py b/informasi_fasilitas/migrations/0002_auto_20200410_1721.py new file mode 100644 index 0000000..73bd051 --- /dev/null +++ b/informasi_fasilitas/migrations/0002_auto_20200410_1721.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.5 on 2020-04-10 10:21 + +from django.db import migrations, models +import multiselectfield.db.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('informasi_fasilitas', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='fasilitas', + name='image', + field=models.ImageField(default=None, null=True, upload_to='static/img'), + ), + migrations.AlterField( + model_name='fasilitas', + name='tag', + field=multiselectfield.db.fields.MultiSelectField(choices=[('KR', 'Kursi Roda'), ('LF', 'Lift Disabilitas'), ('TD', 'Toilet Disabilitas'), ('MM', 'Masjid/Mushola'), ('GB', 'Guiding Block'), ('BM', 'Bidang Miring'), ('CP', 'Teman Disabilitas'), ('JI', 'Juru Bahasa Isyarat'), ('TN', 'Tongkat Disabilitas Netra'), ('KD', 'Kursi Umum Disabilitas'), ('PK', 'Tempat Parkir Disabilitas'), ('RT', 'Running Text')], default=None, max_length=35, null=True), + ), + ] diff --git a/informasi_fasilitas/models.py b/informasi_fasilitas/models.py index 695cdcc..574dc75 100644 --- a/informasi_fasilitas/models.py +++ b/informasi_fasilitas/models.py @@ -52,8 +52,8 @@ class Fasilitas(models.Model): like = models.IntegerField(default=0) dislike = models.IntegerField(default=0) rating = models.IntegerField(default=3) - tag = MultiSelectField(choices=FACILITIES, null=True) - image = models.ImageField(upload_to="static/img", null=True) + tag = MultiSelectField(choices=FACILITIES, null=True, default=None) + image = models.ImageField(upload_to="static/img", null=True, default=None) is_verified = models.BooleanField(default=False) class Komentar(models.Model): diff --git a/informasi_fasilitas/urls.py b/informasi_fasilitas/urls.py index 7250129..373ccd4 100644 --- a/informasi_fasilitas/urls.py +++ b/informasi_fasilitas/urls.py @@ -12,6 +12,7 @@ urlpatterns = [ path('lokasi/detail/', views.lokasi_details,name='lokasi-details'), path('lokasi/add/', views.add_lokasi,name='add-lokasi'), path('lokasi/add-fasilitas/', views.add_fasilitas, name='add-fasilitas'), + path('lokasi/detail-fasilitas//', views.detail_fasilitas, name='detail-fasilitas'), #path('lokasi/list-fasilitas/', views.list_fasilitas, name='list-fasilitas'), path('lokasi/detail-fasilitas/', views.detail_fasilitas, name='detail-fasilitas'), ] \ No newline at end of file diff --git a/informasi_fasilitas/views.py b/informasi_fasilitas/views.py index 1b27ffb..043e8b8 100644 --- a/informasi_fasilitas/views.py +++ b/informasi_fasilitas/views.py @@ -94,12 +94,11 @@ def add_fasilitas(request, nama_lokasi): user = User.objects.get(email=str(request.user)) deskripsi = request.POST['deskripsi'] image = request.POST['image'] - fasilitas = Fasilitas.objects.create(lokasi=lokasi, user=user, deskripsi=deskripsi, image=image) - return JsonResponse({'response' : 'fasilitas added'}, status = 201) + return JsonResponse({'response' : 'fasilitas added', 'id':fasilitas.id}, status = 201) else: return JsonResponse({'response' : 'try post request instead'}, status = 400) except KeyError as e: @@ -110,18 +109,18 @@ def add_fasilitas(request, nama_lokasi): @api_view(['GET']) @authentication_classes([]) @permission_classes([]) -def detail_fasilitas(request, nama_lokasi): +def detail_fasilitas(request, nama_lokasi, id): try: if request.method == 'GET': lokasi = Lokasi.objects.get(name = nama_lokasi) - fasilitas = Fasilitas.objects.get(lokasi=lokasi) + fasilitas = Fasilitas.objects.get(lokasi=lokasi, id=id) user = fasilitas.user return_json = {"nama_lokasi": lokasi.name, "deskripsi":fasilitas.deskripsi, "creator":user.last_name, "date_time":fasilitas.date_time, - "like":fasilitas.like, "dislike":fasilitas.dislike, "rating":fasilitas.rating, "tag":fasilitas.tag, "image":fasilitas.image, "is_verified":fasilitas.is_verified} + "like":fasilitas.like, "dislike":fasilitas.dislike, "rating":fasilitas.rating, "tag":fasilitas.tag, "image":str(fasilitas.image), "is_verified":fasilitas.is_verified} return JsonResponse(return_json, status = 201) else: return JsonResponse({'response' : 'try get request instead'}, status = 400) except KeyError as e: return JsonResponse({'response':'bad request. {} key needed'.format(str(e))}, status = 500) - except: - return JsonResponse({'response': 'lokasi might not be here'}, status = 404) \ No newline at end of file + except Exception as e: + return JsonResponse({'response': str(e)}, status = 502) \ No newline at end of file -- GitLab From 8024693c43ba9af9c3777fe43a95e646762aeb59 Mon Sep 17 00:00:00 2001 From: Usman Sidiq Date: Mon, 13 Apr 2020 12:04:34 +0700 Subject: [PATCH 3/8] [CHORES] Add more instructions for end-point --- README.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index acaf281..2377bed 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ It will return a json with key: * `phone_number` : Your phone number ### 4. To register a location: -Make `POST` request to API endpoint `/informasi-lokasi/lokasi/add` with the following key: +Make `POST` request to API endpoint `/informasi-lokasi/lokasi/add/` with the following key: * `name` : location name * `altitude` : location altitude, a float. * `longitude` : location longitude, a float. @@ -71,7 +71,17 @@ Make `POST` request to API endpoint `/informasi-lokasi/lokasi/add` with the foll * `no_telp` : Phone number * `image` : string of sourc image `.jpg` -### 4. To view a location details: +### 5. To view a location list: +Make `GET` request to API endpoint `/informasi-lokasi/lokasi/list*` with the key `name`.
+It will return a json list of locations with key: +* `name` : location name +* `altitude` : location altitude, a float. +* `longitude` : location longitude, a float. +* `alamat` : address +* `no_telp` : Phone number +* `image` : string of sourc image `.jpg` + +### 6. To view a location details: Make `GET` request to API endpoint `/informasi-lokasi/lokasi/detail/*nama_lokasi*` with the key `name`.
It will return a json with key: * `name` : location name @@ -81,7 +91,7 @@ It will return a json with key: * `no_telp` : Phone number * `image` : string of sourc image `.jpg` -### 5. To register a facility: +### 7. To register a facility: Make `POST` request to API endpoint `/informasi-lokasi/lokasi/add-fasilitas/*nama-lokasi*` with the following key: * `tag` : Fasility Tag * The options are : @@ -104,7 +114,7 @@ Make `POST` request to API endpoint `/informasi-lokasi/lokasi/add-fasilitas/*nam Make sure you have token it your request header. Add this to your request header. `Authorization` with value `token *your_token_from_request*` -### 6. To see a facility details: +### 8. To see a facility details: Make `GET` request to API endpoint `/informasi-lokasi/lokasi/detail-fasilitas/*nama-lokasi*/id-fasilitas` with `name` key.
It will return a json with the following key: * `nama_lokasi`: location name of the facility -- GitLab From cbeb542f1894b966d100f3da75dc5dc3d1271cfd Mon Sep 17 00:00:00 2001 From: Usman Sidiq Date: Mon, 13 Apr 2020 12:06:22 +0700 Subject: [PATCH 4/8] [REFACTOR] Edit some models --- informasi_fasilitas/models.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/informasi_fasilitas/models.py b/informasi_fasilitas/models.py index 574dc75..1d1c70b 100644 --- a/informasi_fasilitas/models.py +++ b/informasi_fasilitas/models.py @@ -15,6 +15,7 @@ TONGKAT_DISABILITAS_NETRA = 'TN' KURSI_UMUM_DISABILITAS = 'KD' TEMPAT_PARKIR_DISABILITAS = 'PK' RUNNING_TEXT = 'RT' +TEMPAT_PARKIR_BIASA = 'TB' FACILITIES = ( ((KURSI_RODA, 'Kursi Roda'), @@ -28,7 +29,8 @@ FACILITIES = ( (TONGKAT_DISABILITAS_NETRA, 'Tongkat Disabilitas Netra'), (KURSI_UMUM_DISABILITAS, 'Kursi Umum Disabilitas'), (TEMPAT_PARKIR_DISABILITAS, 'Tempat Parkir Disabilitas'), - (RUNNING_TEXT, 'Running Text')) + (RUNNING_TEXT, 'Running Text'), + (TEMPAT_PARKIR_BIASA, 'Tempat Parkir Biasa')) ) class Lokasi(models.Model): -- GitLab From 9d0c4fc2fd93c922e404c2c216bf40bd51e178e0 Mon Sep 17 00:00:00 2001 From: Usman Sidiq Date: Mon, 13 Apr 2020 12:08:35 +0700 Subject: [PATCH 5/8] [REFACTOR] Make migrations after altering the models --- .../migrations/0003_auto_20200413_1207.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 informasi_fasilitas/migrations/0003_auto_20200413_1207.py diff --git a/informasi_fasilitas/migrations/0003_auto_20200413_1207.py b/informasi_fasilitas/migrations/0003_auto_20200413_1207.py new file mode 100644 index 0000000..b2e0eab --- /dev/null +++ b/informasi_fasilitas/migrations/0003_auto_20200413_1207.py @@ -0,0 +1,19 @@ +# Generated by Django 2.1.5 on 2020-04-13 05:07 + +from django.db import migrations +import multiselectfield.db.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('informasi_fasilitas', '0002_auto_20200410_1721'), + ] + + operations = [ + migrations.AlterField( + model_name='fasilitas', + name='tag', + field=multiselectfield.db.fields.MultiSelectField(choices=[('KR', 'Kursi Roda'), ('LF', 'Lift Disabilitas'), ('TD', 'Toilet Disabilitas'), ('MM', 'Masjid/Mushola'), ('GB', 'Guiding Block'), ('BM', 'Bidang Miring'), ('CP', 'Teman Disabilitas'), ('JI', 'Juru Bahasa Isyarat'), ('TN', 'Tongkat Disabilitas Netra'), ('KD', 'Kursi Umum Disabilitas'), ('PK', 'Tempat Parkir Disabilitas'), ('RT', 'Running Text'), ('TB', 'Tempat Parkir Biasa')], default=None, max_length=38, null=True), + ), + ] -- GitLab From b4578180a324b10083f57b3af87ba6fe50ca5a0c Mon Sep 17 00:00:00 2001 From: Usman Sidiq Date: Mon, 13 Apr 2020 12:10:05 +0700 Subject: [PATCH 6/8] [REFACTOR] Fix typo in Readme.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2377bed..f5156de 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ Make `POST` request to API endpoint `/informasi-lokasi/lokasi/add/` with the fol * `image` : string of sourc image `.jpg` ### 5. To view a location list: -Make `GET` request to API endpoint `/informasi-lokasi/lokasi/list*` with the key `name`.
+Make `GET` request to API endpoint `/informasi-lokasi/lokasi/list` with the key `name`.
It will return a json list of locations with key: * `name` : location name * `altitude` : location altitude, a float. -- GitLab From 6376b6874929936638698daf01eae3c70c4b59d3 Mon Sep 17 00:00:00 2001 From: Usman Sidiq Date: Mon, 13 Apr 2020 12:23:52 +0700 Subject: [PATCH 7/8] [REFACTOR] Add some text --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f5156de..4185f33 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,7 @@ Make `POST` request to API endpoint `/informasi-lokasi/lokasi/add-fasilitas/*nam * KURSI_UMUM_DISABILITAS = 'KD' * TEMPAT_PARKIR_DISABILITAS = 'PK' * RUNNING_TEXT = 'RT' + * TEMPAT_PARKIR_BIASA = 'TB'
* `deskripsi` : Facility description. -- GitLab From df6044c24993ac748575c2d44b4c187d093168d1 Mon Sep 17 00:00:00 2001 From: Usman Sidiq Date: Mon, 13 Apr 2020 13:09:44 +0700 Subject: [PATCH 8/8] [REFACTOR] Add some text --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4185f33..73aaa96 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ It will return a json with key: * `longitude` : location longitude, a float. * `alamat` : address * `no_telp` : Phone number -* `image` : string of sourc image `.jpg` +* `image` : string of source image `.jpg` ### 7. To register a facility: Make `POST` request to API endpoint `/informasi-lokasi/lokasi/add-fasilitas/*nama-lokasi*` with the following key: -- GitLab