Skip to content

Commit 3ad2bdd

Browse files
committedJun 26, 2024
generating models and base structure
1 parent 3bba5f3 commit 3ad2bdd

24 files changed

+294
-3
lines changed
 

‎.idea/vcs.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Pipfile

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ name = "pypi"
55

66
[packages]
77
django = "*"
8+
requests = "*"
89

910
[dev-packages]
1011

‎Pipfile.lock

+130-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎TechWebProject/settings.py

+2
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
'django.contrib.sessions',
3838
'django.contrib.messages',
3939
'django.contrib.staticfiles',
40+
"movieapp.apps.MovieappConfig",
41+
"userdashboard.apps.UserdashboardConfig"
4042
]
4143

4244
MIDDLEWARE = [

‎TechWebProject/urls.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@
1515
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
1616
"""
1717
from django.contrib import admin
18-
from django.urls import path
18+
from django.urls import include, path
1919
from . import views
2020

21+
2122
urlpatterns = [
22-
path('', views.home, name='home'),
23+
path('', include('movieapp.urls'), name='home'),
2324
path('elenca/', views.elenca_params, name='home'),
2425
path('admin/', admin.site.urls),
2526
]

‎db.sqlite3

172 KB
Binary file not shown.
56.9 KB
Binary file not shown.

‎identifier.sqlite

Whitespace-only changes.

‎movieapp/__init__.py

Whitespace-only changes.

‎movieapp/admin.py

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from django.contrib import admin
2+
3+
from movieapp.models import Movie
4+
5+
# Register your models here.
6+
7+
admin.site.register(Movie)

‎movieapp/apps.py

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.apps import AppConfig
2+
3+
4+
class MovieappConfig(AppConfig):
5+
default_auto_field = 'django.db.models.BigAutoField'
6+
name = 'movieapp'

‎movieapp/migrations/0001_initial.py

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Generated by Django 5.0.6 on 2024-06-26 10:27
2+
3+
import django.db.models.deletion
4+
from django.conf import settings
5+
from django.db import migrations, models
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
initial = True
11+
12+
dependencies = [
13+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
14+
]
15+
16+
operations = [
17+
migrations.CreateModel(
18+
name='Movie',
19+
fields=[
20+
('tmdb_id', models.IntegerField(primary_key=True, serialize=False)),
21+
('title', models.CharField(max_length=100)),
22+
('year', models.DateField()),
23+
('description', models.TextField(max_length=1000)),
24+
('genre', models.CharField(max_length=100)),
25+
],
26+
),
27+
migrations.CreateModel(
28+
name='Profile',
29+
fields=[
30+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
31+
('propic', models.ImageField(blank=True, default='static\\unknown_user.png', upload_to='users_pics')),
32+
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
33+
('watchlisted', models.ManyToManyField(blank=True, related_name='watchlisted', to='movieapp.movie')),
34+
],
35+
),
36+
migrations.CreateModel(
37+
name='Request',
38+
fields=[
39+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
40+
('status', models.CharField(choices=[('approved', 'Request has been approved'), ('rejected', 'Request has been rejected'), ('pending', 'Request not yet evaluated')], default='pending', max_length=8)),
41+
('movie', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='movieapp.movie')),
42+
('profile', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='movieapp.profile')),
43+
],
44+
),
45+
migrations.AddField(
46+
model_name='profile',
47+
name='requests',
48+
field=models.ManyToManyField(blank=True, related_name='requests', through='movieapp.Request', to='movieapp.movie'),
49+
),
50+
]

‎movieapp/migrations/__init__.py

Whitespace-only changes.

‎movieapp/models.py

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
from os.path import join
2+
3+
from django.contrib.auth.models import User
4+
from django.db import models
5+
6+
7+
# Create your models here.
8+
9+
class Movie(models.Model):
10+
tmdb_id = models.IntegerField(primary_key=True) # useful to retrieve data from TMDB APIs
11+
title = models.CharField(max_length=100)
12+
year = models.DateField()
13+
description = models.TextField(max_length=1000)
14+
genre = models.CharField(max_length=100)
15+
16+
def __str__(self):
17+
return f"{self.title} - {self.tmdb_id}"
18+
19+
20+
class Profile(models.Model):
21+
user = models.OneToOneField(User, on_delete=models.CASCADE)
22+
propic = models.ImageField(
23+
upload_to='users_pics',
24+
default=join('static', 'unknown_user.png'),
25+
blank=True
26+
)
27+
requests = models.ManyToManyField(Movie, through='Request', blank=True, related_name='requests')
28+
watchlisted = models.ManyToManyField(Movie, blank=True, related_name='watchlisted')
29+
30+
def __str__(self):
31+
return f"{self.user.pk} - {self.user.username}"
32+
33+
34+
class Request(models.Model):
35+
APPROVED = 'approved'
36+
REJECTED = 'rejected'
37+
PENDING = 'pending'
38+
STATUS = [
39+
(APPROVED, 'Request has been approved'),
40+
(REJECTED, 'Request has been rejected'),
41+
(PENDING, 'Request not yet evaluated')
42+
]
43+
profile = models.ForeignKey(Profile, on_delete=models.CASCADE)
44+
movie = models.ForeignKey(Movie, on_delete=models.CASCADE)
45+
status = models.CharField(choices=STATUS, default=PENDING, max_length=8)

‎movieapp/tests.py

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.test import TestCase
2+
3+
# Create your tests here.

‎movieapp/urls.py

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.urls import path
2+
from .views import testview
3+
4+
urlpatterns = [
5+
path('', testview, name='index'),
6+
]

‎movieapp/views.py

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from django.http import HttpResponse
2+
from django.shortcuts import render
3+
from django.forms import ModelForm
4+
from django.contrib.auth.views import LoginView, LogoutView, PasswordChangeView, PasswordChangeDoneView
5+
from django.contrib.auth.mixins import LoginRequiredMixin
6+
from django.views.generic import TemplateView, ListView
7+
from django.views.generic.edit import UpdateView
8+
from django.urls import reverse_lazy
9+
from .models import Movie
10+
11+
def testview(request):
12+
return HttpResponse("Hello World")
13+
14+
15+
class TestClassView(ListView):
16+
model = Movie
17+
template_name = 'movie_list.html'

‎userdashboard/__init__.py

Whitespace-only changes.

‎userdashboard/admin.py

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.contrib import admin
2+
3+
# Register your models here.

‎userdashboard/apps.py

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.apps import AppConfig
2+
3+
4+
class UserdashboardConfig(AppConfig):
5+
default_auto_field = 'django.db.models.BigAutoField'
6+
name = 'userdashboard'

‎userdashboard/migrations/__init__.py

Whitespace-only changes.

‎userdashboard/models.py

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.db import models
2+
3+
# Create your models here.

‎userdashboard/tests.py

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.test import TestCase
2+
3+
# Create your tests here.

‎userdashboard/views.py

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.shortcuts import render
2+
3+
# Create your views here.

0 commit comments

Comments
 (0)
Please sign in to comment.