Skip to content

PyCons-Site Project Setup and Enhancements #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: development
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1,366 changes: 1,366 additions & 0 deletions poetry.lock

Large diffs are not rendered by default.

Empty file added pycons-site/__init__.py
Empty file.
Empty file added pycons-site/about/__init__.py
Empty file.
103 changes: 103 additions & 0 deletions pycons-site/about/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# Core Django imports.
from django.contrib import admin

# About application imports.
from .models import (
About,
Venue,
Travel_Advice,
IOCGroup,
IOCMember,
LOCGroup,
LOCMember,
VolunteerGroup,
Volunteer,
)

# If you plan to use adminsortable2 (optional)
# from adminsortable2.admin import SortableAdminMixin

# AboutAdmin
class AboutAdmin(admin.ModelAdmin):
list_display = ('about_title', 'user', 'event_year', 'date_created')
ordering = ['-date_created']
exclude = ('user',) # Exclude the user field from the admin form

def save_model(self, request, obj, form, change):
if not obj.pk: # If the object is being created (and not modified)
obj.user = request.user # Set the user to the current user
super().save_model(request, obj, form, change)

# VenueAdmin
class VenueAdmin(admin.ModelAdmin):
list_display = ('name', 'event_year', 'date_created')
ordering = ['-date_created']
exclude = ('user',)

def save_model(self, request, obj, form, change):
if not obj.pk:
obj.user = request.user
super().save_model(request, obj, form, change)

# TravelAdviceAdmin
class TravelAdviceAdmin(admin.ModelAdmin):
list_display = ('title', 'user', 'event_year', 'date_created')
ordering = ['-date_created']
exclude = ('user',)

def save_model(self, request, obj, form, change):
if not obj.pk:
obj.user = request.user
super().save_model(request, obj, form, change)

# IOCGroupAdmin
class IOCGroupAdmin(admin.ModelAdmin):
list_display = ('name', 'event_year')
list_filter = ('event_year',)
search_fields = ('name',)

# IOCMemberAdmin
@admin.register(IOCMember)
class IOCMemberAdmin(admin.ModelAdmin):
list_display = ('name', 'event_year', 'is_lead')
list_filter = ('event_year', 'is_lead')
search_fields = ('name',)
list_editable = ('is_lead',)
filter_horizontal = ('groups',) # To make many-to-many field manageable

# LOCGroupAdmin
class LOCGroupAdmin(admin.ModelAdmin):
list_display = ('name', 'event_year')
list_filter = ('event_year',)
search_fields = ('name',)

# LOCMemberAdmin
@admin.register(LOCMember)
class LOCMemberAdmin(admin.ModelAdmin):
list_display = ('name', 'event_year', 'is_lead')
list_filter = ('event_year', 'is_lead')
search_fields = ('name',)
list_editable = ('is_lead',)
filter_horizontal = ('groups',) # To make many-to-many field manageable

# VolunteerGroupAdmin
class VolunteerGroupAdmin(admin.ModelAdmin):
list_display = ('name', 'event_year')
list_filter = ('event_year',)
search_fields = ('name',)

# VolunteerAdmin
class VolunteerAdmin(admin.ModelAdmin):
list_display = ('name', 'event_year')
list_filter = ('event_year', 'groups')
search_fields = ('name',)
filter_horizontal = ('groups',)

# Register your models and admin classes
admin.site.register(About, AboutAdmin)
admin.site.register(Venue, VenueAdmin)
admin.site.register(Travel_Advice, TravelAdviceAdmin)
admin.site.register(IOCGroup, IOCGroupAdmin)
admin.site.register(LOCGroup, LOCGroupAdmin)
admin.site.register(VolunteerGroup, VolunteerGroupAdmin)
admin.site.register(Volunteer, VolunteerAdmin)
5 changes: 5 additions & 0 deletions pycons-site/about/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from django.apps import AppConfig


class AboutConfig(AppConfig):
name = 'about'
40 changes: 40 additions & 0 deletions pycons-site/about/forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
"""
Forms and validation code for user registration.

Note that all of these forms assume Django's bundle default ``User``
model; since it's not possible for a form to anticipate in advance the
needs of custom user models, you will need to write your own forms if
you're using a custom model.

"""
from django import forms

from registration.users import UserModel

# Third Parties
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit
from django_recaptcha.fields import ReCaptchaField


User = UserModel()


from .models import About

class AboutForm(forms.ModelForm):
captcha = ReCaptchaField()

class Meta:
model = About
fields = ('about_title', 'about_image_one', 'section_one_title', 'section_one', 'section_two_title', 'section_two', 'section_three_title', 'section_three', 'user',)

def __init__(self, *args, **kwargs):
super(AboutForm, self).__init__(*args, **kwargs)
self.fields['user'].disabled = True

self.helper = FormHelper()
self.helper.form_id = 'id-Crispy_AboutForm'
self.helper.form_class = 'form-horizontal'
self.helper.add_input(Submit('update', 'About '))

70 changes: 70 additions & 0 deletions pycons-site/about/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Generated by Django 3.2 on 2022-08-17 12:05

from django.conf import settings
import django.contrib.auth.models
from django.db import migrations, models
import django.db.models.deletion
import embed_video.fields
import markdownx.models


class Migration(migrations.Migration):

initial = True

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]

operations = [
migrations.CreateModel(
name='Venue',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(help_text='Venue of PyCon Africa', max_length=250)),
('content', markdownx.models.MarkdownxField(default='', help_text='[Supports Markdown] - Content.')),
('content_two', markdownx.models.MarkdownxField(default='', help_text='[Supports Markdown] - Content side two.')),
('link_to_preview_video_url', embed_video.fields.EmbedVideoField(blank=True, default='', help_text='Link to Preview video on your Youtube or Google drive')),
('google_map', models.CharField(default='', help_text='Venue Google map ID', max_length=500)),
('location', models.CharField(default='', help_text='Location of Venue', max_length=250)),
('location_address', models.CharField(default='', help_text='Location of Venue', max_length=250)),
('location_website', models.URLField(blank=True, default='', help_text="Venue's website if any")),
('image_one', models.URLField(default='', help_text='Link to image')),
('image_two', models.URLField(default='', help_text='Link to image')),
('first_day_of_event', models.DateTimeField(blank=True, null=True)),
('last_day_of_event', models.DateTimeField(blank=True, null=True)),
('date_created', models.DateTimeField(auto_now_add=True)),
('date_updated', models.DateTimeField(auto_now=True)),
],
options={
'verbose_name': 'venue',
'verbose_name_plural': 'venues',
'unique_together': {('name',)},
},
),
migrations.CreateModel(
name='Travel_Advice',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(help_text='Travel Advice PyCon Africa', max_length=250)),
('advice', markdownx.models.MarkdownxField(default='', help_text='[Supports Markdown] - Travel Advice PyCon Africa.')),
('date_created', models.DateTimeField(auto_now_add=True)),
('date_updated', models.DateTimeField(auto_now=True)),
('user', models.ForeignKey(default=django.contrib.auth.models.User, on_delete=django.db.models.deletion.CASCADE, related_name='travel_advice', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='About',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('about_title', models.CharField(help_text='About PyCon Africa', max_length=250)),
('about_image_one', models.ImageField(help_text='Upload your cover image or leave blank to use our default image', upload_to='about_page')),
('about_image_two', models.URLField(default='', help_text='Link to image')),
('section_one', markdownx.models.MarkdownxField(default='', help_text='[Supports Markdown] - About PyCon Africa.')),
('section_two', markdownx.models.MarkdownxField(default='', help_text='[Supports Markdown] - About PyCon Africa.')),
('date_created', models.DateTimeField(auto_now_add=True)),
('date_updated', models.DateTimeField(auto_now=True)),
('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='about_us', to=settings.AUTH_USER_MODEL)),
],
),
]
32 changes: 32 additions & 0 deletions pycons-site/about/migrations/0002_team.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Generated by Django 3.2 on 2022-11-15 15:09

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import markdownx.models


class Migration(migrations.Migration):

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('about', '0001_initial'),
]

operations = [
migrations.CreateModel(
name='Team',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('team_title', models.CharField(blank=True, default='Team', help_text='Teams PyCon Africa', max_length=250)),
('team_image_one', models.ImageField(help_text='Upload your cover image or leave blank to use our default image', upload_to='team_page')),
('team_image_two', models.URLField(default='', help_text='Link to image')),
('section_one', markdownx.models.MarkdownxField(default='', help_text='[Supports Markdown] - PyCon Africa Team.')),
('session_title', models.CharField(blank=True, default='Volunteers', help_text='Session Title eg. Volunteers, Team, Mentor', max_length=250)),
('section_two', markdownx.models.MarkdownxField(default='', help_text='[Supports Markdown] - PyCon Africa Volunteers.')),
('date_created', models.DateTimeField(auto_now_add=True)),
('date_updated', models.DateTimeField(auto_now=True)),
('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teams', to=settings.AUTH_USER_MODEL)),
],
),
]
21 changes: 21 additions & 0 deletions pycons-site/about/migrations/0003_alter_team_user.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Generated by Django 3.2 on 2023-04-11 16:39

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('about', '0002_team'),
]

operations = [
migrations.AlterField(
model_name='team',
name='user',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teams_user', to=settings.AUTH_USER_MODEL),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Generated by Django 5.0.2 on 2024-02-29 23:00

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('about', '0003_alter_team_user'),
]

operations = [
migrations.AlterField(
model_name='about',
name='id',
field=models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='team',
name='id',
field=models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='travel_advice',
name='id',
field=models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='venue',
name='id',
field=models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Generated by Django 5.0.2 on 2024-03-02 16:16

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('about', '0004_alter_about_id_alter_team_id_alter_travel_advice_id_and_more'),
('home', '0008_pyconevent'),
]

operations = [
migrations.AddField(
model_name='about',
name='event_year',
field=models.ForeignKey(default='2024', on_delete=django.db.models.deletion.CASCADE, related_name='abouts', to='home.eventyear'),
),
migrations.AddField(
model_name='team',
name='event_year',
field=models.ForeignKey(default='2024', on_delete=django.db.models.deletion.CASCADE, related_name='teams', to='home.eventyear'),
),
migrations.AddField(
model_name='travel_advice',
name='event_year',
field=models.ForeignKey(default='2024', on_delete=django.db.models.deletion.CASCADE, related_name='travel_advices', to='home.eventyear'),
),
migrations.AddField(
model_name='venue',
name='event_year',
field=models.ForeignKey(default='2024', on_delete=django.db.models.deletion.CASCADE, related_name='venues', to='home.eventyear'),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Generated by Django 5.0.2 on 2024-03-02 18:18

import markdownx.models
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('about', '0005_about_event_year_team_event_year_and_more'),
]

operations = [
migrations.RemoveField(
model_name='about',
name='about_image_two',
),
migrations.AddField(
model_name='about',
name='about_tagline',
field=models.CharField(blank=True, help_text='Tagline for the year', max_length=250),
),
migrations.AddField(
model_name='about',
name='section_one_title',
field=models.CharField(blank=True, default='WHAT IS | PYCON AFRICA?', help_text='About PyCon Africa', max_length=250),
),
migrations.AddField(
model_name='about',
name='section_three',
field=markdownx.models.MarkdownxField(default='', help_text='[Supports Markdown] - About PyCon Africa.'),
),
migrations.AddField(
model_name='about',
name='section_three_title',
field=models.CharField(blank=True, default='THE | TEAM', help_text='About PyCon Africa', max_length=250),
),
migrations.AddField(
model_name='about',
name='section_two_title',
field=models.CharField(blank=True, default='THE | PROGRAM', help_text='About PyCon Africa', max_length=250),
),
]
Loading