Archived
PEP8. Long lines are OKAY
This commit is contained in:
1 parent
d852ebad1a
commit
3cf06df258
1 file changed
+84
-56
+84
-56
@@ -23,17 +23,19 @@ if not app.debug:
|
||||
handler.setLevel(logging.INFO)
|
||||
app.logger.addHandler(handler)
|
||||
|
||||
|
||||
def connect_db():
|
||||
"""Connects to our database."""
|
||||
db = MySQLdb.connect(
|
||||
host = app.config['DATABASE_HOST'],
|
||||
user = app.config['DATABASE_USER'],
|
||||
passwd = app.config['DATABASE_PASS'],
|
||||
db = app.config['DATABASE_NAME'],
|
||||
cursorclass = MySQLdb.cursors.DictCursor,
|
||||
host=app.config['DATABASE_HOST'],
|
||||
user=app.config['DATABASE_USER'],
|
||||
passwd=app.config['DATABASE_PASS'],
|
||||
db=app.config['DATABASE_NAME'],
|
||||
cursorclass=MySQLdb.cursors.DictCursor,
|
||||
charset='utf8')
|
||||
return db
|
||||
|
||||
|
||||
def get_db():
|
||||
"""Opens a new database connection if there is none yet for the
|
||||
current application context."""
|
||||
@@ -41,12 +43,14 @@ def get_db():
|
||||
g.db = connect_db()
|
||||
return g.db
|
||||
|
||||
|
||||
@app.teardown_appcontext
|
||||
def close_db(error):
|
||||
"""Closes the database connection at the end of the request."""
|
||||
if hasattr(g, 'db'):
|
||||
g.db.close()
|
||||
|
||||
|
||||
def query_db(query, args=(), one=False, lastrowid=False):
|
||||
"""Queries the database.
|
||||
|
||||
@@ -70,6 +74,7 @@ def query_db(query, args=(), one=False, lastrowid=False):
|
||||
cur.close()
|
||||
return ret
|
||||
|
||||
|
||||
def get_user_by_phone(number):
|
||||
user = query_db("""
|
||||
SELECT user.*,
|
||||
@@ -80,6 +85,7 @@ def get_user_by_phone(number):
|
||||
""", [number], one=True)
|
||||
return user
|
||||
|
||||
|
||||
def log_incoming(**kwargs):
|
||||
return query_db("""
|
||||
INSERT INTO din_sms_received
|
||||
@@ -88,6 +94,7 @@ def log_incoming(**kwargs):
|
||||
(%(userid)s, %(gsm)s, %(codeword)s, %(message)s, %(operator)s, %(shortno)s, %(action)s, %(ip)s, %(simulation)s)
|
||||
""", kwargs, lastrowid=True)
|
||||
|
||||
|
||||
def set_incoming_action(**kwargs):
|
||||
query_db("""
|
||||
UPDATE din_sms_received
|
||||
@@ -95,6 +102,7 @@ def set_incoming_action(**kwargs):
|
||||
WHERE smsid = %(smsid)s
|
||||
""", kwargs)
|
||||
|
||||
|
||||
def log_sent(**kwargs):
|
||||
query_db("""
|
||||
INSERT INTO din_sms_sent
|
||||
@@ -104,6 +112,7 @@ def log_sent(**kwargs):
|
||||
%(operator)s, %(codeword)s, %(billing_price)s, %(use_dlr)s, %(simulation)s, %(activation_code)s)
|
||||
""", kwargs)
|
||||
|
||||
|
||||
def is_user_expired(user):
|
||||
# A friendly reminder about how the 'expires' column works:
|
||||
# NULL means the membership should never expire
|
||||
@@ -131,6 +140,7 @@ def is_user_expired(user):
|
||||
else:
|
||||
assert False, "What a trainwreck, we shouldn't be here"
|
||||
|
||||
|
||||
def get_full_name(user):
|
||||
full_name = "%s %s" % (
|
||||
user.get('firstname', '').strip(),
|
||||
@@ -138,19 +148,22 @@ def get_full_name(user):
|
||||
)
|
||||
return full_name[:50].strip()
|
||||
|
||||
|
||||
def fix_encoding(message):
|
||||
try:
|
||||
assert type(message) == unicode
|
||||
new_message = message.encode('latin-1', 'ignore')
|
||||
except:
|
||||
new_message = message
|
||||
app.logger.warning("Unicode woes: message_type=%s message=%s exc_info=%s",
|
||||
app.logger.warning(
|
||||
"Unicode woes: message_type=%s message=%s exc_info=%s",
|
||||
type(message), message, sys.exc_info())
|
||||
# Oh, never mind, let's try to send it anyway.
|
||||
pass
|
||||
|
||||
return new_message
|
||||
|
||||
|
||||
def send_sms(log_only=False, gsm=None, message=None, response_to=None, billing=False, billing_price=None, operator=None, activation_code=None):
|
||||
assert gsm
|
||||
assert message
|
||||
@@ -165,7 +178,8 @@ def send_sms(log_only=False, gsm=None, message=None, response_to=None, billing=F
|
||||
|
||||
# Truncate message if too long
|
||||
if len(message_latin) > 160:
|
||||
app.logger.warning("Truncated the following message to 160 chars: %s", message_latin)
|
||||
app.logger.warning(
|
||||
"Truncated the following message to 160 chars: %s", message_latin)
|
||||
message_latin = message_latin[:160]
|
||||
|
||||
params = {
|
||||
@@ -199,15 +213,19 @@ def send_sms(log_only=False, gsm=None, message=None, response_to=None, billing=F
|
||||
try:
|
||||
result = requests.get(endpoint, params=params)
|
||||
except:
|
||||
app.logger.error("Caught exception while attempting to contact Eurobate: %s", sys.exc_info())
|
||||
app.logger.error(
|
||||
"Caught exception while attempting to contact Eurobate: %s",
|
||||
sys.exc_info())
|
||||
return False
|
||||
|
||||
if result.status_code != requests.codes.ok: # 200
|
||||
app.logger.error("Got status code %s from Eurobate", result.status_code)
|
||||
if result.status_code != requests.codes.ok: # 200
|
||||
app.logger.error(
|
||||
"Got status code %s from Eurobate", result.status_code)
|
||||
return False
|
||||
|
||||
app.logger.debug("Hit URL: %s\nGot result.text: %s", result.url, result.text)
|
||||
|
||||
app.logger.debug(
|
||||
"Hit URL: %s\nGot result: %s", result.url, result.text)
|
||||
|
||||
response = result.text.split(' ')
|
||||
if response[:3] == ['Meldingen', 'er', 'sendt']:
|
||||
if billing and len(response) == 4 and response[3].isdigit():
|
||||
@@ -219,22 +237,23 @@ def send_sms(log_only=False, gsm=None, message=None, response_to=None, billing=F
|
||||
return False
|
||||
|
||||
log_sent(
|
||||
response_to = response_to if response_to else 0,
|
||||
msgid = msgid if billing else 0,
|
||||
sender = params['avsender'],
|
||||
receiver = gsm,
|
||||
countrycode = params['land'],
|
||||
message = message,
|
||||
operator = params['operator'] if billing else 'NULL',
|
||||
codeword = params['kodeord'] if billing else 'NULL',
|
||||
billing_price = params['ore'] if billing else 0,
|
||||
#use_dlr = 1 if billing else 0,
|
||||
use_dlr = 0,
|
||||
simulation = 1 if app.config['EB_SIMULATE'] else 0,
|
||||
activation_code = activation_code if activation_code else 'NULL')
|
||||
response_to=response_to if response_to else 0,
|
||||
msgid=msgid if billing else 0,
|
||||
sender=params['avsender'],
|
||||
receiver=gsm,
|
||||
countrycode=params['land'],
|
||||
message=message,
|
||||
operator=params['operator'] if billing else 'NULL',
|
||||
codeword=params['kodeord'] if billing else 'NULL',
|
||||
billing_price=params['ore'] if billing else 0,
|
||||
#use_dlr=1 if billing else 0,
|
||||
use_dlr=0,
|
||||
simulation=1 if app.config['EB_SIMULATE'] else 0,
|
||||
activation_code=activation_code if activation_code else 'NULL')
|
||||
|
||||
return True if not billing else msgid
|
||||
|
||||
|
||||
def notify_valid_membership(response_to=None, gsm=None, user=None):
|
||||
assert gsm and user
|
||||
|
||||
@@ -249,6 +268,7 @@ def notify_valid_membership(response_to=None, gsm=None, user=None):
|
||||
set_incoming_action(smsid=response_to, action='notify_valid_membership')
|
||||
return fix_encoding(message)
|
||||
|
||||
|
||||
def notify_payment_options_new(response_to=None, gsm=None):
|
||||
assert gsm
|
||||
|
||||
@@ -258,6 +278,7 @@ def notify_payment_options_new(response_to=None, gsm=None):
|
||||
set_incoming_action(smsid=response_to, action='notify_payment_options_new')
|
||||
return fix_encoding(message)
|
||||
|
||||
|
||||
def notify_payment_options_renewal(response_to=None, gsm=None):
|
||||
assert gsm
|
||||
|
||||
@@ -267,6 +288,7 @@ def notify_payment_options_renewal(response_to=None, gsm=None):
|
||||
set_incoming_action(smsid=response_to, action='notify_payment_options_renewal')
|
||||
return fix_encoding(message)
|
||||
|
||||
|
||||
def notify_could_not_charge(response_to=None, gsm=None):
|
||||
assert gsm
|
||||
|
||||
@@ -276,16 +298,18 @@ def notify_could_not_charge(response_to=None, gsm=None):
|
||||
set_incoming_action(smsid=response_to, action='notify_could_not_charge')
|
||||
return fix_encoding(message)
|
||||
|
||||
|
||||
def renew_membership(response_to=None, gsm=None, user=None, operator=None):
|
||||
assert gsm and user
|
||||
|
||||
new_expire = datetime.date.today() + datetime.timedelta(days=365)
|
||||
|
||||
query_db(
|
||||
"UPDATE din_user SET expires = %(expires)s WHERE id = %(id)s", {
|
||||
"UPDATE din_user SET expires = %(expires)s WHERE id = %(id)s",
|
||||
{
|
||||
'expires': str(new_expire),
|
||||
'id': user['id']
|
||||
})
|
||||
})
|
||||
|
||||
query_db("""
|
||||
INSERT INTO din_userupdate (date, user_id_updated, comment, user_id_updated_by)
|
||||
@@ -303,12 +327,12 @@ def renew_membership(response_to=None, gsm=None, user=None, operator=None):
|
||||
})
|
||||
|
||||
msgid = send_sms(
|
||||
response_to = response_to,
|
||||
gsm = gsm,
|
||||
message = message,
|
||||
operator = operator,
|
||||
billing = True,
|
||||
billing_price = app.config['MEMBERSHIP_PRICE_KR'] * 100,
|
||||
response_to=response_to,
|
||||
gsm=gsm,
|
||||
message=message,
|
||||
operator=operator,
|
||||
billing=True,
|
||||
billing_price=app.config['MEMBERSHIP_PRICE_KR'] * 100,
|
||||
)
|
||||
|
||||
if not msgid:
|
||||
@@ -318,6 +342,7 @@ def renew_membership(response_to=None, gsm=None, user=None, operator=None):
|
||||
set_incoming_action(smsid=response_to, action='renew_membership')
|
||||
return fix_encoding(u"Vi vil nå forsøke å fornye medlemskapet ditt...")
|
||||
|
||||
|
||||
def new_membership(response_to=None, gsm=None, operator=None):
|
||||
assert gsm
|
||||
|
||||
@@ -329,13 +354,13 @@ def new_membership(response_to=None, gsm=None, operator=None):
|
||||
})
|
||||
|
||||
msgid = send_sms(
|
||||
response_to = response_to,
|
||||
gsm = gsm,
|
||||
message = message,
|
||||
operator = operator,
|
||||
activation_code = activation_code,
|
||||
billing = True,
|
||||
billing_price = app.config['MEMBERSHIP_PRICE_KR'] * 100,
|
||||
response_to=response_to,
|
||||
gsm=gsm,
|
||||
message=message,
|
||||
operator=operator,
|
||||
activation_code=activation_code,
|
||||
billing=True,
|
||||
billing_price=app.config['MEMBERSHIP_PRICE_KR'] * 100,
|
||||
)
|
||||
|
||||
if not msgid:
|
||||
@@ -345,41 +370,43 @@ def new_membership(response_to=None, gsm=None, operator=None):
|
||||
set_incoming_action(smsid=response_to, action='new_membership')
|
||||
return fix_encoding(u"Vi vil nå forsøke å belaste deg for et medlemskap...")
|
||||
|
||||
|
||||
@app.route('/')
|
||||
def main():
|
||||
return 'Tekstmelding!'
|
||||
|
||||
|
||||
@app.route('/callback')
|
||||
def callback():
|
||||
gsm = request.args.get('gsm', None)
|
||||
gsm = request.args.get('gsm', None)
|
||||
operator = request.args.get('operator', 'ukjent')
|
||||
codeword = request.args.get('kodeord', None)
|
||||
message = request.args.get('tekst', '')
|
||||
shortno = request.args.get('kortnr', None)
|
||||
ip = request.remote_addr
|
||||
message = request.args.get('tekst', '')
|
||||
shortno = request.args.get('kortnr', None)
|
||||
ip = request.remote_addr
|
||||
|
||||
if None in (gsm, codeword, shortno):
|
||||
abort(400) # Bad Request
|
||||
abort(400) # Bad Request
|
||||
|
||||
if not gsm.isdigit():
|
||||
# What the fuck, man, that's not a phone number, man.
|
||||
abort(400) # Bad Request
|
||||
abort(400) # Bad Request
|
||||
|
||||
if not codeword.strip().upper() in ('DNS', 'DNSMEDLEM'):
|
||||
abort(400) # Bad Request
|
||||
abort(400) # Bad Request
|
||||
|
||||
user = get_user_by_phone("+47%s" % gsm)
|
||||
|
||||
smsid = log_incoming(
|
||||
userid = int(user['id']) if user else None,
|
||||
gsm = gsm,
|
||||
codeword = codeword,
|
||||
message = message,
|
||||
operator = operator,
|
||||
shortno = shortno,
|
||||
action = 'no_action',
|
||||
ip = ip,
|
||||
simulation = 0)
|
||||
userid=int(user['id']) if user else None,
|
||||
gsm=gsm,
|
||||
codeword=codeword,
|
||||
message=message,
|
||||
operator=operator,
|
||||
shortno=shortno,
|
||||
action='no_action',
|
||||
ip=ip,
|
||||
simulation=0)
|
||||
|
||||
app.logger.info("Incoming SMS from gsm:%s saved with smsid:%s", gsm, smsid)
|
||||
|
||||
@@ -402,6 +429,7 @@ def callback():
|
||||
elif codeword.strip().upper() == 'DNSMEDLEM':
|
||||
return new_membership(response_to=smsid, gsm=gsm, operator=operator)
|
||||
|
||||
|
||||
@app.route('/dlr')
|
||||
def dlr():
|
||||
return ''
|
||||
|
||||
Reference in new issue
Block a user