Merge lp:~daker/loco-team-portal/fix.lc-bugs into lp:loco-team-portal
- fix.lc-bugs
- Merge into 0.2
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 | ||||||||||||
Related 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
1 | === modified file 'loco_directory/common/views.py' |
2 | --- loco_directory/common/views.py 2013-01-14 22:16:07 +0000 |
3 | +++ loco_directory/common/views.py 2013-02-17 12:28:20 +0000 |
4 | @@ -38,12 +38,6 @@ |
5 | RequestContext(request)) |
6 | |
7 | |
8 | -def loco_council(request): |
9 | - context = {} |
10 | - return render_to_response('loco_council.html', context, |
11 | - RequestContext(request)) |
12 | - |
13 | - |
14 | def about(request): |
15 | context = {} |
16 | return render_to_response('about.html', context, |
17 | |
18 | === modified file 'loco_directory/media/css/styles.css' |
19 | --- loco_directory/media/css/styles.css 2012-12-22 23:22:32 +0000 |
20 | +++ loco_directory/media/css/styles.css 2013-02-17 12:28:20 +0000 |
21 | @@ -1239,7 +1239,7 @@ |
22 | margin-bottom: 0px; |
23 | } |
24 | |
25 | -.blog-entry-text ol, ul { |
26 | +.blog-entry-text ol, .blog-entry-text ul { |
27 | text-align:justify; |
28 | font-size: 13px; |
29 | line-height: 1.4; |
30 | @@ -1551,7 +1551,6 @@ |
31 | line-height: 15px; |
32 | } |
33 | |
34 | - |
35 | .team:after { content: ","; } |
36 | .link:after { content: ";"; } |
37 | .calendar:after { content: "N"; } |
38 | @@ -1597,7 +1596,24 @@ |
39 | background: #FFE99A; |
40 | } |
41 | |
42 | - |
43 | .copyright { |
44 | font-size: 0.8em; |
45 | +} |
46 | + |
47 | +#lc { |
48 | + padding: 15px; |
49 | + border-top: 1px solid #E6E6E6; |
50 | +} |
51 | + |
52 | +#lc ul { |
53 | + padding-left: 10px; |
54 | + margin-bottom: 0; |
55 | +} |
56 | + |
57 | +#lc ul li { |
58 | + font-size: 1em; |
59 | +} |
60 | + |
61 | +#lc ul li:last-child { |
62 | + margin-bottom: 0; |
63 | } |
64 | \ No newline at end of file |
65 | |
66 | === modified file 'loco_directory/teams/forms.py' |
67 | --- loco_directory/teams/forms.py 2012-12-28 21:03:08 +0000 |
68 | +++ loco_directory/teams/forms.py 2013-02-17 12:28:20 +0000 |
69 | @@ -24,3 +24,13 @@ |
70 | class Meta(UpdateTeamForm.Meta): |
71 | model = Team |
72 | exclude = ('approved', 'expires_date', 'name', 'lp_name', 'admin_profiles', 'owner_profile', 'active', 'mugshot_url') |
73 | + |
74 | + |
75 | +class EditLoCoCouncilForm(UpdateTeamForm, RenderableMixin): |
76 | + class Meta(UpdateTeamForm.Meta): |
77 | + model = Team |
78 | + exclude = ('approved_date', 'approved', 'expires_date', 'name', |
79 | + 'lp_name', 'contact_profiles', 'admin_profiles', |
80 | + 'owner_profile', 'active', 'override_name', 'mugshot_url', |
81 | + 'languages', 'flickr_id', 'picasa_id', 'pixie_id', |
82 | + 'microbloghashtag', 'countries', 'spr', 'city', 'provides_support') |
83 | |
84 | === added file 'loco_directory/teams/management/commands/lcupdate.py' |
85 | --- loco_directory/teams/management/commands/lcupdate.py 1970-01-01 00:00:00 +0000 |
86 | +++ loco_directory/teams/management/commands/lcupdate.py 2013-02-17 12:28:20 +0000 |
87 | @@ -0,0 +1,41 @@ |
88 | +# -*- coding: utf-8 -*- |
89 | +#!/usr/bin/python |
90 | + |
91 | +from django.core.management.base import NoArgsCommand |
92 | +from django.contrib.auth.models import Group, User |
93 | + |
94 | +from common import launchpad |
95 | +from userprofiles.models import create_userprofile |
96 | + |
97 | +import sys |
98 | +import logging |
99 | +st_handler = logging.StreamHandler(sys.stderr) |
100 | +formatter = logging.Formatter("[%(asctime)s] - %(levelname)s - %(module)s - %(message)s") |
101 | +st_handler.setFormatter(formatter) |
102 | + |
103 | +log = logging.getLogger(__name__) |
104 | +log.addHandler(st_handler) |
105 | +log.setLevel(logging.DEBUG) |
106 | + |
107 | + |
108 | +class Command(NoArgsCommand): |
109 | + help = "Pull the LoCo Council members and add them to the DB." |
110 | + |
111 | + def handle_noargs(self, **options): |
112 | + lp = launchpad.lp_login() |
113 | + if not lp: |
114 | + sys.exit(1) |
115 | + g = Group.objects.get(name='ubuntu-lococouncil') |
116 | + users = g.user_set.all() |
117 | + log.debug("Removing all members.") |
118 | + for u in users: |
119 | + g.user_set.remove(u) |
120 | + lc_members = lp.people["ubuntu-lococouncil"].members |
121 | + for member in lc_members: |
122 | + try: |
123 | + user = User.objects.get(username=member.name) |
124 | + create_userprofile(sender=User, instance=user, need_update=True) |
125 | + log.debug("Adding member %s." % user) |
126 | + g.user_set.add(user) |
127 | + except User.DoesNotExist: |
128 | + log.debug("User %s doesn't exist" % member.name) |
129 | |
130 | === modified file 'loco_directory/teams/management/commands/lpupdate.py' |
131 | --- loco_directory/teams/management/commands/lpupdate.py 2013-02-03 22:47:01 +0000 |
132 | +++ loco_directory/teams/management/commands/lpupdate.py 2013-02-17 12:28:20 +0000 |
133 | @@ -11,6 +11,15 @@ |
134 | from datetime import datetime |
135 | import sys |
136 | |
137 | +import logging |
138 | +st_handler = logging.StreamHandler(sys.stderr) |
139 | +formatter = logging.Formatter("[%(asctime)s] - %(levelname)s - %(module)s - %(message)s") |
140 | +st_handler.setFormatter(formatter) |
141 | + |
142 | +log = logging.getLogger(__name__) |
143 | +log.addHandler(st_handler) |
144 | +log.setLevel(logging.DEBUG) |
145 | + |
146 | |
147 | def create_admin_dict(admins): |
148 | admin_dict = {} |
149 | @@ -69,7 +78,7 @@ |
150 | lp = launchpad.lp_login() |
151 | if not lp: |
152 | sys.exit(1) |
153 | - TEAM_BLACKLIST = (u"ubuntu-lococouncil", u"ubuntu-games-merged") |
154 | + TEAM_BLACKLIST = (u"ubuntu-games-merged") |
155 | |
156 | existing_locos = models.Team.objects.all() |
157 | existing_groups = Group.objects.all() |
158 | @@ -80,12 +89,14 @@ |
159 | team = models.Team(lp_name=l.name, name=l.display_name, |
160 | owner_profile=create_profile(get_team_owner(l).name)) |
161 | team.save() |
162 | + log.debug("Created team %s" % team.name) |
163 | else: |
164 | team = filter(lambda a: a.lp_name == l.name, existing_locos)[0] |
165 | team.name = l.display_name |
166 | team.owner_profile = create_profile(get_team_owner(l).name) |
167 | if not len(team.contact_profiles.all()): |
168 | team.contact_profiles.add(team.owner_profile) |
169 | + log.debug("Updated team %s" % team.name) |
170 | update_admins(team, l, lp) |
171 | |
172 | if not existing_groups or l.name not in [g.name for g in existing_groups]: |
173 | |
174 | === modified file 'loco_directory/teams/models.py' |
175 | --- loco_directory/teams/models.py 2012-12-25 22:00:46 +0000 |
176 | +++ loco_directory/teams/models.py 2013-02-17 12:28:20 +0000 |
177 | @@ -159,4 +159,4 @@ |
178 | |
179 | |
180 | def teams_without_country(): |
181 | - return Team.objects.filter(countries__isnull=True) |
182 | + return Team.objects.filter(countries__isnull=True).exclude(lp_name="ubuntu-lococouncil") |
183 | |
184 | === modified file 'loco_directory/teams/urls.py' |
185 | --- loco_directory/teams/urls.py 2012-11-18 22:02:56 +0000 |
186 | +++ loco_directory/teams/urls.py 2013-02-17 12:28:20 +0000 |
187 | @@ -2,7 +2,6 @@ |
188 | |
189 | urlpatterns = patterns('', |
190 | url(r'^$', 'teams.views.team_list', name='team-list'), |
191 | - #url(r'^me$', 'teams.views.my_teams', name='my-teams'), |
192 | url(r'(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/edit$', 'teams.views.team_edit', name='team-edit'), |
193 | 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'), |
194 | url(r'(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/merge', 'teams.views.select_other_team', name='select-other-team'), |
195 | |
196 | === modified file 'loco_directory/teams/views.py' |
197 | --- loco_directory/teams/views.py 2013-02-10 14:59:16 +0000 |
198 | +++ loco_directory/teams/views.py 2013-02-17 12:28:20 +0000 |
199 | @@ -1,19 +1,17 @@ |
200 | # -*- coding: utf-8 -*- |
201 | +from django import http |
202 | from django.template import RequestContext |
203 | from django.utils.translation import ugettext |
204 | from django.core import serializers |
205 | - |
206 | +from django.contrib.auth.models import User |
207 | from django.shortcuts import render_to_response, redirect, get_object_or_404 |
208 | from django.contrib.auth.decorators import login_required |
209 | - |
210 | -from django import http |
211 | +from django.http import Http404 |
212 | |
213 | from common.utils import simple_iterator |
214 | from common import launchpad |
215 | - |
216 | from teams.models import Continent, Team, countries_without_continent, countries_without_continent_have_teams, teams_without_country |
217 | from teams.utils import merge_teams |
218 | - |
219 | from events.models import TeamEvent |
220 | from meetings.models import TeamMeeting |
221 | from articles.models import Article |
222 | @@ -44,6 +42,57 @@ |
223 | context, RequestContext(request)) |
224 | |
225 | |
226 | +def loco_council(request): |
227 | + |
228 | + team = get_object_or_404(Team, lp_name="ubuntu-lococouncil") |
229 | + articles = Article.objects.filter(source__team=team)[:5] |
230 | + is_member = False |
231 | + is_admin = False |
232 | + if request.user.is_authenticated(): |
233 | + is_member = launchpad.is_team_member(request.user, team) |
234 | + is_admin = launchpad.is_admin_or_owner(request.user.username, team) or launchpad.is_user_on_loco_council(request.user) |
235 | + team_meeting_list = team.teammeeting_set.next_meetings() |
236 | + members = User.objects.filter(groups__name='ubuntu-lococouncil') |
237 | + context = { |
238 | + 'team': team, |
239 | + 'team_meeting_list': team_meeting_list, |
240 | + 'articles': articles, |
241 | + 'members': members, |
242 | + 'is_member': is_member, |
243 | + 'is_admin': is_admin, |
244 | + } |
245 | + return render_to_response('loco_council.html', context, |
246 | + RequestContext(request)) |
247 | + |
248 | + |
249 | +@login_required |
250 | +def loco_council_edit(request): |
251 | + team_object = get_object_or_404(Team, lp_name="ubuntu-lococouncil") |
252 | + |
253 | + #check if user has needed rights |
254 | + is_on_lc = launchpad.is_user_on_loco_council(request.user) |
255 | + if not is_on_lc: |
256 | + request.user.message_set.create(message=ugettext('You are not allowed to make changes to the team details.')) |
257 | + return redirect('/loco-council/') |
258 | + |
259 | + if request.method == "POST": |
260 | + form = forms.EditLoCoCouncilForm(data=request.POST, instance=team_object) |
261 | + |
262 | + if form.is_valid(): |
263 | + form.save() |
264 | + request.user.message_set.create(message=ugettext('Thanks, your team\'s details have been saved.')) |
265 | + return redirect('/loco-council/') |
266 | + else: |
267 | + request.user.message_set.create(message=ugettext('Recent changes to your team\'s details could not be saved.')) |
268 | + else: |
269 | + form = forms.EditLoCoCouncilForm(instance=team_object) |
270 | + |
271 | + return render_to_response('lc_edit.html', |
272 | + {'form': form, |
273 | + 'team': team_object, |
274 | + }, RequestContext(request)) |
275 | + |
276 | + |
277 | def as_ical(objects, name): |
278 | """Return any list events as an ical""" |
279 | filename = "%s.ics" % name.replace(' ', '-').lower() |
280 | @@ -159,6 +208,8 @@ |
281 | |
282 | |
283 | def team_detail(request, team_slug): |
284 | + if team_slug == 'ubuntu-lococouncil': |
285 | + return redirect('/loco-council/') |
286 | team_object = get_object_or_404(Team, lp_name=team_slug) |
287 | articles = Article.objects.filter(source__team=team_object)[:5] |
288 | is_member = False |
289 | @@ -198,7 +249,9 @@ |
290 | def team_merge(request, team_slug, other_team_slug): |
291 | old_team = get_object_or_404(Team, lp_name=team_slug) |
292 | new_team = get_object_or_404(Team, lp_name=other_team_slug) |
293 | - |
294 | + if old_team == 'ubuntu-lococouncil' or new_team == 'ubuntu-lococouncil': |
295 | + request.user.message_set.create(message=ugettext('You are not allowed to merge this team with another one.')) |
296 | + return redirect('/') |
297 | #check if user has needed rights |
298 | is_admin = launchpad.is_admin_or_owner(request.user.username, old_team) and \ |
299 | launchpad.is_admin_or_owner(request.user.username, new_team) |
300 | @@ -220,6 +273,8 @@ |
301 | @login_required |
302 | def team_edit(request, team_slug): |
303 | #get team |
304 | + if team_slug == 'ubuntu-lococouncil': |
305 | + raise Http404 |
306 | team_object = get_object_or_404(Team, lp_name=team_slug) |
307 | |
308 | #check if user has needed rights |
309 | |
310 | === added file 'loco_directory/templates/lc_edit.html' |
311 | --- loco_directory/templates/lc_edit.html 1970-01-01 00:00:00 +0000 |
312 | +++ loco_directory/templates/lc_edit.html 2013-02-17 12:28:20 +0000 |
313 | @@ -0,0 +1,37 @@ |
314 | +{% extends "base.html" %} |
315 | +{% load i18n %} |
316 | + |
317 | +{% block page_name %}{% blocktrans with team.name as teamname %}Update {{teamname}}{% endblocktrans %}{% endblock %} |
318 | + |
319 | +{% block extrahead %}{{block.super}} |
320 | +{{ form.media }} |
321 | +{% endblock %} |
322 | + |
323 | +{% block sub_nav_links %} |
324 | + <li><a class="sub-nav-item" href="approved">{% trans "Approved Teams" %}</a></li> |
325 | + {% if is_admin %}<li><a class="sub-nav-item" href="{% url lc_edit %}" title="{% trans "Edit Details" %}">{% trans "Edit Details" %}</a></li>{% endif %} |
326 | + {% 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 %} |
327 | +{% endblock %} |
328 | + |
329 | +{% block content %} |
330 | + |
331 | +<div class="row"> |
332 | +<section class="span-9"> |
333 | + <article id="form"> |
334 | + {% if form.errors %} |
335 | + <p style="color: red;"> |
336 | + {% trans "Please correct the error" %}{{ form.errors|pluralize }} below. |
337 | + </p> |
338 | + {% endif %} |
339 | + |
340 | + <form action="{{ request.path_info }}" method="POST">{% csrf_token %} |
341 | + <fieldset> |
342 | + <h3>{% trans "Update the information below" %}</h3> |
343 | + {{ form.as_template }} |
344 | + </fieldset> |
345 | + <input type="submit" name="submit" value="{% trans "Update Information Now!" %}" class="submit-button" /> |
346 | + </form> |
347 | + </section> |
348 | +</div> |
349 | + |
350 | +{% endblock %} |
351 | |
352 | === modified file 'loco_directory/templates/loco_council.html' |
353 | --- loco_directory/templates/loco_council.html 2012-06-04 22:14:50 +0000 |
354 | +++ loco_directory/templates/loco_council.html 2013-02-17 12:28:20 +0000 |
355 | @@ -1,45 +1,159 @@ |
356 | {% extends "base.html" %} |
357 | -{% load i18n %} |
358 | +{% load i18n teams_tags %} |
359 | |
360 | {% block page_name %}{% trans "Ubuntu LoCo Council" %}{% endblock %} |
361 | |
362 | {% block sub_nav_links %} |
363 | <li><a class="sub-nav-item" href="approved">{% trans "Approved Teams" %}</a></li> |
364 | + {% if is_admin %}<li><a class="sub-nav-item" href="{% url lc_edit %}" title="{% trans "Edit Details" %}">{% trans "Edit Details" %}</a></li>{% endif %} |
365 | + {% 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 %} |
366 | {% endblock %} |
367 | |
368 | {% block content %} |
369 | <div class="row"> |
370 | - <section class="span-12"> |
371 | - <h1>{% trans "Ubuntu LoCo Council" %}</h1> |
372 | - <p> |
373 | - {% 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." %} |
374 | - </p> |
375 | - <p> |
376 | - {% 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." %} |
377 | - </p> |
378 | - <p> |
379 | - {% trans "The LoCo Council governs the LoCo Community; responsibilities include but are not limited to the following:" %} |
380 | - <ul> |
381 | - <li>{% trans "To provide independent guidance for the LoCo Community." %}</li> |
382 | - <li>{% trans "To maintain quality of governance in the LoCo community." %}</li> |
383 | - <li>{% trans "To assess and re-assess teams for approved state." %}</li> |
384 | - <li>{% trans "To provide input and feedback to other Ubuntu governance boards regarding the needs and achievements of the LoCo community." %}</li> |
385 | - <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> |
386 | - <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> |
387 | - <li>{% trans "Influencing and recommending how LoCo resources are allocated." %}</li> |
388 | - <li>{% trans "Influencing the direction and goals of the Ubuntu Project and greater LoCo Team effort." %}</li> |
389 | - <li>{% trans "To motivate and encourage LoCos to be the best they can." %}</li> |
390 | - </ul> |
391 | - </p> |
392 | - <p> |
393 | - {% trans "You can reach the council via email at loco-council at lists.ubuntu.com." %} |
394 | - </p> |
395 | - <p> |
396 | - {% with '<a href="https://wiki.ubuntu.com/LoCoCouncil/Agenda">' as url_lcagenda %} |
397 | - {% with '</a>' as link_end %} |
398 | - {% 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 %} |
399 | - {% endwith %} |
400 | - {% endwith %} |
401 | - </p> |
402 | - </section></div> |
403 | + <section class="span-9"> |
404 | + <div class="box_content"> |
405 | + <div class="pagelet"> |
406 | + <div id="locobranding"> |
407 | + <img src="{{ MEDIA_URL }}images/cof_orange_hex1.png" alt="{{ team.name }}" title="{{ team.name }}" /> |
408 | + </div> |
409 | + <div id="loco-name"> |
410 | + <h2>{% trans "Ubuntu LoCo Council" %}</h2> |
411 | + <div style="display:block;"> |
412 | + <div id="loco-location"> |
413 | + <span title="{% trans "Resources" %}" class="pictogram ml"></span> |
414 | + <span class="value ellipsis small-ellipsis"> |
415 | + {% if team.web_url %} |
416 | + <a href="{{ team.web_url }}" title="{% trans "Website" %}" target="_blank"> |
417 | + {% trans "Website" %} |
418 | + </a> |
419 | + {% endif %} |
420 | + {% if team.web_url and team.wiki_url %} / {% endif %} |
421 | + {% if team.wiki_url %} |
422 | + <a href="{{ team.wiki_url }}" title="{% trans "Wiki" %}" target="_blank"> |
423 | + {% trans "Wiki" %} |
424 | + </a> |
425 | + {% endif %} |
426 | + </span> |
427 | + </div> |
428 | + |
429 | + |
430 | + <div id="loco-support"> |
431 | + <span class="pictogram forums" title="{% trans "Support" %}"></span> |
432 | + <span class="value ellipsis"> |
433 | + {% if team.ml_url %} |
434 | + <a href="{{ team.ml_url }}" title="{% trans "Mailing List" %}" target="_blank"> |
435 | + {% trans "Mailing List" %} |
436 | + </a> |
437 | + {% endif %} / |
438 | + {% if team.forum_url %} |
439 | + <a href="{{ team.forum_url }}" title="{% trans "Forums" %}" target="_blank"> |
440 | + {% trans "Forums" %} |
441 | + </a> |
442 | + {% endif %} / |
443 | + {% if team.irc_chan %} |
444 | + <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"> |
445 | + {% trans "IRC" %} |
446 | + </a> |
447 | + {% endif %} |
448 | + </span> |
449 | + </div> |
450 | + </div> |
451 | + </div> |
452 | + </div> |
453 | + <div class="events-meetings-wrapper"> |
454 | + <div style="overflow: auto;"> |
455 | + <h3 class="title">{% trans "Upcoming Meetings" %}</h3> |
456 | + </div> |
457 | + {% if team_meeting_list %} |
458 | + {% for meeting in team_meeting_list %} |
459 | + <a href="{{ meeting.get_absolute_url }}" title="{% if meeting.venue %}{% else %}{{meeting.date_begin|date:"M d"}}{% endif %}" class="event-meetings"> |
460 | + <span class="title">{{ meeting.name }}</span> |
461 | + <small>{{ meeting.local_date_begin|date:"l, d N Y" }} {% trans "at " %}{{ meeting.local_date_begin|date:"H:i T" }}</small> |
462 | + <p>{{ meeting.description }}</p> |
463 | + </a> |
464 | + {% endfor %} |
465 | + {% else %} |
466 | + <div class="no-results"> |
467 | + {% trans "There are currently no upcoming meetings." %} |
468 | + </div> |
469 | + {% endif %} |
470 | + <div id="lc" style="padding: 15px;"> |
471 | + <p> |
472 | + {% 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." %} |
473 | + </p> |
474 | + <p> |
475 | + {% 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." %} |
476 | + </p> |
477 | + <p> |
478 | + {% trans "The LoCo Council governs the LoCo Community; responsibilities include but are not limited to the following:" %} |
479 | + <ul> |
480 | + <li>{% trans "To provide independent guidance for the LoCo Community." %}</li> |
481 | + <li>{% trans "To maintain quality of governance in the LoCo community." %}</li> |
482 | + <li>{% trans "To assess and re-assess teams for approved state." %}</li> |
483 | + <li>{% trans "To provide input and feedback to other Ubuntu governance boards regarding the needs and achievements of the LoCo community." %}</li> |
484 | + <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> |
485 | + <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> |
486 | + <li>{% trans "Influencing and recommending how LoCo resources are allocated." %}</li> |
487 | + <li>{% trans "Influencing the direction and goals of the Ubuntu Project and greater LoCo Team effort." %}</li> |
488 | + <li>{% trans "To motivate and encourage LoCos to be the best they can." %}</li> |
489 | + </ul> |
490 | + </p> |
491 | + <p> |
492 | + {% trans "You can reach the council via email at loco-council at lists.ubuntu.com." %} |
493 | + </p> |
494 | + <p> |
495 | + {% with '<a href="https://wiki.ubuntu.com/LoCoCouncil/Agenda">' as url_lcagenda %} |
496 | + {% with '</a>' as link_end %} |
497 | + {% 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 %} |
498 | + {% endwith %} |
499 | + {% endwith %} |
500 | + </p> |
501 | + </div> |
502 | + </div> |
503 | + |
504 | + {% if articles %} |
505 | + <div class="team-planet-wrapper"> |
506 | + <div style="overflow: auto;"> |
507 | + <h3 class="title">{% trans "Planet Feed" %}</h3> |
508 | + </div> |
509 | + {% for article in articles %} |
510 | + <article class="team-blog-entry"> |
511 | + {% if article.source.user %} |
512 | + <img class="blog-entry-image" src="{{ article.source.user.mugshot }}" /> |
513 | + {% endif %} |
514 | + <h4 class="blog-entry-title"> |
515 | + <a href="{{ article.get_absolute_url }}" title="{{ article.title }}">{{ article.title }}</a> |
516 | + </h4> |
517 | + <div class="blog-entry-author"> |
518 | + {% if article.source.user %} |
519 | + <a class="user" href="{% url profile-detail article.source.user.user.username %}">{{ article.source.user }}</a> |
520 | + {% endif %} |
521 | + </div> |
522 | + <div class="blog-entry-text"> |
523 | + <p>{{ article.content|safe|striptags|truncatewords_html:100 }}</p> |
524 | + <p class="more"> |
525 | + <a href="{{ article.get_absolute_url }}" title="{{ article.title }}">{% trans 'Read More' %} ›</a> |
526 | + </p> |
527 | + </div> |
528 | + </article> |
529 | + {% endfor %} |
530 | + </div> |
531 | + {% endif %} |
532 | + </div> |
533 | + </section> |
534 | + <section class="span-3 box_content last"> |
535 | + <div class="sidebar-inner"> |
536 | + <h3 class="title">{% trans "Members" %}</h3> |
537 | + <div class="team-admins"> |
538 | + {% for member in members %} |
539 | + <a href="{% url profile-detail member.username %}"> |
540 | + <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"> |
541 | + <p>{{ member.get_profile.realname }}</p> |
542 | + </a> |
543 | + {% endfor %} |
544 | + </div> |
545 | + </div> |
546 | + </section> |
547 | +</div> |
548 | {% endblock %} |
549 | |
550 | === modified file 'loco_directory/urls.py' |
551 | --- loco_directory/urls.py 2012-12-26 16:20:13 +0000 |
552 | +++ loco_directory/urls.py 2013-02-17 12:28:20 +0000 |
553 | @@ -33,7 +33,8 @@ |
554 | url(r'^events/venues/', include('venues.urls')), |
555 | url(r'^events/', include('events.urls')), |
556 | url(r'^meetings/', include('meetings.urls')), |
557 | - url(r'^loco-council/$', 'common.views.loco_council', name='loco_council'), |
558 | + url(r'^loco-council/$', 'teams.views.loco_council', name='loco_council'), |
559 | + url(r'^loco-council/edit$', 'teams.views.loco_council_edit', name='lc_edit'), |
560 | url(r'^loco-council/approved$', 'teams.views.reapprovals', name='reapprovals'), |
561 | url(r'^logout$', 'common.views.site_logout', name='logout'), |
562 | url(r'^jsi18n', 'django.views.i18n.javascript_catalog', name='jsi18n'), |