diff --git a/content/migrations/0001_initial.py b/content/migrations/0001_initial.py
index 2ba9dba..ff3ec93 100644
--- a/content/migrations/0001_initial.py
+++ b/content/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 2.0.1 on 2018-01-24 10:29
+# Generated by Django 2.0.1 on 2018-02-28 12:53
from django.db import migrations, models
import django.db.models.deletion
@@ -17,7 +17,9 @@ class Migration(migrations.Migration):
name='Category',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('Nom de la catégorie', models.CharField(max_length=255)),
+ ('name', models.CharField(max_length=255, verbose_name='Nom de la catégorie')),
+ ('description', models.TextField(default='', verbose_name='Descriton de la catégorie')),
+ ('image', models.ImageField(null=True, upload_to='', verbose_name='Illustration de la catégorie')),
],
),
migrations.CreateModel(
diff --git a/content/migrations/0002_auto_20180124_1043.py b/content/migrations/0002_auto_20180124_1043.py
deleted file mode 100644
index 2f2e85c..0000000
--- a/content/migrations/0002_auto_20180124_1043.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# Generated by Django 2.0.1 on 2018-01-24 10:43
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('content', '0001_initial'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='category',
- name='Nom de la catégorie',
- ),
- migrations.AddField(
- model_name='category',
- name='name',
- field=models.CharField(default='Nom de la catégorie', max_length=255, verbose_name='Nom de la catégorie'),
- preserve_default=False,
- ),
- ]
diff --git a/content/models.py b/content/models.py
index cc9d32c..2fefee0 100644
--- a/content/models.py
+++ b/content/models.py
@@ -1,6 +1,7 @@
from django.db import models
from django.urls import reverse
from django.contrib.auth.models import Group
+from django.conf import settings
class Category(models.Model):
@@ -9,6 +10,14 @@ class Category(models.Model):
max_length=255,
verbose_name="Nom de la catégorie"
)
+ description = models.TextField(
+ verbose_name="Descriton de la catégorie",
+ default=""
+ )
+ image = models.ImageField(
+ verbose_name="Illustration de la catégorie",
+ null=True,
+ )
def get_absolute_url(self):
return reverse('content:category-list', kwargs={'pk':self.pk})
diff --git a/content/templates/content/content_list.html b/content/templates/content/content_list.html
index cb7827f..8c741b0 100644
--- a/content/templates/content/content_list.html
+++ b/content/templates/content/content_list.html
@@ -1,17 +1,42 @@
{% extends "base.html" %}
-{% block content %}
-
-{% if category %}
-
{{category.name}}
-{% else %}
-Liste des contenus
-{% endif %}
-
-{% for content in contents %}
-
-{% endfor %}
+{% load staticfiles %}
+{% block style %}
+.page-title
+{
+background-image : url("{{category.image.url}}");
+background-attachment : fixed;
+background-position: center;
+}
+.title-block
+{
+background-color: rgba(248, 249, 250, 0.6);
+}
+{% endblock %}
+{% block content %}
+
+
+
+
{{category.name}}
+
{{category.description}}
+
Aller voir !
+
+
+
+
+ {% for content in contents %}
+
+
+
{{content.name}}
+
Contenu proposé par {{content.group_owner.name}}
+
+
+
+ {% endfor %}
+
{% endblock %}
diff --git a/content/views.py b/content/views.py
index 0265ecc..56ea358 100644
--- a/content/views.py
+++ b/content/views.py
@@ -28,6 +28,12 @@ class CreateCategory(generic.CreateView):
"""Création de catégorie."""
model = Category
fields = '__all__'
+ template_name = "edit.html"
+
+ def get_context_data(self, **kwargs):
+ context = super(generic.CreateView, self).get_context_data(**kwargs)
+ context['title'] = "Création de catégorie"
+ return context
class DeleteCategory(generic.DeleteView):
@@ -42,3 +48,9 @@ class EditCategory(generic.UpdateView):
model = Category
fields = '__all__'
template_name = "edit.html"
+ def get_context_data(self, **kwargs):
+ context = super(generic.UpdateView, self).get_context_data(**kwargs)
+ context['title'] = "Édition de " + self.object.name
+ return context
+
+
diff --git a/requirements.txt b/requirements.txt
index 36538ac..8387531 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1,5 @@
Django==2.0.1
+django-bootstrap4==0.0.6
+Pillow==5.0.0
pycrypto==2.6.1
pytz==2017.3
diff --git a/settings/migrations/0001_initial.py b/settings/migrations/0001_initial.py
index 7d98541..d805f92 100644
--- a/settings/migrations/0001_initial.py
+++ b/settings/migrations/0001_initial.py
@@ -1,7 +1,7 @@
-# Generated by Django 2.0.1 on 2018-01-14 18:04
+# Generated by Django 2.0.1 on 2018-02-28 12:53
from django.db import migrations, models
-import settings.models
+import settings.aes_field
class Migration(migrations.Migration):
@@ -16,17 +16,17 @@ class Migration(migrations.Migration):
name='ContentSettings',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('URL du FTP', models.URLField(max_length=255)),
- ('Identifiant sur le FTP', models.CharField(max_length=255)),
- ('Mot de passe', settings.models.AESEncryptedField(max_length=255)),
+ ('ftp_url', models.URLField(default='', max_length=255, verbose_name='URL du FTP')),
+ ('ftp_id', models.CharField(default='', max_length=255, verbose_name='Identifiant sur le FTP')),
+ ('ftp_pass', settings.aes_field.AESEncryptedField(default='', max_length=255, verbose_name='Mot de passe')),
],
),
migrations.CreateModel(
name='SiteSettings',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('allow_upload', models.BooleanField(help_text="Autoriser l'upload de vidéos.")),
- ('site_name', models.CharField(help_text='Nom du site', max_length=255)),
+ ('allow_upload', models.BooleanField(default=False, verbose_name="Autoriser l'upload de vidéos.")),
+ ('home_message', models.TextField(default='', verbose_name="Message de la page d'accueil")),
],
),
]
diff --git a/settings/migrations/0002_auto_20180114_1832.py b/settings/migrations/0002_auto_20180114_1832.py
deleted file mode 100644
index abab904..0000000
--- a/settings/migrations/0002_auto_20180114_1832.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# Generated by Django 2.0.1 on 2018-01-14 18:32
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('settings', '0001_initial'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='sitesettings',
- name='allow_upload',
- ),
- migrations.RemoveField(
- model_name='sitesettings',
- name='site_name',
- ),
- migrations.AddField(
- model_name='sitesettings',
- name="Autoriser l'upload de vidéos.",
- field=models.BooleanField(default=False),
- ),
- migrations.AddField(
- model_name='sitesettings',
- name="Message de la page d'accueil",
- field=models.TextField(default=''),
- ),
- ]
diff --git a/settings/migrations/0003_auto_20180114_1837.py b/settings/migrations/0003_auto_20180114_1837.py
deleted file mode 100644
index 27d6385..0000000
--- a/settings/migrations/0003_auto_20180114_1837.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# Generated by Django 2.0.1 on 2018-01-14 18:37
-
-from django.db import migrations, models
-import settings.models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('settings', '0002_auto_20180114_1832'),
- ]
-
- operations = [
- migrations.RemoveField(
- model_name='contentsettings',
- name='Identifiant sur le FTP',
- ),
- migrations.RemoveField(
- model_name='contentsettings',
- name='Mot de passe',
- ),
- migrations.RemoveField(
- model_name='contentsettings',
- name='URL du FTP',
- ),
- migrations.RemoveField(
- model_name='sitesettings',
- name="Autoriser l'upload de vidéos.",
- ),
- migrations.RemoveField(
- model_name='sitesettings',
- name="Message de la page d'accueil",
- ),
- migrations.AddField(
- model_name='contentsettings',
- name='ftp_id',
- field=models.CharField(default='', max_length=255, verbose_name='Identifiant sur le FTP'),
- ),
- migrations.AddField(
- model_name='contentsettings',
- name='ftp_pass',
- field=settings.models.AESEncryptedField(default='', max_length=255, verbose_name='Mot de passe'),
- ),
- migrations.AddField(
- model_name='contentsettings',
- name='ftp_url',
- field=models.URLField(default='', max_length=255, verbose_name='URL du FTP'),
- ),
- migrations.AddField(
- model_name='sitesettings',
- name='allow_upload',
- field=models.BooleanField(default=False, verbose_name="Autoriser l'upload de vidéos."),
- ),
- migrations.AddField(
- model_name='sitesettings',
- name='home_message',
- field=models.TextField(default='', verbose_name="Message de la page d'accueil"),
- ),
- ]
diff --git a/settings/models.py b/settings/models.py
index 18082ca..0ab68cf 100644
--- a/settings/models.py
+++ b/settings/models.py
@@ -4,6 +4,7 @@ from .aes_field import AESEncryptedField
class ContentSettings(models.Model):
+ PRETTY_NAME = "Réglages des contenus"
ftp_url = models.URLField(
max_length=255,
verbose_name="URL du FTP",
@@ -22,6 +23,7 @@ class ContentSettings(models.Model):
class SiteSettings(models.Model):
+ PRETTY_NAME = "Réglages du site"
allow_upload = models.BooleanField(
verbose_name="Autoriser l'upload de vidéos.",
default=False,
diff --git a/settings/views.py b/settings/views.py
index 188d46d..a841f4a 100644
--- a/settings/views.py
+++ b/settings/views.py
@@ -26,3 +26,10 @@ class EditSiteSettingsView(UpdateView):
def get_object(self, queryset=None):
obj,_ = self.model.objects.get_or_create()
return obj
+
+ def get_context_data(self, **kwargs):
+ context = super(UpdateView, self).get_context_data(**kwargs)
+ context['title'] = "Édition des " + self.object.PRETTY_NAME
+ return context
+
+
diff --git a/site_tps/settings.py b/site_tps/settings.py
index aa6dbfe..970eee0 100644
--- a/site_tps/settings.py
+++ b/site_tps/settings.py
@@ -39,9 +39,9 @@ INSTALLED_APPS = [
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
+ 'bootstrap4',
'settings',
'content',
- 'vote',
'users',
]
@@ -124,3 +124,6 @@ USE_TZ = True
# https://docs.djangoproject.com/en/2.0/howto/static-files/
STATIC_URL = '/static/'
+STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
+MEDIA_URL = '/media/'
+MEDIA_ROOT = os.path.join(BASE_DIR, 'static', 'media')
diff --git a/site_tps/urls.py b/site_tps/urls.py
index 2c80d35..ef684f3 100644
--- a/site_tps/urls.py
+++ b/site_tps/urls.py
@@ -15,6 +15,8 @@ Including another URLconf
"""
from django.contrib import admin
from django.urls import include, path
+from django.conf import settings
+from django.conf.urls.static import static
from . import views
@@ -23,6 +25,7 @@ urlpatterns = [
path('', views.home, name="home"),
path('content/', include('content.urls')),
path('settings/', include('settings.urls')),
- path('vote/', include('vote.urls')),
path('users/', include('users.urls')),
]
+if settings.DEBUG:
+ urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
diff --git a/templates/base.html b/templates/base.html
index 25f9b95..e897fa2 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -6,6 +6,9 @@
+
{% include 'nav_bar.html' %}
diff --git a/templates/edit.html b/templates/edit.html
index 106fa6a..beb96c7 100644
--- a/templates/edit.html
+++ b/templates/edit.html
@@ -1,13 +1,12 @@
{% extends 'base.html' %}
-{% load bootstrap3 %}
+{% load bootstrap4 %}
{% block content %}
{% if title %}
{{title}}
{% endif %}
-