diff --git a/camps/context_processors.py b/camps/context_processors.py
index 6874755f..4f4cadc3 100644
--- a/camps/context_processors.py
+++ b/camps/context_processors.py
@@ -4,6 +4,11 @@ from django.utils import timezone
def camp(request):
+ """
+ if we have a camp_slug url component then get the "current" Camp object.
+ Return it after adding the slug to request.session along with a "camps"
+ queryset containing all camps (used to build the menu and such)
+ """
if 'camp_slug' in request.resolver_match.kwargs:
camp = Camp.objects.get(slug=request.resolver_match.kwargs['camp_slug'])
request.session['campslug'] = camp.slug
@@ -12,7 +17,7 @@ def camp(request):
camp = None
return {
- 'camps': Camp.objects.all().order_by('-camp_start'),
+ 'camps': Camp.objects.all().order_by('-camp'),
'camp': camp
}
diff --git a/camps/migrations/0013_auto_20161229_2201.py b/camps/migrations/0013_auto_20161229_2201.py
new file mode 100644
index 00000000..33298454
--- /dev/null
+++ b/camps/migrations/0013_auto_20161229_2201.py
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.4 on 2016-12-29 22:01
+from __future__ import unicode_literals
+
+import django.contrib.postgres.fields.ranges
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('camps', '0012_auto_20161228_2312'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='camp',
+ name='buildup_start',
+ ),
+ migrations.RemoveField(
+ model_name='camp',
+ name='camp_end',
+ ),
+ migrations.RemoveField(
+ model_name='camp',
+ name='camp_start',
+ ),
+ migrations.RemoveField(
+ model_name='camp',
+ name='teardown_end',
+ ),
+ migrations.AddField(
+ model_name='camp',
+ name='buildup',
+ field=django.contrib.postgres.fields.ranges.DateTimeRangeField(help_text=b'The camp buildup period.', null=True, verbose_name=b'Buildup Period'),
+ ),
+ migrations.AddField(
+ model_name='camp',
+ name='camp',
+ field=django.contrib.postgres.fields.ranges.DateTimeRangeField(help_text=b'The camp period.', null=True, verbose_name=b'Camp Period'),
+ ),
+ migrations.AddField(
+ model_name='camp',
+ name='teardown',
+ field=django.contrib.postgres.fields.ranges.DateTimeRangeField(help_text=b'The camp teardown period.', null=True, verbose_name=b'Teardown period'),
+ ),
+ ]
diff --git a/camps/migrations/0014_auto_20161229_2202.py b/camps/migrations/0014_auto_20161229_2202.py
new file mode 100644
index 00000000..765871e8
--- /dev/null
+++ b/camps/migrations/0014_auto_20161229_2202.py
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.4 on 2016-12-29 22:02
+from __future__ import unicode_literals
+
+import django.contrib.postgres.fields.ranges
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('camps', '0013_auto_20161229_2201'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='camp',
+ name='buildup',
+ field=django.contrib.postgres.fields.ranges.DateTimeRangeField(help_text=b'The camp buildup period.', verbose_name=b'Buildup Period'),
+ ),
+ migrations.AlterField(
+ model_name='camp',
+ name='camp',
+ field=django.contrib.postgres.fields.ranges.DateTimeRangeField(help_text=b'The camp period.', verbose_name=b'Camp Period'),
+ ),
+ migrations.AlterField(
+ model_name='camp',
+ name='teardown',
+ field=django.contrib.postgres.fields.ranges.DateTimeRangeField(help_text=b'The camp teardown period.', verbose_name=b'Teardown period'),
+ ),
+ ]
diff --git a/camps/migrations/0015_auto_20170116_1634.py b/camps/migrations/0015_auto_20170116_1634.py
new file mode 100644
index 00000000..fa87cc72
--- /dev/null
+++ b/camps/migrations/0015_auto_20170116_1634.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.4 on 2017-01-16 16:34
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('camps', '0014_auto_20161229_2202'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='expense',
+ name='refund_user',
+ ),
+ migrations.DeleteModel(
+ name='Expense',
+ ),
+ ]
diff --git a/camps/migrations/0016_camp_description.py b/camps/migrations/0016_camp_description.py
new file mode 100644
index 00000000..900f6cdc
--- /dev/null
+++ b/camps/migrations/0016_camp_description.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.4 on 2017-01-16 16:37
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('camps', '0015_auto_20170116_1634'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='camp',
+ name='description',
+ field=models.TextField(default=b'', help_text=b'Description of the camp, shown on the camp frontpage. HTML and markdown supported.', verbose_name=b'Description'),
+ ),
+ ]
diff --git a/camps/migrations/0017_remove_camp_description.py b/camps/migrations/0017_remove_camp_description.py
new file mode 100644
index 00000000..a5ade35b
--- /dev/null
+++ b/camps/migrations/0017_remove_camp_description.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.4 on 2017-01-16 21:59
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('camps', '0016_camp_description'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='camp',
+ name='description',
+ ),
+ ]
diff --git a/camps/models.py b/camps/models.py
index 8118f660..032addb5 100644
--- a/camps/models.py
+++ b/camps/models.py
@@ -1,6 +1,8 @@
import datetime
from django.db import models
from utils.models import UUIDModel, CreatedUpdatedModel
+from program.models import EventType
+from django.contrib.postgres.fields import DateTimeRangeField
class Camp(CreatedUpdatedModel, UUIDModel):
@@ -25,69 +27,34 @@ class Camp(CreatedUpdatedModel, UUIDModel):
help_text='The url slug to use for this camp'
)
- buildup_start = models.DateTimeField(
- verbose_name='Buildup Start date',
- help_text='When the camp buildup starts.',
+ buildup = DateTimeRangeField(
+ verbose_name='Buildup Period',
+ help_text='The camp buildup period.',
)
- camp_start = models.DateTimeField(
- verbose_name='Start date',
- help_text='When the camp starts.',
+ camp = DateTimeRangeField(
+ verbose_name='Camp Period',
+ help_text='The camp period.',
)
- camp_end = models.DateTimeField(
- verbose_name='End date',
- help_text='When the camp ends.',
- )
-
- teardown_end = models.DateTimeField(
- verbose_name='Start date',
- help_text='When the camp teardown ends.',
+ teardown = DateTimeRangeField(
+ verbose_name='Teardown period',
+ help_text='The camp teardown period.',
)
def __unicode__(self):
return "%s - %s" % (self.title, self.tagline)
+ @property
+ def event_types(self):
+ # return all event types with at least one event in this camp
+ return EventType.objects.filter(event__instances__isnull=False, event__camp=self).distinct()
-class Expense(CreatedUpdatedModel, UUIDModel):
- class Meta:
- verbose_name = 'Expense'
- verbose_name_plural = 'Expenses'
+ @property
+ def logo_small(self):
+ return 'img/%(slug)s/logo/%(slug)s-logo-small.png' % {'slug': self.slug}
- payment_time = models.DateTimeField(
- verbose_name='Expense date/time',
- help_text='The date and time this expense was paid.',
- )
-
- description = models.CharField(
- verbose_name='Description',
- help_text='What this expense covers.',
- max_length=255,
- )
-
- dkk_amount = models.DecimalField(
- verbose_name='DKK Amount',
- help_text='The DKK amount of the expense.',
- max_digits=7,
- decimal_places=2,
- )
-
- receipt = models.ImageField(
- verbose_name='Image of receipt',
- help_text='Upload a scan or image of the receipt',
- )
-
- refund_user = models.ForeignKey(
- 'auth.User',
- verbose_name='Refund user',
- help_text='Which user, if any, covered this expense and should be refunded.',
- null=True,
- blank=True,
- )
-
- refund_paid = models.BooleanField(
- default=False,
- verbose_name='Refund paid?',
- help_text='Has this expense been refunded to the user?',
- )
+ @property
+ def logo_large(self):
+ return 'img/%(slug)s/logo/%(slug)s-logo-large.png' % {'slug': self.slug}
diff --git a/camps/templates/camp_detail.html b/camps/templates/camp_detail.html
index 92cdd69a..c1569f76 100644
--- a/camps/templates/camp_detail.html
+++ b/camps/templates/camp_detail.html
@@ -1,5 +1,12 @@
{% extends 'base.html' %}
+{% load commonmark %}
+{% load static from staticfiles %}
{% block content %}
-{{ camp.title }}
+
+
+
+
+
+{{ camp.description|commonmark }}
{% endblock content %}
diff --git a/camps/templates/camp_detail_bornhack-2016.html b/camps/templates/camp_detail_bornhack-2016.html
new file mode 100644
index 00000000..f5dd3016
--- /dev/null
+++ b/camps/templates/camp_detail_bornhack-2016.html
@@ -0,0 +1,61 @@
+{% extends 'base.html' %}
+{% load commonmark %}
+{% load static from staticfiles %}
+{% load imageutils %}
+{% block content %}
+
+
+
+
+
+
+
+
+ Bornhack 2016 was the first BornHack. It took place from August 27 to September 3rd 2016 on the Danish island of Bornholm. The tagline of this event was Initial Commit.
+
+
+
+ {% thumbnail 'img/bornhack-2016/esbjerg' '1600x988-B12A2612.jpg' 'A quiet moment in the chillout area by the bar' %}
+
+
+
+
+
+
+
+
+ {% thumbnail 'img/bornhack-2016/fonsmark' 'FB1_5128.JPG' 'Emma Holten speaking at BornHack 2016' %}
+
+
+
+ With 3 keynotes, 38 talks, and 9 workshops we had an ambitious program which was well received by participants. We also had an amazing list of sponsors making the event financially possible.
+
+
+
+
+
+
+
+
+
Many of the speakers and keynotes were present for the full week, providing participants with ample opportunity to discuss projects and exchange ideas.
+
+
+ {% thumbnail 'img/bornhack-2016/fonsmark' 'FB1_5149.JPG' 'Danish politicians debating at BornHack 2016' %}
+
+
+
+
+
+
+
+ {% thumbnail 'img/bornhack-2016/esbjerg' '1600x988-B12A2631.jpg' 'The BornHack 2016 organiser team' %}
+
+
+
+ The team behind BornHack 2016 had a lot of help from volunteer participants when it was needed. We are very grateful and will repay the kindness by continuing to organise awesome events.
+
+
+
+
+{% endblock content %}
+
diff --git a/camps/views.py b/camps/views.py
index f791138c..371a8dd1 100644
--- a/camps/views.py
+++ b/camps/views.py
@@ -5,6 +5,8 @@ from .models import *
class CampDetailView(DetailView):
model = Camp
- template_name = 'camp_detail.html'
slug_url_kwarg = 'camp_slug'
+ def get_template_names(self):
+ return 'camp_detail_%s.html' % self.get_object().slug
+
diff --git a/info/models.py b/info/models.py
index 04d30a69..d7962448 100644
--- a/info/models.py
+++ b/info/models.py
@@ -74,4 +74,7 @@ class InfoItem(CreatedUpdatedModel):
# this anchor is already in use on a category, so it cannot be used here (they must be unique on the entire page)
raise ValidationError({'anchor': 'Anchor is already in use on an info category for this camp'})
+ def __str__(self):
+ return '%s (%s)' % (self.headline, self.category)
+
diff --git a/news/templates/news_index.html b/news/templates/news_index.html
index 30ee0995..6b2760bb 100644
--- a/news/templates/news_index.html
+++ b/news/templates/news_index.html
@@ -6,6 +6,9 @@ News | {{ block.super }}
{% endblock %}
{% block content %}
+{% if request.resolver_match.kwargs.archived %}
+
Showing archived news items. Show regular news items
+{% endif %}
{% for item in news_items %}
{{ item.title }} {{ item.published_at|date:"Y-m-d" }}
@@ -17,4 +20,9 @@ News | {{ block.super }}
{% empty %}
No news yet. Stay tuned!
{% endfor %}
-{% endblock %}
\ No newline at end of file
+{% if not request.resolver_match.kwargs.archived %}
+
+
Show archived news items
+{% endif %}
+{% endblock %}
+
diff --git a/news/urls.py b/news/urls.py
index 1d1a0b65..766b4e3c 100644
--- a/news/urls.py
+++ b/news/urls.py
@@ -3,6 +3,8 @@ from . import views
urlpatterns = [
- url(r'^$', views.NewsIndex.as_view(), name='index'),
+ url(r'^$', views.NewsIndex.as_view(), kwargs={'archived': False}, name='index'),
+ url(r'^archive/$', views.NewsIndex.as_view(), kwargs={'archived': True}, name='archive'),
url(r'(?P
[-_\w+]+)/$', views.NewsDetail.as_view(), name='detail'),
]
+
diff --git a/news/views.py b/news/views.py
index 9b8a47b0..8056bc9d 100644
--- a/news/views.py
+++ b/news/views.py
@@ -7,11 +7,11 @@ class NewsIndex(ListView):
template_name = 'news_index.html'
context_object_name = 'news_items'
- def get_queryset(self, **kwargs):
+ def get_queryset(self):
return NewsItem.objects.filter(
published_at__isnull=False,
published_at__lt=timezone.now(),
- archived=False
+ archived=self.kwargs['archived']
)
diff --git a/program/migrations/0011_auto_20161229_2149.py b/program/migrations/0011_auto_20161229_2149.py
new file mode 100644
index 00000000..3dd59539
--- /dev/null
+++ b/program/migrations/0011_auto_20161229_2149.py
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.4 on 2016-12-29 21:49
+from __future__ import unicode_literals
+
+import django.contrib.postgres.fields.ranges
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('program', '0010_auto_20161212_1809'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='eventinstance',
+ options={'ordering': ['when']},
+ ),
+ migrations.RemoveField(
+ model_name='eventinstance',
+ name='end',
+ ),
+ migrations.RemoveField(
+ model_name='eventinstance',
+ name='start',
+ ),
+ migrations.AddField(
+ model_name='eventinstance',
+ name='when',
+ field=django.contrib.postgres.fields.ranges.DateTimeRangeField(null=True),
+ ),
+ ]
diff --git a/program/migrations/0012_auto_20161229_2150.py b/program/migrations/0012_auto_20161229_2150.py
new file mode 100644
index 00000000..3afafad9
--- /dev/null
+++ b/program/migrations/0012_auto_20161229_2150.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.4 on 2016-12-29 21:50
+from __future__ import unicode_literals
+
+import django.contrib.postgres.fields.ranges
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('program', '0011_auto_20161229_2149'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='eventinstance',
+ name='when',
+ field=django.contrib.postgres.fields.ranges.DateTimeRangeField(),
+ ),
+ ]
diff --git a/program/models.py b/program/models.py
index 73b6ee14..7bfa4956 100644
--- a/program/models.py
+++ b/program/models.py
@@ -1,5 +1,5 @@
from __future__ import unicode_literals
-
+from django.contrib.postgres.fields import DateTimeRangeField
from django.db import models
from django.utils.text import slugify
@@ -18,7 +18,7 @@ class EventType(CreatedUpdatedModel):
class Event(CreatedUpdatedModel):
- """ Something that is on the program. """
+ """ Something that is on the program one or more times. """
title = models.CharField(max_length=255)
slug = models.SlugField(blank=True, max_length=255)
abstract = models.TextField()
@@ -40,19 +40,17 @@ class Event(CreatedUpdatedModel):
class EventInstance(CreatedUpdatedModel):
""" An instance of an event """
event = models.ForeignKey('program.event', related_name='instances')
- start = models.DateTimeField()
- end = models.DateTimeField()
+ when = DateTimeRangeField()
class Meta:
- ordering = ['start']
+ ordering = ['when']
def __unicode__(self):
- return '%s (%s to %s)' % (self.event, self.start, self.end)
-
+ return '%s (%s)' % (self.event, self.when)
class Speaker(CreatedUpdatedModel):
- """ Person anchoring an event. """
+ """ A Person anchoring an event. """
name = models.CharField(max_length=150)
biography = models.TextField()
picture = models.ImageField(null=True, blank=True)
diff --git a/program/templates/program_overview.html b/program/templates/program_overview.html
index 89e44a2d..acbc30fe 100644
--- a/program/templates/program_overview.html
+++ b/program/templates/program_overview.html
@@ -4,8 +4,8 @@
All
-{% for event_type in event_types %}
-
+{% for event_type in camp.event_types %}
+
{{ event_type.name }}
{% endfor %}
diff --git a/program/views.py b/program/views.py
index 44a37188..12398281 100644
--- a/program/views.py
+++ b/program/views.py
@@ -26,62 +26,13 @@ class ProgramOverviewView(CampViewMixin, ListView):
model = models.Event
template_name = 'program_overview.html'
- def get_context_data(self, **kwargs):
- context = super(
- ProgramOverviewView, self
- ).get_context_data(**kwargs)
-
- days = Day.objects.all()
- context['days'] = days
-
- filter = {}
- if 'type' in self.request.GET:
- event_type = self.request.GET['type']
- filter["event_type__slug"] = event_type
-
- context['day_events'] = OrderedDict([
- (
- day,
- self.get_queryset().filter(
- days__in=[day],
- **filter
- ).order_by(
- 'start'
- )
- )
- for day in days
- ])
-
- context['event_types'] = models.EventType.objects.all()
-
- return context
-
class ProgramDayView(CampViewMixin, TemplateView):
template_name = 'program_day.html'
- def get_context_data(self, **kwargs):
- context = super(ProgramDayView, self).get_context_data(**kwargs)
- year = int(kwargs['year'])
- month = int(kwargs['month'])
- day = int(kwargs['day'])
- date = datetime.date(year=year, month=month, day=day)
- day = Day.objects.filter(date=date)
- context['date'] = date
- context['events'] = models.Event.objects.filter(days=day).order_by('event_type', 'start')
- context['event_types'] = models.EventType.objects.all()
- context['days'] = Day.objects.filter(date__year=year)
- return context
-
class EventDetailView(CampViewMixin, DetailView):
model = models.Event
template_name = 'program_event_detail.html'
- def get_context_data(self, **kwargs):
- context = super(EventDetailView, self).get_context_data(**kwargs)
- # TODO: date__year is hardcoded here - need fix for 2017 :P
- context['days'] = Day.objects.filter(date__year=2016)
- return context
-
diff --git a/static_src/img/bornhack-2016/ahf/jarlsgaard.jpg b/static_src/img/bornhack-2016/ahf/jarlsgaard.jpg
new file mode 100644
index 00000000..aea7c3df
Binary files /dev/null and b/static_src/img/bornhack-2016/ahf/jarlsgaard.jpg differ
diff --git a/static_src/img/bornhack-2016/ahf/thumbnail_jarlsgaard.jpg.png b/static_src/img/bornhack-2016/ahf/thumbnail_jarlsgaard.jpg.png
new file mode 100644
index 00000000..1f3594b4
Binary files /dev/null and b/static_src/img/bornhack-2016/ahf/thumbnail_jarlsgaard.jpg.png differ
diff --git a/static_src/img/bornhack-2016/esbjerg/1600x1000-B12A2398.jpg b/static_src/img/bornhack-2016/esbjerg/1600x1000-B12A2398.jpg
new file mode 100644
index 00000000..1bd1a630
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/1600x1000-B12A2398.jpg differ
diff --git a/static_src/img/bornhack-2016/esbjerg/1600x900-B12A2452.jpg b/static_src/img/bornhack-2016/esbjerg/1600x900-B12A2452.jpg
new file mode 100644
index 00000000..d8992840
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/1600x900-B12A2452.jpg differ
diff --git a/static_src/img/bornhack-2016/esbjerg/1600x900-B12A2485.jpg b/static_src/img/bornhack-2016/esbjerg/1600x900-B12A2485.jpg
new file mode 100644
index 00000000..ff21e77f
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/1600x900-B12A2485.jpg differ
diff --git a/static_src/img/bornhack-2016/esbjerg/1600x900-B12A2514.jpg b/static_src/img/bornhack-2016/esbjerg/1600x900-B12A2514.jpg
new file mode 100644
index 00000000..022a0fe1
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/1600x900-B12A2514.jpg differ
diff --git a/static_src/img/bornhack-2016/esbjerg/1600x900-B12A2604.jpg b/static_src/img/bornhack-2016/esbjerg/1600x900-B12A2604.jpg
new file mode 100644
index 00000000..5ca07ff7
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/1600x900-B12A2604.jpg differ
diff --git a/static_src/img/bornhack-2016/esbjerg/1600x900-B12A2608.jpg b/static_src/img/bornhack-2016/esbjerg/1600x900-B12A2608.jpg
new file mode 100644
index 00000000..b370b746
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/1600x900-B12A2608.jpg differ
diff --git a/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2610.jpg b/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2610.jpg
new file mode 100644
index 00000000..6cd3fd80
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2610.jpg differ
diff --git a/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2612.jpg b/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2612.jpg
new file mode 100644
index 00000000..68bb1c1f
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2612.jpg differ
diff --git a/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2620.jpg b/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2620.jpg
new file mode 100644
index 00000000..8a12f615
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2620.jpg differ
diff --git a/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2624.jpg b/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2624.jpg
new file mode 100644
index 00000000..3a1ba159
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2624.jpg differ
diff --git a/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2631.jpg b/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2631.jpg
new file mode 100644
index 00000000..9510dc07
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2631.jpg differ
diff --git a/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2634.jpg b/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2634.jpg
new file mode 100644
index 00000000..5bb0237d
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/1600x988-B12A2634.jpg differ
diff --git a/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x1000-B12A2398.jpg.png b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x1000-B12A2398.jpg.png
new file mode 100644
index 00000000..c02a44ad
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x1000-B12A2398.jpg.png differ
diff --git a/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x900-B12A2452.jpg.png b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x900-B12A2452.jpg.png
new file mode 100644
index 00000000..927e5bed
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x900-B12A2452.jpg.png differ
diff --git a/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x900-B12A2485.jpg.png b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x900-B12A2485.jpg.png
new file mode 100644
index 00000000..7fe151f3
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x900-B12A2485.jpg.png differ
diff --git a/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x900-B12A2514.jpg.png b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x900-B12A2514.jpg.png
new file mode 100644
index 00000000..17c49c34
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x900-B12A2514.jpg.png differ
diff --git a/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x900-B12A2604.jpg.png b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x900-B12A2604.jpg.png
new file mode 100644
index 00000000..22da8f2f
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x900-B12A2604.jpg.png differ
diff --git a/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x900-B12A2608.jpg.png b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x900-B12A2608.jpg.png
new file mode 100644
index 00000000..673b5ea4
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x900-B12A2608.jpg.png differ
diff --git a/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2610.jpg.png b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2610.jpg.png
new file mode 100644
index 00000000..ec7aca37
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2610.jpg.png differ
diff --git a/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2612.jpg.png b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2612.jpg.png
new file mode 100644
index 00000000..af45d0d7
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2612.jpg.png differ
diff --git a/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2620.jpg.png b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2620.jpg.png
new file mode 100644
index 00000000..7940ce36
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2620.jpg.png differ
diff --git a/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2624.jpg.png b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2624.jpg.png
new file mode 100644
index 00000000..2b4d3337
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2624.jpg.png differ
diff --git a/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2631.jpg.png b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2631.jpg.png
new file mode 100644
index 00000000..9ad74cc2
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2631.jpg.png differ
diff --git a/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2634.jpg.png b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2634.jpg.png
new file mode 100644
index 00000000..d067eca0
Binary files /dev/null and b/static_src/img/bornhack-2016/esbjerg/thumbnail_1600x988-B12A2634.jpg.png differ
diff --git a/static_src/img/bornhack-2016/fonsmark/FA0_1961.JPG b/static_src/img/bornhack-2016/fonsmark/FA0_1961.JPG
new file mode 100644
index 00000000..3021abd6
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/FA0_1961.JPG differ
diff --git a/static_src/img/bornhack-2016/fonsmark/FA0_1983.JPG b/static_src/img/bornhack-2016/fonsmark/FA0_1983.JPG
new file mode 100644
index 00000000..0d350076
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/FA0_1983.JPG differ
diff --git a/static_src/img/bornhack-2016/fonsmark/FA0_1986.JPG b/static_src/img/bornhack-2016/fonsmark/FA0_1986.JPG
new file mode 100644
index 00000000..b75c1743
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/FA0_1986.JPG differ
diff --git a/static_src/img/bornhack-2016/fonsmark/FB1_5090.JPG b/static_src/img/bornhack-2016/fonsmark/FB1_5090.JPG
new file mode 100644
index 00000000..bb106995
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/FB1_5090.JPG differ
diff --git a/static_src/img/bornhack-2016/fonsmark/FB1_5111.JPG b/static_src/img/bornhack-2016/fonsmark/FB1_5111.JPG
new file mode 100644
index 00000000..a20b19f6
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/FB1_5111.JPG differ
diff --git a/static_src/img/bornhack-2016/fonsmark/FB1_5126.JPG b/static_src/img/bornhack-2016/fonsmark/FB1_5126.JPG
new file mode 100644
index 00000000..f896ced9
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/FB1_5126.JPG differ
diff --git a/static_src/img/bornhack-2016/fonsmark/FB1_5128.JPG b/static_src/img/bornhack-2016/fonsmark/FB1_5128.JPG
new file mode 100644
index 00000000..a8500095
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/FB1_5128.JPG differ
diff --git a/static_src/img/bornhack-2016/fonsmark/FB1_5149.JPG b/static_src/img/bornhack-2016/fonsmark/FB1_5149.JPG
new file mode 100644
index 00000000..0af45b58
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/FB1_5149.JPG differ
diff --git a/static_src/img/bornhack-2016/fonsmark/FB1_5168.JPG b/static_src/img/bornhack-2016/fonsmark/FB1_5168.JPG
new file mode 100644
index 00000000..43cae016
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/FB1_5168.JPG differ
diff --git a/static_src/img/bornhack-2016/fonsmark/FB1_5265.JPG b/static_src/img/bornhack-2016/fonsmark/FB1_5265.JPG
new file mode 100644
index 00000000..a1c9c852
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/FB1_5265.JPG differ
diff --git a/static_src/img/bornhack-2016/fonsmark/FB1_5312.JPG b/static_src/img/bornhack-2016/fonsmark/FB1_5312.JPG
new file mode 100644
index 00000000..a0751d78
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/FB1_5312.JPG differ
diff --git a/static_src/img/bornhack-2016/fonsmark/thumbnail_FA0_1961.JPG.png b/static_src/img/bornhack-2016/fonsmark/thumbnail_FA0_1961.JPG.png
new file mode 100644
index 00000000..4bcd2977
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/thumbnail_FA0_1961.JPG.png differ
diff --git a/static_src/img/bornhack-2016/fonsmark/thumbnail_FA0_1983.JPG.png b/static_src/img/bornhack-2016/fonsmark/thumbnail_FA0_1983.JPG.png
new file mode 100644
index 00000000..b737c7e1
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/thumbnail_FA0_1983.JPG.png differ
diff --git a/static_src/img/bornhack-2016/fonsmark/thumbnail_FA0_1986.JPG.png b/static_src/img/bornhack-2016/fonsmark/thumbnail_FA0_1986.JPG.png
new file mode 100644
index 00000000..823dbcec
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/thumbnail_FA0_1986.JPG.png differ
diff --git a/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5090.JPG.png b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5090.JPG.png
new file mode 100644
index 00000000..fd9ca58c
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5090.JPG.png differ
diff --git a/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5111.JPG.png b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5111.JPG.png
new file mode 100644
index 00000000..3b47fd78
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5111.JPG.png differ
diff --git a/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5126.JPG.png b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5126.JPG.png
new file mode 100644
index 00000000..ccfdd511
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5126.JPG.png differ
diff --git a/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5128.JPG.png b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5128.JPG.png
new file mode 100644
index 00000000..0591c39e
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5128.JPG.png differ
diff --git a/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5149.JPG.png b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5149.JPG.png
new file mode 100644
index 00000000..a4c0ccc3
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5149.JPG.png differ
diff --git a/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5168.JPG.png b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5168.JPG.png
new file mode 100644
index 00000000..5f70dc98
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5168.JPG.png differ
diff --git a/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5265.JPG.png b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5265.JPG.png
new file mode 100644
index 00000000..52aaaddf
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5265.JPG.png differ
diff --git a/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5312.JPG.png b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5312.JPG.png
new file mode 100644
index 00000000..92a3b857
Binary files /dev/null and b/static_src/img/bornhack-2016/fonsmark/thumbnail_FB1_5312.JPG.png differ
diff --git a/static_src/img/bornhack-2016/bornhack-2016-logo-large.png b/static_src/img/bornhack-2016/logo/bornhack-2016-logo-large.png
similarity index 100%
rename from static_src/img/bornhack-2016/bornhack-2016-logo-large.png
rename to static_src/img/bornhack-2016/logo/bornhack-2016-logo-large.png
diff --git a/static_src/img/bornhack-2016/bornhack-2016-logo-small.png b/static_src/img/bornhack-2016/logo/bornhack-2016-logo-small.png
similarity index 100%
rename from static_src/img/bornhack-2016/bornhack-2016-logo-small.png
rename to static_src/img/bornhack-2016/logo/bornhack-2016-logo-small.png
diff --git a/static_src/img/bornhack-2016/logo-new-paths.svg b/static_src/img/bornhack-2016/logo/logo-new-paths.svg
similarity index 100%
rename from static_src/img/bornhack-2016/logo-new-paths.svg
rename to static_src/img/bornhack-2016/logo/logo-new-paths.svg
diff --git a/static_src/img/bornhack-2016/logo-new.png b/static_src/img/bornhack-2016/logo/logo-new.png
similarity index 100%
rename from static_src/img/bornhack-2016/logo-new.png
rename to static_src/img/bornhack-2016/logo/logo-new.png
diff --git a/static_src/img/bornhack-2016/logo-new.svg b/static_src/img/bornhack-2016/logo/logo-new.svg
similarity index 100%
rename from static_src/img/bornhack-2016/logo-new.svg
rename to static_src/img/bornhack-2016/logo/logo-new.svg
diff --git a/static_src/img/bornhack-2016/logo.png b/static_src/img/bornhack-2016/logo/logo.png
similarity index 100%
rename from static_src/img/bornhack-2016/logo.png
rename to static_src/img/bornhack-2016/logo/logo.png
diff --git a/static_src/img/bornhack-2016/logo.svg b/static_src/img/bornhack-2016/logo/logo.svg
similarity index 100%
rename from static_src/img/bornhack-2016/logo.svg
rename to static_src/img/bornhack-2016/logo/logo.svg
diff --git a/static_src/img/logo-large.png b/static_src/img/logo-large.png
new file mode 100644
index 00000000..654217d7
Binary files /dev/null and b/static_src/img/logo-large.png differ
diff --git a/templates/base.html b/templates/base.html
index 9efb2401..cd6d8863 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -33,7 +33,7 @@
{% if request.resolver_match.kwargs.camp_slug %}
-
+
{% else %}
{% endif %}
@@ -44,13 +44,14 @@
News
Shop
- {{ camp.title|default:"Camps" }}
+ Camps
+ Contact
diff --git a/templates/frontpage.html b/templates/frontpage.html
index d4d496c1..00fa0c4b 100644
--- a/templates/frontpage.html
+++ b/templates/frontpage.html
@@ -1,12 +1,11 @@
{% extends 'base.html' %}
{% load static from staticfiles %}
-
+{% load imageutils %}
{% block content %}
-
+
@@ -19,11 +18,7 @@
-
-
-
+ {% thumbnail 'img/bornhack-2016/fonsmark' 'FA0_1961.JPG' 'BornHack' %}
@@ -31,11 +26,7 @@
-
-
-
+ {% thumbnail 'img/bornhack-2016/ahf' 'jarlsgaard.jpg' 'JarlsgÄrd buildings from above' %}
@@ -57,11 +48,7 @@
-
-
-
+ {% thumbnail 'img/bornhack-2016/fonsmark' 'FB1_5090.JPG' 'Talk at BornHack 2016' %}
@@ -87,43 +74,15 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ {% thumbnail 'img/bornhack-2016/fonsmark' 'FA0_1983.JPG' 'Happy organisers welcoming people at the entrance to BornHack 2016' %}
+ {% thumbnail 'img/bornhack-2016/fonsmark' 'FA0_1986.JPG' 'A bus full of hackers arrive at BornHack 2016' %}
+ {% thumbnail 'img/bornhack-2016/fonsmark' 'FB1_5126.JPG' 'Late night hacking at Baconsvin village at BornHack 2016' %}
+ {% thumbnail 'img/bornhack-2016/fonsmark' 'FB1_5168.JPG' '#irl_bar by night at BornHack 2016' %}
+ {% thumbnail 'img/bornhack-2016/fonsmark' 'FB1_5265.JPG' 'Happy organisers welcoming people to BornHack 2016' %}
+ {% thumbnail 'img/bornhack-2016/esbjerg' '1600x900-B12A2452.jpg' 'Soldering the BornHack 2016 badge' %}
+ {% thumbnail 'img/bornhack-2016/esbjerg' '1600x900-B12A2485.jpg' 'Colored light in the grass' %}
+ {% thumbnail 'img/bornhack-2016/esbjerg' '1600x988-B12A2624.jpg' 'Working on decorations' %}
+ {% thumbnail 'img/bornhack-2016/esbjerg' '1600x900-B12A2604.jpg' 'Sitting around the campfire at BornHack 2016' %}
diff --git a/utils/management/commands/bootstrap-devsite.py b/utils/management/commands/bootstrap-devsite.py
index f759d577..9c4f3172 100644
--- a/utils/management/commands/bootstrap-devsite.py
+++ b/utils/management/commands/bootstrap-devsite.py
@@ -18,16 +18,57 @@ class Command(BaseCommand):
def handle(self, *args, **options):
self.output('Creating camps...')
camp1 = Camp.objects.create(
- name='BornHack 2016',
+ title='BornHack 2016',
+ tagline='Initial Commit',
slug='bornhack-2016',
- start=timezone.datetime(2016, 8, 27, 12, 0, tzinfo=timezone.utc),
- end=timezone.datetime(2016, 9, 4, 12, 0, tzinfo=timezone.utc)
+ buildup = (
+ timezone.datetime(2016, 8, 25, 12, 0, tzinfo=timezone.utc),
+ timezone.datetime(2016, 8, 27, 12, 0, tzinfo=timezone.utc),
+ ),
+ camp = (
+ timezone.datetime(2016, 8, 27, 12, 0, tzinfo=timezone.utc),
+ timezone.datetime(2016, 9, 04, 12, 0, tzinfo=timezone.utc),
+ ),
+ teardown = (
+ timezone.datetime(2016, 9, 04, 12, 0, tzinfo=timezone.utc),
+ timezone.datetime(2016, 9, 06, 12, 0, tzinfo=timezone.utc),
+ ),
)
+
camp2 = Camp.objects.create(
- name='BornHack 2015',
- slug='bornhack-2015',
- start=timezone.datetime(2015, 8, 27, 12, 0, tzinfo=timezone.utc),
- end=timezone.datetime(2015, 9, 4, 12, 0, tzinfo=timezone.utc)
+ title='BornHack 2017',
+ tagline='Make Tradition',
+ slug='bornhack-2017',
+ buildup = (
+ timezone.datetime(2017, 8, 20, 12, 0, tzinfo=timezone.utc),
+ timezone.datetime(2017, 8, 22, 12, 0, tzinfo=timezone.utc),
+ ),
+ camp = (
+ timezone.datetime(2017, 8, 22, 12, 0, tzinfo=timezone.utc),
+ timezone.datetime(2017, 8, 29, 12, 0, tzinfo=timezone.utc),
+ ),
+ teardown = (
+ timezone.datetime(2015, 8, 29, 12, 0, tzinfo=timezone.utc),
+ timezone.datetime(2015, 8, 31, 12, 0, tzinfo=timezone.utc),
+ ),
+ )
+
+ camp3 = Camp.objects.create(
+ title='BornHack 2018',
+ tagline='Undecided',
+ slug='bornhack-2018',
+ buildup = (
+ timezone.datetime(2018, 8, 13, 12, 0, tzinfo=timezone.utc),
+ timezone.datetime(2018, 8, 16, 12, 0, tzinfo=timezone.utc),
+ ),
+ camp = (
+ timezone.datetime(2018, 8, 16, 12, 0, tzinfo=timezone.utc),
+ timezone.datetime(2018, 8, 23, 12, 0, tzinfo=timezone.utc),
+ ),
+ teardown = (
+ timezone.datetime(2018, 8, 23, 12, 0, tzinfo=timezone.utc),
+ timezone.datetime(2018, 8, 26, 12, 0, tzinfo=timezone.utc),
+ ),
)
self.output('Creating news...')
@@ -46,15 +87,15 @@ class Command(BaseCommand):
content='unpublished news body here',
)
news4 = NewsItem.objects.create(
- title='welcome to bornhack 2015',
+ title='welcome to bornhack 2017',
content='news body here',
- published_at=timezone.datetime(2015, 8, 22, 12, 0, tzinfo=timezone.utc),
+ published_at=timezone.datetime(2017, 8, 22, 12, 0, tzinfo=timezone.utc),
archived=True
)
news5 = NewsItem.objects.create(
- title='bornhack 2015 is over',
+ title='bornhack 2017 is over',
content='news body here',
- published_at=timezone.datetime(2015, 8, 27, 12, 0, tzinfo=timezone.utc),
+ published_at=timezone.datetime(2017, 8, 29, 12, 0, tzinfo=timezone.utc),
archived=True
)
@@ -190,8 +231,10 @@ class Command(BaseCommand):
self.output("creating eventinstances...")
ei1 = EventInstance.objects.create(
event=ev3,
- start=timezone.datetime(2016, 8, 27, 12, 0, tzinfo=timezone.utc),
- end=timezone.datetime(2016, 8, 27, 13, 0, tzinfo=timezone.utc),
+ when=(
+ timezone.datetime(2016, 8, 27, 12, 0, tzinfo=timezone.utc),
+ timezone.datetime(2016, 8, 27, 13, 0, tzinfo=timezone.utc)
+ )
)
ei2 = EventInstance.objects.create(
event=ev1,
diff --git a/utils/templates/thumbnail.html b/utils/templates/thumbnail.html
new file mode 100644
index 00000000..2e20a6ac
--- /dev/null
+++ b/utils/templates/thumbnail.html
@@ -0,0 +1,2 @@
+
+
diff --git a/utils/templatetags/imageutils.py b/utils/templatetags/imageutils.py
new file mode 100644
index 00000000..9909a1bc
--- /dev/null
+++ b/utils/templatetags/imageutils.py
@@ -0,0 +1,18 @@
+from django import template
+from django.contrib.staticfiles.templatetags.staticfiles import static
+
+register = template.Library()
+@register.inclusion_tag('thumbnail.html')
+def thumbnail(path, filename, description):
+ """
+ Returns the HTML to show an image including thumbnail.
+ Assumes the thumbnail is called 'thumbnail_foo.jpg.png' if the image is called 'foo.jpg'.
+ Path should be relative inside static root.
+ Description is used for alt-text and mouseover.
+ """
+ return {
+ 'path': static('') + path,
+ 'filename': filename,
+ 'description': description,
+ }
+
diff --git a/villages/migrations/0009_auto_20161229_2143.py b/villages/migrations/0009_auto_20161229_2143.py
new file mode 100644
index 00000000..9c85a6de
--- /dev/null
+++ b/villages/migrations/0009_auto_20161229_2143.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.4 on 2016-12-29 21:43
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('villages', '0008_auto_20161228_2209'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='village',
+ name='private',
+ field=models.BooleanField(default=False, help_text='Check if your village is invite only. Leave unchecked to welcome strangers.'),
+ ),
+ ]
diff --git a/villages/models.py b/villages/models.py
index 8860a280..df3ab6db 100644
--- a/villages/models.py
+++ b/villages/models.py
@@ -24,7 +24,7 @@ class Village(CreatedUpdatedModel, UUIDModel):
private = models.BooleanField(
default=False,
- help_text='Check if your village is privately organized'
+ help_text='Check if your village is invite only. Leave unchecked to welcome strangers.'
)
deleted = models.BooleanField(
diff --git a/villages/templates/village_form.html b/villages/templates/village_form.html
index 2accd283..54131317 100644
--- a/villages/templates/village_form.html
+++ b/villages/templates/village_form.html
@@ -2,7 +2,7 @@
{% load bootstrap3 %}
{% block content %}
-
+Create {{ camp.title }} Village