Пример #1
0
def send_sms_notification(sender, instance=None, created=False, **kwargs):
    if created:
        agenda = instance.agenda
        organiser = instance.organiser
        date = instance.date.strftime("%d/%m/%Y")
        message = "A meeting on \"" + agenda + "\" by " + organiser + " is scheduled on " + date
        contacts = Contact.objects.filter(verification_status=True)
        for contact in contacts:
            try:
                sms.send_message("+91" + contact.number, sms.TWILIO_NUMBER,
                                 message)
            except:
                print("unable to send SMS")
Пример #2
0
def send_sms_conf(sender, instance=None, created=False, **kwargs):
    if created:
        if instance.amount > 0:
            message = "Your E-wallet has been credited with Rs." + str(
                instance.amount)
        else:
            message = "Your E-wallet has been debited for Rs." + str(
                instance.amount)
        if not instance.user.category == 'N':
            send_to = str(instance.user.contact_set.first().number)
        else:
            return
        try:
            sms.send_message('+91' + send_to, sms.TWILIO_NUMBER, message)
        except:
            print("unable to send sms")
Пример #3
0
def confcrop(request, cropID):

    if request.method == 'POST':
        user = request.user
        landarea = int(request.data.get('landarea'))

        try:
            crop = Crops.objects.get(id=cropID, live=True)
        except:
            return Response(statuscode('19'))
        try:
            FarmerCropMap(farmer=user, crop=crop, landarea=landarea).save()
            crop.current_amount += crop.weigth_per_land * landarea
            crop.subscribers += 1
            crop.save()
        except:
            return Response(statuscode('12'))

        message = "You have successfully subcribed to " + crop.name
        try:
            if user.category != 'N':
                send_to = str(user.contact_set.first().number)
                sms.send_message('+91' + send_to, sms.TWILIO_NUMBER, message)
        except:
            print("SMS could not be sent")
        return Response(statuscode('0'))

    if request.method == 'DELETE':
        user = request.user
        try:
            crop = Crops.objects.get(id=cropID, live=True)
        except:
            return Response(statuscode('19'))
        try:
            subscription = FarmerCropMap.objects.get(farmer=user, crop=crop)
            crop.current_amount -= subscription.landarea * crop.weigth_per_land
            crop.subscribers -= 1
            crop.save()
            subscription.delete()
        except:
            return Response(statuscode('12'))

        return Response(statuscode('0'))
Пример #4
0
def register(request):
    if request.method == 'POST':
        serializer = RegistrationSerializer(data=request.data)
        category = request.data.get('category')

        data = {}
        User = None
        ##User Registration code
        username = request.data.get('username')
        check_user = UserProfile.objects.filter(username=username)
        if check_user.count() > 0 and check_user.first().category != 'N':
            old_user = check_user.first()
            contact = Contact.objects.filter(user=old_user)
            if contact.count() > 0 and contact.first(
            ).verification_status == False:
                try:
                    old_user.delete()
                except:
                    return Response(statuscode('26'))
            elif contact.count() == 0:
                try:
                    old_user.delete()
                except:
                    return Response(statuscode('26'))

        if serializer.is_valid():
            User = serializer.save()
            data = {
                'response': 'Registration Successfull',
                'username': User.username,
                'category': User.category,
                'token': Token.objects.get(user=User).key,
            }
        else:
            data = serializer.errors
            data['statuscode'] = '7'
            return Response(data)

        ##OTP code
        phone_number = ''
        if category != 'N':
            try:
                phone_number = request.data.get('contact')
            except:
                return Response({'statuscode': '1'})
            if len(phone_number) != 10:
                return Response({'statuscode': '1'})
        else:
            return Response({
                'statuscode': '0',
                'token': Token.objects.get(user=User).key
            })

        otp = random.randint(100000, 999999)
        if Contact.objects.filter(number=phone_number).count() == 0:
            Contact(user=User, number=phone_number, otp=otp).save()
        else:
            try:
                OTPinst = Contact.objects.get(number=phone_number)
                if OTPinst.verification_status:
                    return Response({
                        'statuscode': '8',
                    })
                OTPinst.otp = otp
                OTPinst.datetime = timezone.now()
                OTPinst.user = User
                OTPinst.save()
            except:
                #print("OTP could not be saved in DB")
                return Response({
                    'statuscode': '3',  #otp could not be saved in DB
                })

        message = "Your OTP is " + str(otp) + "."
        print(phone_number, sms.TWILIO_NUMBER, message)
        try:
            sms.send_message("+91" + phone_number, sms.TWILIO_NUMBER, message)
        except Exception as e:
            return Response({
                'statuscode': '2',  # otp couldn't be sent.
            })

        return Response({
            'statuscode': '0',
        })
Пример #5
0
def order(request):

    if request.method=='POST':
        user = request.user
        productID = int(request.data.get('id'))
        paymentType = request.data.get('type')

        if int(productID)!=-1:
            quantity = int(request.data.get('quantity'))
            try:
                product = Products.objects.get(id=productID)
            except Exception as e:
                return Response({
                    'statuscode': '11'
                })

            try:
                order = Orders(type=paymentType,
                               buyer=user,
                               item=product,
                               rate=product.rate,
                               quantity=quantity,
                               price=product.rate * quantity)
            except Exception as e:
                return Response({
                    'statuscode': str(e)
                })

            if paymentType=="CAS" or paymentType=="PEW":
                order.is_paid = True

            refno = ""
            if paymentType == "PEW":
                description = ""
                try:
                    refno = makeTransaction(user, order.price, description)
                except Exception as e:
                    return Response(statuscode(str(e)))
            try:
                order.save()
            except:
                return Response(statuscode('12'))
            try:
                message = "Your order has been placed successfully, Products : " + order.item.name + ", OrderID : " + str(order.id)
                if order.buyer.category != 'N':
                    send_to = str(order.buyer.contact_set.first().number)
                    sms.send_message('+91' + send_to, sms.TWILIO_NUMBER, message)
            except Exception as e:
                print("SMS could not be sent.")

            if paymentType=='PEW':
                transaction = ew_transaction.objects.get(refno=refno)
                transaction.description = "Paid to FPO for OrderID: " + str(order.id)
                transaction.save()
            
            return Response({
                'statuscode': '0',
                'orderID': order.id,
            })

        else:
            kart = Kart.objects.filter(user=user)
            if kart.count()==0:
                return Response(statuscode('0'))
            productIDs = []
            for kartItem in kart:
                productIDs += str(kartItem.item.id)

            products = Products.objects.filter(id__in=productIDs)
            totalCost = 0

            for kartItem in kart:
                totalCost += kartItem.item.rate * kartItem.quantity
            if paymentType=='PEW':
                ewalletBalance = Ewallet.objects.get(user=user).amount
                if ewalletBalance < totalCost:
                    return Response(statuscode('17'))

            orderIDs = []
            orders = []
            amount = 0
            for kartentry in kart:
                quantity = kartentry.quantity
                try:
                    orders.append(Orders(type=type,
                                           buyer=user,
                                           item=kartentry.item,
                                           rate=kartentry.item.rate,
                                           quantity=quantity,
                                           price=kartentry.item.rate * quantity))
                except Exception as e:
                    return Response(statuscode(str(e)))

            if paymentType == "PEW":
                description = ""
                try:
                    refno = makeTransaction(user, totalCost, description)
                except Exception as e:
                    return Response(statuscode(str(e)))

            productsstring = " "
            for order in orders:
                if paymentType=="CAS" or paymentType=="PEW":
                    order.is_paid = True
                order.save()
                orderIDs.append(order.id)
                productsstring += " " + (order.item.name) + ","

            try:
                message = "Your order has been placed successfully, Products : " + productsstring
                if order.buyer.category != 'N':
                    send_to = str(order.buyer.contact_set.first().number)
                    sms.send_message('+91' + send_to, sms.TWILIO_NUMBER, message)
            except:
                print("sms couldn't be sent")

            if paymentType=="PEW":
                description = "Paid to FPO for OrderIDs: " + str(orderIDs)
                transaction = ew_transaction.objects.get(refno=refno)
                transaction.description = description
                transaction.save()

            kart.delete()
            return Response(statuscode('0', {'orderIDs': orderIDs, 'total_cost': totalCost}))

    if request.method=='GET':
        user = request.user
        try:
            completed_orders = Orders.objects.filter(buyer=user, is_delivered=True).order_by('-date').values()
            pending_orders = Orders.objects.filter(buyer=user, is_delivered=False).order_by('-date').values()
        except:
            return Response(statuscode('12'))

        completed_orders_list = list(completed_orders)
        pending_orders_list = list(pending_orders)

        for completed_order in completed_orders_list:
            product = Products.objects.get(id=completed_order.get('item_id'))
            completed_order.update({
                                        'product_name': product.name,
                                        'rate': product.rate,
                                        'image': product.image.url
                                    })

        for pending_order in pending_orders_list:
            product = Products.objects.get(id=pending_order.get('item_id'))
            pending_order.update({
                                        'product_name': product.name,
                                        'rate': product.rate,
                                        'image': product.image.url
                                    })

        data = {
            'completed_orders': completed_orders,
            'pending_orders': pending_orders,
        }

        return Response(statuscode('0', data))
Пример #6
0
def send_sms_conf(sender, instance=None, created=False, **kwargs):
    if created:
        message = "Your order has been placed successfully, OrderID : " + str(instance.id)
        if instance.buyer.category!='N':
            send_to = str(instance.buyer.contact_set.first().number)
            sms.send_message( '+91'+send_to, sms.TWILIO_NUMBER, message)