diff --git a/informasi_fasilitas/urls.py b/informasi_fasilitas/urls.py index caf571e5abfc07bc10616ede843d3cee8e2fac7e..c8995c5b5d289856ce78bb6f5bada4c1ce444853 100644 --- a/informasi_fasilitas/urls.py +++ b/informasi_fasilitas/urls.py @@ -10,6 +10,10 @@ urlpatterns = [ path('lokasi/add-fasilitas/<str:nama_lokasi>/', views.add_fasilitas, name='add-fasilitas'), path('lokasi/list-fasilitas/<str:nama_lokasi>/', views.list_fasilitas, name='list-fasilitas'), path('lokasi/detail-fasilitas/<str:nama_lokasi>/<int:id>/', views.detail_fasilitas, name='detail-fasilitas'), + path('lokasi/add-komentar/<str:nama_lokasi>/', views.add_komentar, name='add-komentar'), + path('lokasi/list-komentar/<str:nama_lokasi>/<int:id>/', views.list_komentar, name='list-komentar'), path('lokasi/update-fasilitas/<str:nama_lokasi>/<int:id>/', views.update_fasilitas, name='update-fasilitas'), path('lokasi/like-fasilitas/<str:nama_lokasi>/<int:id>/<str:operation>/', views.update_like_fasilitas, name='update-like-fasilitas'), + path('lokasi/add-komentar/<str:nama_lokasi>/<int:id>/', views.add_komentar, name='add-komentar'), + path('lokasi/list-komentar/<str:nama_lokasi>/<int:id>/', views.list_komentar, name='list-komentar'), ] \ No newline at end of file diff --git a/informasi_fasilitas/views.py b/informasi_fasilitas/views.py index edf9f583ab139dba801a709c51118879ef635225..aa0f32fa9b734432b336bb8f0ada7273b30bc225 100644 --- a/informasi_fasilitas/views.py +++ b/informasi_fasilitas/views.py @@ -233,5 +233,50 @@ def update_like_fasilitas(request, nama_lokasi, id, operation): return JsonResponse({'response': "you've successfuly {}d this facility".format(operation)}, status = 201) except KeyError as e: return JsonResponse({'response': missing_key_message(str(e))}, status = 500) + except Exception as e: + return JsonResponse({'response': str(e)}, status = 404) + +@api_view(['POST']) +@authentication_classes([TokenAuthentication]) +@permission_classes([IsAuthenticated]) +def add_komentar(request, nama_lokasi, id): + try: + if request.method == 'POST': + lokasi = Lokasi.objects.get(name = nama_lokasi) + fasilitas = Fasilitas.objects.get(lokasi=lokasi, id=id) + user = User.objects.get(email=str(request.user)) + deskripsi = request.POST['deskripsi'] + komentar = Komentar.objects.create(fasilitas=fasilitas, + user=user, + deskripsi=deskripsi) + return JsonResponse({'response' : 'komentar added', 'id':komentar.id}, status = 201) + else: + return JsonResponse({'response' : request_error_message("post")}, status = 400) + except KeyError as e: + return JsonResponse({'response': missing_key_message(str(e))}, status = 500) + except Exception as e: + return JsonResponse({'response': str(e)}, status = 404) + + +@api_view(['GET']) +@authentication_classes([]) +@permission_classes([]) +def list_komentar(request, nama_lokasi, id): + try: + if request.method == 'GET': + lokasi = Lokasi.objects.get(name=nama_lokasi) + fasilitas = Fasilitas.objects.get(lokasi=lokasi, id=id) + list_komentar = Komentar.objects.filter(fasilitas=fasilitas) + return_json = {} + for komentar in list_komentar: + return_json[komentar.id] = {} + komentar_details = return_json[komentar.id] + komentar_details["id"] = komentar.id + komentar_details["deskripsi"] = komentar.deskripsi + komentar_details["creator"] = komentar.user.last_name + komentar_details["date_time"] = komentar.date_time + return JsonResponse(return_json, status = 200) + except KeyError as e: + return JsonResponse({'response': missing_key_message(str(e))}, status = 500) except Exception as e: return JsonResponse({'response': str(e)}, status = 404) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index c84abfec99c3f8120e49ebf9d9625aac420594f4..68d246239df6eac306421a981f387a943fe6e6b3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -28,7 +28,7 @@ mccabe==0.6.1 oauthlib==3.1.0 Pillow==7.0.0 pip==20.0.2 -psycopg2==2.8.4 +psycopg2 pyasn1==0.4.8 pyasn1-modules==0.2.8 pycparser==2.19