Merge lp:~cjohnston/loco-team-portal/686271 into lp:loco-team-portal
- 686271
- Merge into 0.2
Proposed by
Chris Johnston
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | 349 | ||||
Proposed branch: | lp:~cjohnston/loco-team-portal/686271 | ||||
Merge into: | lp:loco-team-portal | ||||
Diff against target: |
199 lines (+166/-4) 3 files modified
loco_directory/meetings/migrations/0005_add_meeting_minutes.py (+142/-0) loco_directory/meetings/models.py (+1/-0) loco_directory/templates/meetings/team_meeting_detail_basic.inc.html (+23/-4) |
||||
To merge this branch: | bzr merge lp:~cjohnston/loco-team-portal/686271 | ||||
Related bugs: |
|
||||
Related blueprints: |
LoCo Directory Meeting Feature
(Medium)
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Adnane Belmadiaf | Needs Fixing | ||
Review via email:
|
Commit message
Description of the change
To post a comment you must log in.
- 349. By Chris Johnston
-
Makes links into links
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === added file 'loco_directory/meetings/migrations/0005_add_meeting_minutes.py' |
2 | --- loco_directory/meetings/migrations/0005_add_meeting_minutes.py 1970-01-01 00:00:00 +0000 |
3 | +++ loco_directory/meetings/migrations/0005_add_meeting_minutes.py 2010-12-25 19:20:10 +0000 |
4 | @@ -0,0 +1,142 @@ |
5 | + |
6 | +from south.db import db |
7 | +from django.db import models |
8 | +from meetings.models import * |
9 | + |
10 | +class Migration: |
11 | + |
12 | + def forwards(self, orm): |
13 | + |
14 | + # Adding field 'BaseMeeting.minutes' |
15 | + db.add_column('meetings_basemeeting', 'minutes', orm['meetings.basemeeting:minutes']) |
16 | + |
17 | + |
18 | + |
19 | + def backwards(self, orm): |
20 | + |
21 | + # Deleting field 'BaseMeeting.minutes' |
22 | + db.delete_column('meetings_basemeeting', 'minutes') |
23 | + |
24 | + |
25 | + |
26 | + models = { |
27 | + 'auth.group': { |
28 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
29 | + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
30 | + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
31 | + }, |
32 | + 'auth.permission': { |
33 | + 'Meta': {'unique_together': "(('content_type', 'codename'),)"}, |
34 | + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
35 | + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), |
36 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
37 | + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
38 | + }, |
39 | + 'auth.user': { |
40 | + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
41 | + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
42 | + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
43 | + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
44 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
45 | + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), |
46 | + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), |
47 | + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), |
48 | + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
49 | + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
50 | + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
51 | + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
52 | + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
53 | + }, |
54 | + 'contenttypes.contenttype': { |
55 | + 'Meta': {'unique_together': "(('app_label', 'model'),)", 'db_table': "'django_content_type'"}, |
56 | + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
57 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
58 | + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
59 | + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
60 | + }, |
61 | + 'meetings.agendaitem': { |
62 | + 'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
63 | + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
64 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
65 | + 'log': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), |
66 | + 'meeting': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'agenda'", 'to': "orm['meetings.BaseMeeting']"}), |
67 | + 'order': ('django.db.models.fields.PositiveIntegerField', [], {}), |
68 | + 'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['userprofiles.UserProfile']"}), |
69 | + 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['meetings.AgendaItem']"}), |
70 | + 'title': ('django.db.models.fields.CharField', [], {'max_length': '150'}) |
71 | + }, |
72 | + 'meetings.basemeeting': { |
73 | + 'chair': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['userprofiles.UserProfile']", 'null': 'True', 'blank': 'True'}), |
74 | + 'channel': ('django.db.models.fields.CharField', [], {'max_length': '150', 'null': 'True'}), |
75 | + 'date_begin': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}), |
76 | + 'date_created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2010, 12, 25, 17, 7, 54, 656457)', 'db_index': 'True'}), |
77 | + 'date_end': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}), |
78 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
79 | + 'logs': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), |
80 | + 'minutes': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), |
81 | + 'name': ('django.db.models.fields.CharField', [], {'max_length': '150'}) |
82 | + }, |
83 | + 'meetings.teammeeting': { |
84 | + 'basemeeting_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['meetings.BaseMeeting']", 'unique': 'True', 'primary_key': 'True'}), |
85 | + 'teams': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['teams.Team']", 'db_index': 'True', 'symmetrical': 'False'}) |
86 | + }, |
87 | + 'teams.continent': { |
88 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
89 | + 'name': ('django.db.models.fields.TextField', [], {'max_length': '50'}) |
90 | + }, |
91 | + 'teams.country': { |
92 | + 'continents': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['teams.Continent']", 'symmetrical': 'False'}), |
93 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
94 | + 'name': ('django.db.models.fields.TextField', [], {'max_length': '100'}) |
95 | + }, |
96 | + 'teams.language': { |
97 | + 'code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True'}), |
98 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
99 | + 'name': ('django.db.models.fields.CharField', [], {'max_length': '150', 'null': 'True'}) |
100 | + }, |
101 | + 'teams.team': { |
102 | + 'Meta': {'db_table': "'teams'"}, |
103 | + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), |
104 | + 'admin_profiles': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['userprofiles.UserProfile']", 'symmetrical': 'False'}), |
105 | + 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), |
106 | + 'approved_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), |
107 | + 'city': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), |
108 | + 'contact_profiles': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['userprofiles.UserProfile']", 'symmetrical': 'False'}), |
109 | + 'countries': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['teams.Country']", 'symmetrical': 'False'}), |
110 | + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), |
111 | + 'expires_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), |
112 | + 'flickr_id': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}), |
113 | + 'forum_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), |
114 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
115 | + 'irc_chan': ('django.db.models.fields.CharField', [], {'max_length': '25', 'null': 'True', 'blank': 'True'}), |
116 | + 'languages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['teams.Language']", 'symmetrical': 'False'}), |
117 | + 'lp_name': ('django.db.models.fields.CharField', [], {'max_length': '40', 'null': 'True'}), |
118 | + 'ml_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), |
119 | + 'mugshot_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), |
120 | + 'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'null': 'True'}), |
121 | + 'owner_profile': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owner'", 'null': 'True', 'to': "orm['userprofiles.UserProfile']"}), |
122 | + 'picasa_id': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}), |
123 | + 'pixie_id': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}), |
124 | + 'provides_support': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), |
125 | + 'spr': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), |
126 | + 'web_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), |
127 | + 'wiki_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}) |
128 | + }, |
129 | + 'userprofiles.userprofile': { |
130 | + 'aim': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), |
131 | + 'blog': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), |
132 | + 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), |
133 | + 'flickr': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), |
134 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
135 | + 'identica': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), |
136 | + 'irc': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), |
137 | + 'picasa': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), |
138 | + 'realname': ('django.db.models.fields.CharField', [], {'max_length': '150', 'blank': 'True'}), |
139 | + 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), |
140 | + 'tz': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '32'}), |
141 | + 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}), |
142 | + 'xmpp': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}) |
143 | + } |
144 | + } |
145 | + |
146 | + complete_apps = ['meetings'] |
147 | |
148 | === modified file 'loco_directory/meetings/models.py' |
149 | --- loco_directory/meetings/models.py 2010-12-09 16:31:57 +0000 |
150 | +++ loco_directory/meetings/models.py 2010-12-25 19:20:10 +0000 |
151 | @@ -15,6 +15,7 @@ |
152 | date_end = models.DateTimeField(help_text=_('end date and local time of the meeting in UTC'), verbose_name=_('Ends'), db_index=True) |
153 | channel = models.CharField(max_length=150, verbose_name=_('Meeting Channel'), help_text=_('Channel that the meeting will be held in. Include #'), null=True) |
154 | logs = models.URLField(verbose_name=_('Meeting Log'), help_text=_('After the meeting, add a link to the meeting log'), max_length=200, verify_exists=False, blank=True, null=True) |
155 | + minutes = models.URLField(verbose_name=_('Meeting Minutes'), help_text=_('After the meeting, add a link to the meeting minutes'), max_length=200, verify_exists=False, blank=True, null=True) |
156 | date_created = models.DateTimeField(help_text=_('the date and time when the event was created'), default=datetime.datetime.now(), db_index=True) |
157 | chair = models.ForeignKey(UserProfile, verbose_name=_('Meeting Chair'), blank=True, null=True) |
158 | |
159 | |
160 | === modified file 'loco_directory/templates/meetings/team_meeting_detail_basic.inc.html' |
161 | --- loco_directory/templates/meetings/team_meeting_detail_basic.inc.html 2010-12-16 13:05:09 +0000 |
162 | +++ loco_directory/templates/meetings/team_meeting_detail_basic.inc.html 2010-12-25 19:20:10 +0000 |
163 | @@ -19,13 +19,32 @@ |
164 | <th class="form-item-label" scope="row"><label>{% trans "Organizing Team:" %}</label></th> |
165 | <td class="form-item-value">{% for team in team_meeting_object.teams.all %}<a title="{% trans "Get more information about this team" %}" href="{{ team.get_absolute_url }}">{{ team.name }}</a>{% if not forloop.last %},{% endif %}{% endfor %}</td> |
166 | </tr> |
167 | -{% endif %} |
168 | - |
169 | -{% if team_meeting_object.teams.all %} |
170 | + <tr> |
171 | + <th class="form-item-label" scope="row"><label>{% trans "Meeting Channel:" %}</label></th> |
172 | + <td class="form-item-value">{{ team_meeting_object.channel }}</td> |
173 | + </tr> |
174 | <tr> |
175 | <th class="form-item-label" scope="row"><label>{% trans "Meeting Chair:" %}</label></th> |
176 | - <td class="form-item-value">{{ team_meeting_object.chair }}</td> |
177 | + <td class="form-item-value"> |
178 | + {% if team_meeting_object.chair %} |
179 | + {{ team_meeting_object.chair }} |
180 | + {% else %} |
181 | + {% trans "No Meeting Chair Assigned" %} |
182 | + {% endif %} |
183 | + </td> |
184 | </tr> |
185 | + {% if team_meeting_object.minutes %} |
186 | + <tr> |
187 | + <th class="form-item-label" scope="row"><label>{% trans "Meeting Minutes:" %}</label></th> |
188 | + <td class="form-item-value"><a href="{{ team_meeting_object.minutes }}">{{ team_meeting_object.minutes }}</a></td> |
189 | + </tr> |
190 | + {% endif %} |
191 | + {% if team_meeting_object.logs %} |
192 | + <tr> |
193 | + <th class="form-item-label" scope="row"><label>{% trans "Meeting Logs:" %}</label></th> |
194 | + <td class="form-item-value"><a href="{{ team_meeting_object.logs }}">{{ team_meeting_object.logs }}</a></td> |
195 | + </tr> |
196 | + {% endif %} |
197 | {% endif %} |
198 | </table> |
199 | {% endif %} |
Could you pls the links clickable, it easier to click on links than Copy-Paste object. minutes| urlize }} object. logs|urlize }}
{{ team_meeting_
{{ team_meeting_