Package: django-appointment
Django Appointment 📦⚠️IMPORTANT: If upgrading from a version before 2.x.x, please note significant database changes were introduced in
version 2.0.0. Please read
themigration guidebefore
updating. Version 3.x.x introduces the ability to send email reminders for appointments using Django Q for efficient
task scheduling. It also allows clients to reschedule appointments if it is allowed by admins.Django-Appointment is a Django app engineered for managing appointment scheduling with ease and flexibility. It enables
users to define custom configurations for time slots, lead time, and finish time, or use the default values
provided. This app proficiently manages conflicts and availability for appointments, ensuring a seamless user
experience.For a detailed walkthrough and live example of the system, please refer tothis tutorial.Detailed documentation can be found in
thedocs' directory.
For changes and migration information, please refer to the release
noteshereandhere.Features ✨Customizable time slots, lead time, and finish time.Competent handling of appointment conflicts and availability.Seamless integration with the Django admin interface for appointment management.Custom admin interface for managing appointment/staff member editing, creation, availability, and conflicts.User-friendly interface for viewing available time slots and scheduling appointments.Ability to send email notifications to clients upon scheduling an appointment and email reminders for
appointments, leveraging Django Q for task scheduling and efficiency.Key features introduced in previous versions.For more information, please refer to
thisdocumentation.Added Features and Bug Fixes in version 3.x.xSee therelease notes.
For older version,
see theirrelease notes.Quick Start 🚀Add "appointment" (& "django_q" if you want to enable email reminders) to yourINSTALLED_APPSsetting like so:INSTALLED_APPS=[# other apps'appointment','django_q',]Then, incorporate the appointment URLconf in your project'surls.py:fromdjango.urlsimportpath,includeurlpatterns=[# other urlspath('appointment/',include('appointment.urls')),]In your Django'ssettings.py, append the following:AUTH_USER_MODEL='models.UserModel'# Optional if you use Django's user modelFor instance, if you employ a custom user model calledUserClientin an app namedclient, you would add it like:AUTH_USER_MODEL='client.UserClient'But if you're using the default Django user model (like most of us), there's no need to add this line since Django
automatically sets it to:AUTH_USER_MODEL='auth.User'Ensure yourcreate_userfunction includes the following arguments, even if they are not all used (in case you're
using a custom user model with your own logic for creating users):defcreate_user(first_name,email,username,last_name=None,**extra_fields):passThis function will create a passwordless user.
After doing so, a link to set the password will be sent to the user's email upon completing the appointment request.Another variable that is worth configuring is the website's name in yoursettings.py:APPOINTMENT_WEBSITE_NAME='Chocolates'It will be used in the footer of the emails sent to clients upon scheduling an appointment:<p>® 2023 {{ APPOINTMENT_WEBSITE_NAME }}. All Rights Reserved.</p>To be able to send email reminders after addingdjango_qto yourINSTALLED_APPS, you must add this variableQ_CLUSTERin your Django'ssettings.py. If done, and users check the box to receive reminders, you and them
will receive an email reminder 24 hours before the appointment.Here's a configuration example, that you can use without modification (if you don't want to do much research):Q_CLUSTER={'name':'DjangORM','workers':4,'timeout':90,'retry':120,'queue_limit':50,'bulk':10,'orm':'default',}Next would be to runpython manage.py migrateto create the appointment models.Start the Django Q cluster withpython manage.py qcluster.Launch the development server and navigate tohttp://127.0.0.1:8000/admin/to create appointments, manage
configurations, and handle appointment conflicts (the Admin app must be enabled).You must create at least one service before using the application on the admin page. If your service is free, input 0
as the price. If your service is paid, input the price in the price field. You may also provide a description for
your service.Visithttp://127.0.0.1:8000/appointment/request/<service_id>/ to view the available time slots and schedule an
appointment.Docker Support 🐳Django-Appointment now supports Docker, making it easier to set up, develop, and test.Getting Started with Docker for Development or Local TestingUsing Django-Appointment with Docker is primarily intended fordevelopment purposesorlocal testing.
This means you'll need toclone the project from the GitHub repositoryto get started.Here's how you can set it up:Clone the Repository: Clone the Django-Appointment repository to your local machine:gitclonehttps://github.com/adamspd/django-appointment.gitor using SSH:gitclonegit@github.com:adamspd/django-appointment.gitthen go to the project's directory:cddjango-appointmentPrepare an .env File: Create an.envfile in the root directory of your project with your configuration
settings.
You should include your email host user and password for Django's email functionality (if you want it to work):EMAIL_HOST_USER=your_email@gmail.com
EMAIL_HOST_PASSWORD=your_passwordNote:The.envfile is used to store sensitive information and should not be committed to version control.Build and Run the Docker Containers: Run the following command to build and run the Docker containers:docker-composeup-d--buildordockercomposeup-d--buildMake Migrations and Run: Create the migrations with the following command:docker-composeexecwebpythonmanage.pymakemigrationsappointmentordockercomposeexecwebpythonmanage.pymakemigrationsappointmentThen, apply the migrations with the following command:docker-composeexecwebpythonmanage.pymigrateordockercomposeexecwebpythonmanage.pymigrateCreate a Superuser: After the containers are running, create a superuser to access the Django admin interface:docker-composeexecwebpythonmanage.pycreatesuperuserordockercomposeexecwebpythonmanage.pycreatesuperuserAccess the Application: Once the containers are running, you can access the application atlocalhost:8000. The
Django admin interface is available atlocalhost:8000/admin. And from there, add the necessary configurations.Follow this documentation.Shut Down the Containers: When you're finished, you can shut down the containers with the following command:docker-composedown# docker compose downNote:I used the default database settings for the Docker container.
If you want to use a different database, you can modify the Dockerfile and docker-compose.yml files to use your
preferred database.Customization 🔧In your Django project'ssettings.py, you can override the default values for the appointment scheduler. More
information regarding available configurations can be found in
thedocumentation.Modify these values as needed for your application, and the app will adapt to the new settings.For further customization, you can extend the provided models, views, and templates or create your own.Support 💬For support or inquiries regarding the Appointment Scheduler app, please refer to the documentation in the "docs"
directory or visit the GitHub repository for more information.Contributing 🤝Contributions are welcome! Please refer to
thecontributing guidelinesfor more
information.Code of Conduct 📜Please refer to thecode of conductfor
more information.Security policy 🔒Please refer to thesecurity policyfor more
information.Notes 📝⚠️I'm working on a testing website for the application
that is not fully functional yet, no hard feelings. But you can check it out
athttps://django-appt.adamspierredavid.com/. Ideas are welcome here since
I'm blocked on a few points.About the AuthorAdams Pierre David -Website