def extend(self, request, **kwargs): new_date = request.data.get('expires', None) force = request.data.get('force', False) if not new_date: return Response({'detail': 'New date is missing.'}, status=status.HTTP_400_BAD_REQUEST) df = serializers.DateField() try: new_date = df.to_internal_value(new_date) except: return Response({'detail': 'New date is invalid.'}, status=status.HTTP_400_BAD_REQUEST) tz = pytz.timezone(self.request.event.settings.timezone) new_date = make_aware( datetime.datetime.combine( new_date, datetime.time(hour=23, minute=59, second=59)), tz) order = self.get_object() try: extend_order( order, new_date=new_date, force=force, user=request.user if request.user.is_authenticated else None, auth=request.auth, ) return self.retrieve(request, [], **kwargs) except OrderError as e: return Response({'detail': str(e)}, status=status.HTTP_400_BAD_REQUEST)
def post(self, *args, **kwargs): if self.form.is_valid(): try: extend_order(self.order, new_date=self.form.cleaned_data.get('expires'), force=self.form.cleaned_data.get( 'quota_ignore', False), user=self.request.user) messages.success(self.request, _('The payment term has been changed.')) except OrderError as e: messages.error(self.request, str(e)) return self._redirect_here() except LockTimeoutException: messages.error( self.request, _('We were not able to process the request completely as the ' 'server was too busy.')) return self._redirect_back() else: return self.get(*args, **kwargs)
def extend(self, request, **kwargs): new_date = request.data.get('expires', None) force = request.data.get('force', False) if not new_date: return Response( {'detail': 'New date is missing.'}, status=status.HTTP_400_BAD_REQUEST ) df = serializers.DateField() try: new_date = df.to_internal_value(new_date) except: return Response( {'detail': 'New date is invalid.'}, status=status.HTTP_400_BAD_REQUEST ) tz = pytz.timezone(self.request.event.settings.timezone) new_date = make_aware(datetime.datetime.combine( new_date, datetime.time(hour=23, minute=59, second=59) ), tz) order = self.get_object() try: extend_order( order, new_date=new_date, force=force, user=request.user if request.user.is_authenticated else None, auth=request.auth, ) return self.retrieve(request, [], **kwargs) except OrderError as e: return Response( {'detail': str(e)}, status=status.HTTP_400_BAD_REQUEST )