Fehlerbereinigung.
Mahjong Ranking berechnet nun die richtigen Ränge zu den legendären Kyu/Dan Punkten. Stablie Version bevor die Datenstruktur des Mahjongrankings vereinfacht wird.
This commit is contained in:
committed by
Christian Berg
parent
bafbf38612
commit
79eaeb34ad
@@ -58,3 +58,5 @@ class EventForm(forms.ModelForm):
|
||||
class Meta(object):
|
||||
model = models.Event
|
||||
exclude = ('event_count', 'event_series', )
|
||||
|
||||
EventSeriesFormset = forms.inlineformset_factory(models.Event, models.Event, fields=('start', 'end'), form=EventForm)
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: kasu.events\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-05 19:23+0100\n"
|
||||
"POT-Creation-Date: 2015-08-16 11:34+0200\n"
|
||||
"PO-Revision-Date: 2014-12-08 16:06+0100\n"
|
||||
"Last-Translator: Christian Berg <xeniac.at@gmail.com>\n"
|
||||
"Language-Team: Kasu <verein@kasu.at>\n"
|
||||
@@ -35,31 +35,30 @@ msgstr "Beginn"
|
||||
msgid "end"
|
||||
msgstr "Ende"
|
||||
|
||||
#: models.py:67 models.py:155
|
||||
#: models.py:67 models.py:161
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#: models.py:68 models.py:156
|
||||
#: models.py:68 models.py:162
|
||||
msgid "Description"
|
||||
msgstr "Beschreibung"
|
||||
|
||||
#: models.py:70 templates/events/event_archive.html:41
|
||||
#: templates/events/event_detail.html:31 templates/events/event_detail.html:77
|
||||
#: templates/events/event_list.html:15
|
||||
#: templates/events/event_detail.html:31 templates/events/event_detail.html:76
|
||||
msgid "Start"
|
||||
msgstr "Beginn"
|
||||
|
||||
#: models.py:71 templates/events/event_detail.html:32
|
||||
#: templates/events/event_detail.html:78
|
||||
#: templates/events/event_detail.html:77
|
||||
msgid "End"
|
||||
msgstr "Ende"
|
||||
|
||||
#: models.py:72 models.py:159 templates/events/event_detail.html:37
|
||||
#: templates/events/event_detail.html:73 templates/events/event_detail.html:79
|
||||
#: models.py:72 models.py:165 templates/events/event_detail.html:36
|
||||
#: templates/events/event_detail.html:72 templates/events/event_detail.html:78
|
||||
msgid "Homepage"
|
||||
msgstr "Homepage"
|
||||
|
||||
#: models.py:73 models.py:157
|
||||
#: models.py:73 models.py:163
|
||||
msgid "Image"
|
||||
msgstr "Bild"
|
||||
|
||||
@@ -92,134 +91,129 @@ msgstr "Termin"
|
||||
msgid "Events"
|
||||
msgstr "Termine"
|
||||
|
||||
#: models.py:160
|
||||
#: models.py:166
|
||||
msgid "Postal Code"
|
||||
msgstr "Postleitzahl"
|
||||
|
||||
#: models.py:161
|
||||
#: models.py:167
|
||||
msgid "Street Address"
|
||||
msgstr "Straße"
|
||||
|
||||
#: models.py:162
|
||||
#: models.py:168
|
||||
msgid "Locality"
|
||||
msgstr "Ort"
|
||||
|
||||
#: models.py:163
|
||||
#: models.py:169
|
||||
msgid "Country"
|
||||
msgstr "Land"
|
||||
|
||||
#: models.py:166
|
||||
#: models.py:172
|
||||
msgid "Venue"
|
||||
msgstr "Veranstaltungsort"
|
||||
|
||||
#: models.py:167
|
||||
#: models.py:173
|
||||
msgid "Venues"
|
||||
msgstr "Veranstaltungsorte"
|
||||
|
||||
#: views.py:101 templates/events/event_detail.html:110
|
||||
#: templates/events/event_form.html:9
|
||||
msgid "Edit Event"
|
||||
msgstr "Termin bearbeiten"
|
||||
|
||||
#: views.py:103 templates/events/event_form.html:9
|
||||
#: templates/events/page.html:15
|
||||
msgid "Add Event"
|
||||
msgstr "Neuer Termin"
|
||||
|
||||
#: views.py:199
|
||||
msgid "Event does not exist"
|
||||
msgstr "Veranstaltung gibt es nicht"
|
||||
|
||||
#: templates/events/event_archive.html:5 templates/events/event_archive.html:9
|
||||
msgid "Event Archive"
|
||||
msgstr "Veranstaltungsarchiv"
|
||||
|
||||
#: templates/events/event_archive.html:36 templates/events/event_list.html:11
|
||||
#: templates/events/event_archive.html:36 templates/events/event_list.html:14
|
||||
msgid "Event Image"
|
||||
msgstr "Veranstaltungsbild"
|
||||
|
||||
#: templates/events/event_archive.html:44 templates/events/event_list.html:18
|
||||
#: templates/events/event_archive.html:44
|
||||
msgid "from"
|
||||
msgstr "von"
|
||||
|
||||
#: templates/events/event_archive.html:44 templates/events/event_list.html:18
|
||||
#: templates/events/event_archive.html:44
|
||||
msgid "to"
|
||||
msgstr "bis"
|
||||
|
||||
#: templates/events/event_archive.html:52
|
||||
#: templates/events/event_detail.html:35 templates/events/event_detail.html:65
|
||||
#: templates/events/event_list.html:26
|
||||
#: templates/events/event_detail.html:33 templates/events/event_detail.html:64
|
||||
#: templates/events/event_list.html:25
|
||||
msgid "Location"
|
||||
msgstr "Ort"
|
||||
|
||||
#: templates/events/event_archive.html:56
|
||||
#: templates/events/event_archive.html:57 templates/events/event_list.html:30
|
||||
#: templates/events/event_archive.html:53 templates/events/event_list.html:26
|
||||
msgid "Comments"
|
||||
msgstr "Kommentare"
|
||||
|
||||
#: templates/events/event_archive.html:60
|
||||
#: templates/events/event_archive.html:61
|
||||
#: templates/events/event_detail.html:39 templates/events/event_detail.html:49
|
||||
#: templates/events/event_archive.html:54
|
||||
#: templates/events/event_detail.html:38 templates/events/event_detail.html:48
|
||||
msgid "Photos"
|
||||
msgstr "Fotos"
|
||||
|
||||
#: templates/events/event_archive.html:64
|
||||
#: templates/events/event_archive.html:65
|
||||
#: templates/events/event_archive.html:66
|
||||
#: templates/events/event_detail.html:38 templates/events/event_detail.html:48
|
||||
#: templates/events/event_detail.html:50
|
||||
#: templates/events/event_archive.html:55
|
||||
#: templates/events/event_archive.html:56
|
||||
#: templates/events/event_detail.html:37 templates/events/event_detail.html:49
|
||||
msgid "Hanchans"
|
||||
msgstr "Hanchans"
|
||||
|
||||
#: templates/events/event_archive.html:70
|
||||
msgid " Edit"
|
||||
msgstr "Bearbeiten"
|
||||
|
||||
#: templates/events/event_detail.html:40
|
||||
#: templates/events/event_detail.html:39
|
||||
msgid "tourney"
|
||||
msgstr "Turnier"
|
||||
|
||||
#: templates/events/event_detail.html:40
|
||||
#: templates/events/event_detail.html:39
|
||||
msgid "other rules apply here"
|
||||
msgstr "hier gelten andere Regeln"
|
||||
|
||||
#: templates/events/event_detail.html:48
|
||||
#: templates/events/event_detail.html:47
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
#: templates/events/event_detail.html:51
|
||||
#: templates/events/event_detail.html:50
|
||||
msgid "Mai-Star Games"
|
||||
msgstr "Mai-Star Spiele"
|
||||
|
||||
#: templates/events/event_detail.html:54
|
||||
#: templates/events/event_detail.html:53
|
||||
msgid "Tournament Ranking"
|
||||
msgstr "Turnier Wertung"
|
||||
|
||||
#: templates/events/event_detail.html:75
|
||||
#: templates/events/event_detail.html:74 templates/events/event_list.html:24
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
#: templates/events/event_detail.html:91
|
||||
#: templates/events/event_detail.html:90
|
||||
msgid "Share on Google+"
|
||||
msgstr "Auf Google+ teilen"
|
||||
|
||||
#: templates/events/event_detail.html:92
|
||||
#: templates/events/event_detail.html:91
|
||||
msgid "Share on Twitter"
|
||||
msgstr "Auf Twitter teilen"
|
||||
|
||||
#: templates/events/event_detail.html:93
|
||||
#: templates/events/event_detail.html:92
|
||||
msgid "Share on Facebook"
|
||||
msgstr "Auf Facebook teilen"
|
||||
|
||||
#: templates/events/event_detail.html:94
|
||||
#: templates/events/event_detail.html:93
|
||||
msgid "Show on Google Maps"
|
||||
msgstr "Auf Google Maps zeigen"
|
||||
|
||||
#: templates/events/event_detail.html:109 templates/events/event_form.html:9
|
||||
#: views.py:103
|
||||
msgid "Edit Event"
|
||||
msgstr "Termin bearbeiten"
|
||||
|
||||
#: templates/events/event_detail.html:112
|
||||
#, fuzzy
|
||||
#| msgid "Date"
|
||||
msgid "Add Dates"
|
||||
msgstr "Datum"
|
||||
|
||||
#: templates/events/event_form.html:9 templates/events/page.html:9
|
||||
#: views.py:105
|
||||
msgid "Add Event"
|
||||
msgstr "Neuer Termin"
|
||||
|
||||
#: templates/events/event_form.html:19
|
||||
msgid "reset"
|
||||
msgstr "Zurücksetzen"
|
||||
|
||||
#: templates/events/event_form.html:20
|
||||
#: templates/events/eventseries_form.html:30
|
||||
msgid "save"
|
||||
msgstr "Speichern"
|
||||
|
||||
@@ -227,13 +221,22 @@ msgstr "Speichern"
|
||||
msgid "Upcoming Events"
|
||||
msgstr "Bevorstehende Veranstaltungen"
|
||||
|
||||
#: templates/events/event_list.html:41
|
||||
msgid " Upload"
|
||||
msgstr "Hochladen"
|
||||
#: templates/events/eventseries_form.html:29
|
||||
msgid "back"
|
||||
msgstr ""
|
||||
|
||||
#: templates/events/page.html:10
|
||||
msgid "Add to Google Calendar"
|
||||
msgstr "Zu Google Kalender hinzufügen"
|
||||
#: views.py:214
|
||||
msgid "Event does not exist"
|
||||
msgstr "Veranstaltung gibt es nicht"
|
||||
|
||||
#~ msgid " Edit"
|
||||
#~ msgstr "Bearbeiten"
|
||||
|
||||
#~ msgid " Upload"
|
||||
#~ msgstr "Hochladen"
|
||||
|
||||
#~ msgid "Add to Google Calendar"
|
||||
#~ msgstr "Zu Google Kalender hinzufügen"
|
||||
|
||||
#~ msgid "left"
|
||||
#~ msgstr "Links"
|
||||
|
||||
@@ -104,6 +104,14 @@ class Event(image_models.ImageModel):
|
||||
}
|
||||
return reverse('event-detail', kwargs=kwargs)
|
||||
|
||||
def get_eventseries_form_url(self):
|
||||
kwargs = {
|
||||
'pk': self.id,
|
||||
'year': self.start.strftime('%Y'),
|
||||
'month': self.start.strftime('%m')
|
||||
}
|
||||
return reverse('eventseries-form', kwargs=kwargs)
|
||||
|
||||
def get_edit_url(self):
|
||||
kwargs = {
|
||||
'pk': self.id,
|
||||
@@ -133,19 +141,17 @@ class Event(image_models.ImageModel):
|
||||
return None
|
||||
|
||||
def save(self, **kwargs):
|
||||
# Fülle fehlende Felder mit den Angaben der Hauptveranstaltung aus.
|
||||
if self.event_series:
|
||||
master_event = self.event_series
|
||||
self.description = master_event.description
|
||||
self.name = self.name or master_event.name
|
||||
self.description = self.description or master_event.description
|
||||
self.location = master_event.location
|
||||
self.url = master_event.url
|
||||
self.image = master_event.image
|
||||
self.image = self.image or master_event.image
|
||||
self.photo_count = self.photo_set.count()
|
||||
super(Event, self).save(**kwargs)
|
||||
|
||||
# Update the rest of the event series:
|
||||
for sub_event in Event.objects.filter(event_series=self):
|
||||
sub_event.save()
|
||||
|
||||
# Update the Hanchans if necesery:
|
||||
for hanchan in self.hanchan_set.all():
|
||||
hanchan.save()
|
||||
|
||||
@@ -50,9 +50,10 @@
|
||||
<p>{{event.description|truncatewords_html:20}}</p>
|
||||
<ul class="info">
|
||||
<li><span class="fa fa-map-marker" title="{% trans 'Location' %}"></span> {{ event.location }}</li>
|
||||
<li><a href="{{event.get_absolute_url}}#comments"><span class="fa fa-comments" title="{% trans 'Comments' %}"></span> {{ comment_count }}</a></li>
|
||||
<li><a href="{% url 'event-photo-list' event.pk %}"><span class="fa fa-picture-o" title="{% trans 'Photos' %}"></span> {{ event.photo_count }}</a></li>
|
||||
<li><a href="{% url 'event-hanchan-list' event.pk %}"><span class="fa fa-table" title="{% trans 'Hanchans' %}"></span> {{ event.hanchan_set.count }} {% trans 'Hanchans' %}</a></li>
|
||||
<li><span class="fa fa-comments" title="{% trans 'Comments' %}"></span> <a href="{{event.get_absolute_url}}#comments">{{ comment_count }}</a></li>
|
||||
<li><span class="fa fa-camera-retro" title="{% trans 'Photos' %}"></span> <a href="{% url 'event-photo-list' event.pk %}">{{ event.photo_count }}</a></li>
|
||||
<li><span class="fa fa-table" title="{% trans 'Hanchans' %}"></span> <a href="{% url 'event-hanchan-list' event.pk %}">{{ event.hanchan_set.count }}</a></li>
|
||||
<li><span class="fa fa-glass" title="{% trans 'Hanchans' %}"></span> <a href="{% url 'maistar-game-list' event.pk %}">{{ event.maistargame_set.count }}</a></li>
|
||||
</ul>
|
||||
{% if perms.events.change_event %}
|
||||
<p class="right"><a href="{{ event.get_edit_url }}" class="button"><span class="fa fa-pencil"></span></a></p>
|
||||
|
||||
@@ -108,6 +108,9 @@
|
||||
{% if perms.events.change_event %}
|
||||
<a class="button" href="{{ event.get_edit_url }}"><span class="fa fa-pencil"></span> {% trans "Edit Event" %}</a>
|
||||
{% endif %}
|
||||
{% if perms.events.add_event %}
|
||||
<a class="button" href="{{ event.get_eventseries_form_url }}"><span class="fa fa-calendar-plus-o"></span> {% trans "Add Dates" %}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block javascript %}
|
||||
|
||||
@@ -5,44 +5,30 @@
|
||||
{% block teaser%}<h2>{% trans "Upcoming Events" %}</h2>{% endblock %}
|
||||
{% block maincontent %}
|
||||
|
||||
{% for event in event_list %}
|
||||
{% ifchanged %}<h3 class="grid_12">{{ event.start|date:'F Y' }}</h3>{% endifchanged %}
|
||||
{% get_comment_count for event as comment_count %}
|
||||
<a href="{{ event.get_absolute_url }}" class="grid_2"><img src="{{ event.get_thumbnail.url }}" alt=" {% trans 'Event Image' %}"
|
||||
class="thumbnail"/></a>
|
||||
<div class="grid_4" style="min-height:160px">
|
||||
<h4><a href="{{ event.get_absolute_url }}">{{ event.name }}</a>
|
||||
<sup>
|
||||
{{ event.start|date:'SHORT_DATE_FORMAT' }}
|
||||
{% if event.end %}
|
||||
{% trans "from" %} {{ event.start|time:'H:i' }} {% trans "to" %} {{ event.end|time:'H:i' }}
|
||||
{% else %}
|
||||
{{ event.start|time:'H:i' }}
|
||||
{% regroup event_list by start|date:'F Y' as month_list %}
|
||||
{% for month in month_list %}
|
||||
<h3 class="grid_12">{{ month.grouper }}</h3>
|
||||
{% for event in month.list %}
|
||||
{% get_comment_count for event as comment_count %}
|
||||
<a href="{{ event.get_absolute_url }}" class="grid_2"><img
|
||||
src="{{ event.get_thumbnail.url }}" alt=" {% trans 'Event Image' %}" class="thumbnail"/></a>
|
||||
<div class="grid_4">
|
||||
{% if perms.events.change_event %}
|
||||
<a href="{{ event.get_edit_url }}" class="button" style="float:right"><span class="fa fa-pencil"></span></a>
|
||||
{% endif %}
|
||||
</sup>
|
||||
</h4>
|
||||
<p>{{event.description|truncatewords_html:20}}</p>
|
||||
<ul class="info">
|
||||
<li>
|
||||
<span class="fa fa-map-marker" title="{% trans 'Location' %}"></span>
|
||||
{{ event.location }}
|
||||
</li>
|
||||
<li>
|
||||
<span class="fa fa-comments" title="{% trans 'Comments' %}"></span>
|
||||
<a href="{{event.get_absolute_url}}#comments">{{ comment_count }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="right">
|
||||
{% if perms.events.change_event %}
|
||||
<a href="{{ event.get_edit_url }}" class="button"><span class="fa fa-pencil"></span></a>
|
||||
{% endif %}
|
||||
{% if perms.events.add_photo %}
|
||||
<a href="{% url 'event-photo-list' event.pk %}" class="button"><span class="fa fa-file-picture-o"></span></a>
|
||||
{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
{% if perms.events.add_photo %}
|
||||
<a href="{% url 'event-photo-list' event.pk %}" class="button" style="float:right"><span class="fa fa-camera-retro"></span></a>
|
||||
{% endif %}
|
||||
<h4><a href="{{ event.get_absolute_url }}">{{ event.name }}</a></h4>
|
||||
<ul class="info">
|
||||
<li><span class="fa fa-calendar-o" title="{% trans 'Date' %}"></span> <time datetime="{{event.start|date:'c'}}">{{ event.start|date:'SHORT_DATE_FORMAT' }}</time></li>
|
||||
<li><span class="fa fa-map-marker" title="{% trans 'Location' %}"></span> {{ event.location }}</li>
|
||||
<li><span class="fa fa-comments" title="{% trans 'Comments' %}"></span> <a href="{{event.get_absolute_url}}#comments">{{ comment_count }}</a></li>
|
||||
</ul>
|
||||
<p>{{event.description|truncatewords_html:20}}</p>
|
||||
</div>
|
||||
{% if forloop.counter|divisibleby:2 %}<br class="clear">{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{% if page_obj.has_other_pages %}{% include 'paginator.html' %}{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
40
src/events/templates/events/eventseries_form.html
Normal file
40
src/events/templates/events/eventseries_form.html
Normal file
@@ -0,0 +1,40 @@
|
||||
{% extends "events/event_detail.html" %}
|
||||
{% load i18n django_markdown comments %}
|
||||
|
||||
{% block title %}{{ event.name }}{% endblock %}
|
||||
|
||||
{% block teaser %}
|
||||
<h1>{{event.name}}</h1>
|
||||
{% if event.description %}
|
||||
<div id="teaser_text">{{event.description|markdown|truncatewords_html:75}}</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block event_content %}
|
||||
<h3>Hier kommt eine Tabelle rein!</h3>
|
||||
<form class="grid_12" method="post">
|
||||
{% csrf_token %}
|
||||
{{ formset.management_form }}
|
||||
<table>
|
||||
{% for form in formset %}
|
||||
{% if forloop.counter = 1 %}
|
||||
<tr>{% for field in form.visible_fields %}<th>{{field.label_tag}}</th>{% endfor %}<th></th></tr>
|
||||
{% endif %}
|
||||
<tr>
|
||||
{% for field in form.visible_fields %}<td class="{{field.css_classes}}">{{field}} {% for error in field.errors %}<br />{{error}}{% endfor %}</td>{% endfor %}
|
||||
<td width="*">{{form.id}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tfoot><tr><td colspan="4" class="buttonbar">
|
||||
<a href="{{ event.get_absolute_url }}" class="button"><span class="fa fa-undo"></span> {% trans 'back' %}</a>
|
||||
<button type="submit"><span class="fa fa-hdd-o"></span> {% trans 'save' %}</button>
|
||||
</td></tr></tfoot>
|
||||
</table>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
{% block comments %}{% endblock %}
|
||||
|
||||
{% block buttonbar %}
|
||||
{% endblock %}
|
||||
|
||||
@@ -3,13 +3,6 @@
|
||||
|
||||
{% block title %}{{page.title}}{% endblock %}
|
||||
|
||||
|
||||
{% block sidebar %}
|
||||
<a href="http://www.google.com/calendar/render?cid=https%3A%2F%2Fkasu.at%2Fevents.ics"
|
||||
target="_blank"><img src="http://www.google.com/calendar/images/ext/gc_button6.gif"
|
||||
alt="{% trans 'Add to Google Calendar' %}"></a>
|
||||
{% endblock %}
|
||||
|
||||
{% block additional_buttonbar %}
|
||||
{% if perms.events.add_event %}
|
||||
<a href="{% url 'event-form' %}" class="button">
|
||||
|
||||
@@ -12,6 +12,8 @@ urlpatterns = patterns(
|
||||
name='event-archive'),
|
||||
url(r'^(?P<year>[\d]{4})/(?P<month>[\d]+)/(?P<pk>[\d]+)/$',
|
||||
EventDetail.as_view(), name='event-detail'),
|
||||
url(r'^(?P<year>[\d]{4})/(?P<month>[\d]+)/(?P<pk>[\d]+)/add_dates/$',
|
||||
EventSeriesForm.as_view(), name='eventseries-form'),
|
||||
url(r'^(?P<year>[\d]{4})/(?P<month>[\d]+)/(?P<pk>[\d]+)/edit/$',
|
||||
EventForm.as_view(), name='event-form'),
|
||||
url(r'^add/$', EventForm.as_view(), name='event-form'),
|
||||
|
||||
@@ -5,6 +5,7 @@ from datetime import timedelta
|
||||
from django.contrib.auth.decorators import permission_required
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.core.urlresolvers import reverse
|
||||
from extra_views import ModelFormSetView, InlineFormSetView
|
||||
from django.http import HttpResponse, Http404
|
||||
from django.shortcuts import redirect
|
||||
from django.utils import timezone
|
||||
@@ -93,6 +94,7 @@ class EventDetailMixin(object):
|
||||
|
||||
class EventForm(PermissionRequiredMixin, generic.UpdateView):
|
||||
form_class = forms.EventForm
|
||||
template_name = 'events/event_form.html'
|
||||
permission_required = 'events.add_event'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
@@ -110,15 +112,28 @@ class EventForm(PermissionRequiredMixin, generic.UpdateView):
|
||||
@param queryset:
|
||||
"""
|
||||
if self.kwargs.get('pk'):
|
||||
event = models.Event.objects.get(pk=self.kwargs['pk'])
|
||||
if event.event_series:
|
||||
return event.event_series
|
||||
else:
|
||||
return event
|
||||
return models.Event.objects.get(pk=self.kwargs['pk'])
|
||||
else:
|
||||
return models.Event()
|
||||
|
||||
|
||||
class EventSeriesForm(EventDetailMixin, PermissionRequiredMixin, InlineFormSetView):
|
||||
model = models.Event
|
||||
inline_model = models.Event
|
||||
fk_name = 'event_series'
|
||||
fields = ('start', 'end')
|
||||
form_class = forms.EventForm
|
||||
extra = 3
|
||||
permission_required = 'events.add_event'
|
||||
template_name = 'events/eventseries_form.html'
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
self.event = models.Event.objects.get(pk=self.kwargs['pk'])
|
||||
if self.event.event_series:
|
||||
self.event = self.event.event_series
|
||||
return self.event
|
||||
|
||||
|
||||
class EventGallery(generic.ListView):
|
||||
template_name = 'events/photo_gallery.html'
|
||||
queryset = models.Event.objects.filter(start__lt=timezone.now(),
|
||||
|
||||
Reference in New Issue
Block a user