1

I would like to create a user when saving an object to the database but every time it says the user is AnonymousUser even though the user is logged in, below is a snippet, any help would be appreciated.

 def post(self, request):
    response = json.loads(self.request.body.decode('utf-8')) 

    result_code = response["Body"]["stkCallback"]["ResultCode"]

    if result_code == 0:
        if response["Body"]["stkCallback"]["CallbackMetadata"]["Item"][2]["Name"] == 'Balance':
            del response["Body"]["stkCallback"]["CallbackMetadata"]["Item"][2]

        amount = response["Body"]["stkCallback"]["CallbackMetadata"]["Item"][0]["Value"]
        mpesa_receipt_number = response["Body"]["stkCallback"]["CallbackMetadata"]["Item"][1]["Value"]
        transaction_date = response["Body"]["stkCallback"]["CallbackMetadata"]["Item"][2]["Value"]
        phone_number = response["Body"]["stkCallback"]["CallbackMetadata"]["Item"][3]["Value"]

        str_transaction_date = str(transaction_date)
        transaction_datetime = datetime.strptime(
            str_transaction_date, "%Y%m%d%H%M%S")
        aware_transaction_datetime = pytz.utc.localize(
            transaction_datetime)

        our_model = Mpesa.objects.create(
            Paid_user=request.user
            MpesaReceiptNumber=mpesa_receipt_number,
            PhoneNumber=phone_number,
            Amount=amount,
            TransactionDate=aware_transaction_datetime,
        )

        our_model.save()

1 Answers1

0

You need to add permission_classes in your view like this -

from rest_framework.permissions import IsAuthenticated

class SomeView(APIView):

    permission_classes = [IsAuthenticated]

    def post(self, request, format=None):
        # now here in your post you will be able to use `request.user` to know the user requesting this view.
        pass

I hope this is what you are looking for.

Jeet Patel
  • 1,140
  • 18
  • 51