Skip to content

Commit

Permalink
Merge pull request #75 from DostEducation/revert-74-revert-73-revert-…
Browse files Browse the repository at this point in the history
…72-develop

Revert "Release 12 Jan 2024 v3"
  • Loading branch information
Sachinbisht27 committed Jan 12, 2024
2 parents e78a50f + ce57a05 commit 6e72684
Show file tree
Hide file tree
Showing 11 changed files with 62 additions and 80 deletions.
10 changes: 0 additions & 10 deletions api/models/call_log_event.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,8 @@
from api.mixins import TimestampMixin
from api import db
from flask_sqlalchemy.query import Query as BaseQuery


class CallLogEventQuery(BaseQuery):
def call_sid_exist(self, form_data):
return (
self.filter(CallLogEvent.call_sid == form_data["CallSid"]).first()
is not None
)


class CallLogEvent(TimestampMixin, db.Model):
query_class = CallLogEventQuery
__tablename__ = "call_log_event"
id = db.Column(db.Integer, primary_key=True)
call_sid = db.Column(db.String(255))
Expand Down
1 change: 0 additions & 1 deletion api/models/registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ class Registration(TimestampMixin, db.Model):
user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
partner_id = db.Column(db.Integer, db.ForeignKey("partner.id"))
program_id = db.Column(db.Integer, db.ForeignKey("program.id"))
language_id = db.Column(db.Integer)
district = db.Column(db.String(100), nullable=True)
state = db.Column(db.String(100), nullable=True)
parent_type = db.Column(db.String(100), nullable=True)
Expand Down
12 changes: 0 additions & 12 deletions api/models/system_phone.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,8 @@
from api.mixins import TimestampMixin
from api import db
from flask_sqlalchemy.query import Query as BaseQuery


class SystemPhoneQuery(BaseQuery):
def system_phone_exists(self, url_decoded_system_phone):
return (
self.filter(
SystemPhone.phone.contains(url_decoded_system_phone[-10:])
).first()
is not None
)


class SystemPhone(TimestampMixin, db.Model):
query_class = SystemPhoneQuery
__tablename__ = "system_phone"
id = db.Column(db.Integer, primary_key=True)
phone = db.Column(db.String(50))
Expand Down
2 changes: 1 addition & 1 deletion api/models/user.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from api.mixins import TimestampMixin
from api import db
from flask_sqlalchemy.query import Query as BaseQuery
from flask_sqlalchemy import BaseQuery


class UserQuery(BaseQuery):
Expand Down
2 changes: 1 addition & 1 deletion api/models/user_program.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from api.mixins import TimestampMixin
from api import db
from api import app, models, helpers
from flask_sqlalchemy.query import Query as BaseQuery
from flask_sqlalchemy import BaseQuery
from api.helpers.common_helper import current_ist_time


Expand Down
3 changes: 2 additions & 1 deletion api/services/call_log_event_service.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# This file is treated as service layer
from api import helpers, models
from flask import request
from api import helpers, models, db
from datetime import datetime
from utils.loggingutils import logger
import traceback
Expand Down
13 changes: 8 additions & 5 deletions api/services/handle_event_service.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import requests
from api import models, app
from flask import request
from api import models, db, app
from . import user_service as user
from . import registration_service as registration
from . import call_log_event_service as call_log_event
Expand All @@ -9,16 +10,18 @@

class HandleEventService:
def handle_event_service(self, form_data):
call_sid_exist = models.CallLogEvent.query.call_sid_exist(form_data)
call_sid_exist = db.session.query(
db.exists().where(models.CallLogEvent.call_sid == form_data["CallSid"])
).scalar()

if call_sid_exist:
return

url_decoded_system_phone = requests.utils.unquote(form_data["To"])

system_phone_exists = models.SystemPhone.query.system_phone_exists(
url_decoded_system_phone
)
system_phone_exists = db.session.query(
db.exists().where(models.SystemPhone.phone == url_decoded_system_phone)
).scalar()

if not system_phone_exists:
return
Expand Down
1 change: 1 addition & 0 deletions config.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
% POSTGRES
)

SQLALCHEMY_TRACK_MODIFICATIONS = True
WTF_CSRF_ENABLED = True
SECRET_KEY = os.environ.get("SECRET_KEY")

Expand Down
73 changes: 37 additions & 36 deletions main.py
Original file line number Diff line number Diff line change
@@ -1,52 +1,52 @@
from api import app, services, helpers
from flask import jsonify
# from pprint import pprint
from api import models, db, services
from flask import jsonify, request
import json
from utils.loggingutils import logger


def callback(request):
with app.app_context():
json_data = None
form_data = None
json_data = None
form_data = None

if request.method == "POST":
content_type = request.headers.get("Content-Type")
if request.method == "POST":
content_type = request.headers.get("Content-Type")

if content_type == "application/json":
json_data = request.get_json()
else:
form_data = request.form
if content_type == "application/json":
json_data = request.get_json()
else:
form_data = request.form

transaction_log_service = services.TransactionLogService()
transaction_log_service = services.TransactionLogService()

try:
if json_data and json_data.get("type", None) == "retry_failed_log":
retry_failed_webhook(transaction_log_service)
return "Success"
try:
if json_data and json_data.get("type", None) == "retry_failed_log":
retry_failed_webhook(transaction_log_service)
return "Success"

ivr_transaction_log = (
transaction_log_service.create_new_ivr_transaction_log(form_data)
)
except Exception as e:
logger.error(
f"Issues with transaction logs creation for form data {form_data}. Error message: {e}"
)
ivr_transaction_log = (
transaction_log_service.create_new_ivr_transaction_log(form_data)
)
except Exception as e:
logger.error(
f"Issues with transaction logs creation for form data {form_data}. Error message: {e}"
)

processed = process_form_data(form_data)
processed = process_form_data(form_data)

if not processed:
return jsonify(message="Something went wrong!"), 400
if not processed:
return jsonify(message="Something went wrong!"), 400

transaction_log_service.mark_ivr_transaction_log_as_processed(
ivr_transaction_log
)
else:
return (
jsonify(message="Currently, the system do not accept a GET request"),
405,
)
transaction_log_service.mark_ivr_transaction_log_as_processed(
ivr_transaction_log
)
else:
return (
jsonify(message="Currently, the system do not accept a GET request"),
405,
)

return "Success"
return "Success"


def retry_failed_webhook(transaction_log_service):
Expand All @@ -57,7 +57,8 @@ def retry_failed_webhook(transaction_log_service):
payload["log_created_on"] = log.created_on
log.processed = process_form_data(payload)
log.attempts += 1
helpers.save(log)
db.session.add(log)
db.session.commit()


def process_form_data(form_data):
Expand Down
2 changes: 1 addition & 1 deletion requirements-dev.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Includes dev dependencies on top of requirements.txt
-r requirements.txt
functions-framework==3.5.0
functions-framework==2.1.2
pre-commit==2.11.0
23 changes: 11 additions & 12 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
certifi==2020.12.5
chardet==4.0.0
click==8.1.3
Flask==3.0.0
click==7.1.2
Flask==1.1.2
requests==2.25.1
python-dotenv==0.15.0
Flask-SQLAlchemy==3.1.1
functions-framework==3.5.0
Flask-SQLAlchemy==2.1
idna==2.10
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.1
psycopg2==2.9.9
itsdangerous==1.1.0
Jinja2==2.11.3
MarkupSafe==1.1.1
psycopg2==2.8.6
python-dotenv==0.15.0
requests==2.31.0
SQLAlchemy==2.0.23
requests==2.25.1
SQLAlchemy==1.3.23
urllib3==1.26.3
Werkzeug==3.0.0
watchdog==3.0.0
Werkzeug==1.0.1
google-cloud-logging==3.5.0

0 comments on commit 6e72684

Please sign in to comment.