move mm_comm to new file
This commit is contained in:
parent
3aec9ffe3a
commit
f5ac069f20
3 changed files with 60 additions and 56 deletions
53
src/mattermost_communication.py
Normal file
53
src/mattermost_communication.py
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
import mattermostdriver.exceptions
|
||||||
|
|
||||||
|
from mattermost_client import ChannelApi, MMApi
|
||||||
|
|
||||||
|
|
||||||
|
def send_message(file_id, file_info, message):
|
||||||
|
channel_id = file_info["originating_mm_post_channel_id"]
|
||||||
|
post_id = file_info["originating_mm_post_id"]
|
||||||
|
|
||||||
|
# TODO Comment below line, this is for testing purposes
|
||||||
|
# channel_id = MMApi().get_channel_id("bestuur-dev")
|
||||||
|
channel = ChannelApi(
|
||||||
|
channel_id=channel_id,
|
||||||
|
user=mattermost.users["flynn"],
|
||||||
|
)
|
||||||
|
|
||||||
|
prefix = ""
|
||||||
|
# This is bestuur-INTERN where you can only post when you prefix you message with a '!'
|
||||||
|
if file_info["originating_mm_post_channel_id"] == "hrx6pgfswjbttcj8nim3jrwe7w":
|
||||||
|
prefix = "! "
|
||||||
|
|
||||||
|
try:
|
||||||
|
channel.create_threaded_post(
|
||||||
|
post_id,
|
||||||
|
f"{prefix}{message}",
|
||||||
|
)
|
||||||
|
except mattermostdriver.exceptions.InvalidOrMissingParameters as e:
|
||||||
|
# This will occur when we try to react to a file in a channel that is not the same as the originating channel.
|
||||||
|
unique_post_url = f"https://mattermost.zeus.gent/zeus/pl/{post_id}"
|
||||||
|
channel.create_post(
|
||||||
|
f"{unique_post_url}\n\n{message}",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def report_newly_found_file(file_id, file_info):
|
||||||
|
message = f"I found a new CodiMD file in this post! Making work of putting it on gitlab :)\n - Requested location in the [drive](https://git.zeus.gent/bestuur/drive): {file_info['metadata']['sync-to']}"
|
||||||
|
send_message(file_id, file_info, message)
|
||||||
|
|
||||||
|
|
||||||
|
def report_newly_found_but_invalid_file(file_id, file_info):
|
||||||
|
message = """Hi there! :wave:
|
||||||
|
I'm your friendly neighbourhood document sync bot.
|
||||||
|
I could synchronize this CodiMD file automatically to our Gitlab DRIVE for safekeeping, but the necessary metadata block is not present.
|
||||||
|
You can easily add the correct info and I will do the rest of the work for you!
|
||||||
|
|
||||||
|
Just add the following lines to your file, the location in your file is not important but at the top would be my recommendation.
|
||||||
|
|
||||||
|
```
|
||||||
|
:::spoiler Gitlab sync
|
||||||
|
- sync-to: <a valid path on the DRIVE, for ex.: verslagen/21-22/2022-05-13.md>
|
||||||
|
:::
|
||||||
|
```"""
|
||||||
|
send_message(file_id, file_info, message)
|
63
src/web.py
63
src/web.py
|
@ -5,18 +5,17 @@ import time
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|
||||||
import hug
|
import hug
|
||||||
import mattermostdriver.exceptions
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
import db
|
import db
|
||||||
import dir_utils
|
import dir_utils
|
||||||
import mattermost
|
import mattermost_client
|
||||||
from mattermost import ChannelApi, MMApi
|
import mattermost_communication
|
||||||
from utils import id_to_url, url_to_id
|
from utils import id_to_url, url_to_id
|
||||||
|
|
||||||
|
|
||||||
def find_codimd_files_on_mattermost():
|
def find_codimd_files_on_mattermost():
|
||||||
mattermost = MMApi()
|
mattermost = mattermost_client.MMApi()
|
||||||
channels = [
|
channels = [
|
||||||
"hrx6pgfswjbttcj8nim3jrwe7w", # bestuur-INTERN
|
"hrx6pgfswjbttcj8nim3jrwe7w", # bestuur-INTERN
|
||||||
"uda7ax9poprduq8ob56e1fqk4e", # bestuur
|
"uda7ax9poprduq8ob56e1fqk4e", # bestuur
|
||||||
|
@ -70,56 +69,6 @@ def download_files():
|
||||||
db.set_local_file_path(file_id, local_file_path)
|
db.set_local_file_path(file_id, local_file_path)
|
||||||
|
|
||||||
|
|
||||||
def send_message(file_id, file_info, message):
|
|
||||||
channel_id = file_info["originating_mm_post_channel_id"]
|
|
||||||
post_id = file_info["originating_mm_post_id"]
|
|
||||||
|
|
||||||
# TODO Comment below line, this is for testing purposes
|
|
||||||
# channel_id = MMApi().get_channel_id("bestuur-dev")
|
|
||||||
channel = ChannelApi(
|
|
||||||
channel_id=channel_id,
|
|
||||||
user=mattermost.users["flynn"],
|
|
||||||
)
|
|
||||||
|
|
||||||
prefix = ""
|
|
||||||
# This is bestuur-INTERN where you can only post when you prefix you message with a '!'
|
|
||||||
if file_info["originating_mm_post_channel_id"] == "hrx6pgfswjbttcj8nim3jrwe7w":
|
|
||||||
prefix = "! "
|
|
||||||
|
|
||||||
try:
|
|
||||||
channel.create_threaded_post(
|
|
||||||
post_id,
|
|
||||||
f"{prefix}{message}",
|
|
||||||
)
|
|
||||||
except mattermostdriver.exceptions.InvalidOrMissingParameters as e:
|
|
||||||
# This will occur when we try to react to a file in a channel that is not the same as the originating channel.
|
|
||||||
unique_post_url = f"https://mattermost.zeus.gent/zeus/pl/{post_id}"
|
|
||||||
channel.create_post(
|
|
||||||
f"{unique_post_url}\n\n{message}",
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def report_newly_found_file(file_id, file_info):
|
|
||||||
message = f"I found a new CodiMD file in this post! Making work of putting it on gitlab :)\n - Requested location in the [drive](https://git.zeus.gent/bestuur/drive): {file_info['metadata']['sync-to']}"
|
|
||||||
send_message(file_id, file_info, message)
|
|
||||||
|
|
||||||
|
|
||||||
def report_newly_found_but_invalid_file(file_id, file_info):
|
|
||||||
message = """Hi there! :wave:
|
|
||||||
I'm your friendly neighbourhood document sync bot.
|
|
||||||
I could synchronize this CodiMD file automatically to our Gitlab DRIVE for safekeeping, but the necessary metadata block is not present.
|
|
||||||
You can easily add the correct info and I will do the rest of the work for you!
|
|
||||||
|
|
||||||
Just add the following lines to your file, the location in your file is not important but at the top would be my recommendation.
|
|
||||||
|
|
||||||
```
|
|
||||||
:::spoiler Gitlab sync
|
|
||||||
- sync-to: <a valid path on the DRIVE, for ex.: verslagen/21-22/2022-05-13.md>
|
|
||||||
:::
|
|
||||||
```"""
|
|
||||||
send_message(file_id, file_info, message)
|
|
||||||
|
|
||||||
|
|
||||||
def validate_downloaded_files():
|
def validate_downloaded_files():
|
||||||
path = "data"
|
path = "data"
|
||||||
dir_list = os.listdir(path)
|
dir_list = os.listdir(path)
|
||||||
|
@ -130,11 +79,13 @@ def validate_downloaded_files():
|
||||||
if metadata is not None:
|
if metadata is not None:
|
||||||
is_new_file, new_file_info = db.mark_file_valid(file_id, metadata)
|
is_new_file, new_file_info = db.mark_file_valid(file_id, metadata)
|
||||||
if is_new_file:
|
if is_new_file:
|
||||||
report_newly_found_file(file_id, new_file_info)
|
mattermost_communication.report_newly_found_file(file_id, new_file_info)
|
||||||
else:
|
else:
|
||||||
changed, new_file_info = db.mark_file_invalid(file_id)
|
changed, new_file_info = db.mark_file_invalid(file_id)
|
||||||
if changed:
|
if changed:
|
||||||
report_newly_found_but_invalid_file(file_id, new_file_info)
|
mattermost_communication.report_newly_found_but_invalid_file(
|
||||||
|
file_id, new_file_info
|
||||||
|
)
|
||||||
|
|
||||||
return db._load_db()
|
return db._load_db()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue