Changeset - 630bf4086135
[Not reviewed]
11 29 11
Joel Addison - 16 months ago 2022-12-07 14:08:54
joel@addison.net.au
Everything Open 2023 - Initial Setup
47 files changed with 406 insertions and 512 deletions:
0 comments (0 inline, 0 general)
.gitlab-ci.yml
Show inline comments
...
 
@@ -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
fixtures/2022/auth.permission.json
Show inline comments
 
deleted file
fixtures/2022/conference.section.json
Show inline comments
 
deleted file
fixtures/2022/proposals.proposalsection.json
Show inline comments
 
deleted file
fixtures/conference.json
Show inline comments
...
 
@@ -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"
 
  }
 
}
 
]
fixtures/flatpages.json
Show inline comments
...
 
@@ -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,
fixtures/sessions/auth.group.json
Show inline comments
 
file renamed from fixtures/2022/auth.group.json to fixtures/sessions/auth.group.json
fixtures/sessions/auth.permission.json
Show inline comments
 
new file 100644
 
[
 
{
 
  "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"
 
  }
 
}
 
]
fixtures/sessions/conference.section.json
Show inline comments
 
new file 100644
 
[
 
{
 
  "model": "symposion_conference.section",
 
  "pk": 1,
 
  "fields": {
 
    "conference": 1,
 
    "name": "Main Conference",
 
    "slug": "main",
 
    "start_date": "2023-03-14",
 
    "end_date": "2023-03-16"
 
  }
 
}
 
]
fixtures/sessions/proposals.proposalkind.json
Show inline comments
 
file renamed from fixtures/2022/proposals.proposalkind.json to fixtures/sessions/proposals.proposalkind.json
...
 
@@ -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"
 
  }
 
}
 
]
fixtures/sessions/proposals.proposalsection.json
Show inline comments
 
new file 100644
 
[
 
{
 
  "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
 
  }
 
}
 
]
fixtures/sessions/teams.team.json
Show inline comments
 
file renamed from fixtures/2022/teams.team.json to fixtures/sessions/teams.team.json
...
 
@@ -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": []
fixtures/sites.json
Show inline comments
...
 
@@ -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"
 
  }
 
}
 
]
fixtures/sitetree.json
Show inline comments
...
 
@@ -131,7 +131,7 @@
 
  "model": "sitetree.treeitem",
 
  "pk": 6,
 
  "fields": {
 
    "title": "About LCA2022",
 
    "title": "About Everything Open",
 
    "hint": "",
 
    "url": "/about/",
 
    "urlaspattern": false,
k8s/deployment_template.jsonnet
Show inline comments
...
 
@@ -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,
make_dev_container.sh
Show inline comments
...
 
@@ -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
pinaxcon/proposals/admin.py
Show inline comments
...
 
@@ -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:
pinaxcon/proposals/forms.py
Show inline comments
...
 
@@ -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
pinaxcon/proposals/migrations/0004_auto_20210809_2026.py
Show inline comments
 
deleted file
pinaxcon/proposals/migrations/0004_auto_20221208_0102.py
Show inline comments
 
new file 100644
 
# 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',
 
        ),
 
    ]
pinaxcon/proposals/models.py
Show inline comments
 
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?"
 
    )
 

	
 

	
 
class TalkProposal(SessionProposal):
 

	
 
    class Meta:
 
        verbose_name = "talk proposal"
 

	
 

	
 
class TutorialProposal(SessionProposal):
 

	
 
    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
 
    """
 
    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 Meta:
 
        abstract = True
 

	
 
    def save(self, *args, **kwargs):
 
        self.content_warning_html = parse(self.content_warning)
 
        return super(Proposal, self).save(*args, **kwargs)
 

	
 
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 TalkProposal(Proposal):
 

	
 
    class Meta:
 
        verbose_name = "Open Hardware Miniconf Proposal"
 
        verbose_name = "talk proposal"
 

	
 

	
 
class SysAdminProposal(MiniconfSessionProposal):
 
class TutorialProposal(Proposal):
 

	
 
    class Meta:
 
        verbose_name = "System Administration Miniconf Proposal"
 
        verbose_name = "tutorial proposal"
pinaxcon/registrasion/forms.py
Show inline comments
...
 
@@ -25,6 +25,7 @@ class ProfileForm(forms.ModelForm):
 
        exclude = [
 
            'attendee',
 
            'children',
 
            'lca_announce',
 
            'lca_chat',
 
            'future_conference',
 
        ]
pinaxcon/registrasion/management/commands/populate_inventory.py
Show inline comments
...
 
@@ -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,
pinaxcon/registrasion/migrations/0001_initial.py
Show inline comments
...
 
@@ -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"),
 
)
 

	
 

	
pinaxcon/registrasion/migrations/0015_auto_20221208_0102.py
Show inline comments
 
new file 100644
 
# 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?'),
 
        ),
 
    ]
pinaxcon/registrasion/models.py
Show inline comments
...
 
@@ -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,
 
    )
 

	
pinaxcon/settings.py
Show inline comments
...
 
@@ -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")
 

	
pinaxcon/templates/nav.html
Show inline comments
 
{% 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">
pinaxcon/templates/registrasion/badge.svg
Show inline comments
...
 
@@ -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">
pinaxcon/templates/site_base.html
Show inline comments
...
 
@@ -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>
pinaxcon/templates/symposion/dashboard/_categories.html
Show inline comments
...
 
@@ -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>
pinaxcon/templates/symposion/proposals/_proposal_fields.html
Show inline comments
...
 
@@ -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">
pinaxcon/templates/symposion/schedule/schedule_conference.html
Show inline comments
...
 
@@ -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>
pinaxcon/templates/symposion/schedule/schedule_detail.html
Show inline comments
...
 
@@ -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>
pinaxcon/templates/symposion/schedule/schedule_edit.html
Show inline comments
...
 
@@ -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>
static/src/img/eo2023.svg
Show inline comments
 
new file 100644
 
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="180" height="35" viewBox="0 0 180 35"><path d="M14,15.85v.83H5.34V4.08h8.43v.83H6.26v5H13v.81H6.26v5.16Z" fill="#fff"/><path d="M27.27,4.08l-5.62,12.6h-.91L15.12,4.08h1l5.09,11.41,5.1-11.41Z" fill="#fff"/><path d="M38,15.85v.83H29.3V4.08h8.43v.83H30.22v5h6.72v.81H30.22v5.16Z" fill="#fff"/><path d="M50.09,16.68l-3-4.21a9.37,9.37,0,0,1-1.23.09h-3.6v4.12h-.92V4.08h4.52a5.65,5.65,0,0,1,3.73,1.13,3.84,3.84,0,0,1,1.35,3.12A3.85,3.85,0,0,1,48,12.27l3.15,4.41Zm-4.23-4.93a4.69,4.69,0,0,0,3.08-.89A3.12,3.12,0,0,0,50,8.33,3.11,3.11,0,0,0,48.94,5.8a4.69,4.69,0,0,0-3.08-.89h-3.6v6.84Z" fill="#fff"/><path d="M58,12.34v4.34h-.92V12.34L52,4.08h1l4.55,7.42,4.56-7.42h1Z" fill="#fff"/><path d="M67.73,4.91H63.2V4.08h10v.83H68.65V16.68h-.92Z" fill="#fff"/><path d="M85.71,4.08v12.6H84.8v-6H76.37v6h-.92V4.08h.92v5.8H84.8V4.08Z" fill="#fff"/><path d="M90.11,4.08H91v12.6h-.91Z" fill="#fff"/><path d="M105.68,4.08v12.6h-.76L96.33,5.74V16.68h-.91V4.08h.77l8.57,11V4.08Z" fill="#fff"/><path d="M119.07,10.44H120v4.71a5.49,5.49,0,0,1-2,1.21,7.56,7.56,0,0,1-2.49.41,6.76,6.76,0,0,1-3.37-.83,6,6,0,0,1-2.36-2.28,6.37,6.37,0,0,1-.86-3.28,6.34,6.34,0,0,1,.86-3.27,6,6,0,0,1,2.36-2.29A6.92,6.92,0,0,1,115.47,4a7.26,7.26,0,0,1,2.55.44,5.57,5.57,0,0,1,2,1.29l-.57.61a4.72,4.72,0,0,0-1.77-1.14,6.29,6.29,0,0,0-2.17-.35,6,6,0,0,0-2.93.72,5.21,5.21,0,0,0-2,2,5.53,5.53,0,0,0-.74,2.83,5.46,5.46,0,0,0,2.79,4.82,5.91,5.91,0,0,0,2.92.73,5.5,5.5,0,0,0,3.58-1.16Z" fill="#fff"/><path d="M147.91,5.3a3.84,3.84,0,0,1,1.35,3.12,3.81,3.81,0,0,1-1.35,3.1,5.65,5.65,0,0,1-3.73,1.13h-3.6v4.12h-.92V4.17h4.52A5.65,5.65,0,0,1,147.91,5.3Zm-.65,5.64a3.09,3.09,0,0,0,1.06-2.52,3.11,3.11,0,0,0-1.06-2.53A4.69,4.69,0,0,0,144.18,5h-3.6v6.82h3.6A4.69,4.69,0,0,0,147.26,10.94Z"/><path d="M161.05,15.94v.83h-8.7V4.17h8.43V5h-7.51v5H160v.81h-6.72v5.16Z"/><path d="M174.66,4.17v12.6h-.76L165.31,5.83V16.77h-.91V4.17h.77l8.57,11V4.17Z"/><path d="M131.65,4a6.18,6.18,0,0,0-3.33,0,6.35,6.35,0,0,0-1.83.85l.63.63a5.41,5.41,0,0,1,4.26-.63,5.67,5.67,0,0,1,2.56,1.51A5.56,5.56,0,0,1,135.44,9a5.28,5.28,0,0,1,0,2.87,5.65,5.65,0,0,1-1.53,2.57A5.87,5.87,0,0,1,131.31,16a5.32,5.32,0,0,1-2.88,0,5.56,5.56,0,0,1-2.56-1.5,5.56,5.56,0,0,1-1.5-2.56,5.32,5.32,0,0,1,0-2.88,5.61,5.61,0,0,1,.61-1.4l-.63-.62a6.32,6.32,0,0,0-.84,1.83,6.21,6.21,0,0,0,0,3.34,6.7,6.7,0,0,0,4.67,4.67,6.18,6.18,0,0,0,3.33,0,6.69,6.69,0,0,0,3-1.8,6.88,6.88,0,0,0,1.81-3,6.18,6.18,0,0,0,0-3.33,6.83,6.83,0,0,0-4.7-4.7Z" fill="#231f20"/><path d="M43.19,31.11V23.92L39.66,30h-.3l-3.51-6v7.17h-.6v-8.4h.51l3.76,6.49,3.76-6.49h.5v8.4Z"/><path d="M52.52,30.55v.56h-5.8v-8.4h5.62v.55h-5v3.31h4.48v.54H47.33v3.44Z"/><path d="M54.75,22.71h.61v7.84H60.2v.56H54.75Z"/><path d="M68.13,27.48a2,2,0,0,1,.48,1.41,1.91,1.91,0,0,1-.78,1.64,3.93,3.93,0,0,1-2.32.58H61.77v-8.4h3.5a3.57,3.57,0,0,1,2.13.55,1.87,1.87,0,0,1,.76,1.59,1.91,1.91,0,0,1-.38,1.22,2.08,2.08,0,0,1-1,.7A2.34,2.34,0,0,1,68.13,27.48Zm-5.75-4.25v3.35h2.87a3,3,0,0,0,1.7-.42,1.48,1.48,0,0,0,.59-1.26A1.44,1.44,0,0,0,67,23.66a2.94,2.94,0,0,0-1.7-.43Zm5,6.92a1.68,1.68,0,0,0,0-2.62,3.31,3.31,0,0,0-1.85-.42H62.38v3.47h3.13A3.22,3.22,0,0,0,67.36,30.15Z"/><path d="M72.12,30.61a4.09,4.09,0,0,1-1.56-1.53,4.26,4.26,0,0,1,1.56-5.88,4.82,4.82,0,0,1,4.47,0,4.07,4.07,0,0,1,1.56,1.52,4.47,4.47,0,0,1,0,4.37,4,4,0,0,1-1.56,1.52,4.74,4.74,0,0,1-4.47,0Zm4.14-.49a3.56,3.56,0,0,0,1.35-1.32,3.8,3.8,0,0,0,.49-1.89A3.75,3.75,0,0,0,77.61,25a3.52,3.52,0,0,0-1.35-1.33,4,4,0,0,0-3.82,0A3.52,3.52,0,0,0,71.09,25a3.65,3.65,0,0,0-.49,1.89,3.7,3.7,0,0,0,.49,1.89,3.56,3.56,0,0,0,1.35,1.32,4,4,0,0,0,3.82,0Z"/><path d="M81.66,30.24a3.74,3.74,0,0,1-.88-2.7V22.71h.61v4.81a3.31,3.31,0,0,0,.7,2.31,2.65,2.65,0,0,0,2.06.77,2.62,2.62,0,0,0,2-.77,3.31,3.31,0,0,0,.71-2.31V22.71h.61v4.83a3.74,3.74,0,0,1-.89,2.7,3.77,3.77,0,0,1-5,0Z"/><path d="M96.2,31.11l-2-2.81a6.07,6.07,0,0,1-.81.06H91v2.75h-.62v-8.4h3a3.77,3.77,0,0,1,2.48.75,2.56,2.56,0,0,1,.9,2.08,2.7,2.7,0,0,1-.51,1.67,2.77,2.77,0,0,1-1.46,1l2.1,2.94Zm-2.82-3.29a3.11,3.11,0,0,0,2.05-.6,2.06,2.06,0,0,0,.71-1.68,2.1,2.1,0,0,0-.71-1.69,3.17,3.17,0,0,0-2.05-.59H91v4.56Z"/><path d="M105.84,22.71v8.4h-.5l-5.73-7.3v7.3H99v-8.4h.52L105.23,30V22.71Z"/><path d="M114.57,30.55v.56h-5.8v-8.4h5.62v.55h-5v3.31h4.48v.54h-4.48v3.44Z"/><path d="M123.61,30.55v.56h-5.77v-.44l3.55-3.52a5.09,5.09,0,0,0,.94-1.2,2.33,2.33,0,0,0,.25-1,1.53,1.53,0,0,0-.55-1.26,2.36,2.36,0,0,0-1.58-.46,3.66,3.66,0,0,0-1.38.24,2.66,2.66,0,0,0-1,.73l-.43-.38a3.16,3.16,0,0,1,1.22-.85,4.4,4.4,0,0,1,1.67-.3,3,3,0,0,1,2,.6,2,2,0,0,1,.73,1.62,2.65,2.65,0,0,1-.29,1.23,5.38,5.38,0,0,1-1.08,1.37l-3.09,3.08Z" fill="#fff"/><path d="M126.29,30.64a3.28,3.28,0,0,1-1.16-1.48,6.26,6.26,0,0,1,0-4.51,3.34,3.34,0,0,1,1.16-1.48,3.07,3.07,0,0,1,3.42,0,3.43,3.43,0,0,1,1.17,1.48,6.41,6.41,0,0,1,0,4.51,3.37,3.37,0,0,1-1.17,1.48,3,3,0,0,1-3.42,0Zm3.11-.48a2.78,2.78,0,0,0,.94-1.27,5.16,5.16,0,0,0,.34-2,5.21,5.21,0,0,0-.34-2,2.78,2.78,0,0,0-.94-1.27,2.45,2.45,0,0,0-2.8,0,2.85,2.85,0,0,0-.94,1.27,5.42,5.42,0,0,0-.33,2,5.37,5.37,0,0,0,.33,2,2.85,2.85,0,0,0,.94,1.27,2.45,2.45,0,0,0,2.8,0Z" fill="#fff"/><path d="M138.2,30.55v.56h-5.77v-.44L136,27.15a4.83,4.83,0,0,0,.94-1.2,2.2,2.2,0,0,0,.25-1,1.53,1.53,0,0,0-.55-1.26,2.35,2.35,0,0,0-1.57-.46,3.71,3.71,0,0,0-1.39.24,2.66,2.66,0,0,0-1,.73l-.43-.38a3.16,3.16,0,0,1,1.22-.85,4.4,4.4,0,0,1,1.67-.3,3,3,0,0,1,2,.6,2,2,0,0,1,.73,1.62,2.77,2.77,0,0,1-.28,1.23,5.87,5.87,0,0,1-1.08,1.37l-3.1,3.08Z" fill="#fff"/><path d="M144,27a2.18,2.18,0,0,1,.72,1.7,2.42,2.42,0,0,1-.33,1.26,2.25,2.25,0,0,1-1,.85,3.68,3.68,0,0,1-1.6.32,4.81,4.81,0,0,1-1.71-.31,3,3,0,0,1-1.25-.82l.31-.47a3,3,0,0,0,1.11.74,3.88,3.88,0,0,0,1.54.29,2.58,2.58,0,0,0,1.72-.5,1.84,1.84,0,0,0,0-2.73,3,3,0,0,0-1.84-.49h-.53v-.44l2.49-3.18h-4.48v-.55h5.27v.43l-2.52,3.23A3.27,3.27,0,0,1,144,27Z" fill="#fff"/></svg>
static/src/img/la_logo.svg
Show inline comments
 
file renamed from static/src/lca/la_logo.svg to static/src/img/la_logo.svg
static/src/lca/lca2022.svg
Show inline comments
 
deleted file
static/src/lca/lca_horiz_blue.svg
Show inline comments
 
deleted file
static/src/lca/lca_horiz_colour.svg
Show inline comments
 
deleted file
vendor/regidesk/regidesk/models.py
Show inline comments
...
 
@@ -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,
vendor/regidesk/regidesk/templates/regidesk/ci_overview.html
Show inline comments
...
 
@@ -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">
vendor/registrasion/registrasion/views.py
Show inline comments
...
 
@@ -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]
vendor/symposion/schedule/views.py
Show inline comments
...
 
@@ -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'
 

	
vendor/symposion/speakers/forms.py
Show inline comments
...
 
@@ -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",
 
        ]
 

	
vendor/symposion/speakers/migrations/0011_auto_20221208_0102.py
Show inline comments
 
new file 100644
 
# 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'),
 
        ),
 
    ]
vendor/symposion/speakers/models.py
Show inline comments
...
 
@@ -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 "
0 comments (0 inline, 0 general)