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: mp+44691@code.launchpad.net |
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 | 1 | |||
6 | 2 | from south.db import db | ||
7 | 3 | from django.db import models | ||
8 | 4 | from meetings.models import * | ||
9 | 5 | |||
10 | 6 | class Migration: | ||
11 | 7 | |||
12 | 8 | def forwards(self, orm): | ||
13 | 9 | |||
14 | 10 | # Adding field 'BaseMeeting.minutes' | ||
15 | 11 | db.add_column('meetings_basemeeting', 'minutes', orm['meetings.basemeeting:minutes']) | ||
16 | 12 | |||
17 | 13 | |||
18 | 14 | |||
19 | 15 | def backwards(self, orm): | ||
20 | 16 | |||
21 | 17 | # Deleting field 'BaseMeeting.minutes' | ||
22 | 18 | db.delete_column('meetings_basemeeting', 'minutes') | ||
23 | 19 | |||
24 | 20 | |||
25 | 21 | |||
26 | 22 | models = { | ||
27 | 23 | 'auth.group': { | ||
28 | 24 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
29 | 25 | 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), | ||
30 | 26 | 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) | ||
31 | 27 | }, | ||
32 | 28 | 'auth.permission': { | ||
33 | 29 | 'Meta': {'unique_together': "(('content_type', 'codename'),)"}, | ||
34 | 30 | 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
35 | 31 | 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), | ||
36 | 32 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
37 | 33 | 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) | ||
38 | 34 | }, | ||
39 | 35 | 'auth.user': { | ||
40 | 36 | 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), | ||
41 | 37 | 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), | ||
42 | 38 | 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), | ||
43 | 39 | 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), | ||
44 | 40 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
45 | 41 | 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), | ||
46 | 42 | 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), | ||
47 | 43 | 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), | ||
48 | 44 | 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), | ||
49 | 45 | 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), | ||
50 | 46 | 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), | ||
51 | 47 | 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), | ||
52 | 48 | 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) | ||
53 | 49 | }, | ||
54 | 50 | 'contenttypes.contenttype': { | ||
55 | 51 | 'Meta': {'unique_together': "(('app_label', 'model'),)", 'db_table': "'django_content_type'"}, | ||
56 | 52 | 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
57 | 53 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
58 | 54 | 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
59 | 55 | 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) | ||
60 | 56 | }, | ||
61 | 57 | 'meetings.agendaitem': { | ||
62 | 58 | 'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), | ||
63 | 59 | 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), | ||
64 | 60 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
65 | 61 | 'log': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), | ||
66 | 62 | 'meeting': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'agenda'", 'to': "orm['meetings.BaseMeeting']"}), | ||
67 | 63 | 'order': ('django.db.models.fields.PositiveIntegerField', [], {}), | ||
68 | 64 | 'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['userprofiles.UserProfile']"}), | ||
69 | 65 | 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['meetings.AgendaItem']"}), | ||
70 | 66 | 'title': ('django.db.models.fields.CharField', [], {'max_length': '150'}) | ||
71 | 67 | }, | ||
72 | 68 | 'meetings.basemeeting': { | ||
73 | 69 | 'chair': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['userprofiles.UserProfile']", 'null': 'True', 'blank': 'True'}), | ||
74 | 70 | 'channel': ('django.db.models.fields.CharField', [], {'max_length': '150', 'null': 'True'}), | ||
75 | 71 | 'date_begin': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}), | ||
76 | 72 | 'date_created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2010, 12, 25, 17, 7, 54, 656457)', 'db_index': 'True'}), | ||
77 | 73 | 'date_end': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}), | ||
78 | 74 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
79 | 75 | 'logs': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), | ||
80 | 76 | 'minutes': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), | ||
81 | 77 | 'name': ('django.db.models.fields.CharField', [], {'max_length': '150'}) | ||
82 | 78 | }, | ||
83 | 79 | 'meetings.teammeeting': { | ||
84 | 80 | 'basemeeting_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['meetings.BaseMeeting']", 'unique': 'True', 'primary_key': 'True'}), | ||
85 | 81 | 'teams': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['teams.Team']", 'db_index': 'True', 'symmetrical': 'False'}) | ||
86 | 82 | }, | ||
87 | 83 | 'teams.continent': { | ||
88 | 84 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
89 | 85 | 'name': ('django.db.models.fields.TextField', [], {'max_length': '50'}) | ||
90 | 86 | }, | ||
91 | 87 | 'teams.country': { | ||
92 | 88 | 'continents': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['teams.Continent']", 'symmetrical': 'False'}), | ||
93 | 89 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
94 | 90 | 'name': ('django.db.models.fields.TextField', [], {'max_length': '100'}) | ||
95 | 91 | }, | ||
96 | 92 | 'teams.language': { | ||
97 | 93 | 'code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True'}), | ||
98 | 94 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
99 | 95 | 'name': ('django.db.models.fields.CharField', [], {'max_length': '150', 'null': 'True'}) | ||
100 | 96 | }, | ||
101 | 97 | 'teams.team': { | ||
102 | 98 | 'Meta': {'db_table': "'teams'"}, | ||
103 | 99 | 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), | ||
104 | 100 | 'admin_profiles': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['userprofiles.UserProfile']", 'symmetrical': 'False'}), | ||
105 | 101 | 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), | ||
106 | 102 | 'approved_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), | ||
107 | 103 | 'city': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), | ||
108 | 104 | 'contact_profiles': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['userprofiles.UserProfile']", 'symmetrical': 'False'}), | ||
109 | 105 | 'countries': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['teams.Country']", 'symmetrical': 'False'}), | ||
110 | 106 | 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), | ||
111 | 107 | 'expires_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), | ||
112 | 108 | 'flickr_id': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}), | ||
113 | 109 | 'forum_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), | ||
114 | 110 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
115 | 111 | 'irc_chan': ('django.db.models.fields.CharField', [], {'max_length': '25', 'null': 'True', 'blank': 'True'}), | ||
116 | 112 | 'languages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['teams.Language']", 'symmetrical': 'False'}), | ||
117 | 113 | 'lp_name': ('django.db.models.fields.CharField', [], {'max_length': '40', 'null': 'True'}), | ||
118 | 114 | 'ml_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), | ||
119 | 115 | 'mugshot_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), | ||
120 | 116 | 'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'null': 'True'}), | ||
121 | 117 | 'owner_profile': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owner'", 'null': 'True', 'to': "orm['userprofiles.UserProfile']"}), | ||
122 | 118 | 'picasa_id': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}), | ||
123 | 119 | 'pixie_id': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}), | ||
124 | 120 | 'provides_support': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}), | ||
125 | 121 | 'spr': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), | ||
126 | 122 | 'web_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), | ||
127 | 123 | 'wiki_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}) | ||
128 | 124 | }, | ||
129 | 125 | 'userprofiles.userprofile': { | ||
130 | 126 | 'aim': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), | ||
131 | 127 | 'blog': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), | ||
132 | 128 | 'facebook': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), | ||
133 | 129 | 'flickr': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), | ||
134 | 130 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
135 | 131 | 'identica': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), | ||
136 | 132 | 'irc': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), | ||
137 | 133 | 'picasa': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), | ||
138 | 134 | 'realname': ('django.db.models.fields.CharField', [], {'max_length': '150', 'blank': 'True'}), | ||
139 | 135 | 'twitter': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), | ||
140 | 136 | 'tz': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '32'}), | ||
141 | 137 | 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}), | ||
142 | 138 | 'xmpp': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}) | ||
143 | 139 | } | ||
144 | 140 | } | ||
145 | 141 | |||
146 | 142 | complete_apps = ['meetings'] | ||
147 | 0 | 143 | ||
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 | 15 | date_end = models.DateTimeField(help_text=_('end date and local time of the meeting in UTC'), verbose_name=_('Ends'), db_index=True) | 15 | date_end = models.DateTimeField(help_text=_('end date and local time of the meeting in UTC'), verbose_name=_('Ends'), db_index=True) |
153 | 16 | channel = models.CharField(max_length=150, verbose_name=_('Meeting Channel'), help_text=_('Channel that the meeting will be held in. Include #'), null=True) | 16 | channel = models.CharField(max_length=150, verbose_name=_('Meeting Channel'), help_text=_('Channel that the meeting will be held in. Include #'), null=True) |
154 | 17 | 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) | 17 | 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 | 18 | 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 | 18 | date_created = models.DateTimeField(help_text=_('the date and time when the event was created'), default=datetime.datetime.now(), db_index=True) | 19 | date_created = models.DateTimeField(help_text=_('the date and time when the event was created'), default=datetime.datetime.now(), db_index=True) |
157 | 19 | chair = models.ForeignKey(UserProfile, verbose_name=_('Meeting Chair'), blank=True, null=True) | 20 | chair = models.ForeignKey(UserProfile, verbose_name=_('Meeting Chair'), blank=True, null=True) |
158 | 20 | 21 | ||
159 | 21 | 22 | ||
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 | 19 | <th class="form-item-label" scope="row"><label>{% trans "Organizing Team:" %}</label></th> | 19 | <th class="form-item-label" scope="row"><label>{% trans "Organizing Team:" %}</label></th> |
165 | 20 | <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> | 20 | <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 | 21 | </tr> | 21 | </tr> |
170 | 22 | {% endif %} | 22 | <tr> |
171 | 23 | 23 | <th class="form-item-label" scope="row"><label>{% trans "Meeting Channel:" %}</label></th> | |
172 | 24 | {% if team_meeting_object.teams.all %} | 24 | <td class="form-item-value">{{ team_meeting_object.channel }}</td> |
173 | 25 | </tr> | ||
174 | 25 | <tr> | 26 | <tr> |
175 | 26 | <th class="form-item-label" scope="row"><label>{% trans "Meeting Chair:" %}</label></th> | 27 | <th class="form-item-label" scope="row"><label>{% trans "Meeting Chair:" %}</label></th> |
177 | 27 | <td class="form-item-value">{{ team_meeting_object.chair }}</td> | 28 | <td class="form-item-value"> |
178 | 29 | {% if team_meeting_object.chair %} | ||
179 | 30 | {{ team_meeting_object.chair }} | ||
180 | 31 | {% else %} | ||
181 | 32 | {% trans "No Meeting Chair Assigned" %} | ||
182 | 33 | {% endif %} | ||
183 | 34 | </td> | ||
184 | 28 | </tr> | 35 | </tr> |
185 | 36 | {% if team_meeting_object.minutes %} | ||
186 | 37 | <tr> | ||
187 | 38 | <th class="form-item-label" scope="row"><label>{% trans "Meeting Minutes:" %}</label></th> | ||
188 | 39 | <td class="form-item-value"><a href="{{ team_meeting_object.minutes }}">{{ team_meeting_object.minutes }}</a></td> | ||
189 | 40 | </tr> | ||
190 | 41 | {% endif %} | ||
191 | 42 | {% if team_meeting_object.logs %} | ||
192 | 43 | <tr> | ||
193 | 44 | <th class="form-item-label" scope="row"><label>{% trans "Meeting Logs:" %}</label></th> | ||
194 | 45 | <td class="form-item-value"><a href="{{ team_meeting_object.logs }}">{{ team_meeting_object.logs }}</a></td> | ||
195 | 46 | </tr> | ||
196 | 47 | {% endif %} | ||
197 | 29 | {% endif %} | 48 | {% endif %} |
198 | 30 | </table> | 49 | </table> |
199 | 31 | {% endif %} | 50 | {% 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_