11from ..models .task import Task
2- from flask import Blueprint , abort , make_response , request , Response ,jsonify
2+ from flask import Blueprint , abort , make_response , request , Response ,jsonify , current_app
33from ..db import db
44from .route_utilities import validate_model ,create_model ,get_models_with_filters
55from datetime import datetime
6+ import requests ,os
67
78bp = Blueprint ("tasks_bp" , __name__ , url_prefix = "/tasks" )
89
@@ -104,12 +105,12 @@ def del_task(id):
104105
105106
106107
107- @bp .patch ("/<id>/mark_complete" )
108- def mark_complete (id ):
109- task = validate_model (Task , id )
110- task .completed_at = datetime .utcnow ()
111- db .session .commit ()
112- return Response (status = 204 , mimetype = "application/json" )
108+ # @bp.patch("/<id>/mark_complete")
109+ # def mark_complete(id):
110+ # task = validate_model(Task, id)
111+ # task.completed_at = datetime.utcnow()
112+ # db.session.commit()
113+ # return Response(status=204, mimetype="application/json")
113114
114115
115116@bp .patch ("/<id>/mark_incomplete" )
@@ -119,3 +120,32 @@ def mark_incomplete(id):
119120 task .completed_at = None
120121 db .session .commit ()
121122 return Response (status = 204 , mimetype = "application/json" )
123+
124+
125+
126+ @bp .patch ("/<id>/mark_complete" )
127+ def mark_task_complete (id ):
128+ task = validate_model (Task , id )
129+ #task = Task.query.get(id)
130+
131+
132+ task .completed_at = datetime .utcnow ()
133+ db .session .commit ()
134+
135+
136+ slack_token = os .environ .get ("SLACK_BOT_TOKEN" )
137+ slack_channel = os .environ .get ("SLACK_CHANNEL" , "#test_task_slack_api" )
138+ message = f"Task *{ task .title } * has been completed!"
139+
140+ if not current_app .config .get ("TESTING" ):
141+ response = requests .post (
142+ "https://slack.com/api/chat.postMessage" ,
143+ headers = {"Authorization" : f"Bearer { slack_token } " },
144+
145+ json = {"channel" : slack_channel , "text" : message }
146+ )
147+ if current_app .config .get ("TESTING" ):
148+ return Response (status = 204 , mimetype = "application/json" )
149+
150+
151+ return jsonify ({"task" : task .to_dict ()}), 200
0 commit comments