remove the use of CurrentSiteManager
This commit is contained in:
parent
0206181158
commit
fa659ee595
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.7 on 2016-07-09 20:59
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('accounts', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelManagers(
|
||||
name='participation',
|
||||
managers=[
|
||||
],
|
||||
),
|
||||
]
|
|
@ -1,7 +1,6 @@
|
|||
from enum import IntEnum
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.sites.managers import CurrentSiteManager
|
||||
from django.contrib.sites.models import Site
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.db import models
|
||||
|
@ -44,9 +43,6 @@ class Participation(PonyConfModel):
|
|||
sound = models.BooleanField("I need sound", default=False)
|
||||
orga = models.BooleanField(default=False)
|
||||
|
||||
objects = models.Manager()
|
||||
on_site = CurrentSiteManager()
|
||||
|
||||
class Meta:
|
||||
# A User can participe only once to a Conference (= Site)
|
||||
unique_together = ('site', 'user')
|
||||
|
|
|
@ -10,7 +10,7 @@ from .models import Participation, Profile
|
|||
|
||||
@receiver(user_logged_in)
|
||||
def on_user_logged_in(sender, request, user, **kwargs):
|
||||
proposition, created = Participation.on_site.get_or_create(user=user, site=get_current_site(request))
|
||||
proposition, created = Participation.objects.get_or_create(user=user, site=get_current_site(request))
|
||||
if created:
|
||||
messages.info(request, "Please check your profile!\n", fail_silently=True) # FIXME
|
||||
messages.success(request, 'Welcome!', fail_silently=True) # FIXME
|
||||
|
|
|
@ -51,7 +51,7 @@ class AccountTests(TestCase):
|
|||
self.assertEqual(self.client.get(reverse('list-participant')).status_code, 200)
|
||||
self.assertEqual(self.client.post(reverse('edit-participant', kwargs={'username': 'a'}),
|
||||
{'biography': 'foo', 'notes': 'bar'}).status_code, 403)
|
||||
b = Participation.on_site.get(user=b)
|
||||
b = Participation.objects.get(user=b)
|
||||
b.orga = True
|
||||
b.save()
|
||||
self.assertEqual(self.client.post(reverse('edit-participant', kwargs={'username': 'a'}),
|
||||
|
|
|
@ -3,6 +3,7 @@ from django.contrib.auth.decorators import login_required
|
|||
from django.core.exceptions import PermissionDenied
|
||||
from django.shortcuts import get_object_or_404, render
|
||||
from django.views.generic import ListView
|
||||
from django.contrib.sites.shortcuts import get_current_site
|
||||
|
||||
from registration.backends.default.views import RegistrationView
|
||||
|
||||
|
@ -25,7 +26,7 @@ def profile(request):
|
|||
|
||||
forms = [UserForm(request.POST or None, instance=request.user),
|
||||
ProfileForm(request.POST or None, instance=request.user.profile),
|
||||
ParticipationForm(request.POST or None, instance=Participation.on_site.get(user=request.user))]
|
||||
ParticipationForm(request.POST or None, instance=Participation.objects.get(site=get_current_site(request), user=request.user))]
|
||||
|
||||
if request.method == 'POST':
|
||||
if all(form.is_valid() for form in forms):
|
||||
|
@ -39,7 +40,8 @@ def profile(request):
|
|||
|
||||
|
||||
class ParticipantList(StaffRequiredMixin, ListView):
|
||||
queryset = Participation.on_site.all()
|
||||
def get_queryset(self):
|
||||
return Participation.objects.filter(site=get_current_site(self.request)).all()
|
||||
|
||||
|
||||
@login_required
|
||||
|
@ -52,7 +54,7 @@ def edit(request, username):
|
|||
participation_form_class = ParticipationOrgaForm if is_orga(request, request.user) else ParticipationForm
|
||||
forms = [UserForm(request.POST or None, instance=profile.user),
|
||||
ProfileOrgaForm(request.POST or None, instance=profile),
|
||||
participation_form_class(request.POST or None, instance=Participation.on_site.get(user=profile.user))]
|
||||
participation_form_class(request.POST or None, instance=Participation.objects.get(site=get_current_site(request), user=profile.user))]
|
||||
|
||||
if request.method == 'POST':
|
||||
if all(form.is_valid() for form in forms):
|
||||
|
|
|
@ -30,7 +30,7 @@ def check_talk(talk):
|
|||
reviewers = User.objects.filter(topic__talk=talk)
|
||||
talk.conversation.subscribers.add(*reviewers)
|
||||
for user in talk.speakers.all():
|
||||
participation, created = Participation.on_site.get_or_create(user=user, site=talk.site)
|
||||
participation, created = Participation.objects.get_or_create(user=user, site=talk.site)
|
||||
participation.conversation.subscribers.add(*reviewers)
|
||||
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ def talk_conversation(request, talk):
|
|||
@login_required
|
||||
def correspondents(request):
|
||||
|
||||
correspondent_list = Participation.on_site.filter(conversation__subscribers=request.user)
|
||||
correspondent_list = Participation.objects.filter(site=get_current_site(request), conversation__subscribers=request.user)
|
||||
|
||||
return render(request, 'conversations/correspondents.html', {
|
||||
'correspondent_list': correspondent_list,
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.7 on 2016-07-09 20:59
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('proposals', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelManagers(
|
||||
name='talk',
|
||||
managers=[
|
||||
],
|
||||
),
|
||||
migrations.AlterModelManagers(
|
||||
name='topic',
|
||||
managers=[
|
||||
],
|
||||
),
|
||||
]
|
|
@ -1,7 +1,6 @@
|
|||
from enum import IntEnum
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.sites.managers import CurrentSiteManager
|
||||
from django.contrib.sites.models import Site
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.core.validators import MaxValueValidator, MinValueValidator
|
||||
|
@ -26,9 +25,6 @@ class Topic(PonyConfModel):
|
|||
|
||||
reviewers = models.ManyToManyField(User, blank=True)
|
||||
|
||||
objects = models.Manager()
|
||||
on_site = CurrentSiteManager()
|
||||
|
||||
@property
|
||||
def talks(self):
|
||||
return Talk.objects.filter(topics=self).all()
|
||||
|
@ -55,9 +51,6 @@ class Talk(PonyConfModel):
|
|||
event = models.IntegerField(choices=enum_to_choices(EVENTS), default=EVENTS.conference_short.value)
|
||||
accepted = models.NullBooleanField(default=None)
|
||||
|
||||
objects = models.Manager()
|
||||
on_site = CurrentSiteManager()
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
|
@ -68,7 +61,7 @@ class Talk(PonyConfModel):
|
|||
if user.is_superuser:
|
||||
return True
|
||||
try:
|
||||
participation = Participation.on_site.get(user=user)
|
||||
participation = Participation.objects.get(site=self.site, user=user)
|
||||
except Participation.DoesNotExists:
|
||||
return False
|
||||
return participation.orga or self.topics.filter(reviewers=participation.user).exists()
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<ul>
|
||||
{% for speaker in participation_list %}
|
||||
<li><a href="{% url 'show-speaker' username=speaker.user.username %}">{{ speaker }}</a></li>
|
||||
<li><a href="{% url 'show-speaker' username=speaker.username %}">{{ speaker.profile }}</a></li>
|
||||
{% empty %}
|
||||
<li><i>No speakers.</i></li>
|
||||
{% endfor %}
|
||||
|
|
|
@ -20,13 +20,13 @@ class ProposalsTests(TestCase):
|
|||
self.client.login(username='a', password='a')
|
||||
self.client.post(reverse('add-talk'), {'title': 'super talk', 'description': 'super', 'event': 1, 'topics': 1,
|
||||
'speakers': 1})
|
||||
talk = Talk.on_site.first()
|
||||
talk = Talk.objects.first()
|
||||
self.assertEqual(str(talk), 'super talk')
|
||||
self.assertEqual(talk.description, 'super')
|
||||
self.client.post(reverse('edit-talk', kwargs={'talk': 'super-talk'}),
|
||||
{'title': 'mega talk', 'description': 'mega', 'event': 1, 'speakers': 1})
|
||||
self.assertEqual(str(talk), 'super talk') # title is read only there
|
||||
talk = Talk.on_site.first()
|
||||
talk = Talk.objects.first()
|
||||
self.assertEqual(talk.description, 'mega')
|
||||
|
||||
# Status Code
|
||||
|
@ -71,9 +71,9 @@ class ProposalsTests(TestCase):
|
|||
def test_topic_edition_permissions(self):
|
||||
# Only orga and superuser can edit topics
|
||||
self.client.login(username='b', password='b')
|
||||
self.assertFalse(Participation.on_site.get(user__username='b').orga)
|
||||
self.assertFalse(Participation.objects.get(user__username='b').orga)
|
||||
self.assertEqual(self.client.get(reverse('edit-topic', kwargs={'slug': 'topipo'})).status_code, 302)
|
||||
Participation.on_site.filter(user__username='b').update(orga=True)
|
||||
Participation.objects.filter(user__username='b').update(orga=True)
|
||||
self.assertEqual(self.client.get(reverse('edit-topic', kwargs={'slug': 'topipo'})).status_code, 200)
|
||||
self.client.login(username='c', password='c') # superuser
|
||||
self.assertEqual(self.client.get(reverse('edit-topic', kwargs={'slug': 'topipo'})).status_code, 200)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
from django.db.models import Q, Sum
|
||||
from django.db.models.functions import Coalesce
|
||||
from django.contrib.sites.shortcuts import get_current_site
|
||||
|
||||
from accounts.models import Participation
|
||||
|
||||
|
@ -9,7 +10,7 @@ def query_sum(queryset, field):
|
|||
|
||||
|
||||
def allowed_talks(talks, request):
|
||||
participation = Participation.on_site.get(user=request.user)
|
||||
participation = Participation.objects.get(site=get_current_site(request), user=request.user)
|
||||
if not participation.is_orga():
|
||||
talks = talks.filter(Q(topics__reviewers=participation.user) | Q(speakers=request.user) | Q(proposer=request.user))
|
||||
return talks.distinct()
|
||||
|
|
|
@ -28,15 +28,15 @@ def home(request):
|
|||
@login_required
|
||||
def talk_list(request):
|
||||
return render(request, 'proposals/talks.html', {
|
||||
'my_talks': Talk.on_site.filter(Q(speakers=request.user) | Q(proposer=request.user)).distinct(),
|
||||
'other_talks': allowed_talks(Talk.on_site.exclude(speakers=request.user, proposer=request.user), request)
|
||||
'my_talks': Talk.objects.filter(site=get_current_site(request)).filter(Q(speakers=request.user) | Q(proposer=request.user)).distinct(),
|
||||
'other_talks': allowed_talks(Talk.objects.filter(site=get_current_site(request)).exclude(speakers=request.user, proposer=request.user), request)
|
||||
})
|
||||
|
||||
|
||||
@login_required
|
||||
def talk_list_by_topic(request, topic):
|
||||
topic = get_object_or_404(Topic, slug=topic)
|
||||
talks = allowed_talks(Talk.on_site.filter(topics=topic), request)
|
||||
talks = allowed_talks(Talk.objects.filter(site=topic.site, topics=topic), request)
|
||||
return render(request, 'proposals/talk_list.html', {'title': 'Talks related to %s:' % topic, 'talk_list': talks})
|
||||
|
||||
|
||||
|
@ -70,12 +70,13 @@ def talk_edit(request, talk=None):
|
|||
|
||||
|
||||
class TalkDetail(LoginRequiredMixin, DetailView):
|
||||
queryset = Talk.on_site.all()
|
||||
def get_queryset(self):
|
||||
return Talk.objects.filter(site=get_current_site(self.request)).all()
|
||||
|
||||
def get_context_data(self, **ctx):
|
||||
user = self.request.user
|
||||
if self.object.is_moderable_by(user):
|
||||
vote = Vote.objects.filter(talk=self.object, user=Participation.on_site.get(user=user)).first()
|
||||
vote = Vote.objects.filter(talk=self.object, user=Participation.objects.get(site=get_current_site(self.request), user=user)).first()
|
||||
ctx.update(edit_perm=True, moderate_perm=True, vote=vote,
|
||||
form_url=reverse('talk-conversation', kwargs={'talk': self.object.slug}))
|
||||
else:
|
||||
|
@ -85,7 +86,9 @@ class TalkDetail(LoginRequiredMixin, DetailView):
|
|||
|
||||
class TopicMixin(object):
|
||||
model = Topic
|
||||
queryset = Topic.on_site.all()
|
||||
|
||||
def get_queryset(self):
|
||||
return Topic.objects.filter(site=get_current_site(self.request)).all()
|
||||
|
||||
|
||||
class TopicList(LoginRequiredMixin, TopicMixin, ListView):
|
||||
|
@ -105,15 +108,18 @@ class TopicUpdate(OrgaRequiredMixin, TopicMixin, UpdateView):
|
|||
|
||||
|
||||
class SpeakerList(StaffRequiredMixin, ListView):
|
||||
queryset = Participation.on_site.filter(user__talk__in=Talk.on_site.all()).distinct()
|
||||
template_name = 'proposals/speaker_list.html'
|
||||
|
||||
def get_queryset(self):
|
||||
current_site = get_current_site(request)
|
||||
return User.objects.filter(talk__in=Talk.objects.filter(site=current_site)).all().distinct()
|
||||
|
||||
|
||||
@login_required
|
||||
def vote(request, talk, score):
|
||||
site = get_current_site(request)
|
||||
talk = get_object_or_404(Talk, site=site, slug=talk)
|
||||
user = Participation.on_site.get(user=request.user)
|
||||
current_site = get_current_site(request)
|
||||
talk = get_object_or_404(Talk, site=current_site, slug=talk)
|
||||
user = Participation.objects.get(site=current_site, user=request.user)
|
||||
if not talk.is_moderable_by(request.user):
|
||||
raise PermissionDenied()
|
||||
vote, created = Vote.objects.get_or_create(talk=talk, user=user)
|
||||
|
@ -128,5 +134,5 @@ def user_details(request, username):
|
|||
speaker = get_object_or_404(User, username=username)
|
||||
return render(request, 'proposals/user_details.html', {
|
||||
'profile': speaker.profile,
|
||||
'talk_list': allowed_talks(Talk.on_site.filter(speakers=speaker), request),
|
||||
'talk_list': allowed_talks(Talk.objects.filter(site=get_current_site(request), speakers=speaker), request),
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue