├── .idea ├── .gitignore ├── inspectionProfiles │ ├── Project_Default.xml │ └── profiles_settings.xml ├── misc.xml ├── modules.xml └── todo.iml ├── README.md ├── db.sqlite3 ├── manage.py ├── tasks ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-37.pyc │ ├── admin.cpython-37.pyc │ ├── forms.cpython-37.pyc │ ├── models.cpython-37.pyc │ ├── urls.cpython-37.pyc │ └── views.cpython-37.pyc ├── admin.py ├── apps.py ├── forms.py ├── migrations │ ├── 0001_initial.py │ ├── __init__.py │ └── __pycache__ │ │ ├── 0001_initial.cpython-37.pyc │ │ └── __init__.cpython-37.pyc ├── models.py ├── templates │ └── tasks │ │ ├── delete.html │ │ ├── list.html │ │ └── update_task.html ├── tests.py ├── urls.py └── views.py └── todo ├── __init__.py ├── __pycache__ ├── __init__.cpython-37.pyc ├── settings.cpython-37.pyc ├── urls.cpython-37.pyc └── wsgi.cpython-37.pyc ├── asgi.py ├── settings.py ├── urls.py └── wsgi.py /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/todo.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Forks](https://img.shields.io/badge/forks-44-blue) 2 | ![Stars](https://img.shields.io/badge/stars-13-yellow) 3 | # ToDo-list-App 4 | 5 | ## Description 6 | Welcome to our project! This is a Todo list App made in Python and the Django framework. It allows users to quickly and easily add, delete, and update events and tasks. With this App, users can effortlessly manage their tasks and events, helping them stay organized and on top of their to-do list. We hope you enjoy and we look forward to your contributions! 7 | 8 | ## Contributing 9 | We welcome any and all contributions! Here are some ways you can get started: 10 | 1. Report bugs: If you encounter any bugs, please let us know. Open up an issue and let us know the problem. 11 | 2. Contribute code: If you are a developer and want to contribute, follow the instructions below to get started! 12 | 3. Suggestions: If you don't want to code but have some awesome ideas, open up an issue explaining some updates or imporvements you would like to see! 13 | 4. Documentation: If you see the need for some additional documentation, feel free to add some! 14 | 15 | ## Instructions 16 | 1. Fork this repository 17 | 2. Clone the forked repository 18 | 3. Add your contributions (code or documentation) 19 | 4. Commit and push 20 | 5. Wait for pull request to be merged 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/db.sqlite3 -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """Django's command-line utility for administrative tasks.""" 3 | import os 4 | import sys 5 | 6 | 7 | def main(): 8 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'todo.settings') 9 | try: 10 | from django.core.management import execute_from_command_line 11 | except ImportError as exc: 12 | raise ImportError( 13 | "Couldn't import Django. Are you sure it's installed and " 14 | "available on your PYTHONPATH environment variable? Did you " 15 | "forget to activate a virtual environment?" 16 | ) from exc 17 | execute_from_command_line(sys.argv) 18 | 19 | 20 | if __name__ == '__main__': 21 | main() 22 | -------------------------------------------------------------------------------- /tasks/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/tasks/__init__.py -------------------------------------------------------------------------------- /tasks/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/tasks/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /tasks/__pycache__/admin.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/tasks/__pycache__/admin.cpython-37.pyc -------------------------------------------------------------------------------- /tasks/__pycache__/forms.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/tasks/__pycache__/forms.cpython-37.pyc -------------------------------------------------------------------------------- /tasks/__pycache__/models.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/tasks/__pycache__/models.cpython-37.pyc -------------------------------------------------------------------------------- /tasks/__pycache__/urls.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/tasks/__pycache__/urls.cpython-37.pyc -------------------------------------------------------------------------------- /tasks/__pycache__/views.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/tasks/__pycache__/views.cpython-37.pyc -------------------------------------------------------------------------------- /tasks/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from .models import * 3 | # Register your models here. 4 | 5 | admin.site.register(Task) -------------------------------------------------------------------------------- /tasks/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class TasksConfig(AppConfig): 5 | name = 'tasks' 6 | -------------------------------------------------------------------------------- /tasks/forms.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | from django.forms import ModelForm 3 | 4 | from .models import * 5 | 6 | 7 | class TaskForm(forms.ModelForm): 8 | title = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Add new task...'})) 9 | 10 | class Meta: 11 | model = Task 12 | fields = '__all__' -------------------------------------------------------------------------------- /tasks/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.8 on 2020-07-22 18:28 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | initial = True 9 | 10 | dependencies = [ 11 | ] 12 | 13 | operations = [ 14 | migrations.CreateModel( 15 | name='Task', 16 | fields=[ 17 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 18 | ('title', models.CharField(max_length=200)), 19 | ('complete', models.BooleanField(default=False)), 20 | ('created', models.DateTimeField(auto_now_add=True)), 21 | ], 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /tasks/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/tasks/migrations/__init__.py -------------------------------------------------------------------------------- /tasks/migrations/__pycache__/0001_initial.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/tasks/migrations/__pycache__/0001_initial.cpython-37.pyc -------------------------------------------------------------------------------- /tasks/migrations/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/tasks/migrations/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /tasks/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | 5 | 6 | class Task(models.Model): 7 | title = models.CharField(max_length=200) 8 | complete = models.BooleanField(default=False) 9 | created = models.DateTimeField(auto_now_add=True) 10 | 11 | def __str__(self): 12 | return self.title 13 | -------------------------------------------------------------------------------- /tasks/templates/tasks/delete.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Title 6 | 7 | 8 |

Are you Sure you want to Delete "{{item}}"?

9 | Cancel 10 |
11 | {% csrf_token %} 12 | 13 |
14 | 15 | -------------------------------------------------------------------------------- /tasks/templates/tasks/list.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Title 6 | 7 | 8 | 9 | 10 | 56 |
57 |
58 | {% csrf_token %} 59 | {{ form.title }} 60 | 61 |
62 |
63 | {% for task in tasks %} 64 |
65 | Update 66 | Delete 67 | {% if task.complete == True %} 68 | {{ task }} 69 | {% else %} 70 | {{ task }} 71 | {% endif %} 72 |
73 | {% endfor %} 74 |
75 |
76 | 77 | -------------------------------------------------------------------------------- /tasks/templates/tasks/update_task.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Title 6 | 7 | 8 |

Update Task

9 |
10 | {% csrf_token %} 11 | {{form}} 12 | 13 |
14 | 15 | -------------------------------------------------------------------------------- /tasks/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /tasks/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | from . import views 3 | 4 | urlpatterns = [ 5 | path('', views.index, name='list'), 6 | path('updateTask//', views.updateTask, name='update_task'), 7 | path('deleteTask//', views.deleteTask, name='delete'), 8 | ] 9 | -------------------------------------------------------------------------------- /tasks/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render, redirect 2 | from django.http import HttpResponse 3 | from .models import * 4 | from .forms import * 5 | 6 | # Create your views here. 7 | 8 | 9 | def index(request): 10 | tasks = Task.objects.all() 11 | 12 | form = TaskForm() 13 | 14 | if request.method == 'POST': 15 | form = TaskForm(request.POST) 16 | if form.is_valid(): 17 | form.save() 18 | return redirect('/') 19 | 20 | context = {'tasks': tasks, 'form': form} 21 | return render(request, 'tasks/list.html', context) 22 | 23 | 24 | def updateTask(request, pk): 25 | task = Task.objects.get(id=pk) 26 | 27 | form = TaskForm(instance=task) 28 | 29 | if request.method == 'POST': 30 | form = TaskForm(request.POST, instance=task) 31 | if form.is_valid(): 32 | form.save() 33 | return redirect('/') 34 | 35 | context = {'form': form} 36 | 37 | return render(request, 'tasks/update_task.html', context) 38 | 39 | 40 | def deleteTask(request, pk): 41 | item = Task.objects.get(id=pk) 42 | 43 | if request.method == 'POST': 44 | item.delete() 45 | return redirect('/') 46 | 47 | context = {'item': item} 48 | return render(request, 'tasks/delete.html', context) -------------------------------------------------------------------------------- /todo/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/todo/__init__.py -------------------------------------------------------------------------------- /todo/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/todo/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /todo/__pycache__/settings.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/todo/__pycache__/settings.cpython-37.pyc -------------------------------------------------------------------------------- /todo/__pycache__/urls.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/todo/__pycache__/urls.cpython-37.pyc -------------------------------------------------------------------------------- /todo/__pycache__/wsgi.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/larymak/ToDo-list-App/42996e8b667effde632f2410030cb09e079476d6/todo/__pycache__/wsgi.cpython-37.pyc -------------------------------------------------------------------------------- /todo/asgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | ASGI config for todo project. 3 | 4 | It exposes the ASGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.0/howto/deployment/asgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.asgi import get_asgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'todo.settings') 15 | 16 | application = get_asgi_application() 17 | -------------------------------------------------------------------------------- /todo/settings.py: -------------------------------------------------------------------------------- 1 | """ 2 | Django settings for todo project. 3 | 4 | Generated by 'django-admin startproject' using Django 3.0.8. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.0/topics/settings/ 8 | 9 | For the full list of settings and their values, see 10 | https://docs.djangoproject.com/en/3.0/ref/settings/ 11 | """ 12 | 13 | import os 14 | 15 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...) 16 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 17 | 18 | 19 | # Quick-start development settings - unsuitable for production 20 | # See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/ 21 | 22 | # SECURITY WARNING: keep the secret key used in production secret! 23 | SECRET_KEY = '*********************************************' 24 | 25 | # SECURITY WARNING: don't run with debug turned on in production! 26 | DEBUG = False 27 | 28 | ALLOWED_HOSTS = [] 29 | 30 | 31 | # Application definition 32 | 33 | INSTALLED_APPS = [ 34 | 'django.contrib.admin', 35 | 'django.contrib.auth', 36 | 'django.contrib.contenttypes', 37 | 'django.contrib.sessions', 38 | 'django.contrib.messages', 39 | 'django.contrib.staticfiles', 40 | 'tasks', 41 | ] 42 | 43 | MIDDLEWARE = [ 44 | 'django.middleware.security.SecurityMiddleware', 45 | 'django.contrib.sessions.middleware.SessionMiddleware', 46 | 'django.middleware.common.CommonMiddleware', 47 | 'django.middleware.csrf.CsrfViewMiddleware', 48 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 49 | 'django.contrib.messages.middleware.MessageMiddleware', 50 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 51 | ] 52 | 53 | ROOT_URLCONF = 'todo.urls' 54 | 55 | TEMPLATES = [ 56 | { 57 | 'BACKEND': 'django.template.backends.django.DjangoTemplates', 58 | 'DIRS': [], 59 | 'APP_DIRS': True, 60 | 'OPTIONS': { 61 | 'context_processors': [ 62 | 'django.template.context_processors.debug', 63 | 'django.template.context_processors.request', 64 | 'django.contrib.auth.context_processors.auth', 65 | 'django.contrib.messages.context_processors.messages', 66 | ], 67 | }, 68 | }, 69 | ] 70 | 71 | WSGI_APPLICATION = 'todo.wsgi.application' 72 | 73 | 74 | # Database 75 | # https://docs.djangoproject.com/en/3.0/ref/settings/#databases 76 | 77 | DATABASES = { 78 | 'default': { 79 | 'ENGINE': 'django.db.backends.sqlite3', 80 | 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 81 | } 82 | } 83 | 84 | 85 | # Password validation 86 | # https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators 87 | 88 | AUTH_PASSWORD_VALIDATORS = [ 89 | { 90 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 91 | }, 92 | { 93 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 94 | }, 95 | { 96 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 97 | }, 98 | { 99 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 100 | }, 101 | ] 102 | 103 | 104 | # Internationalization 105 | # https://docs.djangoproject.com/en/3.0/topics/i18n/ 106 | 107 | LANGUAGE_CODE = 'en-us' 108 | 109 | TIME_ZONE = 'UTC' 110 | 111 | USE_I18N = True 112 | 113 | USE_L10N = True 114 | 115 | USE_TZ = True 116 | 117 | 118 | # Static files (CSS, JavaScript, Images) 119 | # https://docs.djangoproject.com/en/3.0/howto/static-files/ 120 | 121 | STATIC_URL = '/static/' 122 | -------------------------------------------------------------------------------- /todo/urls.py: -------------------------------------------------------------------------------- 1 | """todo URL Configuration 2 | 3 | The `urlpatterns` list routes URLs to views. For more information please see: 4 | https://docs.djangoproject.com/en/3.0/topics/http/urls/ 5 | Examples: 6 | Function views 7 | 1. Add an import: from my_app import views 8 | 2. Add a URL to urlpatterns: path('', views.home, name='home') 9 | Class-based views 10 | 1. Add an import: from other_app.views import Home 11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') 12 | Including another URLconf 13 | 1. Import the include() function: from django.urls import include, path 14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 15 | """ 16 | from django.contrib import admin 17 | from django.urls import path, include 18 | 19 | urlpatterns = [ 20 | path('admin/', admin.site.urls), 21 | path('', include('tasks.urls')), 22 | ] 23 | -------------------------------------------------------------------------------- /todo/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for todo project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.0/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'todo.settings') 15 | 16 | application = get_wsgi_application() 17 | --------------------------------------------------------------------------------