diff --git a/OACPL/settings.base.py b/OACPL/settings.base.py index d6a351d..0086f59 100644 --- a/OACPL/settings.base.py +++ b/OACPL/settings.base.py @@ -41,6 +41,7 @@ INSTALLED_APPS = [ 'bootstrap_admin', 'case_law', 'charter_members.apps.CharterMembersConfig', + 'events', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', diff --git a/OACPL/urls.py b/OACPL/urls.py index c46e368..99b70e7 100644 --- a/OACPL/urls.py +++ b/OACPL/urls.py @@ -11,6 +11,7 @@ import main.views import case_law.views import charter_members.views import expert_witnesses.views +import events.views import forum.views import newsletters.views import newsroom.views @@ -39,6 +40,8 @@ urlpatterns = [ url(r'^contact/', main.views.contact, name='contact'), url(r'^experts/(?P\d+)', expert_witnesses.views.viewer, name='expert'), url(r'^experts/', expert_witnesses.views.browser, name='experts'), + url(r'^events/register', events.views.register, name='register'), + url(r'^events/', events.views.view, name='events'), url(r'^forum/post/(?P\d*)', forum.views.viewPost, name='post'), url(r'^forum/(?P\d*)?', forum.views.view, name='forum'), url(r'^login/', main.views.login, name='login'), diff --git a/events/__init__.py b/events/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/events/admin.py b/events/admin.py new file mode 100644 index 0000000..2bbe0d2 --- /dev/null +++ b/events/admin.py @@ -0,0 +1,9 @@ +from django.contrib import admin + +from .models import Event + + +@admin.register(Event) +class EventAdmit(admin.ModelAdmin): + fields = ['title', 'date', 'location', 'max_attendees', 'cost', 'description'] + list_display = ['title', 'date', 'location', 'max_attendees', 'cost'] diff --git a/events/apps.py b/events/apps.py new file mode 100644 index 0000000..3854644 --- /dev/null +++ b/events/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class EventsConfig(AppConfig): + name = 'events' diff --git a/events/migrations/0001_initial.py b/events/migrations/0001_initial.py new file mode 100644 index 0000000..b1245f5 --- /dev/null +++ b/events/migrations/0001_initial.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-02-27 00:36 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion +import tinymce.models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Attendees', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ('paid', models.BooleanField(default=False)), + ], + ), + migrations.CreateModel( + name='Event', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=255)), + ('date', models.DateField()), + ('location', models.CharField(max_length=255)), + ('description', tinymce.models.HTMLField()), + ('max_attendees', models.IntegerField(blank=True, null=True)), + ('cost', models.DecimalField(decimal_places=2, max_digits=6)), + ], + ), + migrations.AddField( + model_name='attendees', + name='event', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='events.Event'), + ), + ] diff --git a/events/migrations/0002_auto_20180226_1938.py b/events/migrations/0002_auto_20180226_1938.py new file mode 100644 index 0000000..f9a8880 --- /dev/null +++ b/events/migrations/0002_auto_20180226_1938.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-02-27 00:38 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('events', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='event', + name='date', + field=models.DateTimeField(), + ), + ] diff --git a/events/migrations/0003_auto_20180226_2000.py b/events/migrations/0003_auto_20180226_2000.py new file mode 100644 index 0000000..66ae88d --- /dev/null +++ b/events/migrations/0003_auto_20180226_2000.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-02-27 01:00 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('events', '0002_auto_20180226_1938'), + ] + + operations = [ + migrations.RemoveField( + model_name='attendees', + name='event', + ), + migrations.AddField( + model_name='event', + name='attendees', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='events.Attendees'), + ), + ] diff --git a/events/migrations/0004_auto_20180226_2001.py b/events/migrations/0004_auto_20180226_2001.py new file mode 100644 index 0000000..2308969 --- /dev/null +++ b/events/migrations/0004_auto_20180226_2001.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-02-27 01:01 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('events', '0003_auto_20180226_2000'), + ] + + operations = [ + migrations.RemoveField( + model_name='event', + name='attendees', + ), + migrations.AddField( + model_name='event', + name='attendees', + field=models.ManyToManyField(to='events.Attendees'), + ), + ] diff --git a/events/migrations/0005_auto_20180226_2039.py b/events/migrations/0005_auto_20180226_2039.py new file mode 100644 index 0000000..4630745 --- /dev/null +++ b/events/migrations/0005_auto_20180226_2039.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-02-27 01:39 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('events', '0004_auto_20180226_2001'), + ] + + operations = [ + migrations.AlterField( + model_name='event', + name='cost', + field=models.DecimalField(decimal_places=2, default=0.0, max_digits=6), + ), + migrations.AlterField( + model_name='event', + name='location', + field=models.CharField(blank=True, max_length=255, null=True), + ), + ] diff --git a/events/migrations/__init__.py b/events/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/events/models.py b/events/models.py new file mode 100644 index 0000000..fe917cf --- /dev/null +++ b/events/models.py @@ -0,0 +1,24 @@ +from django.db import models + +from tinymce import HTMLField + + +class Attendees(models.Model): + name = models.CharField(max_length=255) + paid = models.BooleanField(default=False) + + def __str__(self): + return self.name + + +class Event(models.Model): + title = models.CharField(max_length=255) + date = models.DateTimeField() + location = models.CharField(max_length=255, null=True, blank=True) + description = HTMLField() + max_attendees = models.IntegerField(blank=True, null=True) + cost = models.DecimalField(max_digits=6, decimal_places=2, default=0.00) + attendees = models.ManyToManyField(Attendees) + + def __str__(self): + return self.title diff --git a/events/templates/events.html b/events/templates/events.html new file mode 100644 index 0000000..0615ac5 --- /dev/null +++ b/events/templates/events.html @@ -0,0 +1,82 @@ +{% extends 'base.html' %} +{% load static %} + +{% block head %} + + + + + +{% endblock %} + +{% block body %} +
+
+
+
+
+
+
+ {% for event in events %} + + {% endfor %} +
+
+
+ +
+{% endblock %} diff --git a/events/tests.py b/events/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/events/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/events/views.py b/events/views.py new file mode 100644 index 0000000..41f2f02 --- /dev/null +++ b/events/views.py @@ -0,0 +1,18 @@ +from django.http import JsonResponse +from django.shortcuts import render + +from .models import Attendees, Event + + +def view(request): + events = Event.objects.all() + return render(request, 'events.html', {'events': events}) + + +def register(request): + event = Event.objects.get(id=request.POST.get('id')) + attendee = Attendees(name='{} {}'.format(request.user.first_name, request.user.last_name), paid=False) + attendee.save() + event.attendees.add(attendee) + event.save() + return JsonResponse({'success': True}) diff --git a/media/Newsletter/ubuntu.ico b/media/Newsletter/ubuntu.ico new file mode 100644 index 0000000..73539ee Binary files /dev/null and b/media/Newsletter/ubuntu.ico differ diff --git a/media/PressRelease/misc.xml b/media/PressRelease/misc.xml new file mode 100644 index 0000000..e62ffcc --- /dev/null +++ b/media/PressRelease/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/media/PressRelease/test.iml b/media/PressRelease/test.iml new file mode 100644 index 0000000..254a30a --- /dev/null +++ b/media/PressRelease/test.iml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/media/case_law/RELEASE_-_OACPL_Names_First_President.pdf b/media/case_law/RELEASE_-_OACPL_Names_First_President.pdf new file mode 100644 index 0000000..17cacd2 Binary files /dev/null and b/media/case_law/RELEASE_-_OACPL_Names_First_President.pdf differ diff --git a/media/case_law/RELEASE_-_OACPL_Names_First_President_CYYYpZm.pdf b/media/case_law/RELEASE_-_OACPL_Names_First_President_CYYYpZm.pdf new file mode 100644 index 0000000..17cacd2 Binary files /dev/null and b/media/case_law/RELEASE_-_OACPL_Names_First_President_CYYYpZm.pdf differ diff --git a/media/case_law/RELEASE_-_OACPL_Names_First_President_RoMIfD3.pdf b/media/case_law/RELEASE_-_OACPL_Names_First_President_RoMIfD3.pdf new file mode 100644 index 0000000..17cacd2 Binary files /dev/null and b/media/case_law/RELEASE_-_OACPL_Names_First_President_RoMIfD3.pdf differ diff --git a/oacpl.sqlite3 b/oacpl.sqlite3 new file mode 100644 index 0000000..e69de29 diff --git a/templates/base.html b/templates/base.html index ebed8aa..ecda0de 100644 --- a/templates/base.html +++ b/templates/base.html @@ -59,9 +59,10 @@ data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">HOME