From 82cb19390436c00fa46f13cf2b7a469f9c2587c1 Mon Sep 17 00:00:00 2001 From: jasisz Date: Sat, 12 Dec 2015 14:49:35 +0100 Subject: [PATCH] Just a start for the conference app --- requirements/base.txt | 1 + summit/conference/__init__.py | 0 summit/conference/admin.py | 6 +++ summit/conference/migrations/0001_initial.py | 53 ++++++++++++++++++++ summit/conference/migrations/__init__.py | 0 summit/conference/models.py | 43 ++++++++++++++++ summit/conference/tests.py | 3 ++ summit/conference/views.py | 3 ++ summit/summit/settings/base.py | 1 + 9 files changed, 110 insertions(+) create mode 100644 summit/conference/__init__.py create mode 100644 summit/conference/admin.py create mode 100644 summit/conference/migrations/0001_initial.py create mode 100644 summit/conference/migrations/__init__.py create mode 100644 summit/conference/models.py create mode 100644 summit/conference/tests.py create mode 100644 summit/conference/views.py diff --git a/requirements/base.txt b/requirements/base.txt index 80280c7..8ca63c1 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,2 +1,3 @@ Django==1.8.7 django-compressor==1.6 +Pillow==3.0.0 diff --git a/summit/conference/__init__.py b/summit/conference/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/summit/conference/admin.py b/summit/conference/admin.py new file mode 100644 index 0000000..1439241 --- /dev/null +++ b/summit/conference/admin.py @@ -0,0 +1,6 @@ +from django.contrib import admin +from . import models + +admin.site.register(models.Talk) +admin.site.register(models.SponsorshipOption) +admin.site.register(models.Sponsor) diff --git a/summit/conference/migrations/0001_initial.py b/summit/conference/migrations/0001_initial.py new file mode 100644 index 0000000..c9dd1e6 --- /dev/null +++ b/summit/conference/migrations/0001_initial.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models +from django.conf import settings + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Sponsor', + fields=[ + ('id', models.AutoField(serialize=False, primary_key=True, verbose_name='ID', auto_created=True)), + ('contact', models.EmailField(null=True, max_length=254, blank=True)), + ('link', models.URLField(null=True, blank=True)), + ('image', models.ImageField(upload_to='')), + ('description', models.TextField(blank=True)), + ], + ), + migrations.CreateModel( + name='SponsorshipOption', + fields=[ + ('id', models.AutoField(serialize=False, primary_key=True, verbose_name='ID', auto_created=True)), + ('name', models.CharField(max_length=60)), + ('on_site', models.BooleanField(default=True)), + ('order', models.IntegerField()), + ], + ), + migrations.CreateModel( + name='Talk', + fields=[ + ('id', models.AutoField(serialize=False, primary_key=True, verbose_name='ID', auto_created=True)), + ('status', models.CharField(max_length=15, choices=[('PROP', 'proposed'), ('ACC', 'accepted'), ('CAN', 'cancelled')])), + ('title', models.CharField(max_length=250)), + ('description', models.TextField()), + ('date', models.DateTimeField(null=True, blank=True)), + ('slides_link', models.URLField(null=True, blank=True)), + ('video_link', models.URLField(null=True, blank=True)), + ('featured', models.BooleanField(default=None)), + ('presenter', models.ForeignKey(to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.AddField( + model_name='sponsor', + name='options', + field=models.ManyToManyField(to='conference.SponsorshipOption'), + ), + ] diff --git a/summit/conference/migrations/__init__.py b/summit/conference/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/summit/conference/models.py b/summit/conference/models.py new file mode 100644 index 0000000..9e91276 --- /dev/null +++ b/summit/conference/models.py @@ -0,0 +1,43 @@ +from django.conf import settings +from django.db import models + +# TODO: do we need a Conference model and all those models should be related to the specific Conference? + + +class Talk(models.Model): + + class Status: + proposed = 'PROP' + accepted = 'ACC' + cancelled = 'CAN' + + STATUSES = ( + (Status.proposed, 'proposed'), + (Status.accepted, 'accepted'), + (Status.cancelled, 'cancelled'), + ) + + status = models.CharField(max_length=15, choices=STATUSES) + presenter = models.ForeignKey(settings.AUTH_USER_MODEL) + + title = models.CharField(max_length=250) + description = models.TextField() + date = models.DateTimeField(blank=True, null=True) # only accepted talks appearing in agenda need to have it + slides_link = models.URLField(blank=True, null=True) + video_link = models.URLField(blank=True, null=True) + featured = models.BooleanField(default=None) + + +class SponsorshipOption(models.Model): + name = models.CharField(max_length=60) + on_site = models.BooleanField(default=True) # for special kinds of sponsorhip - after party, etc. + order = models.IntegerField() # order of appearance on site + + +class Sponsor(models.Model): + options = models.ManyToManyField(SponsorshipOption) + + contact = models.EmailField(blank=True, null=True) + link = models.URLField(blank=True, null=True) + image = models.ImageField() + description = models.TextField(blank=True) diff --git a/summit/conference/tests.py b/summit/conference/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/summit/conference/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/summit/conference/views.py b/summit/conference/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/summit/conference/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/summit/summit/settings/base.py b/summit/summit/settings/base.py index 83a00ef..dc1f28b 100644 --- a/summit/summit/settings/base.py +++ b/summit/summit/settings/base.py @@ -42,6 +42,7 @@ def get_env_var(name, **kwargs): 'django.contrib.messages', 'django.contrib.staticfiles', 'compressor', + 'conference', ) MIDDLEWARE_CLASSES = (