commit message
This commit is contained in:
0
oc_lettings_site/__init__.py
Normal file
0
oc_lettings_site/__init__.py
Normal file
10
oc_lettings_site/admin.py
Normal file
10
oc_lettings_site/admin.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from .models import Letting
|
||||
from .models import Address
|
||||
from .models import Profile
|
||||
|
||||
|
||||
admin.site.register(Letting)
|
||||
admin.site.register(Address)
|
||||
admin.site.register(Profile)
|
||||
5
oc_lettings_site/apps.py
Normal file
5
oc_lettings_site/apps.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class OCLettingsSiteConfig(AppConfig):
|
||||
name = 'oc_lettings_site'
|
||||
7
oc_lettings_site/asgi.py
Normal file
7
oc_lettings_site/asgi.py
Normal file
@@ -0,0 +1,7 @@
|
||||
import os
|
||||
|
||||
from django.core.asgi import get_asgi_application
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'oc_lettings_site.settings')
|
||||
|
||||
application = get_asgi_application()
|
||||
46
oc_lettings_site/migrations/0001_initial.py
Normal file
46
oc_lettings_site/migrations/0001_initial.py
Normal file
@@ -0,0 +1,46 @@
|
||||
# Generated by Django 3.0 on 2020-06-14 09:35
|
||||
|
||||
from django.conf import settings
|
||||
import django.core.validators
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Address',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('number', models.PositiveIntegerField(validators=[django.core.validators.MaxValueValidator(9999)])),
|
||||
('street', models.CharField(max_length=64)),
|
||||
('city', models.CharField(max_length=64)),
|
||||
('state', models.CharField(max_length=2, validators=[django.core.validators.MinLengthValidator(2)])),
|
||||
('zip_code', models.PositiveIntegerField(validators=[django.core.validators.MaxValueValidator(99999)])),
|
||||
('country_iso_code', models.CharField(max_length=3, validators=[django.core.validators.MinLengthValidator(3)])),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Profile',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('favorite_city', models.CharField(blank=True, max_length=64)),
|
||||
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Letting',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('title', models.CharField(max_length=256)),
|
||||
('address', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='oc_lettings_site.Address')),
|
||||
],
|
||||
),
|
||||
]
|
||||
0
oc_lettings_site/migrations/__init__.py
Normal file
0
oc_lettings_site/migrations/__init__.py
Normal file
31
oc_lettings_site/models.py
Normal file
31
oc_lettings_site/models.py
Normal file
@@ -0,0 +1,31 @@
|
||||
from django.db import models
|
||||
from django.core.validators import MaxValueValidator, MinLengthValidator
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
|
||||
class Address(models.Model):
|
||||
number = models.PositiveIntegerField(validators=[MaxValueValidator(9999)])
|
||||
street = models.CharField(max_length=64)
|
||||
city = models.CharField(max_length=64)
|
||||
state = models.CharField(max_length=2, validators=[MinLengthValidator(2)])
|
||||
zip_code = models.PositiveIntegerField(validators=[MaxValueValidator(99999)])
|
||||
country_iso_code = models.CharField(max_length=3, validators=[MinLengthValidator(3)])
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.number} {self.street}'
|
||||
|
||||
|
||||
class Letting(models.Model):
|
||||
title = models.CharField(max_length=256)
|
||||
address = models.OneToOneField(Address, on_delete=models.CASCADE)
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
|
||||
class Profile(models.Model):
|
||||
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
||||
favorite_city = models.CharField(max_length=64, blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.user.username
|
||||
109
oc_lettings_site/settings.py
Normal file
109
oc_lettings_site/settings.py
Normal file
@@ -0,0 +1,109 @@
|
||||
import os
|
||||
|
||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
|
||||
# Quick-start development settings - unsuitable for production
|
||||
# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/
|
||||
|
||||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
SECRET_KEY = 'fp$9^593hsriajg$_%=5trot9g!1qa@ew(o-1#@=&4%=hp46(s'
|
||||
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = True
|
||||
|
||||
ALLOWED_HOSTS = []
|
||||
|
||||
|
||||
# Application definition
|
||||
|
||||
INSTALLED_APPS = [
|
||||
'oc_lettings_site.apps.OCLettingsSiteConfig',
|
||||
'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 = 'oc_lettings_site.urls'
|
||||
|
||||
TEMPLATES = [
|
||||
{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
'DIRS': [os.path.join(BASE_DIR, 'templates')],
|
||||
'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 = 'oc_lettings_site.wsgi.application'
|
||||
|
||||
|
||||
# Database
|
||||
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'NAME': os.path.join(BASE_DIR, 'oc-lettings-site.sqlite3'),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Password validation
|
||||
# https://docs.djangoproject.com/en/3.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/3.0/topics/i18n/
|
||||
|
||||
LANGUAGE_CODE = 'en-us'
|
||||
|
||||
TIME_ZONE = 'UTC'
|
||||
|
||||
USE_I18N = True
|
||||
|
||||
USE_L10N = True
|
||||
|
||||
USE_TZ = True
|
||||
|
||||
|
||||
# Static files (CSS, JavaScript, Images)
|
||||
# https://docs.djangoproject.com/en/3.0/howto/static-files/
|
||||
|
||||
STATIC_URL = '/static/'
|
||||
2
oc_lettings_site/tests.py
Normal file
2
oc_lettings_site/tests.py
Normal file
@@ -0,0 +1,2 @@
|
||||
def test_letting_view():
|
||||
assert 1
|
||||
13
oc_lettings_site/urls.py
Normal file
13
oc_lettings_site/urls.py
Normal file
@@ -0,0 +1,13 @@
|
||||
from django.contrib import admin
|
||||
from django.urls import path
|
||||
|
||||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
path('', views.index, name='index'),
|
||||
path('lettings/', views.lettings_index, name='lettings_index'),
|
||||
path('lettings/<int:letting_id>/', views.letting, name='letting'),
|
||||
path('profiles/', views.profiles_index, name='profiles_index'),
|
||||
path('profiles/<str:username>/', views.profile, name='profile'),
|
||||
path('admin/', admin.site.urls),
|
||||
]
|
||||
45
oc_lettings_site/views.py
Normal file
45
oc_lettings_site/views.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from django.shortcuts import render
|
||||
from .models import Letting, Profile
|
||||
|
||||
|
||||
|
||||
|
||||
# Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque molestie quam lobortis leo consectetur ullamcorper non id est. Praesent dictum, nulla eget feugiat sagittis, sem mi convallis eros,
|
||||
# vitae dapibus nisi lorem dapibus sem. Maecenas pharetra purus ipsum, eget consequat ipsum lobortis quis. Phasellus eleifend ex auctor venenatis tempus.
|
||||
# Aliquam vitae erat ac orci placerat luctus. Nullam elementum urna nisi, pellentesque iaculis enim cursus in. Praesent volutpat porttitor magna, non finibus neque cursus id.
|
||||
def index(request):
|
||||
return render(request, 'index.html')
|
||||
|
||||
# Aenean leo magna, vestibulum et tincidunt fermentum, consectetur quis velit. Sed non placerat massa. Integer est nunc, pulvinar a
|
||||
# tempor et, bibendum id arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Cras eget scelerisque
|
||||
def lettings_index(request):
|
||||
lettings_list = Letting.objects.all()
|
||||
context = {'lettings_list': lettings_list}
|
||||
return render(request, 'lettings_index.html', context)
|
||||
|
||||
|
||||
#Cras ultricies dignissim purus, vitae hendrerit ex varius non. In accumsan porta nisl id eleifend. Praesent dignissim, odio eu consequat pretium, purus urna vulputate arcu, vitae efficitur
|
||||
# lacus justo nec purus. Aenean finibus faucibus lectus at porta. Maecenas auctor, est ut luctus congue, dui enim mattis enim, ac condimentum velit libero in magna. Suspendisse potenti. In tempus a nisi sed laoreet.
|
||||
# Suspendisse porta dui eget sem accumsan interdum. Ut quis urna pellentesque justo mattis ullamcorper ac non tellus. In tristique mauris eu velit fermentum, tempus pharetra est luctus. Vivamus consequat aliquam libero, eget bibendum lorem. Sed non dolor risus. Mauris condimentum auctor elementum. Donec quis nisi ligula. Integer vehicula tincidunt enim, ac lacinia augue pulvinar sit amet.
|
||||
def letting(request, letting_id):
|
||||
letting = Letting.objects.get(id=letting_id)
|
||||
context = {
|
||||
'title': letting.title,
|
||||
'address': letting.address,
|
||||
}
|
||||
return render(request, 'letting.html', context)
|
||||
|
||||
# Sed placerat quam in pulvinar commodo. Nullam laoreet consectetur ex, sed consequat libero pulvinar eget. Fusc
|
||||
# faucibus, urna quis auctor pharetra, massa dolor cursus neque, quis dictum lacus d
|
||||
def profiles_index(request):
|
||||
profiles_list = Profile.objects.all()
|
||||
context = {'profiles_list': profiles_list}
|
||||
return render(request, 'profiles_index.html', context)
|
||||
|
||||
# Aliquam sed metus eget nisi tincidunt ornare accumsan eget lac
|
||||
# laoreet neque quis, pellentesque dui. Nullam facilisis pharetra vulputate. Sed tincidunt, dolor id facilisis fringilla, eros leo tristique lacus,
|
||||
# it. Nam aliquam dignissim congue. Pellentesque habitant morbi tristique senectus et netus et males
|
||||
def profile(request, username):
|
||||
profile = Profile.objects.get(user__username=username)
|
||||
context = {'profile': profile}
|
||||
return render(request, 'profile.html', context)
|
||||
7
oc_lettings_site/wsgi.py
Normal file
7
oc_lettings_site/wsgi.py
Normal file
@@ -0,0 +1,7 @@
|
||||
import os
|
||||
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'oc_lettings_site.settings')
|
||||
|
||||
application = get_wsgi_application()
|
||||
Reference in New Issue
Block a user