Files
context-paging/output/turn_027.json
2026-03-28 09:01:07 +00:00

2 lines
8.1 KiB
JSON

{"id":"chatcmpl-84d2fd51e230dc20","object":"chat.completion","created":1774197288,"model":"NousResearch\/Hermes-3-Llama-3.2-3B","choices":[{"index":0,"message":{"role":"assistant","content":"First, install the required dependencies:\n\n```\npip install Flask-SQLAlchemy\npip install Flask-Migrate\npip install psycopg2-binary\n```\n\nHere is the complete database models and updated Flask app:\n\n```python\nfrom flask import Flask, request, jsonify\nfrom task_manager import TaskManager\nfrom flask_sqlalchemy import SQLAlchemy\nfrom flask_migrate import Migrate\nfrom flask_jwt_extended import JWTManager, create_access_token, jwt_required, get_jwt_identity\nfrom werkzeug.security import generate_password_hash, check_password_hash\nfrom datetime import datetime\n\napp = Flask(__name__)\ntask_manager = TaskManager()\n\napp.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:\/\/\/task_manager.db' # SQLite (dev)\n# app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql:\/\/username:password@localhost\/db_name' # PostgreSQL (prod)\napp.config['SECRET_KEY'] = 'your-secret-key' # Change this to your own secret key\njwt = JWTManager(app)\ndb = SQLAlchemy(app)\nmigrate = Migrate(app, db)\n\nclass User(db.Model):\n id = db.Column(db.Integer, primary_key=True)\n username = db.Column(db.String(50), unique=True, nullable=False)\n password = db.Column(db.String(100), nullable=False)\n\nclass Task(db.Model):\n id = db.Column(db.String(255), primary_key=True, default=Task._generate_id)\n title = db.Column(db.String(255), nullable=False)\n description = db.Column(db.String(255), nullable=True)\n completed = db.Column(db.Boolean, nullable=False, default=False)\n priority = db.Column(db.String(10), nullable=False, default='medium')\n due_date = db.Column(db.String(10), nullable=True)\n tags = db.Column(db.String(255), nullable=True)\n depends_on = db.Column(db.String(255), nullable=True)\n recurrence = db.Column(db.String(50), nullable=True)\n next_occurrence = db.Column(db.DateTime, nullable=True)\n time_spent = db.Column(db.Integer, nullable=True)\n parent_id = db.Column(db.String(255), nullable=True)\n progress = db.Column(db.Integer, nullable=True)\n assigned_to = db.Column(db.String(50), nullable=False)\n estimated_minutes = db.Column(db.Integer, nullable=True)\n created_at = db.Column(db.DateTime, nullable=False, default=datetime.now)\n\n def to_dict(self):\n return {\n 'id': self.id,\n 'title': self.title,\n 'description': self.description,\n 'completed': self.completed,\n 'priority': self.priority,\n 'due_date': self.due_date,\n 'tags': self.tags,\n 'depends_on': self.depends_on,\n 'recurrence': self.recurrence,\n 'next_occurrence': self.next_occurrence,\n 'time_spent': self.time_spent,\n 'parent_id': self.parent_id,\n 'progress': self.progress,\n 'assigned_to': self.assigned_to,\n 'estimated_minutes': self.estimated_minutes,\n 'created_at': self.created_at\n }\n\n @staticmethod\n def _generate_id():\n return str(uuid.uuid4())\n\n@app.route('\/')\ndef index():\n return \"Task Manager API\"\n\n@app.route('\/login', methods=['POST'])\ndef login():\n username = request.json.get('username')\n password = request.json.get('password')\n user = User.query.filter_by(username=username).first()\n if user and check_password_hash(user.password, password):\n access_token = create_access_token(identity=user.username)\n return jsonify({'access_token': access_token})\n return jsonify({'message': 'Invalid username or password'})\n\n@app.route('\/tasks', methods=['GET'])\n@jwt_required()\ndef get_tasks():\n user_id = get_jwt_identity()\n tasks = Task.query.filter_by(assigned_to=user_id).all()\n output = []\n for task in tasks:\n task_data = task.to_dict()\n output.append(task_data)\n return jsonify({'tasks': output})\n\n@app.route('\/tasks', methods=['POST'])\n@jwt_required()\ndef create_task():\n data = request.get_json()\n title = data['title']\n description = data['description']\n due_date = data.get('due_date')\n tags = data.get('tags')\n depends_on = data.get('depends_on')\n recurrence = data.get('recur')\n next_occurrence = data.get('next_occurrence')\n time_spent = data.get('time_spent')\n progress = data.get('progress')\n assigned_to = data.get('assigned_to')\n estimated_minutes = data.get('estimated_minutes')\n user_id = get_jwt_identity()\n task = Task(title, description, due_date, tags, depends_on, recurrence, next_occurrence, time_spent, progress, assigned_to, estimated_minutes, user_id)\n db.session.add(task)\n db.session.commit()\n socketio.emit('task_created', {'task': task.to_dict()}, broadcast=True)\n return jsonify({'message': 'New task created'})\n\n@app.route('\/tasks\/<id>', methods=['GET'])\n@jwt_required()\ndef get_task(id):\n task = Task.query.filter_by(id=id).first()\n if task:\n task_data = task.to_dict()\n socketio.emit('task_updated', {'task': task_data}, broadcast=True)\n return jsonify({'task': task_data})\n return jsonify({'message': 'Task not found'})\n\n@app.route('\/tasks\/<id>', methods=['PUT'])\n@jwt_required()\ndef update_task(id):\n task = Task.query.filter_by(id=id).first()\n if task:\n data = request.get_json()\n task.title = data['title']\n task.description = data['description']\n task.due_date = data.get('due_date')\n task.tags = data.get('tags')\n task.depends_on = data.get('depends_on')\n task.recurrence = data.get('recur')\n task.next_occurrence = data.get('next_occurrence')\n task.time_spent = data.get('time_spent')\n task.progress = data.get('progress')\n task.assigned_to = data.get('assigned_to')\n task.estimated_minutes = data.get('estimated_minutes')\n db.session.commit()\n socketio.emit('task_updated', {'task': task.to_dict()}, broadcast=True)\n return jsonify({'message': 'Task updated'})\n return jsonify({'message': 'Task not found'})\n\n@app.route('\/tasks\/<id>', methods=['DELETE'])\n@jwt_required()\ndef delete_task(id):\n task = Task.query.filter_by(id=id).first()\n if task:\n task_manager.delete_task(id)\n db.session.delete(task)\n db.session.commit()\n socketio.emit('task_deleted', {'task': task.to_dict()}, broadcast=True)\n return jsonify({'message': 'Task deleted'})\n return jsonify({'message': 'Task not found'})\n\n@app.route('\/rate_limit', methods=['GET'])\n@jwt_required()\ndef rate_limit():\n user_id = get_jwt_identity()\n rate_limit = 100 # Change this to your own rate limit\n requests = request.args.get('requests', 0, type=int)\n remaining = rate_limit - requests\n return jsonify({'remaining': remaining})\n\nif __name__ == '__main__':\n app.run(debug=True)\n```\n\nThis Flask app has the following database models:\n\n- User: Stores user authentication information\n- Task: Stores task information with all fields we've added\n\nTo use this Flask app with a database backend, you need to set the appropriate database URI in the `app.config['SQLALCHEMY_DATABASE_URI']` variable. For development, you can use SQLite (`sqlite:\/\/\/task_manager.db`), but for production, you can use PostgreSQL (`postgresql:\/\/username:password@localhost\/db_name`).\n\nYou also need to install the required dependencies (`Flask-SQLAlchemy`, `Flask-Migrate`, and `psycopg2-binary` for PostgreSQL).\n\nTo create database migrations, run the following commands:\n\n```\nflask db init\nflask db migrate\nflask db upgrade\n```\n\nThese commands will generate and apply database migrations based on the current state of the database models.","refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[],"reasoning":null},"logprobs":null,"finish_reason":"stop","token_ids":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":25632,"total_tokens":27316,"completion_tokens":1684,"prompt_tokens_details":null},"prompt_token_ids":null,"kv_transfer_params":null}