forked from AFPy/PonyConf
volunteers (WIP)
This commit is contained in:
parent
e58f263dce
commit
8a0e858163
|
@ -2,9 +2,10 @@ from django.shortcuts import render
|
||||||
from django.contrib.sites.shortcuts import get_current_site
|
from django.contrib.sites.shortcuts import get_current_site
|
||||||
from django.views.generic import CreateView, DetailView, ListView, UpdateView
|
from django.views.generic import CreateView, DetailView, ListView, UpdateView
|
||||||
|
|
||||||
|
from ponyconf.mixins import OnSiteFormMixin
|
||||||
|
|
||||||
from accounts.decorators import staff_required
|
from accounts.decorators import staff_required
|
||||||
from accounts.mixins import OrgaRequiredMixin, StaffRequiredMixin
|
from accounts.mixins import OrgaRequiredMixin, StaffRequiredMixin
|
||||||
from proposals.mixins import OnSiteFormMixin
|
|
||||||
|
|
||||||
from proposals.models import Talk
|
from proposals.models import Talk
|
||||||
|
|
||||||
|
|
13
ponyconf/admin.py
Normal file
13
ponyconf/admin.py
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
from django.contrib.sites.shortcuts import get_current_site
|
||||||
|
|
||||||
|
|
||||||
|
class SiteAdminMixin:
|
||||||
|
exclude = ('site',)
|
||||||
|
|
||||||
|
def get_queryset(self, request):
|
||||||
|
return super().get_queryset(request).filter(site=get_current_site(request))
|
||||||
|
|
||||||
|
def save_model(self, request, obj, form, change):
|
||||||
|
if not change:
|
||||||
|
obj.site = get_current_site(request)
|
||||||
|
super().save_model(request, obj, form, change)
|
|
@ -42,6 +42,7 @@ INSTALLED_APPS = [
|
||||||
'proposals',
|
'proposals',
|
||||||
'conversations',
|
'conversations',
|
||||||
'planning',
|
'planning',
|
||||||
|
'volunteers',
|
||||||
|
|
||||||
# external apps
|
# external apps
|
||||||
'djangobower',
|
'djangobower',
|
||||||
|
|
|
@ -4,17 +4,8 @@ from django.contrib.sites.shortcuts import get_current_site
|
||||||
from proposals.models import Conference, Talk, Topic, Track, Event
|
from proposals.models import Conference, Talk, Topic, Track, Event
|
||||||
from planning.models import Room
|
from planning.models import Room
|
||||||
|
|
||||||
|
from ponyconf.admin import SiteAdminMixin
|
||||||
|
|
||||||
class SiteAdminMixin:
|
|
||||||
exclude = ('site',)
|
|
||||||
|
|
||||||
def get_queryset(self, request):
|
|
||||||
return super().get_queryset(request).filter(site=get_current_site(request))
|
|
||||||
|
|
||||||
def save_model(self, request, obj, form, change):
|
|
||||||
if not change:
|
|
||||||
obj.site = get_current_site(request)
|
|
||||||
super().save_model(request, obj, form, change)
|
|
||||||
|
|
||||||
|
|
||||||
class TalkAdmin(SiteAdminMixin, admin.ModelAdmin):
|
class TalkAdmin(SiteAdminMixin, admin.ModelAdmin):
|
||||||
|
|
|
@ -14,6 +14,8 @@ from django.utils.translation import ugettext as _
|
||||||
from django.views.decorators.http import require_http_methods
|
from django.views.decorators.http import require_http_methods
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
|
|
||||||
|
from ponyconf.mixins import OnSiteFormMixin
|
||||||
|
|
||||||
from accounts.models import Participation
|
from accounts.models import Participation
|
||||||
from accounts.mixins import OrgaRequiredMixin, StaffRequiredMixin
|
from accounts.mixins import OrgaRequiredMixin, StaffRequiredMixin
|
||||||
from accounts.decorators import orga_required, staff_required
|
from accounts.decorators import orga_required, staff_required
|
||||||
|
@ -27,7 +29,6 @@ from .forms import TalkForm, TopicForm, TrackForm, ConferenceForm, TalkFilterFor
|
||||||
from .models import Talk, Track, Topic, Vote, Conference
|
from .models import Talk, Track, Topic, Vote, Conference
|
||||||
from .signals import talk_added, talk_edited
|
from .signals import talk_added, talk_edited
|
||||||
from .utils import allowed_talks, markdown_to_html
|
from .utils import allowed_talks, markdown_to_html
|
||||||
from .mixins import OnSiteFormMixin
|
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
|
|
0
volunteers/__init__.py
Normal file
0
volunteers/__init__.py
Normal file
12
volunteers/admin.py
Normal file
12
volunteers/admin.py
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
from ponyconf.admin import SiteAdminMixin
|
||||||
|
|
||||||
|
from .models import Activity
|
||||||
|
|
||||||
|
|
||||||
|
class ActivityAdmin(SiteAdminMixin, admin.ModelAdmin):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
admin.site.register(Activity, ActivityAdmin)
|
5
volunteers/apps.py
Normal file
5
volunteers/apps.py
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class VolunteersConfig(AppConfig):
|
||||||
|
name = 'volunteers'
|
34
volunteers/migrations/0001_initial.py
Normal file
34
volunteers/migrations/0001_initial.py
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.10 on 2016-10-19 21:17
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('sites', '0002_alter_domain_unique'),
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Activity',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.CharField(max_length=256, verbose_name='Name')),
|
||||||
|
('description', models.TextField(blank=True, verbose_name='Description')),
|
||||||
|
('participants', models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL, verbose_name='Participants')),
|
||||||
|
('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.AlterUniqueTogether(
|
||||||
|
name='activity',
|
||||||
|
unique_together=set([('site', 'name')]),
|
||||||
|
),
|
||||||
|
]
|
0
volunteers/migrations/__init__.py
Normal file
0
volunteers/migrations/__init__.py
Normal file
18
volunteers/models.py
Normal file
18
volunteers/models.py
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
from django.db import models
|
||||||
|
from django.contrib.sites.models import Site
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
|
|
||||||
|
class Activity(models.Model):
|
||||||
|
|
||||||
|
site = models.ForeignKey(Site, on_delete=models.CASCADE)
|
||||||
|
name = models.CharField(max_length=256, verbose_name=_('Name'))
|
||||||
|
description = models.TextField(blank=True, verbose_name=_('Description'))
|
||||||
|
participants = models.ManyToManyField(User, blank=True, verbose_name=_('Participants'))
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
unique_together = ('site', 'name')
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
3
volunteers/tests.py
Normal file
3
volunteers/tests.py
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
# Create your tests here.
|
33
volunteers/views.py
Normal file
33
volunteers/views.py
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
from django.shortcuts import render
|
||||||
|
from django.contrib.sites.shortcuts import get_current_site
|
||||||
|
from django.views.generic import CreateView, DetailView, ListView, UpdateView
|
||||||
|
|
||||||
|
from ponyconf.mixins import OnSiteFormMixin
|
||||||
|
|
||||||
|
from accounts.mixins import OrgaRequiredMixin, StaffRequiredMixin
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class ActivityMixin(object):
|
||||||
|
def get_queryset(self):
|
||||||
|
return Activity.objects.filter(site=get_current_site(self.request)).all()
|
||||||
|
|
||||||
|
|
||||||
|
class ActivityFormMixin(OnSiteFormMixin):
|
||||||
|
form_class = ActivityForm
|
||||||
|
|
||||||
|
|
||||||
|
class ActivityList(StaffRequiredMixin, RoomMixin, ListView):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class ActivityCreate(OrgaRequiredMixin, RoomMixin, RoomFormMixin, CreateView):
|
||||||
|
model = Activity
|
||||||
|
|
||||||
|
|
||||||
|
class ActivityUpdate(OrgaRequiredMixin, RoomMixin, RoomFormMixin, UpdateView):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class ActivityDetail(StaffRequiredMixin, RoomMixin, DetailView):
|
||||||
|
pass
|
Loading…
Reference in New Issue
Block a user