PEP8. Long lines are OKAY

This commit is contained in:
ponas committed 2015-01-14 20:10:30 +01:00
1 parent d852ebad1a
commit 3cf06df258
1 file changed
+84 -56
+84 -56
View File
@@ -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 ''