import logging from flask import Blueprint, request, jsonify logger = logging.getLogger('picell') bp = Blueprint('calendar', __name__) @bp.route('/api/calendar/users', methods=['GET']) def get_calendar_users(): """Get calendar users.""" try: from app import calendar_manager users = calendar_manager.get_users() return jsonify(users) except Exception as e: logger.error(f"Error getting calendar users: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/calendar/users', methods=['POST']) def create_calendar_user(): """Create calendar user.""" try: from app import calendar_manager data = request.get_json(silent=True) if data is None: return jsonify({"error": "No data provided"}), 400 username = data.get('username') password = data.get('password') if not username or not password: return jsonify({"error": "Missing required fields: username, password"}), 400 result = calendar_manager.create_calendar_user(username, password) return jsonify({"created": result}) except Exception as e: logger.error(f"Error creating calendar user: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/calendar/users/', methods=['DELETE']) def delete_calendar_user(username): """Delete calendar user.""" try: from app import calendar_manager result = calendar_manager.delete_calendar_user(username) return jsonify({"deleted": result}) except Exception as e: logger.error(f"Error deleting calendar user: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/calendar/calendars', methods=['POST']) def create_calendar(): """Create calendar.""" try: from app import calendar_manager data = request.get_json(silent=True) if data is None: return jsonify({"error": "No data provided"}), 400 username = data.get('username') calendar_name = data.get('name') or data.get('calendar_name') if not username or not calendar_name: return jsonify({"error": "Missing required fields: username, name"}), 400 result = calendar_manager.create_calendar( username, calendar_name, description=data.get('description', ''), color=data.get('color', '#4285f4'), ) return jsonify({"created": result}) except Exception as e: logger.error(f"Error creating calendar: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/calendar/events', methods=['POST']) def add_calendar_event(): try: from app import calendar_manager data = request.get_json(silent=True) if data is None: return jsonify({"error": "No data provided"}), 400 username = data.get('username') calendar_name = data.get('calendar_name') or data.get('calendar') if not username or not calendar_name: return jsonify({"error": "Missing required fields: username, calendar_name"}), 400 event_data = {k: v for k, v in data.items() if k not in ('username', 'calendar_name', 'calendar')} result = calendar_manager.add_event(username, calendar_name, event_data) return jsonify({"created": result}) except Exception as e: logger.error(f"Error adding calendar event: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/calendar/events//', methods=['GET']) def get_calendar_events(username, calendar_name): """Get calendar events.""" try: from app import calendar_manager params = request.args.to_dict() result = calendar_manager.get_events(username, calendar_name, params) return jsonify(result) except Exception as e: logger.error(f"Error getting calendar events: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/calendar/status', methods=['GET']) def get_calendar_status(): """Get calendar service status.""" try: from app import calendar_manager status = calendar_manager.get_status() return jsonify(status) except Exception as e: logger.error(f"Error getting calendar status: {e}") return jsonify({"error": str(e)}), 500 @bp.route('/api/calendar/connectivity', methods=['GET']) def test_calendar_connectivity(): """Test calendar connectivity.""" try: from app import calendar_manager result = calendar_manager.test_connectivity() return jsonify(result) except Exception as e: logger.error(f"Error testing calendar connectivity: {e}") return jsonify({"error": str(e)}), 500