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")
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")
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'))
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', })
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))
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)