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