Merge lp:~daker/loco-team-portal/fix.lc-bugs into lp:loco-team-portal

Proposed by Adnane Belmadiaf
Status: Merged
Approved by: Adnane Belmadiaf
Approved revision: 612
Merged at revision: 612
Proposed branch: lp:~daker/loco-team-portal/fix.lc-bugs
Merge into: lp:loco-team-portal
Diff against target: 562 lines (+331/-53)
11 files modified
loco_directory/common/views.py (+0/-6)
loco_directory/media/css/styles.css (+19/-3)
loco_directory/teams/forms.py (+10/-0)
loco_directory/teams/management/commands/lcupdate.py (+41/-0)
loco_directory/teams/management/commands/lpupdate.py (+12/-1)
loco_directory/teams/models.py (+1/-1)
loco_directory/teams/urls.py (+0/-1)
loco_directory/teams/views.py (+61/-6)
loco_directory/templates/lc_edit.html (+37/-0)
loco_directory/templates/loco_council.html (+148/-34)
loco_directory/urls.py (+2/-1)
To merge this branch: bzr merge lp:~daker/loco-team-portal/fix.lc-bugs
Reviewer Review Type Date Requested Status
LoCo Team Portal Developers Pending
Review via email: mp+148896@code.launchpad.net

Commit message

Added the ability to add LC feed on LTP
Added the ability to add LC meetings on LTP
Added LC members on LTP

Description of the change

To post a comment you must log in.
612. By Adnane Belmadiaf

Fix edit url

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'loco_directory/common/views.py'
--- loco_directory/common/views.py 2013-01-14 22:16:07 +0000
+++ loco_directory/common/views.py 2013-02-17 12:28:20 +0000
@@ -38,12 +38,6 @@
38 RequestContext(request))38 RequestContext(request))
3939
4040
41def loco_council(request):
42 context = {}
43 return render_to_response('loco_council.html', context,
44 RequestContext(request))
45
46
47def about(request):41def about(request):
48 context = {}42 context = {}
49 return render_to_response('about.html', context,43 return render_to_response('about.html', context,
5044
=== modified file 'loco_directory/media/css/styles.css'
--- loco_directory/media/css/styles.css 2012-12-22 23:22:32 +0000
+++ loco_directory/media/css/styles.css 2013-02-17 12:28:20 +0000
@@ -1239,7 +1239,7 @@
1239 margin-bottom: 0px;1239 margin-bottom: 0px;
1240}1240}
12411241
1242.blog-entry-text ol, ul {1242.blog-entry-text ol, .blog-entry-text ul {
1243 text-align:justify;1243 text-align:justify;
1244 font-size: 13px;1244 font-size: 13px;
1245 line-height: 1.4;1245 line-height: 1.4;
@@ -1551,7 +1551,6 @@
1551 line-height: 15px;1551 line-height: 15px;
1552}1552}
15531553
1554
1555.team:after { content: ","; }1554.team:after { content: ","; }
1556.link:after { content: ";"; }1555.link:after { content: ";"; }
1557.calendar:after { content: "N"; }1556.calendar:after { content: "N"; }
@@ -1597,7 +1596,24 @@
1597 background: #FFE99A;1596 background: #FFE99A;
1598}1597}
15991598
1600
1601.copyright {1599.copyright {
1602 font-size: 0.8em;1600 font-size: 0.8em;
1601}
1602
1603#lc {
1604 padding: 15px;
1605 border-top: 1px solid #E6E6E6;
1606}
1607
1608#lc ul {
1609 padding-left: 10px;
1610 margin-bottom: 0;
1611}
1612
1613#lc ul li {
1614 font-size: 1em;
1615}
1616
1617#lc ul li:last-child {
1618 margin-bottom: 0;
1603}1619}
1604\ No newline at end of file1620\ No newline at end of file
16051621
=== modified file 'loco_directory/teams/forms.py'
--- loco_directory/teams/forms.py 2012-12-28 21:03:08 +0000
+++ loco_directory/teams/forms.py 2013-02-17 12:28:20 +0000
@@ -24,3 +24,13 @@
24 class Meta(UpdateTeamForm.Meta):24 class Meta(UpdateTeamForm.Meta):
25 model = Team25 model = Team
26 exclude = ('approved', 'expires_date', 'name', 'lp_name', 'admin_profiles', 'owner_profile', 'active', 'mugshot_url')26 exclude = ('approved', 'expires_date', 'name', 'lp_name', 'admin_profiles', 'owner_profile', 'active', 'mugshot_url')
27
28
29class EditLoCoCouncilForm(UpdateTeamForm, RenderableMixin):
30 class Meta(UpdateTeamForm.Meta):
31 model = Team
32 exclude = ('approved_date', 'approved', 'expires_date', 'name',
33 'lp_name', 'contact_profiles', 'admin_profiles',
34 'owner_profile', 'active', 'override_name', 'mugshot_url',
35 'languages', 'flickr_id', 'picasa_id', 'pixie_id',
36 'microbloghashtag', 'countries', 'spr', 'city', 'provides_support')
2737
=== added file 'loco_directory/teams/management/commands/lcupdate.py'
--- loco_directory/teams/management/commands/lcupdate.py 1970-01-01 00:00:00 +0000
+++ loco_directory/teams/management/commands/lcupdate.py 2013-02-17 12:28:20 +0000
@@ -0,0 +1,41 @@
1# -*- coding: utf-8 -*-
2#!/usr/bin/python
3
4from django.core.management.base import NoArgsCommand
5from django.contrib.auth.models import Group, User
6
7from common import launchpad
8from userprofiles.models import create_userprofile
9
10import sys
11import logging
12st_handler = logging.StreamHandler(sys.stderr)
13formatter = logging.Formatter("[%(asctime)s] - %(levelname)s - %(module)s - %(message)s")
14st_handler.setFormatter(formatter)
15
16log = logging.getLogger(__name__)
17log.addHandler(st_handler)
18log.setLevel(logging.DEBUG)
19
20
21class Command(NoArgsCommand):
22 help = "Pull the LoCo Council members and add them to the DB."
23
24 def handle_noargs(self, **options):
25 lp = launchpad.lp_login()
26 if not lp:
27 sys.exit(1)
28 g = Group.objects.get(name='ubuntu-lococouncil')
29 users = g.user_set.all()
30 log.debug("Removing all members.")
31 for u in users:
32 g.user_set.remove(u)
33 lc_members = lp.people["ubuntu-lococouncil"].members
34 for member in lc_members:
35 try:
36 user = User.objects.get(username=member.name)
37 create_userprofile(sender=User, instance=user, need_update=True)
38 log.debug("Adding member %s." % user)
39 g.user_set.add(user)
40 except User.DoesNotExist:
41 log.debug("User %s doesn't exist" % member.name)
042
=== modified file 'loco_directory/teams/management/commands/lpupdate.py'
--- loco_directory/teams/management/commands/lpupdate.py 2013-02-03 22:47:01 +0000
+++ loco_directory/teams/management/commands/lpupdate.py 2013-02-17 12:28:20 +0000
@@ -11,6 +11,15 @@
11from datetime import datetime11from datetime import datetime
12import sys12import sys
1313
14import logging
15st_handler = logging.StreamHandler(sys.stderr)
16formatter = logging.Formatter("[%(asctime)s] - %(levelname)s - %(module)s - %(message)s")
17st_handler.setFormatter(formatter)
18
19log = logging.getLogger(__name__)
20log.addHandler(st_handler)
21log.setLevel(logging.DEBUG)
22
1423
15def create_admin_dict(admins):24def create_admin_dict(admins):
16 admin_dict = {}25 admin_dict = {}
@@ -69,7 +78,7 @@
69 lp = launchpad.lp_login()78 lp = launchpad.lp_login()
70 if not lp:79 if not lp:
71 sys.exit(1)80 sys.exit(1)
72 TEAM_BLACKLIST = (u"ubuntu-lococouncil", u"ubuntu-games-merged")81 TEAM_BLACKLIST = (u"ubuntu-games-merged")
7382
74 existing_locos = models.Team.objects.all()83 existing_locos = models.Team.objects.all()
75 existing_groups = Group.objects.all()84 existing_groups = Group.objects.all()
@@ -80,12 +89,14 @@
80 team = models.Team(lp_name=l.name, name=l.display_name,89 team = models.Team(lp_name=l.name, name=l.display_name,
81 owner_profile=create_profile(get_team_owner(l).name))90 owner_profile=create_profile(get_team_owner(l).name))
82 team.save()91 team.save()
92 log.debug("Created team %s" % team.name)
83 else:93 else:
84 team = filter(lambda a: a.lp_name == l.name, existing_locos)[0]94 team = filter(lambda a: a.lp_name == l.name, existing_locos)[0]
85 team.name = l.display_name95 team.name = l.display_name
86 team.owner_profile = create_profile(get_team_owner(l).name)96 team.owner_profile = create_profile(get_team_owner(l).name)
87 if not len(team.contact_profiles.all()):97 if not len(team.contact_profiles.all()):
88 team.contact_profiles.add(team.owner_profile)98 team.contact_profiles.add(team.owner_profile)
99 log.debug("Updated team %s" % team.name)
89 update_admins(team, l, lp)100 update_admins(team, l, lp)
90101
91 if not existing_groups or l.name not in [g.name for g in existing_groups]:102 if not existing_groups or l.name not in [g.name for g in existing_groups]:
92103
=== modified file 'loco_directory/teams/models.py'
--- loco_directory/teams/models.py 2012-12-25 22:00:46 +0000
+++ loco_directory/teams/models.py 2013-02-17 12:28:20 +0000
@@ -159,4 +159,4 @@
159159
160160
161def teams_without_country():161def teams_without_country():
162 return Team.objects.filter(countries__isnull=True)162 return Team.objects.filter(countries__isnull=True).exclude(lp_name="ubuntu-lococouncil")
163163
=== modified file 'loco_directory/teams/urls.py'
--- loco_directory/teams/urls.py 2012-11-18 22:02:56 +0000
+++ loco_directory/teams/urls.py 2013-02-17 12:28:20 +0000
@@ -2,7 +2,6 @@
22
3urlpatterns = patterns('',3urlpatterns = patterns('',
4 url(r'^$', 'teams.views.team_list', name='team-list'),4 url(r'^$', 'teams.views.team_list', name='team-list'),
5 #url(r'^me$', 'teams.views.my_teams', name='my-teams'),
6 url(r'(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/edit$', 'teams.views.team_edit', name='team-edit'),5 url(r'(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/edit$', 'teams.views.team_edit', name='team-edit'),
7 url(r'(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/merge/(?P<other_team_slug>[a-zA-Z0-9\-\.\+?]+)/$', 'teams.views.team_merge', name='team-merge'),6 url(r'(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/merge/(?P<other_team_slug>[a-zA-Z0-9\-\.\+?]+)/$', 'teams.views.team_merge', name='team-merge'),
8 url(r'(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/merge', 'teams.views.select_other_team', name='select-other-team'),7 url(r'(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/merge', 'teams.views.select_other_team', name='select-other-team'),
98
=== modified file 'loco_directory/teams/views.py'
--- loco_directory/teams/views.py 2013-02-10 14:59:16 +0000
+++ loco_directory/teams/views.py 2013-02-17 12:28:20 +0000
@@ -1,19 +1,17 @@
1# -*- coding: utf-8 -*-1# -*- coding: utf-8 -*-
2from django import http
2from django.template import RequestContext3from django.template import RequestContext
3from django.utils.translation import ugettext4from django.utils.translation import ugettext
4from django.core import serializers5from django.core import serializers
56from django.contrib.auth.models import User
6from django.shortcuts import render_to_response, redirect, get_object_or_4047from django.shortcuts import render_to_response, redirect, get_object_or_404
7from django.contrib.auth.decorators import login_required8from django.contrib.auth.decorators import login_required
89from django.http import Http404
9from django import http
1010
11from common.utils import simple_iterator11from common.utils import simple_iterator
12from common import launchpad12from common import launchpad
13
14from teams.models import Continent, Team, countries_without_continent, countries_without_continent_have_teams, teams_without_country13from teams.models import Continent, Team, countries_without_continent, countries_without_continent_have_teams, teams_without_country
15from teams.utils import merge_teams14from teams.utils import merge_teams
16
17from events.models import TeamEvent15from events.models import TeamEvent
18from meetings.models import TeamMeeting16from meetings.models import TeamMeeting
19from articles.models import Article17from articles.models import Article
@@ -44,6 +42,57 @@
44 context, RequestContext(request))42 context, RequestContext(request))
4543
4644
45def loco_council(request):
46
47 team = get_object_or_404(Team, lp_name="ubuntu-lococouncil")
48 articles = Article.objects.filter(source__team=team)[:5]
49 is_member = False
50 is_admin = False
51 if request.user.is_authenticated():
52 is_member = launchpad.is_team_member(request.user, team)
53 is_admin = launchpad.is_admin_or_owner(request.user.username, team) or launchpad.is_user_on_loco_council(request.user)
54 team_meeting_list = team.teammeeting_set.next_meetings()
55 members = User.objects.filter(groups__name='ubuntu-lococouncil')
56 context = {
57 'team': team,
58 'team_meeting_list': team_meeting_list,
59 'articles': articles,
60 'members': members,
61 'is_member': is_member,
62 'is_admin': is_admin,
63 }
64 return render_to_response('loco_council.html', context,
65 RequestContext(request))
66
67
68@login_required
69def loco_council_edit(request):
70 team_object = get_object_or_404(Team, lp_name="ubuntu-lococouncil")
71
72 #check if user has needed rights
73 is_on_lc = launchpad.is_user_on_loco_council(request.user)
74 if not is_on_lc:
75 request.user.message_set.create(message=ugettext('You are not allowed to make changes to the team details.'))
76 return redirect('/loco-council/')
77
78 if request.method == "POST":
79 form = forms.EditLoCoCouncilForm(data=request.POST, instance=team_object)
80
81 if form.is_valid():
82 form.save()
83 request.user.message_set.create(message=ugettext('Thanks, your team\'s details have been saved.'))
84 return redirect('/loco-council/')
85 else:
86 request.user.message_set.create(message=ugettext('Recent changes to your team\'s details could not be saved.'))
87 else:
88 form = forms.EditLoCoCouncilForm(instance=team_object)
89
90 return render_to_response('lc_edit.html',
91 {'form': form,
92 'team': team_object,
93 }, RequestContext(request))
94
95
47def as_ical(objects, name):96def as_ical(objects, name):
48 """Return any list events as an ical"""97 """Return any list events as an ical"""
49 filename = "%s.ics" % name.replace(' ', '-').lower()98 filename = "%s.ics" % name.replace(' ', '-').lower()
@@ -159,6 +208,8 @@
159208
160209
161def team_detail(request, team_slug):210def team_detail(request, team_slug):
211 if team_slug == 'ubuntu-lococouncil':
212 return redirect('/loco-council/')
162 team_object = get_object_or_404(Team, lp_name=team_slug)213 team_object = get_object_or_404(Team, lp_name=team_slug)
163 articles = Article.objects.filter(source__team=team_object)[:5]214 articles = Article.objects.filter(source__team=team_object)[:5]
164 is_member = False215 is_member = False
@@ -198,7 +249,9 @@
198def team_merge(request, team_slug, other_team_slug):249def team_merge(request, team_slug, other_team_slug):
199 old_team = get_object_or_404(Team, lp_name=team_slug)250 old_team = get_object_or_404(Team, lp_name=team_slug)
200 new_team = get_object_or_404(Team, lp_name=other_team_slug)251 new_team = get_object_or_404(Team, lp_name=other_team_slug)
201252 if old_team == 'ubuntu-lococouncil' or new_team == 'ubuntu-lococouncil':
253 request.user.message_set.create(message=ugettext('You are not allowed to merge this team with another one.'))
254 return redirect('/')
202 #check if user has needed rights255 #check if user has needed rights
203 is_admin = launchpad.is_admin_or_owner(request.user.username, old_team) and \256 is_admin = launchpad.is_admin_or_owner(request.user.username, old_team) and \
204 launchpad.is_admin_or_owner(request.user.username, new_team)257 launchpad.is_admin_or_owner(request.user.username, new_team)
@@ -220,6 +273,8 @@
220@login_required273@login_required
221def team_edit(request, team_slug):274def team_edit(request, team_slug):
222 #get team275 #get team
276 if team_slug == 'ubuntu-lococouncil':
277 raise Http404
223 team_object = get_object_or_404(Team, lp_name=team_slug)278 team_object = get_object_or_404(Team, lp_name=team_slug)
224279
225 #check if user has needed rights280 #check if user has needed rights
226281
=== added file 'loco_directory/templates/lc_edit.html'
--- loco_directory/templates/lc_edit.html 1970-01-01 00:00:00 +0000
+++ loco_directory/templates/lc_edit.html 2013-02-17 12:28:20 +0000
@@ -0,0 +1,37 @@
1{% extends "base.html" %}
2{% load i18n %}
3
4{% block page_name %}{% blocktrans with team.name as teamname %}Update {{teamname}}{% endblocktrans %}{% endblock %}
5
6{% block extrahead %}{{block.super}}
7{{ form.media }}
8{% endblock %}
9
10{% block sub_nav_links %}
11 <li><a class="sub-nav-item" href="approved">{% trans "Approved Teams" %}</a></li>
12 {% if is_admin %}<li><a class="sub-nav-item" href="{% url lc_edit %}" title="{% trans "Edit Details" %}">{% trans "Edit Details" %}</a></li>{% endif %}
13 {% if is_member %}<li><a class="sub-nav-item" href="{% url team-meeting-new team.lp_name %}" title="{% trans "Add New Meeting" %}">{% trans "Add New Meeting" %}</a></li>{% endif %}
14{% endblock %}
15
16{% block content %}
17
18<div class="row">
19<section class="span-9">
20 <article id="form">
21 {% if form.errors %}
22 <p style="color: red;">
23 {% trans "Please correct the error" %}{{ form.errors|pluralize }} below.
24 </p>
25 {% endif %}
26
27 <form action="{{ request.path_info }}" method="POST">{% csrf_token %}
28 <fieldset>
29 <h3>{% trans "Update the information below" %}</h3>
30 {{ form.as_template }}
31 </fieldset>
32 <input type="submit" name="submit" value="{% trans "Update Information Now!" %}" class="submit-button" />
33 </form>
34 </section>
35</div>
36
37{% endblock %}
038
=== modified file 'loco_directory/templates/loco_council.html'
--- loco_directory/templates/loco_council.html 2012-06-04 22:14:50 +0000
+++ loco_directory/templates/loco_council.html 2013-02-17 12:28:20 +0000
@@ -1,45 +1,159 @@
1{% extends "base.html" %}1{% extends "base.html" %}
2{% load i18n %}2{% load i18n teams_tags %}
33
4{% block page_name %}{% trans "Ubuntu LoCo Council" %}{% endblock %}4{% block page_name %}{% trans "Ubuntu LoCo Council" %}{% endblock %}
55
6{% block sub_nav_links %}6{% block sub_nav_links %}
7 <li><a class="sub-nav-item" href="approved">{% trans "Approved Teams" %}</a></li>7 <li><a class="sub-nav-item" href="approved">{% trans "Approved Teams" %}</a></li>
8 {% if is_admin %}<li><a class="sub-nav-item" href="{% url lc_edit %}" title="{% trans "Edit Details" %}">{% trans "Edit Details" %}</a></li>{% endif %}
9 {% if is_member %}<li><a class="sub-nav-item" href="{% url team-meeting-new team.lp_name %}" title="{% trans "Add New Meeting" %}">{% trans "Add New Meeting" %}</a></li>{% endif %}
8{% endblock %}10{% endblock %}
911
10{% block content %}12{% block content %}
11<div class="row">13<div class="row">
12 <section class="span-12">14 <section class="span-9">
13 <h1>{% trans "Ubuntu LoCo Council" %}</h1>15 <div class="box_content">
14 <p>16 <div class="pagelet">
15 {% trans "The Ubuntu LoCo Council is comprised of elected, dedicated members of the Ubuntu Community. They have diverse backgrounds, but have a firm understanding of what makes up successful LoCos. The LoCo Council was set up to govern Ubuntu LoCo teams, and utilizing their past experiences, provide guidance and help when needed to these teams and lead them by example." %}17 <div id="locobranding">
16 </p>18 <img src="{{ MEDIA_URL }}images/cof_orange_hex1.png" alt="{{ team.name }}" title="{{ team.name }}" />
17 <p>19 </div>
18 {% trans "The LoCo Council governs the LoCo community, make decisions on resource allocation, deals with conflict resolution and make decisions about where the project should move forward." %}20 <div id="loco-name">
19 </p>21 <h2>{% trans "Ubuntu LoCo Council" %}</h2>
20 <p>22 <div style="display:block;">
21 {% trans "The LoCo Council governs the LoCo Community; responsibilities include but are not limited to the following:" %}23 <div id="loco-location">
22 <ul>24 <span title="{% trans "Resources" %}" class="pictogram ml"></span>
23 <li>{% trans "To provide independent guidance for the LoCo Community." %}</li>25 <span class="value ellipsis small-ellipsis">
24 <li>{% trans "To maintain quality of governance in the LoCo community." %}</li>26 {% if team.web_url %}
25 <li>{% trans "To assess and re-assess teams for approved state." %}</li>27 <a href="{{ team.web_url }}" title="{% trans "Website" %}" target="_blank">
26 <li>{% trans "To provide input and feedback to other Ubuntu governance boards regarding the needs and achievements of the LoCo community." %}</li>28 {% trans "Website" %}
27 <li>{% trans "To act as an independent, objective, third party to resolve conflict in teams by acting as mediator for a group or individuals." %}</li>29 </a>
28 <li>{% trans "To govern key LoCo resources such as mailing lists and key web properties. ie. if you log a Request Ticket regarding your LoCo and don't hear anything after 2 weeks contact us." %}</li>30 {% endif %}
29 <li>{% trans "Influencing and recommending how LoCo resources are allocated." %}</li>31 {% if team.web_url and team.wiki_url %} / {% endif %}
30 <li>{% trans "Influencing the direction and goals of the Ubuntu Project and greater LoCo Team effort." %}</li>32 {% if team.wiki_url %}
31 <li>{% trans "To motivate and encourage LoCos to be the best they can." %}</li>33 <a href="{{ team.wiki_url }}" title="{% trans "Wiki" %}" target="_blank">
32 </ul>34 {% trans "Wiki" %}
33 </p>35 </a>
34 <p>36 {% endif %}
35 {% trans "You can reach the council via email at loco-council at lists.ubuntu.com." %}37 </span>
36 </p>38 </div>
37 <p>39
38 {% with '<a href="https://wiki.ubuntu.com/LoCoCouncil/Agenda">' as url_lcagenda %}40
39 {% with '</a>' as link_end %}41 <div id="loco-support">
40 {% blocktrans %}The LoCo Council holds regular meetings in #ubuntu-meeting on freenode. To find out when the next meeting is view the {{ url_lcagenda }}Meeting Agenda{{ link_end }} wiki page.{% endblocktrans %}42 <span class="pictogram forums" title="{% trans "Support" %}"></span>
41 {% endwith %}43 <span class="value ellipsis">
42 {% endwith %}44 {% if team.ml_url %}
43 </p>45 <a href="{{ team.ml_url }}" title="{% trans "Mailing List" %}" target="_blank">
44 </section></div>46 {% trans "Mailing List" %}
47 </a>
48 {% endif %} /
49 {% if team.forum_url %}
50 <a href="{{ team.forum_url }}" title="{% trans "Forums" %}" target="_blank">
51 {% trans "Forums" %}
52 </a>
53 {% endif %} /
54 {% if team.irc_chan %}
55 <a href="http://webchat.freenode.net/?channels={{ team.irc_chan }}&prompt=1&uio=OT10cnVlJjEwPXRydWUmMTE9MjM218&nick={% if user.is_authenticated %}{{ user.username|irc }}{% else %}locodir-user{% endif %}" title="{% trans "IRC" %}" target="_blank">
56 {% trans "IRC" %}
57 </a>
58 {% endif %}
59 </span>
60 </div>
61 </div>
62 </div>
63 </div>
64 <div class="events-meetings-wrapper">
65 <div style="overflow: auto;">
66 <h3 class="title">{% trans "Upcoming Meetings" %}</h3>
67 </div>
68 {% if team_meeting_list %}
69 {% for meeting in team_meeting_list %}
70 <a href="{{ meeting.get_absolute_url }}" title="{% if meeting.venue %}{% else %}{{meeting.date_begin|date:"M d"}}{% endif %}" class="event-meetings">
71 <span class="title">{{ meeting.name }}</span>
72 <small>{{ meeting.local_date_begin|date:"l, d N Y" }} {% trans "at " %}{{ meeting.local_date_begin|date:"H:i T" }}</small>
73 <p>{{ meeting.description }}</p>
74 </a>
75 {% endfor %}
76 {% else %}
77 <div class="no-results">
78 {% trans "There are currently no upcoming meetings." %}
79 </div>
80 {% endif %}
81 <div id="lc" style="padding: 15px;">
82 <p>
83 {% trans "The Ubuntu LoCo Council is comprised of elected, dedicated members of the Ubuntu Community. They have diverse backgrounds, but have a firm understanding of what makes up successful LoCos. The LoCo Council was set up to govern Ubuntu LoCo teams, and utilizing their past experiences, provide guidance and help when needed to these teams and lead them by example." %}
84 </p>
85 <p>
86 {% trans "The LoCo Council governs the LoCo community, make decisions on resource allocation, deals with conflict resolution and make decisions about where the project should move forward." %}
87 </p>
88 <p>
89 {% trans "The LoCo Council governs the LoCo Community; responsibilities include but are not limited to the following:" %}
90 <ul>
91 <li>{% trans "To provide independent guidance for the LoCo Community." %}</li>
92 <li>{% trans "To maintain quality of governance in the LoCo community." %}</li>
93 <li>{% trans "To assess and re-assess teams for approved state." %}</li>
94 <li>{% trans "To provide input and feedback to other Ubuntu governance boards regarding the needs and achievements of the LoCo community." %}</li>
95 <li>{% trans "To act as an independent, objective, third party to resolve conflict in teams by acting as mediator for a group or individuals." %}</li>
96 <li>{% trans "To govern key LoCo resources such as mailing lists and key web properties. ie. if you log a Request Ticket regarding your LoCo and don't hear anything after 2 weeks contact us." %}</li>
97 <li>{% trans "Influencing and recommending how LoCo resources are allocated." %}</li>
98 <li>{% trans "Influencing the direction and goals of the Ubuntu Project and greater LoCo Team effort." %}</li>
99 <li>{% trans "To motivate and encourage LoCos to be the best they can." %}</li>
100 </ul>
101 </p>
102 <p>
103 {% trans "You can reach the council via email at loco-council at lists.ubuntu.com." %}
104 </p>
105 <p>
106 {% with '<a href="https://wiki.ubuntu.com/LoCoCouncil/Agenda">' as url_lcagenda %}
107 {% with '</a>' as link_end %}
108 {% blocktrans %}The LoCo Council holds regular meetings in #ubuntu-meeting on freenode. To find out when the next meeting is view the {{ url_lcagenda }}Meeting Agenda{{ link_end }} wiki page.{% endblocktrans %}
109 {% endwith %}
110 {% endwith %}
111 </p>
112 </div>
113 </div>
114
115 {% if articles %}
116 <div class="team-planet-wrapper">
117 <div style="overflow: auto;">
118 <h3 class="title">{% trans "Planet Feed" %}</h3>
119 </div>
120 {% for article in articles %}
121 <article class="team-blog-entry">
122 {% if article.source.user %}
123 <img class="blog-entry-image" src="{{ article.source.user.mugshot }}" />
124 {% endif %}
125 <h4 class="blog-entry-title">
126 <a href="{{ article.get_absolute_url }}" title="{{ article.title }}">{{ article.title }}</a>
127 </h4>
128 <div class="blog-entry-author">
129 {% if article.source.user %}
130 <a class="user" href="{% url profile-detail article.source.user.user.username %}">{{ article.source.user }}</a>
131 {% endif %}
132 </div>
133 <div class="blog-entry-text">
134 <p>{{ article.content|safe|striptags|truncatewords_html:100 }}</p>
135 <p class="more">
136 <a href="{{ article.get_absolute_url }}" title="{{ article.title }}">{% trans 'Read More' %} ›</a>
137 </p>
138 </div>
139 </article>
140 {% endfor %}
141 </div>
142 {% endif %}
143 </div>
144 </section>
145 <section class="span-3 box_content last">
146 <div class="sidebar-inner">
147 <h3 class="title">{% trans "Members" %}</h3>
148 <div class="team-admins">
149 {% for member in members %}
150 <a href="{% url profile-detail member.username %}">
151 <img src="{% if member.get_profile.mugshot %}{{ member.get_profile.mugshot }}{% else %}{{MEDIA_URL}}img/default-mugshot.png{% endif %}" class="mugshot" height="50" width="50">
152 <p>{{ member.get_profile.realname }}</p>
153 </a>
154 {% endfor %}
155 </div>
156 </div>
157 </section>
158</div>
45{% endblock %}159{% endblock %}
46160
=== modified file 'loco_directory/urls.py'
--- loco_directory/urls.py 2012-12-26 16:20:13 +0000
+++ loco_directory/urls.py 2013-02-17 12:28:20 +0000
@@ -33,7 +33,8 @@
33 url(r'^events/venues/', include('venues.urls')),33 url(r'^events/venues/', include('venues.urls')),
34 url(r'^events/', include('events.urls')),34 url(r'^events/', include('events.urls')),
35 url(r'^meetings/', include('meetings.urls')),35 url(r'^meetings/', include('meetings.urls')),
36 url(r'^loco-council/$', 'common.views.loco_council', name='loco_council'),36 url(r'^loco-council/$', 'teams.views.loco_council', name='loco_council'),
37 url(r'^loco-council/edit$', 'teams.views.loco_council_edit', name='lc_edit'),
37 url(r'^loco-council/approved$', 'teams.views.reapprovals', name='reapprovals'),38 url(r'^loco-council/approved$', 'teams.views.reapprovals', name='reapprovals'),
38 url(r'^logout$', 'common.views.site_logout', name='logout'),39 url(r'^logout$', 'common.views.site_logout', name='logout'),
39 url(r'^jsi18n', 'django.views.i18n.javascript_catalog', name='jsi18n'),40 url(r'^jsi18n', 'django.views.i18n.javascript_catalog', name='jsi18n'),

Subscribers

People subscribed via source and target branches