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()
Beispiel #2
0
 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
Beispiel #5
0
 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')
Beispiel #6
0
 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