def validate(self, data): token = data.get('token') # get token validation time password_reset_token_validation_time = get_password_reset_token_expiry_time( ) # find token try: reset_password_token = _get_object_or_404( models.ResetPasswordToken, key=token) except (TypeError, ValueError, ValidationError, Http404, models.ResetPasswordToken.DoesNotExist): raise Http404( _("The OTP password entered is not valid. Please check and try again." )) # check expiry date expiry_date = reset_password_token.created_at + timedelta( hours=password_reset_token_validation_time) if timezone.now() > expiry_date: # delete expired token reset_password_token.delete() raise Http404(_("The token has expired")) return data
def get_object(self): queryset = self.filter_queryset(self.get_queryset()) lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field assert lookup_url_kwarg in self.kwargs, ( constants.LOOKUP_ERROR % (self.__class__.__name__, lookup_url_kwarg)) filter_kwargs = {self.lookup_field: self.kwargs[lookup_url_kwarg]} try: application = _get_object_or_404(queryset, **filter_kwargs) self._obj = application.proposer or application.quote.opportunity.lead.contact # noqa except (TypeError, ValueError, ValidationError): self._obj = Http404 if 'search' in self.request.query_params and self.request.method == 'GET': # noqa contacts = Contact.objects.filter( phone_no=self.request.query_params.get('search')).exclude( last_name='').exclude( proposerdocument=None).order_by('modified') if not contacts.exists(): raise mixins.NotFound('Application field not found.') if self._obj and contacts: if self._obj.id not in contacts: self._obj = contacts.latest('modified') # May raise a permission denied self.check_object_permissions(self.request, self._obj) return self._obj
def add_item(request, list_id): # get the list using the list_id list_obj = _get_object_or_404(_models.List, pk=list_id) if list_obj.user != request.user: return _defaults.page_not_found() # ensure that the list belongs to the auth user return _render(request, "pages/lists/add_item.html")
def delete(self, request, list_id): user = request.user list_obj = _get_object_or_404(self.model, pk=list_id) if list_obj.user != user: return _response.Response(status=_status.HTTP_404_NOT_FOUND) list_obj.delete() return _response.Response(status=_status.HTTP_204_NO_CONTENT)
def get(self, request, list_id): user = request.user list_obj = _get_object_or_404(self.model, pk=list_id) if list_obj.user != user: return _response.Response(status=_status.HTTP_404_NOT_FOUND) serializer = _ListSerializer(list_obj) return _response.Response(data=serializer.data)
def get_object_or_404(queryset, *filter_args, **filter_kwargs): from django.shortcuts import get_object_or_404 as _get_object_or_404 from django.core.exceptions import ValidationError from django.http import Http404 try: return _get_object_or_404(queryset, *filter_args, **filter_kwargs) except (TypeError, ValueError, ValidationError): raise Http404
def get_object_or_404(queryset, *filter_args, **filter_kwargs): """ Same as Django's standard shortcut, but make sure to raise 404 if the filter_kwargs don't match the required types. """ try: return _get_object_or_404(queryset, *filter_args, **filter_kwargs) except (TypeError, ValueError): raise Http404
def get_object_or_404(queryset, *filter_args, **filter_kwargs): """ Same as Django's standard shortcut, but make sure to also raise 404 if the filter_kwargs don't match the required types. """ try: return _get_object_or_404(queryset, *filter_args, **filter_kwargs) except (TypeError, ValueError, ValidationError): raise Http404
def get_object_or_404(queryset, *filter_args, **filter_kwargs): """ Same as Django's standard shortcut, but make sure to also raise 404 if the filter_kwargs don't match the required types. This function was copied from rest_framework.generics because of issue #36. """ try: return _get_object_or_404(queryset, *filter_args, **filter_kwargs) except (TypeError, ValueError, ValidationError): raise Http404
def get_object_or_error(queryset, user, *filter_args, **filter_kwargs): """ Same as Django's standard shortcut, but make sure to raise 404 (if the filter_kwargs don't match the required types), or 401 (if the user is not logged in). """ try: return _get_object_or_404(queryset, *filter_args, **filter_kwargs) except (Http404, TypeError, ValueError): if not user.is_authenticated: raise NotAuthenticated raise Http404
def put(self, request, list_id): user = request.user serializer = _ListSerializer(data=request.data) serializer.is_valid(raise_exception=True) list_obj = _get_object_or_404(self.model, pk=list_id) list_obj.name = serializer.validated_data["name"] list_obj.is_completed = serializer.validated_data["is_completed"] list_obj.date_completed = serializer.validated_data["date_completed"] list_obj.save() serializer = _ListSerializer(instance=list_obj) return _response.Response(serializer.data)
def get_object_or_404_customed(queryset, *filter_args, **filter_kwargs): """ Same as Django's standard shortcut, but make sure to also raise 404 if the filter_kwargs don't match the required types. """ try: return _get_object_or_404(queryset, *filter_args, **filter_kwargs) except (TypeError, ValueError, ValidationError): raise Http404 except Http404 as e: # print(e) # print(type(e)) raise CustomAPIException( status_code=status.HTTP_404_NOT_FOUND, detail=f"{queryset.__name__}'s object is not found!", object=queryset.__name__, )
def get_object(self, queryset=None, *args, **kwargs): user_pk = self.kwargs.get('user_pk') bucket_slug = self.kwargs.get('bucket_slug') # https://github.com/tomchristie/django-rest-framework/blob/b1847412b57b4bc7db39739e0c7c0e8469d3bb48/rest_framework/generics.py#L260 # Determine the base queryset to use. if queryset is None: queryset = self.filter_queryset(self.get_queryset()) else: pass # Deprecation warning filter_kwargs = {'user': user_pk, 'slug': bucket_slug} try: obj = _get_object_or_404(queryset, **filter_kwargs) except (TypeError, ValueError): return Http404 self.check_object_permissions(self.request, obj) return obj
def get_object(self): queryset = self.filter_queryset(self.get_queryset()) lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field assert lookup_url_kwarg in self.kwargs, ( constants.LOOKUP_ERROR % (self.__class__.__name__, lookup_url_kwarg)) filter_kwargs = {self.lookup_field: self.kwargs[lookup_url_kwarg]} try: self.application = _get_object_or_404(queryset, **filter_kwargs) self.application_type = self.application.application_type if not hasattr(self.application, self.application.application_type): self._obj = Http404 else: self._obj = getattr(self.application, self.application.application_type) except (TypeError, ValueError, ValidationError): self._obj = Http404 # May raise a permission denied self.check_object_permissions(self.request, self._obj) return self._obj
def get_object_or_404(queryset, *filter_args, **filter_kwargs): try: return _get_object_or_404(queryset, *filter_args, **filter_kwargs) except (TypeError, ValueError, ValidationError): raise NotFound
def get_object_or_404(model, **kwargs): from django.shortcuts import get_object_or_404 as _get_object_or_404 if 'published' not in kwargs: kwargs['published'] = True return _get_object_or_404(model, **kwargs)
def get_model_for_kwarg(model, kwarg_field='object_id', model_field='pk', **kwargs): return _get_object_or_404(model._default_manager, **{model_field: kwargs.get(kwarg_field, None)})
def get_object_or_not_found(queryset, *args, **kwargs): try: return _get_object_or_404(queryset, *args, **kwargs) except (TypeError, ValueError, ValidationError, Http404): raise exceptions.NotFound(**kwargs)
def get_object_or_None(Object, *args, **kwargs): try: return _get_object_or_404(Object, *args, **kwargs) except (Http404, MultipleObjectsReturned): return None
def get_object_or_404(queryset, *filter_args, **filter_kwargs): try: return _get_object_or_404(queryset, *filter_args, **filter_kwargs) except (TypeError, ValueError, ValidationError, Http404): raise APIException(message='该对象不存在或者无访问权限')