An actual minimum viable product, maybe? #11
|
@ -24,9 +24,6 @@ urlpatterns = [
|
|||
# / routes to index.html
|
||||
path('', views.index, name='homepage'),
|
||||
|
||||
# /?search_query=xxx routes to the homepage, with displaying some basic results.
|
||||
path('<str:search_query', views.index, name='homepage'),
|
||||
|
||||
# /universities routes to a list of universities.
|
||||
path('universities', views.universities, name='universities_list'),
|
||||
|
||||
|
|
Binary file not shown.
|
@ -1,4 +1,4 @@
|
|||
# Generated by Django 2.1.1 on 2018-09-27 09:48
|
||||
# Generated by Django 2.1.1 on 2018-10-02 13:24
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
@ -17,6 +17,8 @@ class Migration(migrations.Migration):
|
|||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=256)),
|
||||
('created_date', models.DateTimeField(auto_now_add=True)),
|
||||
('entity_type', models.SmallIntegerField(choices=[(0, 'University'), (1, 'Course'), (2, 'Professor')])),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
|
@ -46,10 +48,18 @@ class Migration(migrations.Migration):
|
|||
('username', models.CharField(max_length=200)),
|
||||
('rating', models.IntegerField(default=1)),
|
||||
('title', models.CharField(max_length=200)),
|
||||
('date_published', models.DateField(verbose_name='date published')),
|
||||
('date_published', models.DateTimeField(auto_now_add=True)),
|
||||
('content', models.CharField(max_length=200)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='User',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=64)),
|
||||
('birth_date', models.DateField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Course',
|
||||
fields=[
|
||||
|
@ -68,9 +78,16 @@ class Migration(migrations.Migration):
|
|||
name='University',
|
||||
fields=[
|
||||
('rateableentity_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='postings.RateableEntity')),
|
||||
('website_url', models.URLField()),
|
||||
('location', models.CharField(max_length=256)),
|
||||
],
|
||||
bases=('postings.rateableentity',),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='review',
|
||||
name='author',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='postings.User'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='review',
|
||||
name='rateable_entity',
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
# Generated by Django 2.1.1 on 2018-09-27 11:15
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('postings', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='universityreview',
|
||||
name='date_published',
|
||||
field=models.DateTimeField(auto_now_add=True),
|
||||
),
|
||||
]
|
|
@ -1,9 +1,30 @@
|
|||
from django.db import models
|
||||
|
||||
# Represents an authenticated reviewer or reader of reviews.
|
||||
class User(models.Model):
|
||||
# A non-unique name for the user.
|
||||
name = models.CharField(max_length=64)
|
||||
# The user's birth date.
|
||||
birth_date = models.DateField()
|
||||
|
||||
# Represents any object for which reviews can be made. (Universities, Professors, etc.)
|
||||
class RateableEntity(models.Model):
|
||||
# Constants defined for types of rateable entities.
|
||||
UNIVERSITY = 0
|
||||
COURSE = 1
|
||||
PROFESSOR = 2
|
||||
TYPE_CHOICES = (
|
||||
(UNIVERSITY, 'University'),
|
||||
(COURSE, 'Course'),
|
||||
(PROFESSOR, 'Professor')
|
||||
)
|
||||
|
||||
# The human-readable name of this entity.
|
||||
name = models.CharField(max_length=256)
|
||||
# The date and time at which this entity was created.
|
||||
created_date = models.DateTimeField(auto_now_add=True)
|
||||
# The type of entity this is.
|
||||
entity_type = models.SmallIntegerField(choices=TYPE_CHOICES)
|
||||
|
||||
# A review represents any single data entry to the database.
|
||||
class Review(models.Model):
|
||||
|
@ -19,6 +40,8 @@ class Review(models.Model):
|
|||
created_date = models.DateTimeField(auto_now_add=True)
|
||||
# The date and time at which the last modification to this review was published.
|
||||
last_updated_date = models.DateTimeField(auto_now=True)
|
||||
# A reference to the person who created this review.
|
||||
author = models.ForeignKey('postings.User', on_delete=models.PROTECT)
|
||||
|
||||
# A vote for a review as either positive or negative.
|
||||
class ReviewHelpfulVote(models.Model):
|
||||
|
@ -30,7 +53,10 @@ class ReviewHelpfulVote(models.Model):
|
|||
|
||||
# A RateableEntity for universities.
|
||||
class University(RateableEntity):
|
||||
pass
|
||||
# A string referring to the URL of the university. Every single university should have one.
|
||||
website_url = models.URLField()
|
||||
# A string referring to the location of the university.
|
||||
location = models.CharField(max_length=256)
|
||||
|
||||
# A RateableEntity for professors, who belong to one or more university.
|
||||
class Professor(RateableEntity):
|
||||
|
|
Loading…
Reference in New Issue