Everything Open 2023 - Initial Setup
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
]
|
|
@ -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
|
||||
}
|
||||
}
|
||||
]
|
|
@ -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
|
||||
}
|
||||
}
|
||||
]
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -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,
|
||||
|
|
24
fixtures/sessions/auth.permission.json
Normal 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"
|
||||
}
|
||||
}
|
||||
]
|
13
fixtures/sessions/conference.section.json
Normal 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"
|
||||
}
|
||||
}
|
||||
]
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
]
|
13
fixtures/sessions/proposals.proposalsection.json
Normal 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
|
||||
}
|
||||
}
|
||||
]
|
|
@ -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": []
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -131,7 +131,7 @@
|
|||
"model": "sitetree.treeitem",
|
||||
"pk": 6,
|
||||
"fields": {
|
||||
"title": "About LCA2022",
|
||||
"title": "About Everything Open",
|
||||
"hint": "",
|
||||
"url": "/about/",
|
||||
"urlaspattern": false,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
),
|
||||
]
|
89
pinaxcon/proposals/migrations/0004_auto_20221208_0102.py
Normal 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',
|
||||
),
|
||||
]
|
|
@ -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"
|
||||
|
|
|
@ -25,6 +25,7 @@ class ProfileForm(forms.ModelForm):
|
|||
exclude = [
|
||||
'attendee',
|
||||
'children',
|
||||
'lca_announce',
|
||||
'lca_chat',
|
||||
'future_conference',
|
||||
]
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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"),
|
||||
)
|
||||
|
||||
|
||||
|
|
38
pinaxcon/registrasion/migrations/0015_auto_20221208_0102.py
Normal 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?'),
|
||||
),
|
||||
]
|
|
@ -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,
|
||||
)
|
||||
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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 |
|
@ -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>
|
||||
<a href="https://twitter.com/linuxconfau" alt="Twitter"><i class="fab fa-twitter"></i></a>
|
||||
<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> <a
|
||||
href="https://twitter.com/_everythingopen" alt="Twitter"><i class="bi-twitter"></i></a> <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> <a
|
||||
href="https://twitter.com/_everythingopen" alt="Twitter"><i class="fab fa-twitter"></i></a> <a
|
||||
href="https://www.facebook.com/linuxconferenceaustralia/" alt="Facebook"><i class="fab fa-facebook"></i></a> <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>
|
||||
© 2021 linux.conf.au and <a href="http://linux.org.au/">Linux Australia</a><br>
|
||||
© 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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
1
static/src/img/eo2023.svg
Normal file
After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
@ -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 |
|
@ -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 |
|
@ -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 |
4
vendor/regidesk/regidesk/models.py
vendored
|
@ -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,
|
||||
|
|
|
@ -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">
|
||||
|
|
2
vendor/registrasion/registrasion/views.py
vendored
|
@ -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]
|
||||
|
|
5
vendor/symposion/schedule/views.py
vendored
|
@ -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'
|
||||
|
||||
|
|
10
vendor/symposion/speakers/forms.py
vendored
|
@ -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",
|
||||
]
|
||||
|
||||
|
|
33
vendor/symposion/speakers/migrations/0011_auto_20221208_0102.py
vendored
Normal 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'),
|
||||
),
|
||||
]
|
13
vendor/symposion/speakers/models.py
vendored
|
@ -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 "
|
||||
|
|