From c85836363795cb2b4e8681449d58179e4f0992a1 Mon Sep 17 00:00:00 2001 From: Florent Chehab <florent.chehab@etu.utc.fr> Date: Wed, 25 Apr 2018 11:36:08 +0200 Subject: [PATCH] Campus Models added --- rex/admin.py | 6 +++-- rex/migrations/0004_maincampus.py | 32 ++++++++++++++++++++++ rex/migrations/0005_auto_20180425_1131.py | 18 +++++++++++++ rex/migrations/0006_maincampus_name.py | 18 +++++++++++++ rex/models/__init__.py | 1 + rex/models/module/__init__.py | 1 + rex/models/module/module.py | 20 ++++++++++++++ rex/models/university/__init__.py | 1 + rex/models/university/campus.py | 33 +++++++++++++++++++++++ 9 files changed, 128 insertions(+), 2 deletions(-) create mode 100644 rex/migrations/0004_maincampus.py create mode 100644 rex/migrations/0005_auto_20180425_1131.py create mode 100644 rex/migrations/0006_maincampus_name.py create mode 100644 rex/models/module/__init__.py create mode 100644 rex/models/module/module.py create mode 100644 rex/models/university/campus.py diff --git a/rex/admin.py b/rex/admin.py index e6670247..9dc87fa4 100644 --- a/rex/admin.py +++ b/rex/admin.py @@ -1,11 +1,13 @@ from django.contrib import admin from reversion_compare.admin import CompareVersionAdmin -from rex.models.university import University +from rex.models.university import University, MainCampus from rex.models.localization import Country, Region, City -admin.site.register(University, CompareVersionAdmin) admin.site.register(Country) admin.site.register(Region) admin.site.register(City) + +admin.site.register(University, CompareVersionAdmin) +admin.site.register(MainCampus) diff --git a/rex/migrations/0004_maincampus.py b/rex/migrations/0004_maincampus.py new file mode 100644 index 00000000..3a9a4d7d --- /dev/null +++ b/rex/migrations/0004_maincampus.py @@ -0,0 +1,32 @@ +# Generated by Django 2.0.3 on 2018-04-25 09:22 + +from django.conf import settings +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('rex', '0003_city'), + ] + + operations = [ + migrations.CreateModel( + name='MainCampus', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('modified_date', models.DateTimeField(auto_now=True)), + ('comment', models.TextField(null=True)), + ('lat', models.DecimalField(decimal_places=6, max_digits=10, validators=[django.core.validators.MinValueValidator(-85.05112878), django.core.validators.MaxValueValidator(85.05112878)])), + ('lon', models.DecimalField(decimal_places=6, max_digits=10, validators=[django.core.validators.MinValueValidator(-180), django.core.validators.MaxValueValidator(180)])), + ('city', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='rex.City')), + ('modified_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/rex/migrations/0005_auto_20180425_1131.py b/rex/migrations/0005_auto_20180425_1131.py new file mode 100644 index 00000000..3309246d --- /dev/null +++ b/rex/migrations/0005_auto_20180425_1131.py @@ -0,0 +1,18 @@ +# Generated by Django 2.0.3 on 2018-04-25 09:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rex', '0004_maincampus'), + ] + + operations = [ + migrations.AlterField( + model_name='maincampus', + name='comment', + field=models.TextField(blank=True, null=True), + ), + ] diff --git a/rex/migrations/0006_maincampus_name.py b/rex/migrations/0006_maincampus_name.py new file mode 100644 index 00000000..b689b955 --- /dev/null +++ b/rex/migrations/0006_maincampus_name.py @@ -0,0 +1,18 @@ +# Generated by Django 2.0.3 on 2018-04-25 09:33 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rex', '0005_auto_20180425_1131'), + ] + + operations = [ + migrations.AddField( + model_name='maincampus', + name='name', + field=models.CharField(max_length=200, null=True), + ), + ] diff --git a/rex/models/__init__.py b/rex/models/__init__.py index 48458e0c..29d77d8d 100644 --- a/rex/models/__init__.py +++ b/rex/models/__init__.py @@ -1,2 +1,3 @@ from .localization import localization # noqa: F401 from .university import university # noqa: F401 +from .module import module # noqa: F401 diff --git a/rex/models/module/__init__.py b/rex/models/module/__init__.py new file mode 100644 index 00000000..3b0b8597 --- /dev/null +++ b/rex/models/module/__init__.py @@ -0,0 +1 @@ +from .module import Module # noqa: F401 diff --git a/rex/models/module/module.py b/rex/models/module/module.py new file mode 100644 index 00000000..d60c9d81 --- /dev/null +++ b/rex/models/module/module.py @@ -0,0 +1,20 @@ +from django.db import models +from rest_framework import serializers, viewsets, permissions +from django.contrib.auth.models import User + + +class Module(models.Model): + modified_date = models.DateTimeField(auto_now=True) + modified_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) + + module_icon = "You forget to override the icon in the sub-class" + module_name = "You forget to override the name in the sub-class" + module_description = "You forget to override the description in the sub-class" + + class Meta: + abstract = True + + +""" +API RELATED STUFF BELLOW +""" diff --git a/rex/models/university/__init__.py b/rex/models/university/__init__.py index b2d3412e..7a80bf60 100644 --- a/rex/models/university/__init__.py +++ b/rex/models/university/__init__.py @@ -1 +1,2 @@ from .university import University # noqa: F401 +from .campus import MainCampus # noqa: F401 diff --git a/rex/models/university/campus.py b/rex/models/university/campus.py new file mode 100644 index 00000000..5164c1d3 --- /dev/null +++ b/rex/models/university/campus.py @@ -0,0 +1,33 @@ +from django.db import models +from rex.models.module import Module +from rex.models.localization import City +from django.core.validators import MinValueValidator, MaxValueValidator + + +class Campus(Module): + name = models.CharField(max_length=200, null=True) + comment = models.TextField(null=True, blank=True) + city = models.ForeignKey(City, on_delete=models.PROTECT, null=False) + + lat = models.DecimalField( + max_digits=10, + decimal_places=6, + validators=[MinValueValidator(-85.05112878), + MaxValueValidator(85.05112878)] + ) + + lon = models.DecimalField( + max_digits=10, + decimal_places=6, + validators=[MinValueValidator(-180), + MaxValueValidator(180)] + ) + + class Meta: + abstract = True + + +class MainCampus(Campus): + module_icon = "You forget to override the icon in the sub-class : I know" + module_name = "Campus principal" + module_description = "Campus principal de l'université." -- GitLab