Website for spa manager and employees.
Install docker-compose and docker
chmod u+x script.bash
./script.bash
Web app is hosted at 0.0.0.0:8000
, PostgreSQL GUI is hosted at 0.0.0.0:8080
.
PgAdmin4:
- login is
admin@example.com
- password is
password
Database:
- hostname is
db
- name is
myapp
- admin login is
django
- admin password is
django
To create root user u have to:
Run docker ps and copy CONTAINER ID
from web app container
sudo docker ps
Enter the container
docker exec -it <your_id> bash
Inside migrate databases
python manage.py migrate
Create superuser
python manage.py createsuperuser
Check if you have WSL2 in order to run docker. Remember about installing docker and docker-compose.
- Get your ip address: ip addr show eth0 | grep inet | awk '{ print
$2; }' | sed 's//.*$ //' - Add it to settings.py ALLOWED_HOSTS
- App: <your_address>:8000, postgreSQL: <your_address>:8080
Additionaly, you might need to run the commands from script.bash manually on command line.
Build and set up docker containers
./script.bash
Run docker ps and copy CONTAINER ID
from web app container
sudo docker ps
Enter the container
docker exec -it <your_id> bash
To migrate default migrations just run this command:
python manage.py migrate
It is possible to reverse migrations and remove contents from database.
To do so run:
python manage.py migrate <app_name> zero
For example:
python manage.py migrate SpaApp zero
After you modified a model in models.py
you need to make a migration.
To do so, inside the container specify app you would like to make migrations for
python manage.py makemigrations <app_name>
For example:
python manage.py makemigrations SpaApp
And then migrate
python manage.py migrate
It is also possible to create a new empty migration like so:
python manage.py makemigrations --empty <app_name> --name <migration_name>
For example:
python manage.py makemigrations --empty SpaApp --name seed_database
If you get the following error:
ValueError: The field admin.LogEntry.user was declared with a lazy reference to 'SpaApp.user', but app 'SpaApp' doesn't provide model 'user'.
Go to settings.py
and in INSTALLED_APPS
list comment the line with 'django.contrib.admin'
, so the list should look like:
INSTALLED_APPS = [
# 'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
"django_bootstrap5",
'SpaApp',
]
then go to the urls.py
and comment the admin/
path, this will look like:
urlpatterns = [
path('', include('SpaApp.urls')),
# path('admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # For product images
After both lines are commented make migrations:
python manage.py migrate
And then uncomment those lines.
In case of this error:
psycopg2.errors.UndefinedTable: relation "SpaApp_user" does not exist
spamanagement-web-1 | LINE 1: ...pp_user"."date_joined", "SpaApp_user"."type" FROM "SpaApp_us...
you need to open forms.py
and comment these lines:
# def _get_employee_list() -> list[tuple[int, str]]:
# """return list of emplyee"""
# users = user_model.objects.all()
# return [(user.id, user.username) for user in users]
#
class AppointmentForm(forms.ModelForm):
date = forms.DateField(widget=forms.DateInput(attrs={'type': 'date'}))
time = forms.TimeField(widget=forms.TimeInput(attrs={'type': 'time'}))
description = forms.CharField(widget=forms.Textarea, required=False)
# employee = forms.ChoiceField(choices=_get_employee_list(),
# widget=forms.Select(attrs={'class': 'form-control'}))
class Meta:
model = Appointment
fields = ["name", "description", "date", "time"]
With those lines commented now you should be able to migrate.
After migration uncomment those lines back.
- Anna Kaniowska
- Bartlomiej Karpiuk
- Jakub Owczarek
- Kacper Tarka
- Karol Sliwa
- Wojciech Zelasko
This project was part of IT System course during 2023 summer semester of 3rd year Data Engineering and Analysis on AGH UST