From cdaf42b1511e710b3221fe12adbd3dfe20e995f4 Mon Sep 17 00:00:00 2001 From: VLamani Date: Fri, 22 Mar 2024 11:49:03 +0530 Subject: [PATCH 1/3] Contack_Book --- CONTACT_BOOK_PROJECT/README.md | 39 ++++++ .../contact_book/contact_book/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 169 bytes .../__pycache__/settings.cpython-312.pyc | Bin 0 -> 2561 bytes .../__pycache__/urls.cpython-312.pyc | Bin 0 -> 1353 bytes .../contact_book/contact_book/asgi.py | 16 +++ .../contact_book/contact_book/settings.py | 123 ++++++++++++++++++ .../contact_book/contact_book/urls.py | 32 +++++ .../contact_book/contact_book/wsgi.py | 16 +++ .../contact_book/contacts/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 165 bytes .../contact_book/contacts/apps.py | 6 + .../contact_book/contacts/forms.py | 7 + .../contacts/migrations/__init__.py | 0 .../contact_book/contacts/models.py | 13 ++ .../contacts/templates/add_contact.html | 10 ++ .../contacts/templates/index.html | 10 ++ .../contact_book/contacts/tests.py | 3 + .../contact_book/contacts/view.py | 6 + .../contact_book/contacts/views.py | 14 ++ CONTACT_BOOK_PROJECT/contact_book/db.sqlite3 | Bin 0 -> 131072 bytes CONTACT_BOOK_PROJECT/contact_book/manage.py | 22 ++++ README.md | 46 ++++++- 23 files changed, 356 insertions(+), 7 deletions(-) create mode 100644 CONTACT_BOOK_PROJECT/README.md create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contact_book/__init__.py create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contact_book/__pycache__/__init__.cpython-312.pyc create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contact_book/__pycache__/settings.cpython-312.pyc create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contact_book/__pycache__/urls.cpython-312.pyc create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contact_book/asgi.py create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contact_book/settings.py create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contact_book/urls.py create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contact_book/wsgi.py create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contacts/__init__.py create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contacts/__pycache__/__init__.cpython-312.pyc create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contacts/apps.py create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contacts/forms.py create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contacts/migrations/__init__.py create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contacts/models.py create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contacts/templates/add_contact.html create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contacts/templates/index.html create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contacts/tests.py create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contacts/view.py create mode 100644 CONTACT_BOOK_PROJECT/contact_book/contacts/views.py create mode 100644 CONTACT_BOOK_PROJECT/contact_book/db.sqlite3 create mode 100644 CONTACT_BOOK_PROJECT/contact_book/manage.py diff --git a/CONTACT_BOOK_PROJECT/README.md b/CONTACT_BOOK_PROJECT/README.md new file mode 100644 index 0000000..2eaabc1 --- /dev/null +++ b/CONTACT_BOOK_PROJECT/README.md @@ -0,0 +1,39 @@ +# Contact Book + +Welcome to Contact Book! This application allows you to manage and organize your contacts efficiently. + +## Features + +- **Add Contacts**: Easily add new contacts to your list. +- **View Contacts**: View the list of all your contacts with their details. +- **Search Contacts**: Search for specific contacts by name or any other relevant details. +- **Update Contacts**: Modify existing contacts' information such as phone numbers, email addresses, etc. +- **Delete Contacts**: Remove contacts you no longer need from your list. +- **Export Contacts**: Export your contact list for backup or sharing purposes. + +## Getting Started + +1. **Installation**: + - Clone this repository to your local machine. + - Make sure you have Python installed. + - Install the required dependencies using `pip install -r requirements.txt`. + +2. **Usage**: + - Run `contact_book.py` to start the application. + - Follow the on-screen instructions to navigate through the application's features. + +3. **Configuration**: + - You can customize the application's behavior by modifying `config.py`. + - For example, you can change the storage format, default file paths, etc. + +## File Structure + +- `contact_book.py`: Main application file. +- `config.py`: Configuration file for the application. +- `contacts.csv` (or other specified format): Default file to store contacts. + +## Contributing + +Contributions are welcome! If you have any suggestions, bug reports, or feature requests, please open an issue or create a pull request. + + diff --git a/CONTACT_BOOK_PROJECT/contact_book/contact_book/__init__.py b/CONTACT_BOOK_PROJECT/contact_book/contact_book/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/CONTACT_BOOK_PROJECT/contact_book/contact_book/__pycache__/__init__.cpython-312.pyc b/CONTACT_BOOK_PROJECT/contact_book/contact_book/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0cc1cb47b502920e0ad2c43d9bf12cb8ae4d80ab GIT binary patch literal 169 zcmX@j%ge<81kU_lQ$h4&5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!@^H3_2`x@7Dvl}3 zEY3)baY-%CF3B&5@l7pOaL&)kNlj0UNzTtJNlY$@Ps-2FM&-oEXXa&=#K-FuRQ}?y e$<0qG%}KQ@Vg(w^2*kx8#z$sGM#ds$APWFCCoAay literal 0 HcmV?d00001 diff --git a/CONTACT_BOOK_PROJECT/contact_book/contact_book/__pycache__/settings.cpython-312.pyc b/CONTACT_BOOK_PROJECT/contact_book/contact_book/__pycache__/settings.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..03c4cf84d1064bfbf8877ba4249973e9a569b7d6 GIT binary patch literal 2561 zcmb7Gy>Ht_6esolZCO!bCusqu`Kp|ns^O+dgCGqp(Y6p-QcWpt2?GSBJIjJk!p_db5_-S6Hz^7nW=Lcx`r zd5=GfQ`Dc%WPAligLi+!;1>!}B86z=QR%iv^w5-t!XE5>MGvi7;j!Dv^VMkBa$}sx zozYn`F@U^c5c$MVlM=&C3i)5sVg#N6ct%lBj3LkR!;NH{j{h~rQePR+_5@*qzn1Xm0;GahG;ze{>ywtmr zxhgNgvLgAGtTlCpVAE8zCSi7TgK6lRDK|{1uIqbD$Ix52VX~3P8rHBOn;0?m9&;PH zj*BvCD;h&g*)T_zx0x;hC}xCwm;I7m2Jck>ZtDhS6b)juWmC~L27czQ0#Owee*sD0 z$gXL2$b)Pa=?%gTV~jIs=Tp{A-uVZnVqhxGO9vMM&CJEm8>BM zgcXB%E~{Nk{!c6e?@R>x%h}irZTl*+xofSASWq;A8(jl0F5j_Gt8t@ytD&}9nO?hN zEi9W0%FX@z1TQV_cJK6V_IB26L&`{6Rzo}*dR(c4-I>Z}FopnjIE=)_i5b^4i z&~d?kelFfW!l4pjcGXBK{7#Wainc42&s5qHZbe1Q!#t2 z;4Byh8y|JnSJPml@a%-YFqBPrWljfyoo?$In{yxkVM>f0HV3z-3f`YEy*HJM4CGDb z!NDAOQyOj|PB>04VocSf^Tv?A39qluScIxH_F8gd51N7fe$|lMxZH87o=o`7PWBqx zHB@3{M^GkicT{LMwhkCrL*sT}^KR!=M`~iH+#2}Nl%P=>keP0fjL-Uf8s@YWi*UW$ zv=+``Y2atjHl}rFWb1&rmFm!X2C_r9wLE3~k;*e1#=4Bp4z6&yCwwVy`|^cN!47ei zisX)hr(P0UHWW>1ciTm*HO<`<|8LLhKWv!FD900k$L9qob=%lb8mAHbSX=B8+gq#V ztRS5B&^TG^(-AB%+13$O3A>^+p|SK;1*@o(nX`kE1P8e!*})DRm#R`Xyg;oTk|gJd zapVRjy80a3fexH5nrVktIDvPz+l~l)Zj-M{Pxv2ff1Y2dt=Vy|SS)Yxd1<{YR0TUx zC<#>%fdFbmup=9Ve7?wUahtpy+box>Qf;%CE0D-f3pvgy zCp(PEcb6z4J)^iWGo!TMW&lR#O zZ|5=DgBRO2oGwgGS5@4^+mnU<@5%Vx$98%jLJxueu8JQSw*c7rS|RZ9LJhn$O&@zA zwD0{qMPEJ+P_g9Cp`RYTiC#O1Ui%|@{Y`Y?AiD4-x^xg->W2miDzQoTBZB}Hj`#gX z$y7i7HWEyE`iZxxP{IS6G?l#Gj}1apnx_wwsl)XAQH*&@`L8Di-e5X%9FF+|18*Yk z>4yglm0o^LB>~l+I83pJ$@yO&9wcuc`@Ko9@w+xxsPN3|q&V<;z%S%ZDwC7%CMTQ2 w$;J35p4Zg;;1)GI-;W=~X8Ylz=uAI!1W5-5F)A?!iAJbPcMqtPaRa#c2WyvB@c;k- literal 0 HcmV?d00001 diff --git a/CONTACT_BOOK_PROJECT/contact_book/contact_book/__pycache__/urls.cpython-312.pyc b/CONTACT_BOOK_PROJECT/contact_book/contact_book/__pycache__/urls.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b12025ee3548a7280de2c75a6b7d5772fdaba7a2 GIT binary patch literal 1353 zcmb7D&ui2`6i%{9yUn^ST3UK3j1}DmYNA3B7PUyVD5wXq2Yt$0lmCV%sUQZ#gBQIi(u1CSGfC(w2s($CH!tsf-}m0kyslPF1=gz*hvY{| zQ9g-Hu?BPJ`)6?W6s$B9tYR%tL#?5y!Y>7-P;cm=(J)j+Q;3drqIHiI07u{M@R475 z`&#D7Is>eM2lmx0R{U#gjWX~IW<0=I#zVnSXg188&m?Adyg)qq;>yco`_PYA89wAq zWcz-Lt4Dc)YjfBd@g9RPbMfvi)S}Uf-|jIl@o9usC=-#yYbEY7rK>1rv`bovZJPHw z1TFPg5PL~NSj3l5;PV7A+DiyW0L4*4(V9=zxs4V8C!~xZKLW@w1CImZae_D@brZqr zBuUKcj)Q57+qmmRZCcQ^Xy}m0nYGV3361?0cSN!S^xQG8Z+IbK@w&Oti&|2*q?MrO zZFCi5DmX z8rMFGS|KGjb^Ztadq|Z3hNeFx5mr z;?^w7{30%@rKX05LqD>#R2LIZ2lMQ$0U38vWviNBOD=0ImFZCVMLZ=@E~mMrdl)-u z1+1HA!#`adS8DhXCL4FGYC7n;aN%4x9nO0csmxzy;whz-zQ!d5GelVDenL`Rj3ce| zT@f|_e_2_WAz>D+;S>b+jxKCyFu*FC77KG4s6HA*Ae!^)wlsFNR*(X3*8ckJEqsW-=`o=?8jFUpGT V#U~GT9z0urtJh@7qY4`Z&R@-rfkyxU literal 0 HcmV?d00001 diff --git a/CONTACT_BOOK_PROJECT/contact_book/contact_book/asgi.py b/CONTACT_BOOK_PROJECT/contact_book/contact_book/asgi.py new file mode 100644 index 0000000..e3d77a5 --- /dev/null +++ b/CONTACT_BOOK_PROJECT/contact_book/contact_book/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for contact_book project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.0/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'contact_book.settings') + +application = get_asgi_application() diff --git a/CONTACT_BOOK_PROJECT/contact_book/contact_book/settings.py b/CONTACT_BOOK_PROJECT/contact_book/contact_book/settings.py new file mode 100644 index 0000000..0e184c7 --- /dev/null +++ b/CONTACT_BOOK_PROJECT/contact_book/contact_book/settings.py @@ -0,0 +1,123 @@ +""" +Django settings for contact_book project. + +Generated by 'django-admin startproject' using Django 5.0.3. + +For more information on this file, see +https://docs.djangoproject.com/en/5.0/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/5.0/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-3+zdjc$u&cljj)ympz*3t*i%w8se1-hu+y%yf7ra1g@nfob)b9' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'contact_book.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'contact_book.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/5.0/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/5.0/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/5.0/howto/static-files/ + +STATIC_URL = 'static/' + +# Default primary key field type +# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/CONTACT_BOOK_PROJECT/contact_book/contact_book/urls.py b/CONTACT_BOOK_PROJECT/contact_book/contact_book/urls.py new file mode 100644 index 0000000..67aec71 --- /dev/null +++ b/CONTACT_BOOK_PROJECT/contact_book/contact_book/urls.py @@ -0,0 +1,32 @@ +""" +URL configuration for contact_book project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/5.0/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path, include + +urlpatterns = [ + path('admin/', admin.site.urls), + path('', include('contacts.urls')), +] + +from django.urls import path +from . import views + +urlpatterns = [ + path('add/', views.add_contact, name='add_contact'), + path('', views.index, name='index'), +] + diff --git a/CONTACT_BOOK_PROJECT/contact_book/contact_book/wsgi.py b/CONTACT_BOOK_PROJECT/contact_book/contact_book/wsgi.py new file mode 100644 index 0000000..8aa7231 --- /dev/null +++ b/CONTACT_BOOK_PROJECT/contact_book/contact_book/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for contact_book project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'contact_book.settings') + +application = get_wsgi_application() diff --git a/CONTACT_BOOK_PROJECT/contact_book/contacts/__init__.py b/CONTACT_BOOK_PROJECT/contact_book/contacts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/CONTACT_BOOK_PROJECT/contact_book/contacts/__pycache__/__init__.cpython-312.pyc b/CONTACT_BOOK_PROJECT/contact_book/contacts/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..661974a044519310997375e652f9316bedd3bd03 GIT binary patch literal 165 zcmX@j%ge<81U39$Q$h4&5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!a&fkb2`x@7Dvl}3 zEY3)baY-%CF3B&5@l7pOaL&)kNlj0UNzTtJNlY$@Ps-2FhH;8x;^Q;(GE3s)^$IF~ gaoFVMrAdd Contact +
+ {% csrf_token %} + {{ form.as_p }} + +
+{% endblock %} \ No newline at end of file diff --git a/CONTACT_BOOK_PROJECT/contact_book/contacts/templates/index.html b/CONTACT_BOOK_PROJECT/contact_book/contacts/templates/index.html new file mode 100644 index 0000000..19d35eb --- /dev/null +++ b/CONTACT_BOOK_PROJECT/contact_book/contacts/templates/index.html @@ -0,0 +1,10 @@ +{% extends 'base.html' %} + +{% block content %} +

Contacts

+
    + {% for contact in contacts %} +
  • {{ contact.name }} - {{ contact.email }}
  • + {% endfor %} +
+{% endblock %} \ No newline at end of file diff --git a/CONTACT_BOOK_PROJECT/contact_book/contacts/tests.py b/CONTACT_BOOK_PROJECT/contact_book/contacts/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/CONTACT_BOOK_PROJECT/contact_book/contacts/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/CONTACT_BOOK_PROJECT/contact_book/contacts/view.py b/CONTACT_BOOK_PROJECT/contact_book/contacts/view.py new file mode 100644 index 0000000..4f65d69 --- /dev/null +++ b/CONTACT_BOOK_PROJECT/contact_book/contacts/view.py @@ -0,0 +1,6 @@ +from django.shortcuts import render +from .models import Contact + +def index(request): + contacts = Contact.objects.all() + return render(request, 'contacts/index.html', {'contacts': contacts}) \ No newline at end of file diff --git a/CONTACT_BOOK_PROJECT/contact_book/contacts/views.py b/CONTACT_BOOK_PROJECT/contact_book/contacts/views.py new file mode 100644 index 0000000..a4c0c92 --- /dev/null +++ b/CONTACT_BOOK_PROJECT/contact_book/contacts/views.py @@ -0,0 +1,14 @@ + + +from django.shortcuts import render, redirect +from .forms import ContactForm + +def add_contact(request): + if request.method == 'POST': + form = ContactForm(request.POST) + if form.is_valid(): + form.save() + return redirect('contacts:index') + else: + form = ContactForm() + return render(request, 'contacts/add_contact.html', {'form': form}) diff --git a/CONTACT_BOOK_PROJECT/contact_book/db.sqlite3 b/CONTACT_BOOK_PROJECT/contact_book/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..f81a59c23b8ca8bc3c1ff810cb8098d99f8e5488 GIT binary patch literal 131072 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 U5C8!X009sH0T2LzCxgKM0U0o#uK)l5 literal 0 HcmV?d00001 diff --git a/CONTACT_BOOK_PROJECT/contact_book/manage.py b/CONTACT_BOOK_PROJECT/contact_book/manage.py new file mode 100644 index 0000000..f7992cb --- /dev/null +++ b/CONTACT_BOOK_PROJECT/contact_book/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'contact_book.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/README.md b/README.md index 7a52145..2eaabc1 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,39 @@ -# Case Tools Project Work24 -Repository to upload case tools assignment -Steps. -1. Fork the repository -2. Create a folder inside forked repository -3. add a readme.md file to this folder and commit the code here -4. ask for pull request message containing group roll numbers, description, project title ,and how to set up the project +# Contact Book + +Welcome to Contact Book! This application allows you to manage and organize your contacts efficiently. + +## Features + +- **Add Contacts**: Easily add new contacts to your list. +- **View Contacts**: View the list of all your contacts with their details. +- **Search Contacts**: Search for specific contacts by name or any other relevant details. +- **Update Contacts**: Modify existing contacts' information such as phone numbers, email addresses, etc. +- **Delete Contacts**: Remove contacts you no longer need from your list. +- **Export Contacts**: Export your contact list for backup or sharing purposes. + +## Getting Started + +1. **Installation**: + - Clone this repository to your local machine. + - Make sure you have Python installed. + - Install the required dependencies using `pip install -r requirements.txt`. + +2. **Usage**: + - Run `contact_book.py` to start the application. + - Follow the on-screen instructions to navigate through the application's features. + +3. **Configuration**: + - You can customize the application's behavior by modifying `config.py`. + - For example, you can change the storage format, default file paths, etc. + +## File Structure + +- `contact_book.py`: Main application file. +- `config.py`: Configuration file for the application. +- `contacts.csv` (or other specified format): Default file to store contacts. + +## Contributing + +Contributions are welcome! If you have any suggestions, bug reports, or feature requests, please open an issue or create a pull request. + + From 367f5f723bb19a0023f7735eda6f01a8d4b1e280 Mon Sep 17 00:00:00 2001 From: VLamani Date: Fri, 22 Mar 2024 11:50:36 +0530 Subject: [PATCH 2/3] Contack_Book --- CONTACT_BOOK_PROJECT/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CONTACT_BOOK_PROJECT/README.md b/CONTACT_BOOK_PROJECT/README.md index 2eaabc1..89795e3 100644 --- a/CONTACT_BOOK_PROJECT/README.md +++ b/CONTACT_BOOK_PROJECT/README.md @@ -37,3 +37,7 @@ Welcome to Contact Book! This application allows you to manage and organize your Contributions are welcome! If you have any suggestions, bug reports, or feature requests, please open an issue or create a pull request. + +Thank you + + From b5ce7e554824e2cfb91e67c4c664c1ea1b372dd5 Mon Sep 17 00:00:00 2001 From: VLamani Date: Fri, 5 Apr 2024 17:21:27 +0530 Subject: [PATCH 3/3] Sybca B Vishal --- .../contact_book/contacts/views.py | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 CONTACT_BOOK_PROJECT/contact_book/contacts/views.py diff --git a/CONTACT_BOOK_PROJECT/contact_book/contacts/views.py b/CONTACT_BOOK_PROJECT/contact_book/contacts/views.py deleted file mode 100644 index a4c0c92..0000000 --- a/CONTACT_BOOK_PROJECT/contact_book/contacts/views.py +++ /dev/null @@ -1,14 +0,0 @@ - - -from django.shortcuts import render, redirect -from .forms import ContactForm - -def add_contact(request): - if request.method == 'POST': - form = ContactForm(request.POST) - if form.is_valid(): - form.save() - return redirect('contacts:index') - else: - form = ContactForm() - return render(request, 'contacts/add_contact.html', {'form': form})