Everything Open 2023 - Initial Setup

This commit is contained in:
Joel Addison 2022-12-08 00:08:54 +10:00
parent 4f0871b032
commit 630bf40861
47 changed files with 409 additions and 515 deletions

View file

@ -4,7 +4,7 @@ stages:
variables:
DOCKER_TLS_CERTDIR: "/certs"
CONTAINER_PREFIX: 2022
CONTAINER_PREFIX: 2023
CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/$CONTAINER_PREFIX:$CI_COMMIT_SHA
build-image:
@ -18,7 +18,7 @@ build-image:
- docker build --pull -f docker/Dockerfile -t $CONTAINER_IMAGE .
- docker push $CONTAINER_IMAGE
only:
- "2022"
- conf/2023
k8s-deploy-staging:
image: google/cloud-sdk
@ -26,15 +26,15 @@ k8s-deploy-staging:
script:
- echo "${CA_CERT}" > cert.crt
- kubectl config set-cluster cluster --server="${KUBE_SERVER}" --embed-certs=true --certificate-authority=cert.crt
- kubectl config set-context cluster --cluster=cluster --namespace=lca2022-staging --user=gitlab-ci
- kubectl config set-context cluster --cluster=cluster --namespace=eo2023-staging --user=gitlab-ci
- kubectl config use-context cluster
- kubectl --token "${KUBE_TOKEN}" set image deployment/symposion-app symposion-app=$CONTAINER_IMAGE
when: manual
only:
- dev/2022
- dev/2023
environment:
name: 2022/staging
url: https://staging-lca2022.gc2020.org/
name: 2023/staging
url: https://staging-eo2023.osaconftools.net/
k8s-deploy-prod:
image: google/cloud-sdk
@ -42,15 +42,15 @@ k8s-deploy-prod:
script:
- echo "${CA_CERT}" > cert.crt
- kubectl config set-cluster cluster --server="${KUBE_SERVER}" --embed-certs=true --certificate-authority=cert.crt
- kubectl config set-context cluster --cluster=cluster --namespace=lca2022-prod --user=gitlab-ci
- kubectl config set-context cluster --cluster=cluster --namespace=eo2023-prod --user=gitlab-ci
- kubectl config use-context cluster
- kubectl --token "${KUBE_TOKEN}" set image deployment/symposion-app symposion-app=$CONTAINER_IMAGE
when: manual
only:
- "2022"
- conf/2023
environment:
name: 2022/prod
url: https://lca2022.linux.org.au
name: 2023/prod
url: https://2023.everythingopen.au/
.docs_template: &sphinx
image: alpine
@ -70,7 +70,7 @@ pages:
stage: build
only:
- master
- "2022"
- conf/2023
environment:
name: docs
url: https://laconfdev.gitlab.io/symposion_app/
@ -80,4 +80,4 @@ build-sphinx:
stage: build
except:
- master
- "2022"
- conf/2023

View file

@ -1,46 +0,0 @@
[
{
"model": "auth.permission",
"fields": {
"name": "Can review Main Conference",
"content_type": [
"reviews",
""
],
"codename": "can_review_main"
}
},
{
"model": "auth.permission",
"fields": {
"name": "Can manage Main Conference",
"content_type": [
"reviews",
""
],
"codename": "can_manage_main"
}
},
{
"model": "auth.permission",
"fields": {
"name": "Can review MiniConf",
"content_type": [
"reviews",
""
],
"codename": "can_review_miniconf"
}
},
{
"model": "auth.permission",
"fields": {
"name": "Can manage MiniConf",
"content_type": [
"reviews",
""
],
"codename": "can_manage_miniconf"
}
}
]

View file

@ -1,24 +0,0 @@
[
{
"model": "symposion_conference.section",
"pk": 1,
"fields": {
"conference": 1,
"name": "Main Conference",
"slug": "main",
"start_date": "2022-01-14",
"end_date": "2022-01-16"
}
},
{
"model": "symposion_conference.section",
"pk": 2,
"fields": {
"conference": 1,
"name": "MiniConf",
"slug": "miniconf",
"start_date": null,
"end_date": null
}
}
]

View file

@ -1,24 +0,0 @@
[
{
"model": "symposion_proposals.proposalsection",
"pk": 1,
"fields": {
"section": 1,
"start": "2021-08-01T12:00:00Z",
"end": "2021-09-01T12:00:00Z",
"closed": false,
"published": true
}
},
{
"model": "symposion_proposals.proposalsection",
"pk": 2,
"fields": {
"section": 2,
"start": "2021-07-05T12:00:00Z",
"end": "2021-08-01T12:00:00Z",
"closed": false,
"published": true
}
}
]

View file

@ -3,10 +3,10 @@
"model": "symposion_conference.conference",
"pk": 1,
"fields": {
"title": "linux.conf.au 2022",
"start_date": "2022-01-14",
"end_date": "2022-01-16",
"timezone": "Australia/Canberra"
"title": "Everything Open 2023",
"start_date": "2023-03-14",
"end_date": "2023-03-16",
"timezone": "Australia/Melbourne"
}
}
]

View file

@ -5,7 +5,7 @@
"fields": {
"url": "/",
"title": "Home Page",
"content": "Here is the home page for LCA.\r\n\r\nOther pages to come.",
"content": "Here is the home page.\r\n\r\nOther pages to come.",
"enable_comments": false,
"template_name": "",
"registration_required": false,

View file

@ -0,0 +1,24 @@
[
{
"model": "auth.permission",
"fields": {
"name": "Can review Main Conference",
"content_type": [
"reviews",
""
],
"codename": "can_review_main"
}
},
{
"model": "auth.permission",
"fields": {
"name": "Can manage Main Conference",
"content_type": [
"reviews",
""
],
"codename": "can_manage_main"
}
}
]

View file

@ -0,0 +1,13 @@
[
{
"model": "symposion_conference.section",
"pk": 1,
"fields": {
"conference": 1,
"name": "Main Conference",
"slug": "main",
"start_date": "2023-03-14",
"end_date": "2023-03-16"
}
}
]

View file

@ -10,11 +10,11 @@
},
{
"model": "symposion_proposals.proposalkind",
"pk": 3,
"pk": 2,
"fields": {
"section": 2,
"name": "Miniconf",
"slug": "miniconf"
"section": 1,
"name": "Tutorial",
"slug": "tutorial"
}
}
]

View file

@ -0,0 +1,13 @@
[
{
"model": "symposion_proposals.proposalsection",
"pk": 1,
"fields": {
"section": 1,
"start": "2022-12-07T12:00:00Z",
"end": "2023-01-09T12:00:00Z",
"closed": false,
"published": true
}
}
]

View file

@ -4,8 +4,8 @@
"pk": 1,
"fields": {
"slug": "main-proposals",
"name": "linux.conf.au Sessions Team",
"description": "Team looking after the linux.conf.au Call for Sessions",
"name": "Sessions Team",
"description": "Team looking after the Call for Sessions",
"access": "invitation",
"created": "2019-06-23T08:16:34.032Z",
"permissions": [
@ -13,11 +13,6 @@
"can_review_main",
"reviews",
""
],
[
"can_review_miniconf",
"reviews",
""
]
],
"manager_permissions": [
@ -39,8 +34,8 @@
"pk": 2,
"fields": {
"slug": "organising-team",
"name": "linux.conf.au Organising Team",
"description": "The organising team for linux.conf.au",
"name": "Organising Team",
"description": "The conference organising team",
"access": "invitation",
"created": "2019-08-26T22:59:09.265Z",
"permissions": [
@ -48,11 +43,6 @@
"can_review_main",
"reviews",
""
],
[
"can_review_miniconf",
"reviews",
""
]
],
"manager_permissions": []

View file

@ -3,8 +3,8 @@
"model": "sites.site",
"pk": 1,
"fields": {
"domain": "lca2022.linux.org.au",
"name": "linux.conf.au 2022"
"domain": "2023.everythingopen.au",
"name": "Everything Open 2023"
}
}
]

View file

@ -131,7 +131,7 @@
"model": "sitetree.treeitem",
"pk": 6,
"fields": {
"title": "About LCA2022",
"title": "About Everything Open",
"hint": "",
"url": "/about/",
"urlaspattern": false,

View file

@ -121,7 +121,7 @@ function (slug, sha) {
"value": "UA-000000000-1"
}
],
"image": "asia.gcr.io/linuxconfsydney/symposion_app_2022_dev:" + sha,
"image": "registry.gitlab.com/laconfdev/symposion_app/2023:" + sha,
"imagePullPolicy": "Always",
"livenessProbe": {
"failureThreshold": 3,

View file

@ -26,7 +26,7 @@ docker exec symposion ./manage.py collectstatic --noinput -v 0
docker exec symposion ./manage.py migrate
docker exec symposion ./manage.py loaddata ./fixtures/{conference,sites,sitetree,flatpages}.json
docker exec symposion ./manage.py create_review_permissions
docker exec symposion ./manage.py loaddata ./fixtures/????/*.json
docker exec symposion ./manage.py loaddata ./fixtures/sessions/*.json
docker exec symposion ./manage.py populate_inventory
if [ -e ./symposion-tools ]; then

View file

@ -23,12 +23,6 @@ class CategoryAdmin(admin.ModelAdmin):
models_to_register = [
models.TalkProposal,
models.TutorialProposal,
models.MiniconfProposal,
### LCA2022 Miniconfs
models.GlamCommunityProposal,
models.KernelProposal,
models.OpenHardwareProposal,
models.SysAdminProposal,
]
for model in models_to_register:

View file

@ -13,6 +13,7 @@ DEFAULT_FIELDS = [
"experience_level",
"abstract",
"private_abstract",
"content_warning",
"technical_requirements",
"project",
"project_url",
@ -22,8 +23,6 @@ DEFAULT_FIELDS = [
"materials_release",
]
MINICONF_SESSION_FORMAT_FIELDS = copy.copy(DEFAULT_FIELDS)
class ProposalForm(forms.ModelForm):
required_css_class = 'label-required'
@ -49,57 +48,3 @@ class TutorialProposalForm(ProposalForm):
class Meta:
model = models.TutorialProposal
fields = copy.copy(DEFAULT_FIELDS)
class MiniconfProposalForm(ProposalForm):
class Meta:
model = models.MiniconfProposal
fields = [
"title",
"abstract",
"private_abstract",
"technical_requirements",
"recording_release",
"materials_release",
]
### LCA2022 Miniconfs
class MiniconfSessionProposalForm(ProposalForm):
pass
class GlamCommunityProposalForm(MiniconfSessionProposalForm):
class Meta:
model = models.GlamCommunityProposal
fields = MINICONF_SESSION_FORMAT_FIELDS
class KernelProposalForm(MiniconfSessionProposalForm):
class Meta:
model = models.KernelProposal
fields = MINICONF_SESSION_FORMAT_FIELDS
HARDWARE_FIELDS = copy.copy(MINICONF_SESSION_FORMAT_FIELDS)
HARDWARE_FIELDS.insert(4, "talk_format")
class OpenHardwareProposalForm(MiniconfSessionProposalForm):
def __init__(self, *a, **k):
super(OpenHardwareProposalForm, self).__init__(*a, **k)
self.fields['talk_format'].required = True
class Meta:
model = models.OpenHardwareProposal
fields = HARDWARE_FIELDS
class SysAdminProposalForm(MiniconfSessionProposalForm):
class Meta:
model = models.SysAdminProposal
fields = MINICONF_SESSION_FORMAT_FIELDS

View file

@ -1,125 +0,0 @@
# Generated by Django 2.2.24 on 2021-08-09 10:26
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('proposals', '0003_auto_20170702_2227'),
]
operations = [
migrations.CreateModel(
name='SessionProposal',
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=[(4, 'Developer'), (3, 'Community'), (1, 'End User'), (2, 'Business')], help_text='Who is the target audience for your session?')),
('recording_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, on YouTube under the standard YouTube licence, and on other platforms under the <a href='https://creativecommons.org/licenses/by-sa/3.0/au/deed.en'> Creative Commons Attribution-Share Alike Australia 3.0 Licence</a>")),
('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 <a href='https://creativecommons.org/licenses/by-sa/3.0/au/deed.en'> Creative Commons Attribution-Share Alike Australia 3.0 Licence</a>")),
('primary_topic', models.IntegerField(choices=[(1, 'Software'), (2, 'Hardware'), (3, 'Firmware'), (4, 'Linux Kernel'), (5, 'Documentation'), (6, 'Community'), (7, 'Security'), (8, 'Deployment & Operations'), (9, 'Other')], help_text='What is the primary topic area for your session?')),
('experience_level', models.IntegerField(choices=[(1, 'Beginner'), (2, 'Intermediate'), (3, 'Advanced')], help_text='What level of experience will your session be pitched at?')),
('require_approval', models.BooleanField(default=False, help_text='Do you require further approval from your employer or institution before you can confirm your availability to present?')),
],
options={
'abstract': False,
},
bases=('symposion_proposals.proposalbase',),
),
migrations.RemoveField(
model_name='talkproposal',
name='materials_release',
),
migrations.RemoveField(
model_name='talkproposal',
name='proposalbase_ptr',
),
migrations.RemoveField(
model_name='talkproposal',
name='recording_release',
),
migrations.RemoveField(
model_name='talkproposal',
name='target_audience',
),
migrations.RemoveField(
model_name='tutorialproposal',
name='materials_release',
),
migrations.RemoveField(
model_name='tutorialproposal',
name='proposalbase_ptr',
),
migrations.RemoveField(
model_name='tutorialproposal',
name='recording_release',
),
migrations.RemoveField(
model_name='tutorialproposal',
name='target_audience',
),
migrations.AlterField(
model_name='miniconfproposal',
name='recording_release',
field=models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, on YouTube under the standard YouTube licence, and on other platforms under the <a href='https://creativecommons.org/licenses/by-sa/3.0/au/deed.en'> Creative Commons Attribution-Share Alike Australia 3.0 Licence</a>"),
),
migrations.AlterField(
model_name='miniconfproposal',
name='target_audience',
field=models.IntegerField(choices=[(4, 'Developer'), (3, 'Community'), (1, 'End User'), (2, 'Business')], default=4),
),
migrations.CreateModel(
name='GlamCommunityProposal',
fields=[
('sessionproposal_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='proposals.SessionProposal')),
],
options={
'verbose_name': 'GO GLAM Miniconf Proposal',
},
bases=('proposals.sessionproposal',),
),
migrations.CreateModel(
name='KernelProposal',
fields=[
('sessionproposal_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='proposals.SessionProposal')),
],
options={
'verbose_name': 'Kernel Miniconf Proposal',
},
bases=('proposals.sessionproposal',),
),
migrations.CreateModel(
name='OpenHardwareProposal',
fields=[
('sessionproposal_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='proposals.SessionProposal')),
('talk_format', models.IntegerField(choices=[(1, 'Presentation'), (2, 'Tutorial'), (3, 'Hands-on')], default=1, help_text='Will your session be a presentation, tutorial or hands-on (e.g how to use KiCAD or some other tooling)?')),
],
options={
'verbose_name': 'Open Hardware Miniconf Proposal',
},
bases=('proposals.sessionproposal',),
),
migrations.CreateModel(
name='SysAdminProposal',
fields=[
('sessionproposal_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='proposals.SessionProposal')),
],
options={
'verbose_name': 'System Administration Miniconf Proposal',
},
bases=('proposals.sessionproposal',),
),
migrations.AddField(
model_name='talkproposal',
name='sessionproposal_ptr',
field=models.OneToOneField(auto_created=True, default=0, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='proposals.SessionProposal'),
preserve_default=False,
),
migrations.AddField(
model_name='tutorialproposal',
name='sessionproposal_ptr',
field=models.OneToOneField(auto_created=True, default=0, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='proposals.SessionProposal'),
preserve_default=False,
),
]

View file

@ -0,0 +1,89 @@
# Generated by Django 2.2.28 on 2022-12-07 14:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('symposion_schedule', '0008_auto_20190122_0815'),
('symposion_reviews', '0001_initial'),
('symposion_proposals', '0003_auto_20170702_2250'),
('proposals', '0003_auto_20170702_2227'),
]
operations = [
migrations.AddField(
model_name='talkproposal',
name='content_warning',
field=models.TextField(blank=True, help_text='This will be shown on the schedule to give attendees advanced warning of topics covered in the session. ', verbose_name='Content Warning'),
),
migrations.AddField(
model_name='talkproposal',
name='content_warning_html',
field=models.TextField(blank=True),
),
migrations.AddField(
model_name='talkproposal',
name='experience_level',
field=models.IntegerField(choices=[(1, 'Beginner'), (2, 'Intermediate'), (3, 'Advanced')], help_text='What level of experience will your session be pitched at?'),
),
migrations.AddField(
model_name='talkproposal',
name='primary_topic',
field=models.IntegerField(choices=[(1, 'Linux'), (2, 'Software'), (3, 'Hardware'), (4, 'Firmware'), (5, 'System Administration / Operations'), (6, 'Security'), (7, 'Documentation'), (8, 'Community'), (9, 'Science & Data'), (10, 'Galleries, Libraries, Archives & Museums (GLAM)'), (11, 'Multimedia'), (12, 'Aerospace / UAV'), (13, 'Agriculture'), (14, 'Other')], help_text='What is the primary topic area for your session?'),
),
migrations.AddField(
model_name='talkproposal',
name='require_approval',
field=models.BooleanField(default=False, help_text='Do you require further approval from your employer or institution before you can confirm your availability to present?'),
),
migrations.AddField(
model_name='tutorialproposal',
name='content_warning',
field=models.TextField(blank=True, help_text='This will be shown on the schedule to give attendees advanced warning of topics covered in the session. ', verbose_name='Content Warning'),
),
migrations.AddField(
model_name='tutorialproposal',
name='content_warning_html',
field=models.TextField(blank=True),
),
migrations.AddField(
model_name='tutorialproposal',
name='experience_level',
field=models.IntegerField(choices=[(1, 'Beginner'), (2, 'Intermediate'), (3, 'Advanced')], help_text='What level of experience will your session be pitched at?'),
),
migrations.AddField(
model_name='tutorialproposal',
name='primary_topic',
field=models.IntegerField(choices=[(1, 'Linux'), (2, 'Software'), (3, 'Hardware'), (4, 'Firmware'), (5, 'System Administration / Operations'), (6, 'Security'), (7, 'Documentation'), (8, 'Community'), (9, 'Science & Data'), (10, 'Galleries, Libraries, Archives & Museums (GLAM)'), (11, 'Multimedia'), (12, 'Aerospace / UAV'), (13, 'Agriculture'), (14, 'Other')], help_text='What is the primary topic area for your session?'),
),
migrations.AddField(
model_name='tutorialproposal',
name='require_approval',
field=models.BooleanField(default=False, help_text='Do you require further approval from your employer or institution before you can confirm your availability to present?'),
),
migrations.AlterField(
model_name='talkproposal',
name='recording_release',
field=models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, on YouTube under the standard YouTube licence, and on other platforms under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/'> CC BY-NC-SA 4.0</a>) licence."),
),
migrations.AlterField(
model_name='talkproposal',
name='target_audience',
field=models.IntegerField(choices=[(4, 'Developer'), (3, 'Community'), (1, 'End User'), (2, 'Business')], help_text='Who is the target audience for your session?'),
),
migrations.AlterField(
model_name='tutorialproposal',
name='recording_release',
field=models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, on YouTube under the standard YouTube licence, and on other platforms under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/'> CC BY-NC-SA 4.0</a>) licence."),
),
migrations.AlterField(
model_name='tutorialproposal',
name='target_audience',
field=models.IntegerField(choices=[(4, 'Developer'), (3, 'Community'), (1, 'End User'), (2, 'Business')], help_text='Who is the target audience for your session?'),
),
migrations.DeleteModel(
name='MiniconfProposal',
),
]

View file

@ -1,6 +1,8 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _
from symposion.proposals.models import ProposalBase
from symposion.text_parser import parse
class Proposal(ProposalBase):
@ -17,6 +19,48 @@ class Proposal(ProposalBase):
(TARGET_BUSINESS, "Business"),
]
TOPIC_LINUX = 1
TOPIC_SOFTWARE = 2
TOPIC_HARDWARE = 3
TOPIC_FIRMWARE = 4
TOPIC_SYSADMIN = 5
TOPIC_SECURITY = 6
TOPIC_DOCUMENTATION = 7
TOPIC_COMMUNITY = 8
TOPIC_SCIENCE = 9
TOPIC_GLAM = 10
TOPIC_MULTIMEDIA = 11
TOPIC_AEROSPACE = 12
TOPIC_AGRICULTURE = 13
TOPIC_OTHER = 14
PROPOSAL_TOPIC = [
(TOPIC_LINUX, "Linux"),
(TOPIC_SOFTWARE, "Software"),
(TOPIC_HARDWARE, "Hardware"),
(TOPIC_FIRMWARE, "Firmware"),
(TOPIC_SYSADMIN, "System Administration / Operations"),
(TOPIC_SECURITY, "Security"),
(TOPIC_DOCUMENTATION, "Documentation"),
(TOPIC_COMMUNITY, "Community"),
(TOPIC_SCIENCE, "Science & Data"),
(TOPIC_GLAM, "Galleries, Libraries, Archives & Museums (GLAM)"),
(TOPIC_MULTIMEDIA, "Multimedia"),
(TOPIC_AEROSPACE, "Aerospace / UAV"),
(TOPIC_AGRICULTURE, "Agriculture"),
(TOPIC_OTHER, "Other"),
]
LEVEL_BEGINNER = 1
LEVEL_INTERMEDIATE = 2
LEVEL_ADVANCED = 3
EXPERIENCE_LEVEL = [
(LEVEL_BEGINNER, "Beginner"),
(LEVEL_INTERMEDIATE, "Intermediate"),
(LEVEL_ADVANCED, "Advanced"),
]
target_audience = models.IntegerField(
choices=TARGET_AUDIENCES,
help_text="Who is the target audience for your session?",
@ -41,50 +85,6 @@ class Proposal(ProposalBase):
"Creative Commons Attribution-Share Alike Australia 3.0 Licence</a>"
)
class Meta:
abstract = True
class SessionProposal(Proposal):
"""
Base Session Proposal
This is not a meta class as we want a single table to store the common
data across all session proposal types.
"""
TOPIC_SOFTWARE = 1
TOPIC_HARDWARE = 2
TOPIC_FIRMWARE = 3
TOPIC_KERNEL = 4
TOPIC_DOCUMENTATION = 5
TOPIC_COMMUNITY = 6
TOPIC_SECURITY = 7
TOPIC_OPERATIONS = 8
TOPIC_OTHER = 9
PROPOSAL_TOPIC = [
(TOPIC_SOFTWARE, "Software"),
(TOPIC_HARDWARE, "Hardware"),
(TOPIC_FIRMWARE, "Firmware"),
(TOPIC_KERNEL, "Linux Kernel"),
(TOPIC_DOCUMENTATION, "Documentation"),
(TOPIC_COMMUNITY, "Community"),
(TOPIC_SECURITY, "Security"),
(TOPIC_OPERATIONS, "Deployment & Operations"),
(TOPIC_OTHER, "Other"),
]
LEVEL_BEGINNER = 1
LEVEL_INTERMEDIATE = 2
LEVEL_ADVANCED = 3
EXPERIENCE_LEVEL = [
(LEVEL_BEGINNER, "Beginner"),
(LEVEL_INTERMEDIATE, "Intermediate"),
(LEVEL_ADVANCED, "Advanced"),
]
primary_topic = models.IntegerField(
choices=PROPOSAL_TOPIC,
help_text="What is the primary topic area for your session?"
@ -101,79 +101,29 @@ class SessionProposal(Proposal):
"institution before you can confirm your availability to present?"
)
content_warning = models.TextField(
"Content Warning",
help_text=_("This will be shown on the schedule to give attendees "
"advanced warning of topics covered in the session. "),
blank=True,
)
content_warning_html = models.TextField(blank=True)
class TalkProposal(SessionProposal):
class Meta:
abstract = True
def save(self, *args, **kwargs):
self.content_warning_html = parse(self.content_warning)
return super(Proposal, self).save(*args, **kwargs)
class TalkProposal(Proposal):
class Meta:
verbose_name = "talk proposal"
class TutorialProposal(SessionProposal):
class TutorialProposal(Proposal):
class Meta:
verbose_name = "tutorial proposal"
class MiniconfProposal(Proposal):
"""
Miniconf Proposal
Note that this is just a Proposal, not a SessionProposal, as it does not
require a number of fields that the others use.
"""
target_audience = models.IntegerField(choices=Proposal.TARGET_AUDIENCES,
default=Proposal.TARGET_DEVELOPER)
class Meta:
verbose_name = "miniconf proposal"
class MiniconfSessionProposal(SessionProposal):
"""
Base Miniconf Session Proposal
"""
class Meta:
abstract = True
class GlamCommunityProposal(MiniconfSessionProposal):
class Meta:
verbose_name = "GO GLAM Miniconf Proposal"
class KernelProposal(MiniconfSessionProposal):
class Meta:
verbose_name = "Kernel Miniconf Proposal"
class OpenHardwareProposal(MiniconfSessionProposal):
FORMAT_PRESENTATION = 1
FORMAT_TUTORIAL = 2
FORMAT_HANDS_ON = 3
TALK_FORMATS = [
(FORMAT_PRESENTATION, "Presentation"),
(FORMAT_TUTORIAL, "Tutorial"),
(FORMAT_HANDS_ON, "Hands-on"),
]
talk_format = models.IntegerField(
choices=TALK_FORMATS,
default=FORMAT_PRESENTATION,
help_text="Will your session be a presentation, tutorial or hands-on "
"(e.g how to use KiCAD or some other tooling)?"
)
class Meta:
verbose_name = "Open Hardware Miniconf Proposal"
class SysAdminProposal(MiniconfSessionProposal):
class Meta:
verbose_name = "System Administration Miniconf Proposal"

View file

@ -25,6 +25,7 @@ class ProfileForm(forms.ModelForm):
exclude = [
'attendee',
'children',
'lca_announce',
'lca_chat',
'future_conference',
]

View file

@ -127,7 +127,7 @@ class Command(BaseCommand):
# ("name",),
# name="Shirt",
# description="Commemorative conference shirts, featuring the "
# f"linux.conf.au {settings.LCA_START.year} artwork. "
# f"linux.conf.au {settings.CONF_START.year} artwork. "
# "View the <a href=\"/attend/shirts/\">"
# "sizing guide</a>.",
# required=False,

View file

@ -8,28 +8,29 @@ import django_countries.fields
_PAST_EVENTS = (
(1999, "1999 Melbourne (CALU)"),
(2001, "2001 Sydney"),
(2002, "2002 Brisbane"),
(2003, "2003 Perth"),
(2004, "2004 Adelaide"),
(2005, "2005 Canberra"),
(2006, "2006 Dunedin"),
(2007, "2007 Sydney"),
(2008, "2008 Melbourne"),
(2009, "2009 Hobart"),
(2010, "2010 Wellington"),
(2011, "2011 Brisbane"),
(2012, "2012 Ballarat"),
(2013, "2013 Canberra"),
(2014, "2014 Perth"),
(2015, "2015 Auckland"),
(2016, "2016 Geelong"),
(2017, "2017 Hobart"),
(2018, "2018 Sydney"),
(2019, "2019 Christchurch"),
(2020, "2020 Gold Coast"),
(2021, "2021 Online"),
(1999, "CALU 1999 Melbourne"),
(2001, "LCA2001 Sydney"),
(2002, "LCA2002 Brisbane"),
(2003, "LCA2003 Perth"),
(2004, "LCA2004 Adelaide"),
(2005, "LCA2005 Canberra"),
(2006, "LCA2006 Dunedin"),
(2007, "LCA2007 Sydney"),
(2008, "LCA2008 Melbourne"),
(2009, "LCA2009 Hobart"),
(2010, "LCA2010 Wellington"),
(2011, "LCA2011 Brisbane"),
(2012, "LCA2012 Ballarat"),
(2013, "LCA2013 Canberra"),
(2014, "LCA2014 Perth"),
(2015, "LCA2015 Auckland"),
(2016, "LCA2016 Geelong"),
(2017, "LCA2017 Hobart"),
(2018, "LCA2018 Sydney"),
(2019, "LCA2019 Christchurch"),
(2020, "LCA2020 Gold Coast"),
(2021, "LCA2021 Online"),
(2022, "LCA2022 Online"),
)

View file

@ -0,0 +1,38 @@
# Generated by Django 2.2.28 on 2022-12-07 14:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('pinaxcon_registrasion', '0014_auto_20201123_2319'),
]
operations = [
migrations.AlterField(
model_name='attendeeprofile',
name='address_line_1',
field=models.CharField(blank=True, help_text='This address, if provided, will appear on your invoices. It is also where we will ship your Open Hardware Kit if you are allocated one.', max_length=1024, verbose_name='Address line 1'),
),
migrations.AlterField(
model_name='attendeeprofile',
name='children',
field=models.CharField(blank=True, help_text="Everything Open is a family friendly conference and provides free child-care for pre-school children from 6 months up to 5 years. We hope to also provide a programme for older children and will let you know closer to the conference. If you're wanting to bring your children, please let us know their age(s) so we can ensure we have enough spaces available.", max_length=256, verbose_name='Child Ages and Information'),
),
migrations.AlterField(
model_name='attendeeprofile',
name='lca_chat',
field=models.BooleanField(blank=True, default=False, help_text='lca-chat is a high-traffic mailing list used by attendees during the week of the conference for general discussion.', verbose_name='Subscribe to the chat mailing list'),
),
migrations.AlterField(
model_name='attendeeprofile',
name='of_legal_age',
field=models.BooleanField(blank=True, help_text='Being under 18 will not stop you from attending the conference. We need to know whether you are over 18 to allow us to cater for you at venues that serve alcohol.', verbose_name='Are you over 18?'),
),
migrations.AlterField(
model_name='attendeeprofile',
name='past_lca',
field=models.ManyToManyField(blank=True, to='pinaxcon_registrasion.PastEvent', verbose_name='Which past events have you attended?'),
),
]

View file

@ -173,11 +173,11 @@ class AttendeeProfile(rego.AttendeeProfileBase):
children = models.CharField(
verbose_name="Child Ages and Information",
max_length=256,
help_text="Linux.conf.au is a family friendly conference and provides "
help_text="Everything Open is a family friendly conference and provides "
"free child-care for pre-school children from 6 months up to 5 years. We "
"hope to also provide a programme for older children and will let you "
"know closer to the conference. If you're wanting to bring your children "
"to LCA, please let us know their age(s) so we can ensure we have "
"know closer to the conference. If you're wanting to bring your children, "
"please let us know their age(s) so we can ensure we have "
"enough spaces available.",
blank=True
)
@ -198,7 +198,7 @@ class AttendeeProfile(rego.AttendeeProfileBase):
)
lca_chat = models.BooleanField(
verbose_name="Subscribe to the LCA chat list",
verbose_name="Subscribe to the chat mailing list",
help_text="lca-chat is a high-traffic mailing list used by "
"attendees during the week of the conference for general "
"discussion.",
@ -217,7 +217,7 @@ class AttendeeProfile(rego.AttendeeProfileBase):
past_lca = models.ManyToManyField(
PastEvent,
verbose_name="Which past linux.conf.au events have you attended?",
verbose_name="Which past events have you attended?",
blank=True,
)

View file

@ -363,14 +363,8 @@ CONFERENCE_ID = 1
PROPOSAL_FORMS = {
"talk": "pinaxcon.proposals.forms.TalkProposalForm",
"tutorial": "pinaxcon.proposals.forms.TutorialProposalForm",
"miniconf": "pinaxcon.proposals.forms.MiniconfProposalForm",
### LCA2022 Miniconfs
"glam-community-miniconf": "pinaxcon.proposals.forms.GlamCommunityProposalForm",
"kernel-miniconf": "pinaxcon.proposals.forms.KernelProposalForm",
"open-hardware-miniconf": "pinaxcon.proposals.forms.OpenHardwareProposalForm",
"sysadmin-miniconf": "pinaxcon.proposals.forms.SysAdminProposalForm",
}
MAIN_CONFERENCE_PROPOSAL_KINDS = ("Talk", "Miniconf")
MAIN_CONFERENCE_PROPOSAL_KINDS = ("Talk",)
# Registrasion bits:
ATTENDEE_PROFILE_MODEL = "pinaxcon.registrasion.models.AttendeeProfile"
@ -455,7 +449,7 @@ SETTINGS_EXPORT = [
'DEBUG',
'ANALYTICS_KEY',
'TIME_ZONE',
'LCA_START',
'CONF_START',
'CONFERENCE_EMAIL',
]
@ -518,17 +512,17 @@ class PenguinDinnerCat(Category):
return t
CONFERENCE_NAME = os.environ.get('CONFERENCE_NAME', 'linux.conf.au')
CONFERENCE_NAME_SHORT = os.environ.get('CONFERENCE_NAME_SHORT', 'LCA')
CONFERENCE_NAME = os.environ.get('CONFERENCE_NAME', 'Everything Open')
CONFERENCE_NAME_SHORT = os.environ.get('CONFERENCE_NAME_SHORT', 'EO')
CONFERENCE_EMAIL = os.environ.get('CONFERENCE_EMAIL', DEFAULT_FROM_EMAIL)
LCA_TZINFO = pytz.timezone(TIME_ZONE)
LCA_START = LCA_TZINFO.localize(datetime(2022, 1, 14))
LCA_END = LCA_TZINFO.localize(datetime(2022, 1, 16))
LCA_MINICONF_END = LCA_TZINFO.localize(datetime(2022, 1, 14, 23, 59))
EARLY_BIRD_DEADLINE = LCA_TZINFO.localize(datetime(2022, 12, 1))
PENGUIN_DINNER_TICKET_DATE = date(2022, 1, 14)
SPEAKER_DINNER_TICKET_DATE = date(2022, 1, 15)
PDNS_TICKET_DATE = date(2022, 1, 16)
CONF_TZINFO = pytz.timezone(TIME_ZONE)
CONF_START = CONF_TZINFO.localize(datetime(2023, 3, 14))
CONF_END = CONF_TZINFO.localize(datetime(2023, 3, 16))
CONF_MINICONF_END = CONF_TZINFO.localize(datetime(2023, 3, 14, 23, 59))
EARLY_BIRD_DEADLINE = CONF_TZINFO.localize(datetime(2023, 1, 28))
PENGUIN_DINNER_TICKET_DATE = date(2023, 3, 15)
SPEAKER_DINNER_TICKET_DATE = date(2023, 3, 14)
PDNS_TICKET_DATE = date(2023, 3, 16)
TSHIRT_PRICE = Decimal("25.00")

View file

@ -1,10 +1,10 @@
{% load sitetree %}
{% load static %}
<nav class="navbar navbar-expand-lg navbar-light bg-blaze">
<nav class="navbar navbar-expand-lg navbar-light bg-dawn-sea">
<div class="container">
<a class="navbar-brand" href="/">
<img src="{% static 'lca/lca2022.svg' %}" alt="linux.conf.au 2022 logo" height="56px">
<img src="{% static 'img/eo2023.svg' %}" alt="Everything Open 2023 logo" height="56px">
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">

View file

@ -97,7 +97,7 @@
<path d="M265.49,393.87l2.88,1.92a8.4,8.4,0,0,1-7,3.75,8.26,8.26,0,0,1-8.38-8.45c0-5,3.61-8.45,8-8.45s6.53,3.49,7.23,5.38l.39,1-11.3,4.67a4.3,4.3,0,0,0,4.1,2.56A4.82,4.82,0,0,0,265.49,393.87Zm-8.87-3,7.56-3.13a3.28,3.28,0,0,0-3.14-1.79A4.63,4.63,0,0,0,256.62,390.83Z" fill="#ea4535"/>
<rect x="160.95" y="373.04" width="112" height="36" fill="none"/>
<text transform="translate(84.43 102.23)" font-size="15" fill="#231f20" font-family="SourceSansPro-Regular, Source Sans Pro">Janua<tspan x="38.69" y="0" letter-spacing="0.02em">r</tspan>
<tspan x="44.26" y="0">y 14 - 16 2022</tspan>
<tspan x="44.26" y="0">y 14 - 16 2023</tspan>
</text>
<g id="Layer_2" data-name="Layer 2">
<g id="emperor">

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 117 KiB

View file

@ -21,13 +21,13 @@
<!-- Cards -->
<meta property="og:title" content="{{ head_title }}">
<meta property="og:description" content="linux.conf.au 2022 - Jan 14-16 2022, Online, Worldwide" />
<meta property="og:description" content="Everything Open 2023 - March 14-16 2023, Melbourne, Australia" />
<meta property="og:url" content="{{ request.scheme }}://{{ request.get_host }}{{ request.path }}">
<meta name="twitter:site" content="@linuxconfau">
<meta name="twitter:site" content="@_everythingopen">
<meta name="twitter:image:alt" content="{{ head_title }}" />
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="{{ request.scheme }}://{{ request.get_host }}/media/img/card/lca_badge.1ef714c1.png" />
<meta property="og:image" content="{{ request.scheme }}://{{ request.get_host }}/media/img/card/lca_badge.1ef714c1.png" />
<meta name="twitter:image" content="{{ request.scheme }}://{{ request.get_host }}/media/img/card/eo-badge.ba30d338.png" />
<meta property="og:image" content="{{ request.scheme }}://{{ request.get_host }}/media/img/card/eo-badge.ba30d338.png" />
<meta property="og:image:width" content="400" />
<meta property="og:image:height" content="400" />
@ -121,21 +121,26 @@
<div class="container py-4">
<div class="row">
<div class="col-md-4 pb-4">
<strong>linux.conf.au 2022</strong> <br>
Jan 14-16 2022 <br>
Online, Worldwide <br>
<a href="mailto:{{ settings.CONFERENCE_EMAIL }}" alt="Email"><i class="far fa-envelope"></i></a>&nbsp;&nbsp;
<a href="https://twitter.com/linuxconfau" alt="Twitter"><i class="fab fa-twitter"></i></a>&nbsp;&nbsp;
<a href="https://www.facebook.com/linuxconferenceaustralia/" alt="Facebook"><i class="fab fa-facebook"></i></a>
<strong>Everything Open 2023</strong> <br>
March 14-16 2023 <br>
Naarm (Melbourne), Australia <br>
Timezone: AEDT - UTC+11 <br>
<a href="mailto:contact@everythingopen.au" alt="Email"><i class="bi-envelope-fill"></i></a>&nbsp;&nbsp;<a
href="https://twitter.com/_everythingopen" alt="Twitter"><i class="bi-twitter"></i></a>&nbsp;&nbsp;<a
href="https://www.linkedin.com/showcase/everythingopen/" alt="LinkedIn"><i class="bi-linkedin"></i></a>
<a href="mailto:{{ settings.CONFERENCE_EMAIL }}" alt="Email"><i class="far fa-envelope"></i></a>&nbsp;&nbsp;<a
href="https://twitter.com/_everythingopen" alt="Twitter"><i class="fab fa-twitter"></i></a>&nbsp;&nbsp;<a
href="https://www.facebook.com/linuxconferenceaustralia/" alt="Facebook"><i class="fab fa-facebook"></i></a>&nbsp;&nbsp;<a
href="https://www.linkedin.com/showcase/everythingopen/" alt="LinkedIn"><i class="fab fa-linkedin"></i></a>
</div>
<div class="col-md-4 pb-4 text-center">
<img src="{% static 'lca/lca_horiz_colour.svg' %}" alt="linux.conf.au logo" class="footer-logo">
<a href="https://linux.org.au"><img src="{% static 'lca/la_logo.svg' %}" alt="Linux Australia logo" class="footer-image"></a>
<a href="https://linux.org.au"><img src="{% static 'img/la_logo.svg' %}" alt="Linux Australia logo" class="footer-image"></a>
</div>
<div class="col-md-4 pb-4 text-right">
<small>
<a href="#">Back to top</a><br>
&copy; 2021 linux.conf.au and <a href="http://linux.org.au/">Linux Australia</a><br>
&copy; 2022 Everything Open and <a href="http://linux.org.au/">Linux Australia</a><br>
Linux is a registered trademark of Linus Torvalds <br>
<a href="/colophon/">Colophon</a>
</small>

View file

@ -72,7 +72,7 @@
<h3>Account Management</h3>
<p>If you would like to change your registered email address or password, you can use our self-service account management portal</p>
<div>
<a class="btn btn-primary" role="button" href="https://login.linux.conf.au/manage/">Account Management</a>
<a class="btn btn-primary" role="button" href="https://login.everythingopen.au/manage/">Account Management</a>
</div>
</div>
</div>

View file

@ -111,6 +111,17 @@
</div>
</div>
<div class="row">
<label class="list-label col-md-2">Content Warning</label>
<div class="col-md-10">
{% if proposal.content_warning_html %}
<div class="content_warning monospace-text">{{ proposal.content_warning_html|safe }}</div>
{% else %}
<div class="content_warning monospace-text"><b>No Content Warning Provided</b></div>
{% endif %}
</div>
</div>
<div class="row">
<label class="list-label col-md-2">Project</label>
<div class="col-md-10">

View file

@ -46,7 +46,7 @@
<span class="clearfix d-sm-block d-md-none"></span>
<small class="text-muted">{{ timetable.day.date|date:"l" }}, {{ timetable.day.date }}</small>
</h2>
<p class="timezone-info small">Conference times are in {{ settings.LCA_START|date:'T' }} (UTC{{ settings.LCA_START|date:'O' }}). <span class="d-print-none">Current talks will be highlighted.</span></p>
<p class="timezone-info small">Conference times are in {{ settings.CONF_START|date:'T' }} (UTC{{ settings.CONF_START|date:'O' }}). <span class="d-print-none">Current talks will be highlighted.</span></p>
<div class="table-responsive d-none d-md-block">
{% include "symposion/schedule/_grid.html" %}
</div>

View file

@ -16,7 +16,7 @@
<h2 class="my-4">
{{ timetable.day.date|date:"l" }}, {{ timetable.day.date }}
</h2>
<p class="timezone-info small">Conference times are in {{ settings.LCA_START|date:'T' }} (UTC{{ settings.LCA_START|date:'O' }}). <span class="d-print-none">Current talks will be highlighted.</span></p>
<p class="timezone-info small">Conference times are in {{ settings.CONF_START|date:'T' }} (UTC{{ settings.CONF_START|date:'O' }}). <span class="d-print-none">Current talks will be highlighted.</span></p>
<div class="table-responsive d-none d-md-block">
{% include "symposion/schedule/_grid.html" %}
</div>

View file

@ -24,7 +24,7 @@
<h2 class="my-4">
{{ timetable.day.date|date:"l" }}, {{ timetable.day.date }}
</h2>
<p class="timezone-info small">Conference times are in {{ settings.LCA_START|date:'T' }} (UTC{{ settings.LCA_START|date:'O' }}). <span class="d-print-none">Current talks will be highlighted.</span></p>
<p class="timezone-info small">Conference times are in {{ settings.CONF_START|date:'T' }} (UTC{{ settings.CONF_START|date:'O' }}). <span class="d-print-none">Current talks will be highlighted.</span></p>
<div class="table-responsive d-none d-md-block">
{% include "symposion/schedule/_grid.html" with edit_schedule=True %}
</div>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.7 KiB

View file

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -1 +0,0 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="220" height="56" viewBox="0 0 220 56"><path d="M41.76,48.41a7.82,7.82,0,0,1-2.94-2.88,8.29,8.29,0,0,1,0-8.15,7.82,7.82,0,0,1,2.94-2.88,8.45,8.45,0,0,1,4.2-1,8.54,8.54,0,0,1,4.19,1,7.62,7.62,0,0,1,2.94,2.86,8.41,8.41,0,0,1,0,8.21,7.62,7.62,0,0,1-2.94,2.86,8.54,8.54,0,0,1-4.19,1A8.45,8.45,0,0,1,41.76,48.41Zm7.78-.91A6.65,6.65,0,0,0,52.06,45a7.22,7.22,0,0,0,0-7.09,6.65,6.65,0,0,0-2.52-2.5,7.18,7.18,0,0,0-3.58-.9,7.26,7.26,0,0,0-3.6.9,6.67,6.67,0,0,0-2.53,2.5,7.22,7.22,0,0,0,0,7.09,6.67,6.67,0,0,0,2.53,2.5,7.26,7.26,0,0,0,3.6.9A7.18,7.18,0,0,0,49.54,47.5Z" fill="#fff"/><path d="M71,33.57V49.34h-1L59.3,35.64v13.7H58.15V33.57h1l10.73,13.7V33.57Z" fill="#fff"/><path d="M76.49,33.57h1.15V48.31h9.09v1H76.49Z" fill="#fff"/><path d="M89.68,33.57h1.15V49.34H89.68Z" fill="#fff"/><path d="M109.17,33.57V49.34h-.94L97.48,35.64v13.7H96.33V33.57h1L108,47.27V33.57Z" fill="#fff"/><path d="M125.56,48.31v1H114.67V33.57h10.55v1h-9.4v6.22h8.41v1h-8.41v6.47Z" fill="#fff"/><path d="M142.82,47.75v1.4H132V48l6.4-6.27a8,8,0,0,0,1.64-2,3.89,3.89,0,0,0,.43-1.75,2.61,2.61,0,0,0-.93-2.13,4.21,4.21,0,0,0-2.68-.76,5.3,5.3,0,0,0-4.2,1.72l-1.12-1a6,6,0,0,1,2.3-1.63,8.28,8.28,0,0,1,3.16-.57,5.75,5.75,0,0,1,3.72,1.11,3.71,3.71,0,0,1,1.38,3.05,5.26,5.26,0,0,1-.53,2.29,9.59,9.59,0,0,1-2,2.53l-5.24,5.15Z" fill="#231f20"/><path d="M147.67,48.34a6.2,6.2,0,0,1-2.17-2.72,10.28,10.28,0,0,1-.78-4.17,10.26,10.26,0,0,1,.78-4.16,6.14,6.14,0,0,1,2.17-2.72,5.8,5.8,0,0,1,6.36,0,6.25,6.25,0,0,1,2.19,2.72,10.09,10.09,0,0,1,.79,4.16,10.11,10.11,0,0,1-.79,4.17A6.31,6.31,0,0,1,154,48.34a5.8,5.8,0,0,1-6.36,0Zm5.55-1.25a4.86,4.86,0,0,0,1.59-2.18,9.34,9.34,0,0,0,.58-3.46,9.32,9.32,0,0,0-.58-3.45,4.86,4.86,0,0,0-1.59-2.18,4.1,4.1,0,0,0-4.73,0,4.88,4.88,0,0,0-1.6,2.18,9.33,9.33,0,0,0-.57,3.45,9.35,9.35,0,0,0,.57,3.46,4.88,4.88,0,0,0,1.6,2.18,4.15,4.15,0,0,0,4.73,0Z" fill="#231f20"/><path d="M169.75,47.75v1.4H159V48l6.4-6.27a8.25,8.25,0,0,0,1.64-2,3.89,3.89,0,0,0,.43-1.75,2.58,2.58,0,0,0-.94-2.13,4.16,4.16,0,0,0-2.67-.76,5.3,5.3,0,0,0-4.2,1.72l-1.12-1a6,6,0,0,1,2.3-1.63,8.26,8.26,0,0,1,3.15-.57,5.76,5.76,0,0,1,3.73,1.11,3.71,3.71,0,0,1,1.38,3.05,5.26,5.26,0,0,1-.53,2.29,9.59,9.59,0,0,1-2,2.53l-5.24,5.15Z" fill="#231f20"/><path d="M182.25,47.75v1.4h-10.8V48l6.4-6.27a8.49,8.49,0,0,0,1.64-2,4,4,0,0,0,.43-1.75,2.61,2.61,0,0,0-.94-2.13,4.16,4.16,0,0,0-2.67-.76,5.31,5.31,0,0,0-4.21,1.72l-1.12-1a6,6,0,0,1,2.3-1.63,8.32,8.32,0,0,1,3.16-.57,5.78,5.78,0,0,1,3.73,1.11,3.73,3.73,0,0,1,1.37,3.05,5.25,5.25,0,0,1-.52,2.29,9.67,9.67,0,0,1-2,2.53l-5.23,5.15Z" fill="#231f20"/><path d="M5.73,6.86H7.19V25.57H18.72v1.32h-13Z" fill="#fff"/><path d="M22.47,6.86h1.46v20H22.47Z" fill="#fff"/><path d="M47.22,6.86v20H46L32.37,9.5V26.89H30.91v-20h1.23l13.62,17.4V6.86Z" fill="#fff"/><path d="M56.13,24.83c-1.4-1.47-2.1-3.61-2.1-6.44V6.86h1.45V18.34a7.93,7.93,0,0,0,1.69,5.52,6.34,6.34,0,0,0,4.89,1.83,6.3,6.3,0,0,0,4.87-1.83,7.93,7.93,0,0,0,1.69-5.52V6.86h1.46V18.39c0,2.83-.71,5-2.12,6.44A7.82,7.82,0,0,1,62,27,7.77,7.77,0,0,1,56.13,24.83Z" fill="#fff"/><path d="M89.16,26.89l-6.9-9.27L75.4,26.89H73.68l7.7-10.33-7.16-9.7h1.72l6.38,8.62L88.7,6.86h1.63l-7.15,9.67,7.69,10.36Z" fill="#fff"/><path d="M97.41,25.72a9.78,9.78,0,0,1-3.72-3.64,10.14,10.14,0,0,1-1.36-5.2,10.17,10.17,0,0,1,1.36-5.21A9.75,9.75,0,0,1,97.41,8a10.7,10.7,0,0,1,5.31-1.32,11,11,0,0,1,4,.7,8.19,8.19,0,0,1,3.12,2.08l-.91.94a8.4,8.4,0,0,0-6.15-2.37A9.29,9.29,0,0,0,98.2,9.21,8.38,8.38,0,0,0,95,12.37a8.75,8.75,0,0,0-1.18,4.51A8.69,8.69,0,0,0,95,21.38a8.31,8.31,0,0,0,3.23,3.16,9.19,9.19,0,0,0,4.58,1.15,8.39,8.39,0,0,0,6.15-2.4l.91.94a8.37,8.37,0,0,1-3.13,2.09,10.88,10.88,0,0,1-4,.71A10.69,10.69,0,0,1,97.41,25.72Z" fill="#231f20"/><path d="M154.59,6.86v20h-1.2L139.74,9.5V26.89h-1.46v-20h1.23l13.62,17.4V6.86Z" fill="#231f20"/><path d="M163,8.18v8.55H173.7v1.32H163v8.84h-1.46v-20H175V8.18Z" fill="#231f20"/><path d="M191,21.25H179.42l-2.55,5.64H175.3l9.21-20H186l9.22,20h-1.58ZM190.49,20,185.23,8.47,180,20Z" fill="#fff"/><path d="M200.32,24.83c-1.4-1.47-2.1-3.61-2.1-6.44V6.86h1.46V18.34q0,3.69,1.68,5.52a7.42,7.42,0,0,0,9.76,0q1.69-1.83,1.69-5.52V6.86h1.46V18.39c0,2.83-.71,5-2.12,6.44a9.05,9.05,0,0,1-11.83,0Z" fill="#fff"/><path d="M125.89,6.87a9.71,9.71,0,0,0-5.21.07,10.53,10.53,0,0,0-2.87,1.33l1,1a8.54,8.54,0,0,1,6.67-1,8.84,8.84,0,0,1,4,2.36,8.73,8.73,0,0,1,2.36,4,8.39,8.39,0,0,1,0,4.5,9.08,9.08,0,0,1-2.41,4,9.08,9.08,0,0,1-4,2.42,8.33,8.33,0,0,1-4.51,0,8.73,8.73,0,0,1-4-2.36,8.84,8.84,0,0,1-2.36-4,8.52,8.52,0,0,1,0-4.51,8.67,8.67,0,0,1,1-2.18l-1-1a10.17,10.17,0,0,0-1.33,2.88,9.84,9.84,0,0,0-.06,5.22,10,10,0,0,0,2.7,4.63,10.21,10.21,0,0,0,4.62,2.7,9.84,9.84,0,0,0,5.22-.06,10.76,10.76,0,0,0,4.7-2.83,10.8,10.8,0,0,0,2.84-4.69,9.71,9.71,0,0,0,.07-5.21,10.18,10.18,0,0,0-2.72-4.64A10.13,10.13,0,0,0,125.89,6.87Z" fill="#231f20"/></svg>

Before

Width:  |  Height:  |  Size: 4.7 KiB

View file

@ -1 +0,0 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 345.6 46.8"><defs><style>.cls-1{fill:#00b1c5;}.cls-2{fill:#fff;}.cls-3{fill:#231f20;}</style></defs><title>linuxconfau</title><rect class="cls-1" width="345.6" height="46.8"/><path class="cls-2" d="M13.08,8.24h2.24V37H33.06v2h-20Z"/><path class="cls-2" d="M38.82,8.24h2.25V39.05H38.82Z"/><path class="cls-2" d="M76.9,8.24V39.05H75.05l-21-26.76V39.05H51.81V8.24H53.7L74.65,35V8.24Z"/><path class="cls-2" d="M90.61,35.88q-3.24-3.39-3.24-9.9V8.24h2.25V25.89c0,3.78.86,6.62,2.59,8.49s4.24,2.82,7.53,2.82,5.75-.94,7.48-2.82,2.6-4.71,2.6-8.49V8.24h2.25V26q0,6.51-3.26,9.9T99.7,39.27C95.79,39.27,92.77,38.14,90.61,35.88Z"/><path class="cls-2" d="M141.42,39.05l-10.6-14.26L120.25,39.05h-2.64l11.84-15.89-11-14.92h2.64l9.81,13.25,9.82-13.25h2.51l-11,14.88,11.84,15.93Z"/><path class="cls-3" d="M154.12,37.25a15,15,0,0,1-5.72-5.59,15.6,15.6,0,0,1-2.09-8,15.59,15.59,0,0,1,2.09-8A15,15,0,0,1,154.12,10a16.47,16.47,0,0,1,8.17-2,17.07,17.07,0,0,1,6.16,1.08,12.68,12.68,0,0,1,4.8,3.19l-1.41,1.45a12.92,12.92,0,0,0-9.46-3.65,14.32,14.32,0,0,0-7,1.76,12.83,12.83,0,0,0-5,4.86,13.57,13.57,0,0,0-1.81,6.93,13.58,13.58,0,0,0,1.81,6.94,12.83,12.83,0,0,0,5,4.86,14.32,14.32,0,0,0,7,1.76,12.9,12.9,0,0,0,9.46-3.7L173.25,35a13,13,0,0,1-4.82,3.21,17,17,0,0,1-6.14,1.1A16.47,16.47,0,0,1,154.12,37.25Z"/><path class="cls-3" d="M242.08,8.24V39.05h-1.84l-21-26.76V39.05H217V8.24h1.89l21,26.76V8.24Z"/><path class="cls-3" d="M255.07,10.26V23.42h16.42v2H255.07v13.6h-2.24V8.24h20.59v2Z"/><path class="cls-2" d="M298.16,30.38H280.29l-3.92,8.67H274L288.12,8.24h2.25l14.17,30.81h-2.42Zm-.84-1.89-8.1-17.79-8.05,17.79Z"/><path class="cls-2" d="M312.44,35.88q-3.22-3.39-3.23-9.9V8.24h2.24V25.89c0,3.78.87,6.62,2.6,8.49s4.24,2.82,7.53,2.82,5.75-.94,7.48-2.82,2.6-4.71,2.6-8.49V8.24h2.24V26q0,6.51-3.26,9.9t-9.11,3.39Q315.68,39.27,312.44,35.88Z"/><path class="cls-3" d="M197.94,8.24a15.06,15.06,0,0,0-8,.11,15.82,15.82,0,0,0-4.41,2.06L187,11.92a13.58,13.58,0,0,1,3.34-1.45,13,13,0,0,1,6.92-.05,14.24,14.24,0,0,1,9.81,9.81,12.9,12.9,0,0,1-.05,6.92,14,14,0,0,1-3.7,6.2,14.18,14.18,0,0,1-6.21,3.71,12.88,12.88,0,0,1-6.94.07,14.21,14.21,0,0,1-9.8-9.81,12.78,12.78,0,0,1,.06-6.94A13,13,0,0,1,181.92,17l-1.51-1.51a15.78,15.78,0,0,0-2,4.43,15,15,0,0,0-.09,8,15.49,15.49,0,0,0,4.15,7.11,15.48,15.48,0,0,0,7.12,4.15,15,15,0,0,0,8-.09,16.58,16.58,0,0,0,7.23-4.34,16.65,16.65,0,0,0,4.36-7.22,15,15,0,0,0,.11-8,15.6,15.6,0,0,0-4.19-7.14A15.63,15.63,0,0,0,197.94,8.24Z"/></svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 476.98 169.49"><defs><style>.cls-1{fill:#faa61a;}.cls-2{fill:#00b1c5;}</style></defs><title>LCA</title><g id="Layer_1" data-name="Layer 1"><path class="cls-1" d="M78.08,69.24h2.24V98H98.06v2h-20Z"/><path class="cls-1" d="M103.82,69.24h2.25v30.81h-2.25Z"/><path class="cls-1" d="M141.9,69.24v30.81h-1.85l-21-26.76v26.76h-2.24V69.24h1.89l21,26.76V69.24Z"/><path class="cls-1" d="M155.61,96.88q-3.24-3.39-3.24-9.9V69.24h2.25V86.89c0,3.78.86,6.62,2.59,8.49s4.24,2.82,7.53,2.82,5.75-.94,7.48-2.82,2.6-4.71,2.6-8.49V69.24h2.25V87q0,6.51-3.26,9.9t-9.11,3.39C160.79,100.27,157.77,99.14,155.61,96.88Z"/><path class="cls-1" d="M206.42,100.05l-10.6-14.26-10.57,14.26h-2.64l11.84-15.89-11-14.92h2.64l9.81,13.25,9.82-13.25h2.51l-11,14.88,11.84,15.93Z"/><path class="cls-2" d="M219.12,98.25a15,15,0,0,1-5.72-5.59,16.41,16.41,0,0,1,0-16A15,15,0,0,1,219.12,71a16.47,16.47,0,0,1,8.17-2,17.07,17.07,0,0,1,6.16,1.08,12.68,12.68,0,0,1,4.8,3.19l-1.41,1.45a12.92,12.92,0,0,0-9.46-3.65,14.32,14.32,0,0,0-7,1.76,12.83,12.83,0,0,0-5,4.86,14.19,14.19,0,0,0,0,13.87,12.83,12.83,0,0,0,5,4.86,14.32,14.32,0,0,0,7,1.76,12.9,12.9,0,0,0,9.46-3.7L238.25,96a13,13,0,0,1-4.82,3.21,17,17,0,0,1-6.14,1.1A16.47,16.47,0,0,1,219.12,98.25Z"/><path class="cls-2" d="M307.08,69.24v30.81h-1.84l-21-26.76v26.76H282V69.24h1.89L304.84,96V69.24Z"/><path class="cls-2" d="M320.07,71.26V84.42h16.42v2H320.07v13.6h-2.24V69.24h20.59v2Z"/><path class="cls-1" d="M363.16,91.38H345.29l-3.92,8.67H339l14.17-30.81h2.25l14.17,30.81h-2.42Zm-.84-1.89-8.1-17.79-8.05,17.79Z"/><path class="cls-1" d="M377.44,96.88q-3.22-3.39-3.23-9.9V69.24h2.24V86.89c0,3.78.87,6.62,2.6,8.49s4.24,2.82,7.53,2.82,5.75-.94,7.48-2.82,2.6-4.71,2.6-8.49V69.24h2.24V87q0,6.51-3.26,9.9t-9.11,3.39Q380.68,100.27,377.44,96.88Z"/><path class="cls-2" d="M262.94,69.24a15.06,15.06,0,0,0-8,.11,15.82,15.82,0,0,0-4.41,2.06L252,72.92a13.58,13.58,0,0,1,3.34-1.45,13,13,0,0,1,6.92,0,14.24,14.24,0,0,1,9.81,9.81,12.9,12.9,0,0,1,0,6.92,14,14,0,0,1-3.7,6.2,14.18,14.18,0,0,1-6.21,3.71,12.88,12.88,0,0,1-6.94.07,14.21,14.21,0,0,1-9.8-9.81,12.78,12.78,0,0,1,.06-6.94A13,13,0,0,1,246.92,78l-1.51-1.51a15.78,15.78,0,0,0-2,4.43,15,15,0,0,0-.09,8,16.18,16.18,0,0,0,11.27,11.26,15,15,0,0,0,8-.09,17.49,17.49,0,0,0,11.59-11.56,15,15,0,0,0,.11-8,16.43,16.43,0,0,0-11.33-11.33Z"/></g></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -219,10 +219,10 @@ class CheckIn(models.Model):
return ""
issued_at = datetime.datetime.utcnow()
expiry = settings.LCA_END + datetime.timedelta(days=1)
expiry = settings.CONF_END + datetime.timedelta(days=1)
if self.user.attendee.ticket_type == "Miniconf Only":
# Miniconf only ticket holders have limited access
expiry = settings.LCA_MINICONF_END
expiry = settings.CONF_MINICONF_END
payload = {
"iss": settings.VENUELESS_TOKEN_ISSUER,

View file

@ -36,7 +36,7 @@
<dt class="col-sm-3">Free Text 2</dt>
<dd class="col-sm-9">{{ user.attendee.attendeeprofilebase.attendeeprofile.free_text_2 }}</dd>
{% comment "Not needed for LCA2022 online" %}
{% comment "Not needed for EO2023" %}
<dt class="col-sm-3">Penguin Dinner Tickets</dt>
<dd class="col-sm-9">{{ penguin_dinner_count }}</dd>
@ -54,7 +54,7 @@
<dd class="col-sm-9">{{ user.username }}</dd>
</dl>
{% comment "Not needed for LCA2022 online" %}
{% comment "Not needed for EO2023" %}
<h4>Shirts ordered</h4>
<table class="table card-text">
{% for shirt in shirts%}
@ -128,7 +128,7 @@
</div>
</div>
{% comment "Not needed for LCA2022 online" %}
{% comment "Not needed for EO2023" %}
<div class="card {% if check_in.schwag_given %}border-success{% else %}border-danger{% endif %} my-3">
<div class="card-header {% if check_in.schwag_given %}text-white bg-success{% endif %}">Schwag</div>
<div class="card-body">
@ -155,7 +155,7 @@
</div>
</div>
{% comment "Not needed for LCA2022 online" %}
{% comment "Not needed for EO2023" %}
<div class="card my-3 {% if check_in.checked_in_bool and check_in.schwag_given %}border-success{% elif check_in.checked_in_bool or check_in.schwag_given %}card-warning{% else %}card-danger{% endif %}">
<div class="card-header {% if check_in.checked_in_bool and check_in.schwag_given %}text-white bg-success{% elif check_in.checked_in_bool or check_in.schwag_given %}bg-warning{% endif %}">Bulk actions</div>
<div class="card-body">

View file

@ -348,7 +348,7 @@ def _guided_registration_profile_and_voucher(request):
title="Profile and Personal Information",
form=profile_form,
description=("<div class=\"text-info\"><em>You can come back and edit these details any time before "
"January 1 2022.</em></div>"),
"March 10 2023.</em></div>"),
)
return [voucher_section, profile_section]

View file

@ -221,6 +221,7 @@ def make_speaker_dict(speaker, can_view_contact_details):
return {
'name': speaker.name,
'twitter': speaker.twitter_username,
'mastodon': speaker.mastodon_username,
'contact': speaker.email if can_view_contact_details else 'redacted',
'picture_url': speaker_photo(None, speaker, 120),
'code': speaker.code,
@ -286,6 +287,8 @@ def schedule_json(request):
})
if not slot.content.speaker.twitter_username == '':
slot_data["twitter_id"] = slot.content.speaker.twitter_username
if not slot.content.speaker.mastodon_username == '':
slot_data["mastodon_id"] = slot.content.speaker.mastodon_username
else:
slot_data.update({
"name": slot.content_override if slot.content_override else "Slot",
@ -300,7 +303,7 @@ def schedule_json(request):
class EventFeed(ICalFeed):
product_id = '-//linux.conf.au/schedule//EN'
product_id = '-//2023.everythingopen.au/schedule//EN'
timezone = settings.TIME_ZONE
filename = 'conference.ics'

View file

@ -11,17 +11,19 @@ class SpeakerForm(forms.ModelForm):
model = Speaker
fields = [
"name",
"pronouns",
"biography",
"experience",
"photo",
#"telephone",
"telephone",
"local_timezone",
"homepage",
"twitter_username",
"mastodon_username",
"accessibility",
#"travel_assistance",
#"accommodation_assistance",
#"assistance",
"travel_assistance",
"accommodation_assistance",
"assistance",
"agreement",
]

View file

@ -0,0 +1,33 @@
# Generated by Django 2.2.28 on 2022-12-07 14:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('symposion_speakers', '0010_speaker_local_timezone'),
]
operations = [
migrations.AddField(
model_name='speaker',
name='mastodon_username',
field=models.CharField(blank=True, help_text='Your Mastodon account', max_length=100),
),
migrations.AddField(
model_name='speaker',
name='pronouns',
field=models.CharField(blank=True, max_length=20, verbose_name='Pronouns'),
),
migrations.AlterField(
model_name='speaker',
name='assistance',
field=models.TextField(blank=True, help_text='We have budget set aside to provide financial assistance to speakers and attendees who might otherwise find it difficult to attend. Please provide details on why you require travel and/or accommodation assistance in order to present your proposed sessions. For travel assistance, please also tell us where you will be coming from (country, state, etc) to assist with planning.', verbose_name='Travel/Accommodation assistance details'),
),
migrations.AlterField(
model_name='speaker',
name='travel_assistance',
field=models.BooleanField(blank=True, default=False, help_text='Check this box if you require assistance to travel to the conference in order to present your proposed sessions.', verbose_name='Travel assistance required'),
),
]

View file

@ -26,6 +26,10 @@ class Speaker(models.Model):
name = models.CharField(verbose_name=_("Name"), max_length=100,
help_text=_("As you would like it to appear in the"
" conference programme."))
pronouns = models.CharField(verbose_name=_("Pronouns"),
max_length=20,
blank=True,
)
biography = models.TextField(
blank=True,
help_text=_("This will appear on the conference website and in the "
@ -68,6 +72,11 @@ class Speaker(models.Model):
blank=True,
help_text=_(u"Your Twitter account")
)
mastodon_username = models.CharField(
max_length=100,
blank=True,
help_text=_(u"Your Mastodon account")
)
accessibility = models.TextField(
blank=True,
help_text=_("Let us know how we can help you during the conference, for example "
@ -78,7 +87,7 @@ class Speaker(models.Model):
travel_assistance = models.BooleanField(
blank=True,
default=False,
help_text=_("Check this box if you require assistance to travel to linux.conf.au "
help_text=_("Check this box if you require assistance to travel to the conference "
"in order to present your proposed sessions."),
verbose_name=_("Travel assistance required"),
)
@ -92,7 +101,7 @@ class Speaker(models.Model):
assistance = models.TextField(
blank=True,
help_text=_("We have budget set aside to provide financial assistance to "
"linux.conf.au speakers and attendees who might otherwise find it difficult to attend. "
"speakers and attendees who might otherwise find it difficult to attend. "
"Please provide details on why you require travel and/or accommodation assistance "
"in order to present your proposed sessions. "
"For travel assistance, please also tell us where you will be coming from "