def handle_subscription_message(database, reddit, message, payload): Logger.log('Sub message') new_sub = Subscription(payload, str(message.author), message.id) existing_subs = database.get_subscriptions_by_user(str(message.author)) if new_sub.status == Subscription.STATUS_INVALID: message.reply(inbox.compose_reject_message(str(message.author), message.subject, message.body)) message.mark_as_read() return elif new_sub.status == Subscription.STATUS_TOO_GENERIC: message.reply(inbox.compose_too_generic_message(str(message.author))) message.mark_as_read() return duplicate_subs = new_sub.check_against_existing(existing_subs) if duplicate_subs: Logger.log('Subscription already exists', Color.RED) message.reply(inbox.compose_duplicate_subscription_message( str(message.author), duplicate_subs[0], new_sub)) message.mark_as_read() return invalid_subreddits = reddit.check_invalid_subreddits(new_sub.data[Subscription.SUBREDDITS]) if invalid_subreddits: Logger.log('Subreddit(s) invalid: ' + str(invalid_subreddits), Color.RED) message.reply(inbox.compose_invalid_subreddit_message(str(message.author), invalid_subreddits, message)) message.mark_as_read() return database.insert_subscription(str(message.author), str(message.id), new_sub.to_string(), times.get_current_timestamp()) existing_subs.append(new_sub) # TODO Remove subreddit not specified stuff, taken care of in SubscriptionParser.py subreddit_not_specified = len(new_sub.data[Subscription.SUBREDDITS]) == 0 message.reply(inbox.compose_subscribe_message(str(message.author), new_sub, existing_subs, subreddit_not_specified)) database.commit() message.mark_as_read()
def handle_subscription_message(database, reddit, message, payload): Logger.log('Sub message') new_sub = Subscription(payload, str(message.author), message.id) existing_subs = database.get_subscriptions_by_user(str(message.author)) duplicate_subs = new_sub.check_against_existing(existing_subs) if duplicate_subs: Logger.log('Subscription already exists', Color.RED) InboxHandler.reply(message, inbox.compose_duplicate_subscription_message( str(message.author), duplicate_subs[0], new_sub)) message.mark_read() return invalid_subreddits = reddit.check_invalid_subreddits(new_sub.data[Subscription.SUBREDDITS]) if invalid_subreddits: Logger.log('Subreddit(s) invalid: ' + str(invalid_subreddits), Color.RED) InboxHandler.reply(message, inbox.compose_invalid_subreddit_message(str(message.author), invalid_subreddits, message)) message.mark_read() return database.insert_subscription(str(message.author), new_sub.message_id, new_sub.to_string(), times.get_current_timestamp()) existing_subs.append(new_sub) # TODO Remove subreddit not specified stuff, taken care of in SubscriptionParser.py subreddit_not_specified = len(new_sub.data[Subscription.SUBREDDITS]) == 0 InboxHandler.reply(message, inbox.compose_subscribe_message(str(message.author), new_sub, existing_subs, subreddit_not_specified)) database.commit() message.mark_read()
def get_subscriptions_by_message_id(self, username, message_id): try: result = self.connection.cursor().execute(database.GET_SUBSCRIPTION_BY_MESSAGE_ID, [username, message_id]).fetchall() subs = [] for sub in result: item = sub[database.COL_SUB_ITEM] username = sub[database.COL_SUB_USERNAME] message_id = sub[database.COL_SUB_MESSAGE_ID] subscription = Subscription(item, username, message_id) print('BY MESSAGE ID: ' + subscription.to_string()) subs.append(subscription) return subs except: print(traceback.format_exc()) raise DatabaseHandlerException('Error - get_subscription_by_message_id')
def get_subscriptions_by_user(self, username): print('Get Subs By Username') subs = [] result = self.connection.cursor().execute(database.GET_SUBSCRIPTIONS_BY_USERNAME, [username]).fetchall() for sub in result: item = sub[database.COL_SUB_ITEM] username = sub[database.COL_SUB_USERNAME] message_id = sub[database.COL_SUB_MESSAGE_ID] subscription = Subscription(item, username, message_id) if subscription.status == Subscription.STATUS_VALID: subs.append(subscription) else: print('INVALID SUB: ' + subscription.to_string()) self.remove_subscription(subscription) # TODO Should this really be here? raise DatabaseHandlerException('ERROR - get_subscriptions - subscription not valid') return subs
def get_subscriptions_by_message_id(self, username, message_id): try: result = self.connection.cursor().execute(database.GET_SUBSCRIPTION_BY_MESSAGE_ID, [username, message_id]).fetchall() subs = [] for sub in result: item = sub[database.COL_SUB_ITEM] username = sub[database.COL_SUB_USERNAME] message_id = sub[database.COL_SUB_MESSAGE_ID] try: subscription = Subscription(item, username, message_id) print('BY MESSAGE ID: ' + subscription.to_string()) subs.append(subscription) except: raise DatabaseHandlerException('ERROR - get_subscriptions_by_message_id - subscription not valid') return subs except: print(traceback.format_exc()) raise DatabaseHandlerException('Error - get_subscription_by_message_id')
def get_subscriptions_by_user(self, username): print('Get Subs By Username') subs = [] result = self.connection.cursor().execute(database.GET_SUBSCRIPTIONS_BY_USERNAME, [username]).fetchall() for sub in result: item = sub[database.COL_SUB_ITEM] username = sub[database.COL_SUB_USERNAME] message_id = sub[database.COL_SUB_MESSAGE_ID] try: subscription = Subscription(item, username, message_id) subs.append(subscription) except: raise DatabaseHandlerException('ERROR - get_subscriptions - subscription not valid') return subs