Пример #1
0
 def get_slack_token(cls, team_id, user_id=None):
     database = Database()
     database.initialize()
     try:
         slack_token_object = cls.get_token_from_database(team_id=team_id,
                                                          user_id=user_id)
     except TypeError:
         print(
             "Visit http://178.128.234.3:5000/eight_ball/begin_auth to authorize this app"
         )
         raise ValueError("Slack authorization failed")
     if slack_token_object.token_expiry_time is None:
         print(
             "Visit http://178.128.234.3:5000/eight_ball/begin_auth to authorize this app"
         )
         raise ValueError("Slack authorization failed")
     elif int(slack_token_object.token_expiry_time) < int(time.time()):
         hook = cls.get_token_from_database(team_id=team_id,
                                            user_id=user_id)
         auth_response = hook.slack_token_request(hook.auth_code)
         try:
             hook.update_token(auth_response)
         except TypeError:
             hook.add_token(auth_response)
         return SlackClient(str(auth_response['access_token']))
     else:
         return SlackClient(str(slack_token_object.access_token))
Пример #2
0
 def find_entry(cls, text):
     database = Database()
     database.initialize()
     entry = database.find_one("samples", {"text": text})
     if entry is not None:
         return cls(**entry)
     else:
         return None
Пример #3
0
 def remove_fact(fact_text):
     database = Database()
     database.initialize()
     if database.find_one("facts", {"fact_text": fact_text}) is None:
         raise LookupError('Fact was not found in the database')
     else:
         database.remove("facts", {"fact_text": fact_text})
         print("Fact was successfully removed")
Пример #4
0
 def remove_distributor(email_address=None, slack_ids=None):
     database = Database()
     database.initialize()
     if database.find_one("distributors", {"email_address": email_address,
                                           "slack_ids": slack_ids}):
         database.remove("distributors", {"email_address": email_address,
                                          "slack_ids": slack_ids})
         return True
Пример #5
0
    def get_distributors(cls, type):
        database = Database()
        database.initialize()
        distributors = database.find("distributors", {"type": type})
        return [cls(**distributor) for distributor in distributors]



#Distributor.add_distributor(type="slack", slack_channel_id="C0JS385LP")
#Distributor.add_distributor(type="email", email_address="*****@*****.**")
Пример #6
0
 def log_staging_deploy(msg):
     pattern = re.compile("finished deploying branch.* version.* to staging")
     if pattern.findall(msg):
         version = msg.split("branch")[1].split("version")[0].strip()
         database = Database()
         database.initialize()
         database.insert(collection="version_record",
                         data={
                             "version": version,
                             "time": int(time.time())
                         })
Пример #7
0
 def get_release_notes(version):
     database = Database()
     database.initialize()
     jira_settings = database.find_one("jira_settings", query={})
     auth_jira = JIRA(basic_auth=(jira_settings['email'], jira_settings['password']),
                      server=jira_settings['server'])
     release_notes = "{} has been deployed to production! Release notes:\n".format(version)
     issues = auth_jira.search_issues("""fixVersion in ("{}")""".format(version))
     for issue in issues:
         release_notes = release_notes + str(issue) + " - " + auth_jira.issue(issue).fields.summary + "\n"
     return release_notes
Пример #8
0
 def add_fact(fact_type, fact_text):
     if not any([(fact_type == "puppy_fact"),
                 (fact_type == "cat_fact"),
                 (fact_type == "horse_fact")]):
         print("fact_type must be one of the following: puppy_fact, cat_fact, horse_fact")
     else:
         database = Database()
         database.initialize()
         fact = Facts(fact_type = fact_type, fact_text = fact_text)
         database.insert("facts", fact.json())
         print("Fact successfully added")
Пример #9
0
 def add_token(self, auth_response):
     database = Database()
     database.initialize()
     self.access_token = auth_response['bot']['bot_access_token']
     self.user_id = auth_response['user_id']
     self.team_id = auth_response['team_id']
     numbers = re.compile('\d+(?:\.\d+)?')
     max_age = int(
         numbers.findall(
             auth_response['headers']['Strict-Transport-Security'])[0])
     self.token_expiry_time = int(time.time()) + max_age
     database.insert(collection="slack_tokens", data=self.json())
Пример #10
0
 def get_latest_release():
     database = Database()
     database.initialize()
     entries = database.find(collection="version_record",
                             query={})
     saved_entries = list()
     times = list()
     for i in entries:
         times.append(i['time'])
         saved_entries.append(i)
     max_time = max(times)
     for i in saved_entries:
         if i['time'] == max_time:
             version = i['version']
             return version
Пример #11
0
 def migrate_facts():
     dirpath = os.path.dirname(__file__)
     fact_files = {'horse_fact': 'facts/horse_facts.txt',
                   'cat_fact': 'facts/cat_facts.txt',
                   'puppy_fact': 'facts/puppy_facts.txt'}
     database = Database()
     database.initialize()
     for k, v in fact_files.items():
         lines = open(os.path.join(dirpath, v)).read().splitlines()
         for line in lines:
             if line == "":
                 continue
             else:
                 fact = Facts(fact_type=k, fact_text=line)
                 database.insert("facts", fact.json())
Пример #12
0
 def get_token_from_database(cls, team_id, user_id=None):
     database = Database()
     database.initialize()
     if user_id is not None:
         credentials = database.find_one("slack_tokens",
                                         query=({
                                             "team_id": team_id,
                                             "user_id": user_id
                                         }))
     else:
         credentials = database.find_one("slack_tokens",
                                         query=({
                                             "team_id": team_id
                                         }))
     return cls(**credentials)
Пример #13
0
 def add_distributor(type, email_address=None, slack_ids=None):
     if "type" == "email":
         if email_address is not None:
             return "Please pass an email address"
     if "type" == "slack":
         if email_address is not None:
             return "Please pass an slack_channel_id"
     elif all([(type != "slack"), (type != "email")]):
         return "Valid 'type's are 'slack' and 'email'"
     else:
         distributor = Distributor(type=type,
                                   email_address=email_address,
                                   slack_ids=slack_ids)
         database = Database()
         database.initialize()
         database.insert("distributors", distributor.json())
Пример #14
0
 def get_email_credentials(cls, returnless=False):
     database = Database()
     database.initialize()
     emailer_credential_object = database.find_one("emailer_credentials",
                                                   ({}))
     if emailer_credential_object is None:
         email_address = input(
             "Please enter the gmail account address you would like to use to send emails:"
         )
         email_password = input("Please enter your gmail password:"******"Login failed. Please enter your GMAIL address:")
             email_password = input("Please enter your GMAIL password:"******"emailer_credentials",
                         ({
                             "email_address": email_address,
                             "email_password": email_password
                         }))
     else:
         email_address = emailer_credential_object['email_address']
         email_password = emailer_credential_object['email_password']
     if returnless is False:
         return email_address, email_password
Пример #15
0
 def add_entry(data):
     database = Database()
     database.initialize()
     database.insert("logging", data)
Пример #16
0
 def get_entries(cls):
     database = Database()
     database.initialize()
     entries = database.find("samples", ({}))
     return [cls(**entry) for entry in entries]
Пример #17
0
 def remove_entry(self):
     database = Database()
     database.initialize()
     database.remove("samples", self.json())
Пример #18
0
 def get_keyword_from_database():
     database = Database()
     database.initialize()
     result = database.find_one("giphy_keyword", query=({}))
     return result['giphy_keyword']
Пример #19
0
 def get_app_credentials():
     database = Database()
     database.initialize()
     result = database.find_one("slack_credentials", query=({}))
     return result
Пример #20
0
 def onboard_user(self):
     database = Database()
     database.initialize()
     database.insert("users", self.json())
     print("User successfully added")
Пример #21
0
 def add_entry(self):
     database = Database()
     database.initialize()
     database.insert("message_log", self.json())
Пример #22
0
 def remove_user(self):
     database = Database()
     database.initialize()
     database.remove("users", {"_id": self._id})
     print("User successfully removed")
Пример #23
0
 def update_user(self, update):
     database = Database()
     database.initialize()
     database.update("users", {"_id": self._id}, update)
     print("User successfully updated")
Пример #24
0
 def get_one_user(cls, query=({})):
     database = Database()
     database.initialize()
     user = database.find_one("users", query)
     return cls(**user)
Пример #25
0
 def get_users(cls, query=({})):
     database = Database()
     database.initialize()
     users = database.find("users", query)
     return [cls(**user) for user in users]
Пример #26
0
 def get_facts(cls, query=({})):
     database = Database()
     database.initialize()
     facts = database.find("facts", query)
     return [cls(**fact) for fact in facts]
Пример #27
0
 def add_entry(self):
     database = Database()
     database.initialize()
     database.insert("samples", self.json())
Пример #28
0
 def get_entry_by_ts(cls, ts):
     database = Database()
     database.initialize()
     result = database.find_one("message_log", {"trigger_ts": ts})
     if result is not None:
         return cls(**result)
Пример #29
0
 def add_to_send_count(self):
     database = Database()
     database.initialize()
     self.send_count += 1
     database.update("users", {"_id": self._id}, self.json())
Пример #30
0
 def get_token_from_database():
     database = Database()
     database.initialize()
     result = database.find_one("giphy_tokens", query=({}))
     return result['giphy_token']