Items now appear also in the personal info widget (where someone is on the list of speakers).

This commit is contained in:
Norman Jäckel 2013-05-12 01:46:40 +02:00
parent 8af50a36cc
commit af493d28e8
3 changed files with 48 additions and 6 deletions

View File

@ -1,6 +1,16 @@
{% load i18n %}
{% load tags %}
<ul style="line-height: 180%">
{% trans 'I am on the list of speakers of the following items:' %}
{% for item in items %}
<li><a href="{% model_url item %}">{{ item }}</a></li>
{% empty %}
<li><i>{% trans 'None' %}</i></li>
{% endfor %}
</ul>
<hr />
<ul style="line-height: 180%">
{% trans 'I submitted the following motions:' %}
{% for motion in submitted_motions %}

View File

@ -19,7 +19,7 @@ from openslides.projector.projector import Widget
def get_widgets(request):
"""
Returns the widgets of the account app. It is only a personal_info_widget.
Returns the widgets of the account app. It is only the personal_info_widget.
"""
if not isinstance(request.user, AnonymousUser):
return [get_personal_info_widget(request)]
@ -30,12 +30,21 @@ def get_widgets(request):
def get_personal_info_widget(request):
"""
Provides a widget for personal info. It shows your submitted and supported
motions and where you are supporter or candidate. If one of the modules
motion or assignment does not exist, it is not loaded. If both don't
exist, the widget disapears.
motions, where you are on the list of speakers and where you are supporter
or candidate. If one of the modules agenda, motion or assignment does
not exist, it is not loaded. If all does not exist, the widget disapears.
"""
personal_info_context = {}
try:
from openslides.agenda.models import Item
except ImportError:
pass
else:
personal_info_context.update({
'items': Item.objects.filter(
speaker__person=request.user,
speaker__begin_time=None)})
try:
from openslides.motion.models import Motion
except ImportError:
@ -58,7 +67,7 @@ def get_personal_info_widget(request):
if personal_info_context:
return Widget(
name='personal_info',
display_name=_('My motions and elections'),
display_name=_('My items, motions and elections'),
template='account/personal_info_widget.html',
context=personal_info_context,
permission_required=None,

View File

@ -19,6 +19,17 @@ class PersonalInfoWidget(TestCase):
"""
Tests the content of the personal info widget.
"""
def import_agenda(self):
"""
Helper function to make the module agenda optional.
"""
try:
from openslides import agenda
except ImportError:
return False
else:
return agenda
def import_motion(self):
"""
Helper function to make the module motion optional.
@ -49,7 +60,19 @@ class PersonalInfoWidget(TestCase):
def test_widget_appearance(self):
response = self.client.get('/projector/dashboard/')
self.assertContains(response, '<h3>My motions and elections</h3>', status_code=200)
self.assertContains(response, '<h3>My items, motions and elections</h3>', status_code=200)
def test_item_list(self):
agenda = self.import_agenda()
if agenda:
item_1 = agenda.models.Item.objects.create(title='My Item Title iw5ohNgee4eiYahb5Eiv')
speaker = agenda.models.Speaker.objects.add(item=item_1, person=self.user)
response = self.client.get('/projector/dashboard/')
self.assertContains(response, 'I am on the list of speakers of the following items:', status_code=200)
self.assertContains(response, 'My Item Title iw5ohNgee4eiYahb5Eiv', status_code=200)
speaker.begin_speach()
response = self.client.get('/projector/dashboard/')
self.assertNotContains(response, 'My Item Title iw5ohNgee4eiYahb5Eiv', status_code=200)
def test_submitter_list(self):
motion = self.import_motion()