diff --git a/fixtures/conference.json b/fixtures/conference.json
index 9469a305..e4950e4a 100644
--- a/fixtures/conference.json
+++ b/fixtures/conference.json
@@ -30,16 +30,5 @@
"end_date": "2018-01-23",
"slug": "miniconf"
}
- },
- {
- "fields": {
- "conference": 1,
- "end_date": "2018-01-22",
- "name": "Open Hardware Miniconf",
- "slug": "openhardware-miniconf",
- "start_date": "2018-01-22"
- },
- "model": "symposion_conference.section",
- "pk": 3
}
]
diff --git a/fixtures/miniconf-fixtures/permissions.json b/fixtures/miniconf-fixtures/permissions.json
new file mode 100644
index 00000000..27458229
--- /dev/null
+++ b/fixtures/miniconf-fixtures/permissions.json
@@ -0,0 +1,266 @@
+[
+ {
+ "fields": {
+ "codename": "can_review_openhardware-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can review Open Hardware Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_manage_openhardware-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can manage Open Hardware Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_review_kernel-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can review Kernel Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_manage_kernel-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can manage Kernel Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_review_games-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can review LCA Games Miniconf: Games and FOSS Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_manage_games-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can manage LCA Games Miniconf: Games and FOSS Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_review_bioinformatics-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can review Open Source and Bioinformatics Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_manage_bioinformatics-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can manage Open Source and Bioinformatics Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_review_ClsXLCA-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can review Community Leadership Summit X at LCA"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_manage_ClsXLCA-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can manage Community Leadership Summit X at LCA"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_review_devdev-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can review Developers Developers Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_manage_devdev-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can manage Developers Developers Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_review_funcprog-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can review Real World Functional Programming Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_manage_funcprog-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can manage Real World Functional Programming Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_review_sysadmin-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can review Sysadmin Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_manage_sysadmin-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can manage Sysadmin Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_review_opened-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can review Open Education Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_manage_opened-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can manage Open Education Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_review_openglam-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can review Access and memory: Open GLAM and Open Source Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_manage_openglam-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can manage Access and memory: Open GLAM and Open Source Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_review_fpga-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can review Create hardware with FPGAs, Linux and Python Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_manage_fpga-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can manage Create hardware with FPGAs, Linux and Python Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_review_arttech-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can review Art+Tech Miniconf"
+ },
+ "model": "auth.permission"
+ },
+ {
+ "fields": {
+ "codename": "can_manage_arttech-miniconf",
+ "content_type": [
+ "reviews",
+ ""
+ ],
+ "name": "Can manage Art+Tech Miniconf"
+ },
+ "model": "auth.permission"
+ }
+]
diff --git a/fixtures/miniconf-fixtures/symposion_conference.json b/fixtures/miniconf-fixtures/symposion_conference.json
new file mode 100644
index 00000000..3cd143c0
--- /dev/null
+++ b/fixtures/miniconf-fixtures/symposion_conference.json
@@ -0,0 +1,134 @@
+[
+ {
+ "fields": {
+ "conference": 1,
+ "end_date": "2018-01-22",
+ "name": "Open Hardware Miniconf",
+ "slug": "openhardware-miniconf",
+ "start_date": "2018-01-22"
+ },
+ "model": "symposion_conference.section",
+ "pk": 3
+ },
+ {
+ "fields": {
+ "conference": 1,
+ "end_date": "2018-01-22",
+ "name": "Kernel Miniconf",
+ "slug": "kernel-miniconf",
+ "start_date": "2018-01-22"
+ },
+ "model": "symposion_conference.section",
+ "pk": 4
+ },
+ {
+ "fields": {
+ "conference": 1,
+ "end_date": "2018-01-22",
+ "name": "LCA Games Miniconf: Games and FOSS Miniconf",
+ "slug": "games-miniconf",
+ "start_date": "2018-01-22"
+ },
+ "model": "symposion_conference.section",
+ "pk": 5
+ },
+ {
+ "fields": {
+ "conference": 1,
+ "end_date": "2018-01-22",
+ "name": "Open Source and Bioinformatics Miniconf",
+ "slug": "bioinformatics-miniconf",
+ "start_date": "2018-01-22"
+ },
+ "model": "symposion_conference.section",
+ "pk": 6
+ },
+ {
+ "fields": {
+ "conference": 1,
+ "end_date": "2018-01-22",
+ "name": "Community Leadership Summit X at LCA",
+ "slug": "ClsXLCA-miniconf",
+ "start_date": "2018-01-22"
+ },
+ "model": "symposion_conference.section",
+ "pk": 7
+ },
+ {
+ "fields": {
+ "conference": 1,
+ "end_date": "2018-01-22",
+ "name": "Developers Developers Miniconf",
+ "slug": "devdev-miniconf",
+ "start_date": "2018-01-22"
+ },
+ "model": "symposion_conference.section",
+ "pk": 8
+ },
+ {
+ "fields": {
+ "conference": 1,
+ "end_date": "2018-01-23",
+ "name": "Real World Functional Programming Miniconf",
+ "slug": "funcprog-miniconf",
+ "start_date": "2018-01-23"
+ },
+ "model": "symposion_conference.section",
+ "pk": 9
+ },
+ {
+ "fields": {
+ "conference": 1,
+ "end_date": "2018-01-23",
+ "name": "Sysadmin Miniconf",
+ "slug": "sysadmin-miniconf",
+ "start_date": "2018-01-23"
+ },
+ "model": "symposion_conference.section",
+ "pk": 10
+ },
+ {
+ "fields": {
+ "conference": 1,
+ "end_date": "2018-01-23",
+ "name": "Open Education Miniconf",
+ "slug": "opened-miniconf",
+ "start_date": "2018-01-23"
+ },
+ "model": "symposion_conference.section",
+ "pk": 11
+ },
+ {
+ "fields": {
+ "conference": 1,
+ "end_date": "2018-01-23",
+ "name": "Access and memory: Open GLAM and Open Source Miniconf",
+ "slug": "openglam-miniconf",
+ "start_date": "2018-01-23"
+ },
+ "model": "symposion_conference.section",
+ "pk": 12
+ },
+ {
+ "fields": {
+ "conference": 1,
+ "end_date": "2018-01-23",
+ "name": "Create hardware with FPGAs, Linux and Python Miniconf",
+ "slug": "fpga-miniconf",
+ "start_date": "2018-01-23"
+ },
+ "model": "symposion_conference.section",
+ "pk": 13
+ },
+ {
+ "fields": {
+ "conference": 1,
+ "end_date": "2018-01-23",
+ "name": "Art+Tech Miniconf",
+ "slug": "arttech-miniconf",
+ "start_date": "2018-01-23"
+ },
+ "model": "symposion_conference.section",
+ "pk": 14
+ }
+]
diff --git a/fixtures/miniconf-fixtures/symposion_proposals.json b/fixtures/miniconf-fixtures/symposion_proposals.json
new file mode 100644
index 00000000..da6ca001
--- /dev/null
+++ b/fixtures/miniconf-fixtures/symposion_proposals.json
@@ -0,0 +1,242 @@
+[
+ {
+ "fields": {
+ "closed": false,
+ "end": "2017-11-30T12:59:00Z",
+ "published": false,
+ "section": 3,
+ "start": "2017-09-21T14:01:00Z"
+ },
+ "model": "symposion_proposals.proposalsection",
+ "pk": 3
+ },
+ {
+ "fields": {
+ "closed": false,
+ "end": "2017-11-30T12:59:00Z",
+ "published": false,
+ "section": 4,
+ "start": "2017-09-21T14:01:00Z"
+ },
+ "model": "symposion_proposals.proposalsection",
+ "pk": 4
+ },
+ {
+ "fields": {
+ "closed": false,
+ "end": "2017-11-30T12:59:00Z",
+ "published": false,
+ "section": 5,
+ "start": "2017-09-21T14:01:00Z"
+ },
+ "model": "symposion_proposals.proposalsection",
+ "pk": 5
+ },
+ {
+ "fields": {
+ "closed": false,
+ "end": "2017-11-30T12:59:00Z",
+ "published": false,
+ "section": 6,
+ "start": "2017-09-21T14:01:00Z"
+ },
+ "model": "symposion_proposals.proposalsection",
+ "pk": 6
+ },
+ {
+ "fields": {
+ "closed": false,
+ "end": "2017-11-29T13:01:00Z",
+ "published": false,
+ "section": 7,
+ "start": "2017-09-21T14:01:00Z"
+ },
+ "model": "symposion_proposals.proposalsection",
+ "pk": 7
+ },
+ {
+ "fields": {
+ "closed": false,
+ "end": "2017-11-29T13:01:00Z",
+ "published": false,
+ "section": 8,
+ "start": "2017-11-01T14:01:00Z"
+ },
+ "model": "symposion_proposals.proposalsection",
+ "pk": 8
+ },
+ {
+ "fields": {
+ "closed": false,
+ "end": "2017-11-29T13:01:00Z",
+ "published": false,
+ "section": 9,
+ "start": "2017-11-01T14:01:00Z"
+ },
+ "model": "symposion_proposals.proposalsection",
+ "pk": 9
+ },
+ {
+ "fields": {
+ "closed": false,
+ "end": "2017-11-29T13:01:00Z",
+ "published": false,
+ "section": 10,
+ "start": "2017-11-01T14:01:00Z"
+ },
+ "model": "symposion_proposals.proposalsection",
+ "pk": 10
+ },
+ {
+ "fields": {
+ "closed": false,
+ "end": "2017-11-29T13:01:00Z",
+ "published": false,
+ "section": 11,
+ "start": "2017-11-01T14:01:00Z"
+ },
+ "model": "symposion_proposals.proposalsection",
+ "pk": 11
+ },
+ {
+ "fields": {
+ "closed": false,
+ "end": "2017-11-29T13:01:00Z",
+ "published": false,
+ "section": 12,
+ "start": "2017-11-01T14:01:00Z"
+ },
+ "model": "symposion_proposals.proposalsection",
+ "pk": 12
+ },
+ {
+ "fields": {
+ "closed": false,
+ "end": "2017-11-29T13:01:00Z",
+ "published": false,
+ "section": 13,
+ "start": "2017-11-01T14:01:00Z"
+ },
+ "model": "symposion_proposals.proposalsection",
+ "pk": 13
+ },
+ {
+ "fields": {
+ "closed": false,
+ "end": "2017-11-29T13:01:00Z",
+ "published": false,
+ "section": 14,
+ "start": "2017-11-01T14:01:00Z"
+ },
+ "model": "symposion_proposals.proposalsection",
+ "pk": 14
+ },
+ {
+ "fields": {
+ "name": "Open Hardware Miniconf",
+ "section": 3,
+ "slug": "openhardware-miniconf"
+ },
+ "model": "symposion_proposals.proposalkind",
+ "pk": 4
+ },
+ {
+ "fields": {
+ "name": "Kernel Miniconf",
+ "section": 4,
+ "slug": "kernel-miniconf"
+ },
+ "model": "symposion_proposals.proposalkind",
+ "pk": 5
+ },
+ {
+ "fields": {
+ "name": "Games Miniconf",
+ "section": 5,
+ "slug": "games-miniconf"
+ },
+ "model": "symposion_proposals.proposalkind",
+ "pk": 6
+ },
+ {
+ "fields": {
+ "name": "Bioinformatics Miniconf",
+ "section": 6,
+ "slug": "bioinformatics-miniconf"
+ },
+ "model": "symposion_proposals.proposalkind",
+ "pk": 7
+ },
+ {
+ "fields": {
+ "name": "ClsXLCA",
+ "section": 7,
+ "slug": "clsxlca-miniconf"
+ },
+ "model": "symposion_proposals.proposalkind",
+ "pk": 8
+ },
+ {
+ "fields": {
+ "name": "Developers Developers Miniconf",
+ "section": 8,
+ "slug": "devdev-miniconf"
+ },
+ "model": "symposion_proposals.proposalkind",
+ "pk": 9
+ },
+ {
+ "fields": {
+ "name": "Functional Programming Miniconf",
+ "section": 9,
+ "slug": "funcprog-miniconf"
+ },
+ "model": "symposion_proposals.proposalkind",
+ "pk": 10
+ },
+ {
+ "fields": {
+ "name": "Sysadmin Miniconf",
+ "section": 10,
+ "slug": "sysadmin-miniconf"
+ },
+ "model": "symposion_proposals.proposalkind",
+ "pk": 11
+ },
+ {
+ "fields": {
+ "name": "Open Education Miniconf",
+ "section": 11,
+ "slug": "opened-miniconf"
+ },
+ "model": "symposion_proposals.proposalkind",
+ "pk": 12
+ },
+ {
+ "fields": {
+ "name": "Open GLAM Miniconf",
+ "section": 12,
+ "slug": "openglam-miniconf"
+ },
+ "model": "symposion_proposals.proposalkind",
+ "pk": 13
+ },
+ {
+ "fields": {
+ "name": "FPGA Miniconf",
+ "section": 13,
+ "slug": "fpga-miniconf"
+ },
+ "model": "symposion_proposals.proposalkind",
+ "pk": 14
+ },
+ {
+ "fields": {
+ "name": "Art+Tech Miniconf",
+ "section": 14,
+ "slug": "arttech-miniconf"
+ },
+ "model": "symposion_proposals.proposalkind",
+ "pk": 15
+ }
+]
diff --git a/fixtures/miniconf-fixtures/teams.json b/fixtures/miniconf-fixtures/teams.json
new file mode 100644
index 00000000..241118ec
--- /dev/null
+++ b/fixtures/miniconf-fixtures/teams.json
@@ -0,0 +1,332 @@
+[
+ {
+ "fields": {
+ "access": "application",
+ "created": "2017-09-22T03:29:45.743Z",
+ "description": "",
+ "manager_permissions": [
+ [
+ "can_manage_kernel-miniconf",
+ "reviews",
+ ""
+ ],
+ [
+ "can_review_kernel-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "name": "Kernel Miniconf CFP",
+ "permissions": [
+ [
+ "can_review_kernel-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "slug": "kernel-miniconf-team"
+ },
+ "model": "teams.team",
+ "pk": 4
+ },
+ {
+ "fields": {
+ "access": "application",
+ "created": "2017-09-22T03:30:58.246Z",
+ "description": "",
+ "manager_permissions": [
+ [
+ "can_manage_ClsXLCA-miniconf",
+ "reviews",
+ ""
+ ],
+ [
+ "can_review_ClsXLCA-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "name": "ClsXLCA",
+ "permissions": [
+ [
+ "can_review_ClsXLCA-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "slug": "ClsXLCA-miniconf-team"
+ },
+ "model": "teams.team",
+ "pk": 5
+ },
+ {
+ "fields": {
+ "access": "application",
+ "created": "2017-09-22T03:31:35.497Z",
+ "description": "",
+ "manager_permissions": [
+ [
+ "can_manage_funcprog-miniconf",
+ "reviews",
+ ""
+ ],
+ [
+ "can_review_funcprog-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "name": "Functional Programming",
+ "permissions": [
+ [
+ "can_review_funcprog-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "slug": "funcprog-miniconf-team"
+ },
+ "model": "teams.team",
+ "pk": 6
+ },
+ {
+ "fields": {
+ "access": "application",
+ "created": "2017-09-22T03:32:09.478Z",
+ "description": "",
+ "manager_permissions": [
+ [
+ "can_manage_sysadmin-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "name": "Sysadmin",
+ "permissions": [
+ [
+ "can_review_sysadmin-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "slug": "sysadmin-miniconf-team"
+ },
+ "model": "teams.team",
+ "pk": 7
+ },
+ {
+ "fields": {
+ "access": "application",
+ "created": "2017-09-22T03:32:47.278Z",
+ "description": "",
+ "manager_permissions": [
+ [
+ "can_review_opened-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "name": "Open Education",
+ "permissions": [
+ [
+ "can_review_opened-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "slug": "opened-miniconf-team"
+ },
+ "model": "teams.team",
+ "pk": 8
+ },
+ {
+ "fields": {
+ "access": "application",
+ "created": "2017-09-22T03:33:40.271Z",
+ "description": "",
+ "manager_permissions": [
+ [
+ "can_review_openglam-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "name": "Open GLAM",
+ "permissions": [
+ [
+ "can_review_openglam-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "slug": "openglam-miniconf-team"
+ },
+ "model": "teams.team",
+ "pk": 9
+ },
+ {
+ "fields": {
+ "access": "application",
+ "created": "2017-09-22T03:34:16.381Z",
+ "description": "",
+ "manager_permissions": [
+ [
+ "can_manage_games-miniconf",
+ "reviews",
+ ""
+ ],
+ [
+ "can_review_openglam-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "name": "Games",
+ "permissions": [
+ [
+ "can_review_games-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "slug": "games-miniconf-team"
+ },
+ "model": "teams.team",
+ "pk": 10
+ },
+ {
+ "fields": {
+ "access": "application",
+ "created": "2017-09-22T03:47:43.647Z",
+ "description": "",
+ "manager_permissions": [
+ [
+ "can_review_fpga-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "name": "FP",
+ "permissions": [
+ [
+ "can_review_fpga-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "slug": "fpga-miniconf-team"
+ },
+ "model": "teams.team",
+ "pk": 11
+ },
+ {
+ "fields": {
+ "access": "application",
+ "created": "2017-09-22T03:48:42.815Z",
+ "description": "",
+ "manager_permissions": [
+ [
+ "can_review_devdev-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "name": "Developers Developers Miniconf",
+ "permissions": [
+ [
+ "can_review_devdev-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "slug": "devdev-miniconf-team"
+ },
+ "model": "teams.team",
+ "pk": 12
+ },
+ {
+ "fields": {
+ "access": "application",
+ "created": "2017-09-22T03:50:38.480Z",
+ "description": "",
+ "manager_permissions": [
+ [
+ "can_review_arttech-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "name": "Art+Tech Miniconf",
+ "permissions": [
+ [
+ "can_review_arttech-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "slug": "arttech-miniconf-team"
+ },
+ "model": "teams.team",
+ "pk": 13
+ },
+ {
+ "fields": {
+ "access": "application",
+ "created": "2017-09-22T03:51:38.150Z",
+ "description": "",
+ "manager_permissions": [
+ [
+ "can_manage_openhardware-miniconf",
+ "reviews",
+ ""
+ ],
+ [
+ "can_review_openhardware-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "name": "Open Hardware",
+ "permissions": [
+ [
+ "can_review_openhardware-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "slug": "openhardware-miniconf-team"
+ },
+ "model": "teams.team",
+ "pk": 14
+ },
+ {
+ "fields": {
+ "access": "application",
+ "created": "2017-09-22T03:52:09.923Z",
+ "description": "",
+ "manager_permissions": [
+ [
+ "can_manage_bioinformatics-miniconf",
+ "reviews",
+ ""
+ ],
+ [
+ "can_review_bioinformatics-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "name": "Open Source and Bioinformatics",
+ "permissions": [
+ [
+ "can_review_bioinformatics-miniconf",
+ "reviews",
+ ""
+ ]
+ ],
+ "slug": "bioinformatics-miniconf-team"
+ },
+ "model": "teams.team",
+ "pk": 15
+ }
+]
diff --git a/fixtures/proposal_base.json b/fixtures/proposal_base.json
index ebc93eec..cc7bf12b 100644
--- a/fixtures/proposal_base.json
+++ b/fixtures/proposal_base.json
@@ -47,14 +47,5 @@
"name": "Miniconf",
"slug": "miniconf"
}
- },
- {
- "fields": {
- "name": "Open Hardware Miniconf",
- "section": 3,
- "slug": "openhardware-miniconf"
- },
- "model": "symposion_proposals.proposalkind",
- "pk": 4
}
]
diff --git a/pinaxcon/proposals/admin.py b/pinaxcon/proposals/admin.py
index 6ae698c5..8070d290 100644
--- a/pinaxcon/proposals/admin.py
+++ b/pinaxcon/proposals/admin.py
@@ -11,6 +11,15 @@ from symposion.proposals import models as symposion_models
@admin.register(models.KernelProposal)
@admin.register(models.GamesProposal)
@admin.register(models.OpenHardwareProposal)
+@admin.register(models.ClsXLCAProposal)
+@admin.register(models.FuncProgProposal)
+@admin.register(models.OpenEdProposal)
+@admin.register(models.OpenGLAMProposal)
+@admin.register(models.FPGAProposal)
+@admin.register(models.DevDevProposal)
+@admin.register(models.ArtTechProposal)
+@admin.register(models.BioInformaticsProposal)
+
class CategoryAdmin(admin.ModelAdmin):
class AdditionalSpeakerInline(admin.TabularInline):
diff --git a/pinaxcon/proposals/forms.py b/pinaxcon/proposals/forms.py
index bf94facb..c5ef4f90 100644
--- a/pinaxcon/proposals/forms.py
+++ b/pinaxcon/proposals/forms.py
@@ -1,10 +1,27 @@
+import copy
+
from django import forms
from pinaxcon.proposals.models import TalkProposal, TutorialProposal, MiniconfProposal
+from pinaxcon.proposals.models import SysAdminProposal, KernelProposal, OpenHardwareProposal
+from pinaxcon.proposals.models import GamesProposal, ClsXLCAProposal, FuncProgProposal
+from pinaxcon.proposals.models import OpenEdProposal, OpenGLAMProposal, FPGAProposal, DevDevProposal
+from pinaxcon.proposals.models import ArtTechProposal, BioInformaticsProposal
-from .models import TalkProposal, TutorialProposal, MiniconfProposal
-from .models import SysAdminProposal, KernelProposal, OpenHardwareProposal
-from .models import GamesProposal
+DEFAULT_FIELDS = [
+ "title",
+ "target_audience",
+ "abstract",
+ "private_abstract",
+ "technical_requirements",
+ "project",
+ "project_url",
+ "recording_release",
+ "materials_release",
+]
+
+TALK_FORMAT_FIELDS = copy.copy(DEFAULT_FIELDS)
+TALK_FORMAT_FIELDS.append("talk_format")
class ProposalForm(forms.ModelForm):
@@ -68,69 +85,74 @@ class MiniconfProposalForm(ProposalForm):
"materials_release",
]
-class SysAdminProposalForm(ProposalForm):
+class SysadminProposalForm(ProposalForm):
class Meta:
model = SysAdminProposal
- fields = [
- "title",
- "talk_format",
- "target_audience",
- "abstract",
- "private_abstract",
- "technical_requirements",
- "project",
- "project_url",
- "recording_release",
- "materials_release",
- ]
+ fields = TALK_FORMAT_FIELDS
class KernelProposalForm(ProposalForm):
class Meta:
model = KernelProposal
- fields = [
- "title",
- "target_audience",
- "abstract",
- "private_abstract",
- "technical_requirements",
- "project",
- "project_url",
- "recording_release",
- "materials_release",
- ]
+ fields = DEFAULT_FIELDS
class GamesProposalForm(ProposalForm):
class Meta:
model = GamesProposal
- fields = [
- "title",
- "talk_format",
- "target_audience",
- "abstract",
- "private_abstract",
- "technical_requirements",
- "project",
- "project_url",
- "recording_release",
- "materials_release",
- ]
+ fields = TALK_FORMAT_FIELDS
class OpenHardwareProposalForm(ProposalForm):
class Meta:
model = OpenHardwareProposal
- fields = [
- "title",
- "talk_format",
- "target_audience",
- "abstract",
- "private_abstract",
- "technical_requirements",
- "project",
- "project_url",
- "recording_release",
- "materials_release",
- ]
+ fields = TALK_FORMAT_FIELDS
+
+class ClsXLCAProposalForm(ProposalForm):
+
+ class Meta:
+ model = ClsXLCAProposal
+ fields = DEFAULT_FIELDS
+
+class FuncProgProposalForm(ProposalForm):
+
+ class Meta:
+ model = FuncProgProposal
+ fields = DEFAULT_FIELDS
+
+class OpenEdProposalForm(ProposalForm):
+
+ class Meta:
+ model = OpenEdProposal
+ fields = DEFAULT_FIELDS
+
+class OpenGLAMProposalForm(ProposalForm):
+
+ class Meta:
+ model = OpenGLAMProposal
+ fields = DEFAULT_FIELDS
+
+class FPGAProposalForm(ProposalForm):
+
+ class Meta:
+ model = FPGAProposal
+ fields = DEFAULT_FIELDS
+
+class DevDevProposalForm(ProposalForm):
+
+ class Meta:
+ model = DevDevProposal
+ fields = DEFAULT_FIELDS
+
+class ArtTechProposalForm(ProposalForm):
+
+ class Meta:
+ model = ArtTechProposal
+ fields = DEFAULT_FIELDS
+
+class BioInformaticsProposalForm(ProposalForm):
+
+ class Meta:
+ model = BioInformaticsProposal
+ fields = DEFAULT_FIELDS
diff --git a/pinaxcon/proposals/migrations/0005_arttechproposal_bioinformaticsproposal_clsxlcaproposal_devdevproposal_fpgaproposal_funcprogproposal_.py b/pinaxcon/proposals/migrations/0005_arttechproposal_bioinformaticsproposal_clsxlcaproposal_devdevproposal_fpgaproposal_funcprogproposal_.py
new file mode 100644
index 00000000..19d05959
--- /dev/null
+++ b/pinaxcon/proposals/migrations/0005_arttechproposal_bioinformaticsproposal_clsxlcaproposal_devdevproposal_fpgaproposal_funcprogproposal_.py
@@ -0,0 +1,121 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.5 on 2017-09-22 05:43
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('symposion_proposals', '0003_auto_20170702_2250'),
+ ('proposals', '0004_gamesproposal_kernelproposal_openhardwareproposal_sysadminproposal'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='ArtTechProposal',
+ fields=[
+ ('proposalbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='symposion_proposals.ProposalBase')),
+ ('target_audience', models.IntegerField(choices=[(1, 'User'), (2, 'Business'), (3, 'Community'), (4, 'Developer')])),
+ ('recording_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ('materials_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any other material (such as slides) from presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ],
+ options={
+ 'verbose_name': 'Art+Tech Miniconf Proposal',
+ },
+ bases=('symposion_proposals.proposalbase',),
+ ),
+ migrations.CreateModel(
+ name='BioInformaticsProposal',
+ fields=[
+ ('proposalbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='symposion_proposals.ProposalBase')),
+ ('target_audience', models.IntegerField(choices=[(1, 'User'), (2, 'Business'), (3, 'Community'), (4, 'Developer')])),
+ ('recording_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ('materials_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any other material (such as slides) from presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ],
+ options={
+ 'verbose_name': 'Open Source and BioInformatics Miniconf',
+ },
+ bases=('symposion_proposals.proposalbase',),
+ ),
+ migrations.CreateModel(
+ name='ClsXLCAProposal',
+ fields=[
+ ('proposalbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='symposion_proposals.ProposalBase')),
+ ('target_audience', models.IntegerField(choices=[(1, 'User'), (2, 'Business'), (3, 'Community'), (4, 'Developer')])),
+ ('recording_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ('materials_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any other material (such as slides) from presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ],
+ options={
+ 'verbose_name': 'CLSxLCA Miniconf Proposal',
+ },
+ bases=('symposion_proposals.proposalbase',),
+ ),
+ migrations.CreateModel(
+ name='DevDevProposal',
+ fields=[
+ ('proposalbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='symposion_proposals.ProposalBase')),
+ ('target_audience', models.IntegerField(choices=[(1, 'User'), (2, 'Business'), (3, 'Community'), (4, 'Developer')])),
+ ('recording_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ('materials_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any other material (such as slides) from presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ],
+ options={
+ 'verbose_name': 'Developers Developers Miniconf Proposal',
+ },
+ bases=('symposion_proposals.proposalbase',),
+ ),
+ migrations.CreateModel(
+ name='FPGAProposal',
+ fields=[
+ ('proposalbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='symposion_proposals.ProposalBase')),
+ ('target_audience', models.IntegerField(choices=[(1, 'User'), (2, 'Business'), (3, 'Community'), (4, 'Developer')])),
+ ('recording_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ('materials_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any other material (such as slides) from presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ],
+ options={
+ 'verbose_name': 'FPGA Miniconf Proposal',
+ },
+ bases=('symposion_proposals.proposalbase',),
+ ),
+ migrations.CreateModel(
+ name='FuncProgProposal',
+ fields=[
+ ('proposalbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='symposion_proposals.ProposalBase')),
+ ('target_audience', models.IntegerField(choices=[(1, 'User'), (2, 'Business'), (3, 'Community'), (4, 'Developer')])),
+ ('recording_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ('materials_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any other material (such as slides) from presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ],
+ options={
+ 'verbose_name': 'Real World Functional Programming Miniconf Proposal',
+ },
+ bases=('symposion_proposals.proposalbase',),
+ ),
+ migrations.CreateModel(
+ name='OpenEdProposal',
+ fields=[
+ ('proposalbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='symposion_proposals.ProposalBase')),
+ ('target_audience', models.IntegerField(choices=[(1, 'User'), (2, 'Business'), (3, 'Community'), (4, 'Developer')])),
+ ('recording_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ('materials_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any other material (such as slides) from presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ],
+ options={
+ 'verbose_name': 'Open Education Miniconf Proposal',
+ },
+ bases=('symposion_proposals.proposalbase',),
+ ),
+ migrations.CreateModel(
+ name='OpenGLAMProposal',
+ fields=[
+ ('proposalbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='symposion_proposals.ProposalBase')),
+ ('target_audience', models.IntegerField(choices=[(1, 'User'), (2, 'Business'), (3, 'Community'), (4, 'Developer')])),
+ ('recording_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ('materials_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any other material (such as slides) from presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")),
+ ],
+ options={
+ 'verbose_name': 'OpenGLAM Miniconf Proposal',
+ },
+ bases=('symposion_proposals.proposalbase',),
+ ),
+ ]
diff --git a/pinaxcon/proposals/models.py b/pinaxcon/proposals/models.py
index e7025013..5134054f 100644
--- a/pinaxcon/proposals/models.py
+++ b/pinaxcon/proposals/models.py
@@ -117,3 +117,51 @@ class OpenHardwareProposal(Proposal):
class Meta:
verbose_name = "Open Hardware Miniconf Proposal"
+
+
+class ClsXLCAProposal(Proposal):
+
+ class Meta:
+ verbose_name = "CLSxLCA Miniconf Proposal"
+
+
+class FuncProgProposal(Proposal):
+
+ class Meta:
+ verbose_name = "Real World Functional Programming Miniconf Proposal"
+
+
+class OpenEdProposal(Proposal):
+
+ class Meta:
+ verbose_name = "Open Education Miniconf Proposal"
+
+
+class OpenGLAMProposal(Proposal):
+
+ class Meta:
+ verbose_name = "OpenGLAM Miniconf Proposal"
+
+
+class FPGAProposal(Proposal):
+
+ class Meta:
+ verbose_name = "FPGA Miniconf Proposal"
+
+
+class DevDevProposal(Proposal):
+
+ class Meta:
+ verbose_name = "Developers Developers Miniconf Proposal"
+
+
+class ArtTechProposal(Proposal):
+
+ class Meta:
+ verbose_name = "Art+Tech Miniconf Proposal"
+
+
+class BioInformaticsProposal(Proposal):
+
+ class Meta:
+ verbose_name = "Open Source and BioInformatics Miniconf"
diff --git a/pinaxcon/settings.py b/pinaxcon/settings.py
index 4734f5fa..8dec25d8 100644
--- a/pinaxcon/settings.py
+++ b/pinaxcon/settings.py
@@ -304,17 +304,18 @@ PROPOSAL_FORMS = {
"talk": "pinaxcon.proposals.forms.TalkProposalForm",
"tutorial": "pinaxcon.proposals.forms.TutorialProposalForm",
"miniconf": "pinaxcon.proposals.forms.MiniconfProposalForm",
- "sysadmin-miniconf": "pinaxcon.proposals.forms.SysAdminProposalForm",
- "openradio-miniconf": "pinaxcon.proposals.forms.RadioProposalForm",
- "wootconf-miniconf": "pinaxcon.proposals.forms.WootconfProposalForm",
- "writethedocs-miniconf": "pinaxcon.proposals.forms.WriteTheDocsProposalForm",
- "security-miniconf": "pinaxcon.proposals.forms.SecurityProposalForm",
- "kernel-miniconf": "pinaxcon.proposals.forms.KernelProposalForm",
+ "sysadmin-miniconf": "pinaxcon.proposals.forms.SysadminProposalForm",
"games-miniconf": "pinaxcon.proposals.forms.GamesProposalForm",
- "testing-miniconf": "pinaxcon.proposals.forms.TestingProposalForm",
- "knowledge-miniconf": "pinaxcon.proposals.forms.KnowledgeProposalForm",
- "lawpolicy-miniconf": "pinaxcon.proposals.forms.LawProposalForm",
"openhardware-miniconf": "pinaxcon.proposals.forms.OpenHardwareProposalForm",
+ "kernel-miniconf": "pinaxcon.proposals.forms.KernelProposalForm",
+ "clsxlca-miniconf": "pinaxcon.proposals.forms.ClsXLCAProposalForm",
+ "funcprog-miniconf": "pinaxcon.proposals.forms.FuncProgProposalForm",
+ "opened-miniconf": "pinaxcon.proposals.forms.OpenEdProposalForm",
+ "openglam-miniconf": "pinaxcon.proposals.forms.OpenGLAMProposalForm",
+ "fpga-miniconf": "pinaxcon.proposals.forms.FPGAProposalForm",
+ "devdev-miniconf": "pinaxcon.proposals.forms.DevDevProposalForm",
+ "arttech-miniconf": "pinaxcon.proposals.forms.ArtTechProposalForm",
+ "bioinformatics-miniconf": "pinaxcon.proposals.forms.BioInformaticsProposalForm",
}
# Registrasion bits: