def block_item(request: HttpRequest) -> HttpResponse: """Block an item from search results using AJAX""" if is_ajax(request) and request.user.is_superuser: obj_type = request.POST["type"] pk = request.POST["id"] if obj_type == "docket": # Block the docket d = get_object_or_404(Docket, pk=pk) d.blocked = True d.date_blocked = now() d.save() elif obj_type == "cluster": # Block the cluster and the docket cluster = get_object_or_404(OpinionCluster, pk=pk) cluster.blocked = True cluster.date_blocked = now() cluster.save(index=False) cluster.docket.blocked = True cluster.docket.date_blocked = now() cluster.docket.save() return HttpResponse("It worked") else: return HttpResponseNotAllowed( permitted_methods=["POST"], content="Not an ajax request" )
def delete_favorite(request: HttpRequest) -> HttpResponse: """Delete a user's favorite Deletes a favorite for a user using an ajax call and post data. """ if is_ajax(request): fave = get_favorite(request) if fave is None: return HttpResponseServerError( "Unknown document, audio, docket, or recap document id.") fave.delete() try: if request.POST["message"] == "True": # used on the profile page. True is a string, not a bool. messages.add_message( request, messages.SUCCESS, "Your favorite was deleted successfully.", ) except MultiValueDictKeyError: # This happens if message isn't set. pass return HttpResponse("It worked.") else: return HttpResponseNotAllowed(permitted_methods=["POST"], content="Not an ajax request.")
def save_or_update_favorite(request: HttpRequest) -> HttpResponse: """Uses ajax to save or update a favorite. Receives a request as an argument, and then uses that plus POST data to create or update a favorite in the database for a specific user. If the user already has the document favorited, it updates the favorite with the new information. If not, it creates a new favorite. """ if is_ajax(request): fave = get_favorite(request) if fave is None: return HttpResponseServerError( "Unknown document, audio, docket or recap document id.") f = FavoriteForm(request.POST, instance=fave) if f.is_valid(): new_fave = f.save(commit=False) new_fave.user = request.user try: new_fave.save() except IntegrityError: # User already has this favorite. return HttpResponse("It worked") else: # Validation errors fail silently. Probably could be better. return HttpResponseServerError("Failure. Form invalid") return HttpResponse("It worked") else: return HttpResponseNotAllowed(permitted_methods={"POST"}, content="Not an ajax request.")
def privatize_visualization(request: HttpRequest) -> HttpResponse: if is_ajax(request): v = SCOTUSMap.objects.get(pk=request.POST.get("pk"), user=request.user) v.published = False v.save() return HttpResponse("It worked") else: return HttpResponseNotAllowed(permitted_methods=["POST"], content="Not an ajax request")
def toggle_monthly_donation(request: HttpRequest) -> HttpResponse: """Use Ajax to enable/disable monthly contributions""" if is_ajax(request) and request.method == "POST": monthly_pk = request.POST.get("id") m_donation = MonthlyDonation.objects.get(pk=monthly_pk) state = m_donation.enabled if state: m_donation.enabled = False msg = "Monthly contribution disabled successfully" else: m_donation.enabled = True msg = "Monthly contribution enabled successfully" m_donation.save() return HttpResponse(msg) else: return HttpResponseNotAllowed(permitted_methods={"POST"}, content="Not an Ajax POST request.")
def toggle_docket_alert(request: AuthenticatedHttpRequest) -> HttpResponse: """Use Ajax to create or delete an alert for a user.""" if request.user.is_anonymous: return HttpResponse("Please log in to continue.") if is_ajax(request) and request.method == "POST": docket_pk = request.POST.get("id") if not docket_pk: msg = "Unable to alter alert. Please provide ID attribute" return HttpResponse(msg) existing_alert = DocketAlert.objects.filter(user=request.user, docket_id=docket_pk) if existing_alert.exists(): existing_alert.delete() msg = "Alert disabled successfully" else: DocketAlert.objects.create(docket_id=docket_pk, user=request.user) msg = "Alerts are now enabled for this docket" return HttpResponse(msg) else: return HttpResponseNotAllowed(permitted_methods={"POST"}, content="Not an ajax POST request.")