Skip to content

Commit 7dd911e

Browse files
feat: subscribers and biography models
1 parent 265bf9a commit 7dd911e

File tree

10 files changed

+129
-4
lines changed

10 files changed

+129
-4
lines changed

.pylintrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
load-plugins=pylint_django

api/serializers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from rest_framework import serializers
2-
from frontend.models import Subscribers
2+
from frontend.models.subscribers import Subscribers
33

44
class SubscribersSerializer(serializers.ModelSerializer):
55
class Meta:

api/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from frontend.models import Subscribers
1+
from frontend.models.subscribers import Subscribers
22
from .serializers import SubscribersSerializer
33
from rest_framework import generics
44

frontend/admin.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
from django.contrib import admin
2+
from .models.subscribers import Subscribers
3+
from .models.biography import Biography
4+
from .models.carrousel import Carrousel
25

3-
# Register your models here.
6+
admin.site.register(Subscribers)
7+
admin.site.register(Biography)
8+
admin.site.register(Carrousel)
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Generated by Django 3.0.7 on 2020-06-04 02:58
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('frontend', '0001_initial'),
10+
]
11+
12+
operations = [
13+
migrations.CreateModel(
14+
name='Biography',
15+
fields=[
16+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
17+
('button_label', models.CharField(max_length=120, verbose_name="Button's label")),
18+
('button_url', models.CharField(max_length=120, verbose_name="Button's link")),
19+
('title', models.CharField(max_length=120, verbose_name='Title')),
20+
('description', models.TextField(max_length=3000, verbose_name='Description')),
21+
('created_at', models.DateTimeField(auto_now_add=True)),
22+
('subtitle', models.CharField(max_length=120, verbose_name='Subtitle')),
23+
('body', models.CharField(max_length=30000, verbose_name='Body')),
24+
],
25+
options={
26+
'verbose_name': 'Biography',
27+
},
28+
),
29+
migrations.CreateModel(
30+
name='Carrousel',
31+
fields=[
32+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
33+
('button_label', models.CharField(max_length=120, verbose_name="Button's label")),
34+
('button_url', models.CharField(max_length=120, verbose_name="Button's link")),
35+
('title', models.CharField(max_length=120, verbose_name='Title')),
36+
('description', models.TextField(max_length=3000, verbose_name='Description')),
37+
('created_at', models.DateTimeField(auto_now_add=True)),
38+
('position', models.CharField(choices=[('TOP_CENTER', 'At the top center'), ('TOP_LEFT', 'At the top left'), ('TOP_RIGHT', 'At the top right'), ('BOTTOM_CENTER', 'At the bottom center'), ('BOTTOM_LEFT', 'At the bottom left'), ('BOTTOM_RIGHT', 'At the bottom right'), ('CENTER', 'Centered'), ('CENTER_LEFT', 'Centered left'), ('CENTER_RIGHT', 'Centered right')], default='CENTER', max_length=13, verbose_name='Text position')),
39+
('image', models.ImageField(blank=True, null=True, upload_to='img', verbose_name='Image')),
40+
],
41+
options={
42+
'verbose_name': 'Carrousel item',
43+
},
44+
),
45+
]

frontend/models/__init__.py

Whitespace-only changes.

frontend/models/base.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from django.db import models
2+
3+
4+
class ButtonBlock(models.Model):
5+
button_label = models.CharField(
6+
max_length=120, verbose_name="Button's label")
7+
button_url = models.CharField(max_length=120, verbose_name="Button's link")
8+
9+
class Meta:
10+
abstract = True
11+
12+
13+
class TextBlockBase(models.Model):
14+
title = models.CharField(max_length=120, verbose_name='Title')
15+
description = models.TextField(max_length=3000, verbose_name='Description')
16+
created_at = models.DateTimeField(auto_now_add=True)
17+
18+
def __str__(self):
19+
return self.title
20+
21+
class Meta:
22+
abstract = True
23+
24+
25+
class TextBlock(TextBlockBase):
26+
class Meta:
27+
abstract = True
28+
29+
30+
class EnhancedTextBlock(TextBlockBase, ButtonBlock):
31+
subtitle = models.CharField(max_length=120, verbose_name='Subtitle')
32+
body = models.CharField(max_length=30000, verbose_name='Body')
33+
34+
class Meta:
35+
abstract = True

frontend/models/biography.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from django.db import models
2+
from .base import EnhancedTextBlock
3+
4+
class Biography(EnhancedTextBlock):
5+
def __str__(self):
6+
return self.title
7+
8+
class Meta:
9+
verbose_name = 'Biography'

frontend/models/carrousel.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from django.db import models
2+
from .base import TextBlock, ButtonBlock
3+
4+
class Carrousel(TextBlock, ButtonBlock):
5+
class Position(models.TextChoices):
6+
TOP_CENTER = 'TOP_CENTER', 'At the top center'
7+
TOP_LEFT = 'TOP_LEFT', 'At the top left'
8+
TOP_RIGHT = 'TOP_RIGHT', 'At the top right'
9+
BOTTOM_CENTER = 'BOTTOM_CENTER', 'At the bottom center'
10+
BOTTOM_LEFT = 'BOTTOM_LEFT', 'At the bottom left'
11+
BOTTOM_RIGHT = 'BOTTOM_RIGHT', 'At the bottom right'
12+
CENTER = 'CENTER', 'Centered'
13+
CENTER_LEFT = 'CENTER_LEFT', 'Centered left'
14+
CENTER_RIGHT = 'CENTER_RIGHT', 'Centered right'
15+
16+
position = models.CharField(
17+
max_length=13,
18+
choices=Position.choices,
19+
default=Position.CENTER,
20+
verbose_name='Text position'
21+
)
22+
image = models.ImageField(
23+
upload_to='img', null=True, blank=True, verbose_name='Image')
24+
25+
def __str__(self):
26+
return self.title
27+
28+
class Meta:
29+
verbose_name = 'Carrousel item'
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from django.db import models
22

3+
34
class Subscribers(models.Model):
45
name = models.CharField(max_length=100)
56
email = models.EmailField()
67
wpp = models.CharField(max_length=300)
78
neighborhood = models.CharField(max_length=300)
8-
created_at = models.DateTimeField(auto_now_add=True)
9+
created_at = models.DateTimeField(auto_now_add=True)

0 commit comments

Comments
 (0)