Formatting

This commit is contained in:
Adrià Casajús 2022-02-10 10:30:28 +01:00
parent 8aee883aae
commit f59c5499fb
No known key found for this signature in database
GPG Key ID: F0033226A5AFC9B9
2 changed files with 28 additions and 26 deletions

View File

@ -413,4 +413,4 @@ PHONE_PROVIDER_1_SECRET = os.environ.get("PHONE_PROVIDER_1_SECRET")
PHONE_PROVIDER_2_HEADER = os.environ.get("PHONE_PROVIDER_2_HEADER") PHONE_PROVIDER_2_HEADER = os.environ.get("PHONE_PROVIDER_2_HEADER")
PHONE_PROVIDER_2_SECRET = os.environ.get("PHONE_PROVIDER_2_SECRET") PHONE_PROVIDER_2_SECRET = os.environ.get("PHONE_PROVIDER_2_SECRET")
ZENDESK_HOST=os.environ.get('ZENDESK_HOST') ZENDESK_HOST = os.environ.get("ZENDESK_HOST")

View File

@ -12,7 +12,7 @@ from app.log import LOG
from app.models import Mailbox from app.models import Mailbox
from app.config import ZENDESK_HOST from app.config import ZENDESK_HOST
VALID_MIME_TYPES = ['text/plain', 'message/rfc822'] VALID_MIME_TYPES = ["text/plain", "message/rfc822"]
@dashboard_bp.route("/support", methods=["GET"]) @dashboard_bp.route("/support", methods=["GET"])
@ -26,25 +26,27 @@ def show_support_dialog():
def check_zendesk_response_status(response_code: int) -> bool: def check_zendesk_response_status(response_code: int) -> bool:
if response_code != 201: if response_code != 201:
if response_code in (401 or 422): if response_code in (401 or 422):
LOG.debug('Could not authenticate') LOG.debug("Could not authenticate")
else: else:
LOG.debug('Problem with the request. Status {}'.format(response_code)) LOG.debug("Problem with the request. Status {}".format(response_code))
return False return False
return True return True
def upload_file_to_zendesk_and_get_upload_token(file: FileStorage) -> Union[None, str]: def upload_file_to_zendesk_and_get_upload_token(file: FileStorage) -> Union[None, str]:
if file.mimetype not in VALID_MIME_TYPES and not file.mimetype.startswith('image/'): if file.mimetype not in VALID_MIME_TYPES and not file.mimetype.startswith("image/"):
flash('File {} is not an image, text or an email'.format(file.filename), "warning") flash(
"File {} is not an image, text or an email".format(file.filename), "warning"
)
return return
escaped_filename = urllib.parse.urlencode({'filename': file.filename}) escaped_filename = urllib.parse.urlencode({"filename": file.filename})
url = 'https://{}/api/v2/uploads?{}'.format(ZENDESK_HOST, escaped_filename) url = "https://{}/api/v2/uploads?{}".format(ZENDESK_HOST, escaped_filename)
headers = {'content-type': file.mimetype} headers = {"content-type": file.mimetype}
response = requests.post(url, headers=headers, data=file.stream) response = requests.post(url, headers=headers, data=file.stream)
if not check_zendesk_response_status(response.status_code): if not check_zendesk_response_status(response.status_code):
return return
data = response.json() data = response.json()
return data['upload']['token'] return data["upload"]["token"]
def create_zendesk_request(email: str, content: str, files: [FileStorage]) -> bool: def create_zendesk_request(email: str, content: str, files: [FileStorage]) -> bool:
@ -57,26 +59,22 @@ def create_zendesk_request(email: str, content: str, files: [FileStorage]) -> bo
return False return False
tokens.append(token) tokens.append(token)
data = { data = {
'request': { "request": {
'subject': 'Ticket created for user {}'.format(current_user.id), "subject": "Ticket created for user {}".format(current_user.id),
'comment': { "comment": {"type": "Comment", "body": content, "uploads": tokens},
'type': 'Comment', "requester": {
'body': content, "name": "SimpleLogin user {}".format(current_user.id),
'uploads': tokens "email": email,
}, },
'requester': {
'name': "SimpleLogin user {}".format(current_user.id),
'email': email
}
} }
} }
url = 'https://{}/api/v2/requests.json'.format(ZENDESK_HOST) url = "https://{}/api/v2/requests.json".format(ZENDESK_HOST)
headers = {'content-type': 'application/json'} headers = {"content-type": "application/json"}
response = requests.post(url, data=json.dumps(data), headers=headers) response = requests.post(url, data=json.dumps(data), headers=headers)
if not check_zendesk_response_status(response.status_code): if not check_zendesk_response_status(response.status_code):
return False return False
flash("Ticket was created. You should receive an email notification", "success") flash("Ticket was created. You should receive an email notification", "success")
LOG.debug('Ticket created') LOG.debug("Ticket created")
return True return True
@ -93,6 +91,10 @@ def process_support_dialog():
if not email: if not email:
flash("Please add an email", "warning") flash("Please add an email", "warning")
return render_template("dashboard/support.html", ticket_content=content) return render_template("dashboard/support.html", ticket_content=content)
if create_zendesk_request(email, content, request.files.getlist('ticket_files')): if create_zendesk_request(email, content, request.files.getlist("ticket_files")):
return render_template("dashboard/support_ticket_created.html", ticket_email=email) return render_template(
return render_template("dashboard/support.html", ticket_email=email, ticket_content=content) "dashboard/support_ticket_created.html", ticket_email=email
)
return render_template(
"dashboard/support.html", ticket_email=email, ticket_content=content
)