Add files via upload
This commit is contained in:
@@ -1,20 +1,23 @@
|
||||
from flask import Blueprint, jsonify, request
|
||||
from ..models import Project, Deliverable
|
||||
from ..extensions import db
|
||||
from datetime import date
|
||||
from datetime import date, datetime
|
||||
|
||||
projects_bp = Blueprint('projects', __name__)
|
||||
|
||||
|
||||
@projects_bp.route('/projects', methods=['GET'])
|
||||
def get_projects():
|
||||
projects = Project.query.order_by(Project.created_at.desc()).all()
|
||||
return jsonify([p.to_dict() for p in projects])
|
||||
|
||||
|
||||
@projects_bp.route('/projects/<int:id>', methods=['GET'])
|
||||
def get_project(id):
|
||||
project = Project.query.get_or_404(id)
|
||||
return jsonify(project.to_dict())
|
||||
|
||||
|
||||
@projects_bp.route('/projects', methods=['POST'])
|
||||
def create_project():
|
||||
data = request.get_json()
|
||||
@@ -26,6 +29,7 @@ def create_project():
|
||||
)
|
||||
db.session.add(project)
|
||||
db.session.flush()
|
||||
|
||||
for d in data.get('deliverables', []):
|
||||
if d.get('title') and d.get('due_date'):
|
||||
db.session.add(Deliverable(
|
||||
@@ -34,9 +38,11 @@ def create_project():
|
||||
due_date=date.fromisoformat(d['due_date']),
|
||||
status=d.get('status', 'upcoming'),
|
||||
))
|
||||
|
||||
db.session.commit()
|
||||
return jsonify(project.to_dict()), 201
|
||||
|
||||
|
||||
@projects_bp.route('/projects/<int:id>', methods=['PATCH'])
|
||||
def update_project(id):
|
||||
project = Project.query.get_or_404(id)
|
||||
@@ -47,6 +53,23 @@ def update_project(id):
|
||||
db.session.commit()
|
||||
return jsonify(project.to_dict())
|
||||
|
||||
|
||||
@projects_bp.route('/projects/<int:id>/archive', methods=['PATCH'])
|
||||
def archive_project(id):
|
||||
project = Project.query.get_or_404(id)
|
||||
project.archived_at = datetime.utcnow()
|
||||
db.session.commit()
|
||||
return jsonify(project.to_dict())
|
||||
|
||||
|
||||
@projects_bp.route('/projects/<int:id>/unarchive', methods=['PATCH'])
|
||||
def unarchive_project(id):
|
||||
project = Project.query.get_or_404(id)
|
||||
project.archived_at = None
|
||||
db.session.commit()
|
||||
return jsonify(project.to_dict())
|
||||
|
||||
|
||||
@projects_bp.route('/projects/<int:id>', methods=['DELETE'])
|
||||
def delete_project(id):
|
||||
project = Project.query.get_or_404(id)
|
||||
|
||||
Reference in New Issue
Block a user