На нашем сайте Вы сможете найти готовые курсовые и дипломные работы по программированию
Сейчас работаем

Список задач (Python, Flask, SQLALCHEMY, SQLite, html, css, js)

Скриншот архива с проектом

Структура проекта

Задание

Название приложения: Система управления задачами

Описание:

Разработайте веб-приложение для управления задачами, которое позволит пользователям создавать, редактировать, удалять и отслеживать свои задачи. Приложение должно иметь следующие функции:

 Создание задач: Пользователи должны иметь возможность создавать задачи с заголовком, описанием и датой выполнения.

 Редактирование задач: Пользователи должны иметь возможность редактировать существующие задачи, изменяя их заголовок, описание и дату выполнения.

 Удаление задач: Пользователи должны иметь возможность удалять задачи.

 Отслеживание задач: Приложение должно предоставлять пользователям возможность отслеживать свои задачи, отмечая их как выполненные или отложенные.

 Фильтрация задач: Пользователи должны иметь возможность фильтровать задачи по статусу (выполненные, отложенные, все) и дате выполнения.

Требования:

 Python 3.6+

 Flask

 База данных SQLite или PostgreSQL

Функционал программы

  • добавление задач
  • удаление задач
  • редактирование задач
  • поиск и фильтрация
  • экспорт в Excel

Фрагмент программного кода

from flask import Flask, render_template, redirect, url_for, flash, request
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime, timezone
from flask_wtf import FlaskForm
from wtforms import StringField, BooleanField
from wtforms.fields.datetime import DateField
from wtforms.fields.simple import PasswordField
from wtforms.validators import DataRequired, EqualTo
import io
import csv
import codecs
from flask import Response

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///tasks.db'
app.config['SECRET_KEY'] = 'your_secret_key_here'

db = SQLAlchemy(app)


class Task(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    description = db.Column(db.Text, nullable=True)
    completed = db.Column(db.Boolean, default=False)
    created_date = db.Column(db.DateTime, nullable=False, default=datetime.now(timezone.utc))
    comment = db.Column(db.Text, nullable=True)


class TaskForm(FlaskForm):
    title = StringField('Title', validators=[DataRequired()])
    description = StringField('Description')
    completed = BooleanField('Completed')
    created_date = DateField('Created Date', validators=[DataRequired()])
    comment = StringField('Comment')


class RegistrationForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    email = StringField('Email', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired()])
    confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')])


@app.route('/register', methods=['GET', 'POST'])
def register():
    form = RegistrationForm()
    if form.validate_on_submit():
        flash(f'Account created for {form.username.data}!', 'success')
        return redirect(url_for('tasks'))
    return render_template('register.html', title='Register', form=form)


@app.route('/', methods=['POST', 'GET'])
def tasks():
    form = TaskForm()
    if form.validate_on_submit():
        title = form.title.data
        description = form.description.data
        completed = form.completed.data
        created_date = form.created_date.data

        comment = form.comment.data

        task = Task(title=title, description=description, completed=completed, created_date=created_date, comment=comment)

        db.session.add(task)
        db.session.commit()
        return redirect(url_for('tasks'))
    tasks = Task.query.all()
    return render_template('tasks.html',  form=form, tasks=tasks)


@app.route('/tasks/<int:id>')
def task_detail(id):
    tasks = Task.query.all()
    task = Task.query.get(id)
    return render_template("task_detail.html", tasks=tasks, task=task)


@app.route('/add_task', methods=['POST', 'GET'])
def add_task():
    if request.method == 'POST':
        title = request.form['title']
        description = request.form['description']
        completed = request.form.get('completed')
        created_date = datetime.strptime(request.form['created_date'], '%Y-%m-%d')  # Преобразование строки в объект datetime
        comment = request.form['comment']
        task = Task(title=title, description=description, completed=completed, created_date=created_date, comment=comment)
        try:
            db.session.add(task)
            db.session.commit()
            return redirect(url_for('tasks'))
        except Exception as e:
            return f"При добавлении задачи произошла ошибка: {str(e)}"
    else:
        return render_template("add_task.html")


@app.route('/tasks/<int:id>/update', methods=['POST', 'GET'])
def task_update(id):
    task = Task.query.get(id)
    form = TaskForm(obj=task)
    if request.method == 'POST':
        task.title = request.form['title']
        task.description = request.form['description']
        task.completed = True if request.form.get('completed') else False
        task.created_date = datetime.strptime(request.form['created_date'], '%Y-%m-%d')
        task.comment = request.form['comment']

        try:
            db.session.commit()
            return redirect(url_for('tasks'))
        except Exception as e:
            return f"При изменении задачи произошла ошибка: {str(e)}"
    else:
        return render_template("task_update.html", task=task, form=form)


@app.route('/tasks/<int:id>/delete')
def task_delete(id):
    task = Task.query.get_or_404(id)

    try:
        db.session.delete(task)
        db.session.commit()
        return redirect(url_for('tasks'))
    except Exception as e:
        return f"При удалении задачи произошла ошибка: {str(e)}!!!"


@app.route('/search', methods=['POST', 'GET'])
def search():
    if request.method == 'POST':
        search_term = request.form['search_term']
        completed_filter = request.form.get('completed_filter')  # Получаем значение фильтра по полю "completed"

        if completed_filter == 'all':  # Показать все задачи
            tasks = Task.query.filter(Task.title.ilike(f"%{search_term}%")).all()
        else:
            completed = True if completed_filter == 'completed' else False
            tasks = Task.query.filter(Task.title.ilike(f"%{search_term}%"), Task.completed == completed).all()

        return render_template('search_results.html', tasks=tasks, search_term=search_term)
    else:
        return render_template('search_form.html')


@app.route('/export_csv')
def export_csv():
    tasks = Task.query.all()

    output = io.StringIO()
    writer = csv.writer(output)
    writer.writerow(['Title', 'Description', 'Completed', 'Created Date', 'Comment'])

    for task in tasks:
        writer.writerow([task.title, task.description, "Да" if task.completed else "Нет", task.created_date, task.comment])

    output.seek(0)

    return Response(codecs.BOM_UTF8 + output.getvalue().encode('utf-8'), mimetype='text/csv',
                    headers={"Content-Disposition": "attachment; filename=tasks.csv"})


if __name__ == '__main__':
    with app.app_context():
        db.create_all()
    app.run(debug=True)

Пояснения по запуску программы

Для эффективной работы с приложением вам потребуется: 

  •  редактор кода VS Code - скачать можно тут - https://code.visualstudio.com/download  или PyCharm  -  https://www.jetbrains.com/ru-ru/pycharm/ Я же использовал PyCharm Community - https://www.jetbrains.com/ru-ru/pycharm/download/?section=windows
  • интерпретатор языка Python, скачать можно тут - https://www.python.org/downloads/ 
  • После установки всего выше описанного, настройте VS Code  для работы с Python установив необходимые расширения (см. инструкцию - https://youtu.be/j5e5gwZgMH8) . Или откройте проект в PyCharm. 
  • Запускаете приложение и пользуетесь. Также вы можете самостоятельно выложить проект на Heroku или другой хостинг по вашему усмотрению. Также можете доработать проект как вам нужно. 
Купить 1000,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегистрированые пользователи имеют возможность комментировать работы
Купить

1000,00 

Покупается впервые!
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.

Заказать через

Проект - Список задач.rar
10583948
Оцени работу

рейтинг

Список задач (Python, Flask, SQLALCHEMY, SQLite, html, css, js)
Название приложения: Система управления задачами/ Приложение написано на Python с применением фреймворка Flask, стилей Bootstrap.
Категория: Образование
Стоимость: 1000,00