From c52c3e1924286b81c1c0fdd65fb74103af660a5c Mon Sep 17 00:00:00 2001 From: Mark Veidemanis Date: Thu, 21 Jul 2022 13:50:25 +0100 Subject: [PATCH] Start implementing basic CMS functionality for main page --- core/admin.py | 3 +- core/migrations/0003_contentblock.py | 26 ++++++++ core/migrations/0004_contentblock_title.py | 18 +++++ ...ock_image1_contentblock_image2_and_more.py | 38 +++++++++++ core/models.py | 25 +++++++ core/static/bitcoin-sentiment.png | Bin 0 -> 25199 bytes core/static/chart-bitcoin.png | Bin 0 -> 29964 bytes core/templates/index.html | 62 +++++++++++++++--- core/views/__init__.py | 8 ++- 9 files changed, 169 insertions(+), 11 deletions(-) create mode 100644 core/migrations/0003_contentblock.py create mode 100644 core/migrations/0004_contentblock_title.py create mode 100644 core/migrations/0005_contentblock_image1_contentblock_image2_and_more.py create mode 100644 core/static/bitcoin-sentiment.png create mode 100644 core/static/chart-bitcoin.png diff --git a/core/admin.py b/core/admin.py index 0fdd381..9c1c987 100644 --- a/core/admin.py +++ b/core/admin.py @@ -2,7 +2,7 @@ from django.contrib import admin from django.contrib.auth.admin import UserAdmin from .forms import CustomUserCreationForm -from .models import Plan, Session, User +from .models import ContentBlock, Plan, Session, User # Register your models here. @@ -31,3 +31,4 @@ class CustomUserAdmin(UserAdmin): admin.site.register(User, CustomUserAdmin) admin.site.register(Plan) admin.site.register(Session) +admin.site.register(ContentBlock) diff --git a/core/migrations/0003_contentblock.py b/core/migrations/0003_contentblock.py new file mode 100644 index 0000000..c30ec38 --- /dev/null +++ b/core/migrations/0003_contentblock.py @@ -0,0 +1,26 @@ +# Generated by Django 4.0.6 on 2022-07-13 13:55 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0002_session_session'), + ] + + operations = [ + migrations.CreateModel( + name='ContentBlock', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('position', models.IntegerField()), + ('column1', models.TextField()), + ('column2', models.TextField(blank=True, null=True)), + ('column3', models.TextField(blank=True, null=True)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/core/migrations/0004_contentblock_title.py b/core/migrations/0004_contentblock_title.py new file mode 100644 index 0000000..783914e --- /dev/null +++ b/core/migrations/0004_contentblock_title.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.6 on 2022-07-13 14:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0003_contentblock'), + ] + + operations = [ + migrations.AddField( + model_name='contentblock', + name='title', + field=models.TextField(blank=True, null=True), + ), + ] diff --git a/core/migrations/0005_contentblock_image1_contentblock_image2_and_more.py b/core/migrations/0005_contentblock_image1_contentblock_image2_and_more.py new file mode 100644 index 0000000..ca305ae --- /dev/null +++ b/core/migrations/0005_contentblock_image1_contentblock_image2_and_more.py @@ -0,0 +1,38 @@ +# Generated by Django 4.0.6 on 2022-07-13 14:26 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0004_contentblock_title'), + ] + + operations = [ + migrations.AddField( + model_name='contentblock', + name='image1', + field=models.CharField(blank=True, max_length=255, null=True), + ), + migrations.AddField( + model_name='contentblock', + name='image2', + field=models.CharField(blank=True, max_length=255, null=True), + ), + migrations.AddField( + model_name='contentblock', + name='image3', + field=models.CharField(blank=True, max_length=255, null=True), + ), + migrations.AlterField( + model_name='contentblock', + name='column1', + field=models.TextField(blank=True, null=True), + ), + migrations.AlterField( + model_name='contentblock', + name='title', + field=models.CharField(blank=True, max_length=255, null=True), + ), + ] diff --git a/core/models.py b/core/models.py index 99a51a8..1d4ad20 100644 --- a/core/models.py +++ b/core/models.py @@ -67,3 +67,28 @@ class Session(models.Model): session = models.CharField(max_length=255, null=True, blank=True) subscription_id = models.CharField(max_length=255, null=True, blank=True) plan = models.ForeignKey(Plan, null=True, blank=True, on_delete=models.CASCADE) + + +class ContentBlock(models.Model): + user = models.ForeignKey(User, on_delete=models.PROTECT) + position = models.IntegerField() + title = models.CharField(max_length=255, null=True, blank=True) + column1 = models.TextField(null=True, blank=True) + column2 = models.TextField(null=True, blank=True) + column3 = models.TextField(null=True, blank=True) + image1 = models.CharField(max_length=255, null=True, blank=True) + image2 = models.CharField(max_length=255, null=True, blank=True) + image3 = models.CharField(max_length=255, null=True, blank=True) + + def save(self, *args, **kwargs): + """ + Override the save function to blank fields. + """ + if self.column1 == "NONE": + self.column1 = None + if self.column2 == "NONE": + self.column2 = None + if self.column3 == "NONE": + self.column3 = None + + super().save(*args, **kwargs) diff --git a/core/static/bitcoin-sentiment.png b/core/static/bitcoin-sentiment.png new file mode 100644 index 0000000000000000000000000000000000000000..4081445ae55c91a84609c7cb10f6ffa2a68e74a9 GIT binary patch literal 25199 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 ofl^0#(FYX&&R?IWL59wOB?(C5BA^jD*ylh literal 0 HcmV?d00001 diff --git a/core/static/chart-bitcoin.png b/core/static/chart-bitcoin.png new file mode 100644 index 0000000000000000000000000000000000000000..7d42b277ea3f434e64f587eecc0fbebbf66e46c2 GIT binary patch literal 29964 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 x3Ii!Nh2ffrJe -

Pathogen Data Insights

-
-

Welcome to the Neptune system

-
-

Hello!

+
+ {% for block in blocks %} + {% if block.title is not None %} +

{{ block.title }}

+ {% endif %} +
+ {% if block.column1 is not None %} +
+
+ {{ block.column1 }} +
+
+ {% endif %} + {% if block.column2 is not None %} +
+
+ {{ block.column2 }} +
+
+ {% endif %} + {% if block.column3 is not None %} +
+
+ {{ block.column3 }} +
+
+ {% endif %}
-
-
+
+ {% if block.image1 is not None %} +
+
+ +
+
+ {% endif %} + {% if block.image2 is not None %} +
+
+ {{ block.image2 }} +
+
+ {% endif %} + {% if block.image3 is not None %} +
+
+ {{ block.image3 }} +
+
+ {% endif %} +
+ {% endfor %} +
{% endblock %} diff --git a/core/views/__init__.py b/core/views/__init__.py index 85b592b..5391f57 100644 --- a/core/views/__init__.py +++ b/core/views/__init__.py @@ -11,7 +11,7 @@ from django.views.generic.edit import CreateView from core.forms import NewUserForm from core.lib.products import assemble_plan_map -from core.models import Plan, Session +from core.models import ContentBlock, Plan, Session pp = pprint.PrettyPrinter(indent=4) @@ -22,7 +22,11 @@ class Home(View): template_name = "index.html" def get(self, request): - return render(request, self.template_name) + blocks = ContentBlock.objects.all().order_by("position") + print("BLOCKS", blocks) + print("ITER", [x.position for x in blocks]) + context = {"blocks": blocks} + return render(request, self.template_name, context) class Billing(LoginRequiredMixin, View):