Merge lp:~vorlon/summit/social-media-configurable into lp:summit
- social-media-configurable
- Merge into trunk
Proposed by
Steve Langasek
Status: | Merged |
---|---|
Approved by: | Michael Hall |
Approved revision: | 569 |
Merged at revision: | 568 |
Proposed branch: | lp:~vorlon/summit/social-media-configurable |
Merge into: | lp:summit |
Diff against target: |
312 lines (+244/-4) 6 files modified
summit/schedule/migrations/0030_auto__add_field_summit_social_media.py (+214/-0) summit/schedule/models/summitmodel.py (+4/-0) summit/schedule/templates/schedule/meeting.html (+1/-2) summit/schedule/templates/schedule/summit.html (+2/-0) summit/schedule/templates/schedule/virtual_meeting.html (+1/-2) summit/schedule/tests/summit_model.py (+22/-0) |
To merge this branch: | bzr merge lp:~vorlon/summit/social-media-configurable |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Michael Hall (community) | Approve | ||
Review via email: mp+217674@code.launchpad.net |
Commit message
Let social media links be turned o/off on a per-summit basis.
Description of the change
DebConf does not want social media links on its summit instance, in part because these involve loading javascript from third-party sites. Let these links be turned o/off on a per-summit basis.
To post a comment you must log in.
- 569. By Steve Langasek
-
Add test cases showing that the social_media flag DTRT
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === added file 'summit/schedule/migrations/0030_auto__add_field_summit_social_media.py' | |||
2 | --- summit/schedule/migrations/0030_auto__add_field_summit_social_media.py 1970-01-01 00:00:00 +0000 | |||
3 | +++ summit/schedule/migrations/0030_auto__add_field_summit_social_media.py 2014-05-04 07:06:48 +0000 | |||
4 | @@ -0,0 +1,214 @@ | |||
5 | 1 | # -*- coding: utf-8 -*- | ||
6 | 2 | import datetime | ||
7 | 3 | from south.db import db | ||
8 | 4 | from south.v2 import SchemaMigration | ||
9 | 5 | from django.db import models | ||
10 | 6 | |||
11 | 7 | |||
12 | 8 | class Migration(SchemaMigration): | ||
13 | 9 | |||
14 | 10 | def forwards(self, orm): | ||
15 | 11 | # Adding field 'Summit.social_media' | ||
16 | 12 | db.add_column('schedule_summit', 'social_media', | ||
17 | 13 | self.gf('django.db.models.fields.BooleanField')(default=True), | ||
18 | 14 | keep_default=False) | ||
19 | 15 | |||
20 | 16 | |||
21 | 17 | def backwards(self, orm): | ||
22 | 18 | # Deleting field 'Summit.social_media' | ||
23 | 19 | db.delete_column('schedule_summit', 'social_media') | ||
24 | 20 | |||
25 | 21 | |||
26 | 22 | models = { | ||
27 | 23 | 'auth.group': { | ||
28 | 24 | 'Meta': {'object_name': 'Group'}, | ||
29 | 25 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
30 | 26 | 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), | ||
31 | 27 | 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) | ||
32 | 28 | }, | ||
33 | 29 | 'auth.permission': { | ||
34 | 30 | 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, | ||
35 | 31 | 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
36 | 32 | 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), | ||
37 | 33 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
38 | 34 | 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) | ||
39 | 35 | }, | ||
40 | 36 | 'auth.user': { | ||
41 | 37 | 'Meta': {'ordering': "['username']", 'object_name': 'User'}, | ||
42 | 38 | 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), | ||
43 | 39 | 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), | ||
44 | 40 | 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), | ||
45 | 41 | 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), | ||
46 | 42 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
47 | 43 | 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
48 | 44 | 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
49 | 45 | 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
50 | 46 | 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), | ||
51 | 47 | 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), | ||
52 | 48 | 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), | ||
53 | 49 | 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), | ||
54 | 50 | 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) | ||
55 | 51 | }, | ||
56 | 52 | 'contenttypes.contenttype': { | ||
57 | 53 | 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, | ||
58 | 54 | 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
59 | 55 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
60 | 56 | 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
61 | 57 | 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) | ||
62 | 58 | }, | ||
63 | 59 | 'schedule.agenda': { | ||
64 | 60 | 'Meta': {'ordering': "('slot', 'room')", 'unique_together': "(('slot', 'room'),)", 'object_name': 'Agenda'}, | ||
65 | 61 | 'auto': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
66 | 62 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
67 | 63 | 'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Meeting']"}), | ||
68 | 64 | 'room': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Room']"}), | ||
69 | 65 | 'slot': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Slot']"}) | ||
70 | 66 | }, | ||
71 | 67 | 'schedule.attendee': { | ||
72 | 68 | 'Meta': {'ordering': "('user__username', 'summit')", 'object_name': 'Attendee'}, | ||
73 | 69 | 'crew': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_column': "'crew'"}), | ||
74 | 70 | 'end_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'end'"}), | ||
75 | 71 | 'from_launchpad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
76 | 72 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
77 | 73 | 'secret_key_id': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), | ||
78 | 74 | 'start_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'start'"}), | ||
79 | 75 | 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), | ||
80 | 76 | 'tracks': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Track']", 'symmetrical': 'False', 'blank': 'True'}), | ||
81 | 77 | 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) | ||
82 | 78 | }, | ||
83 | 79 | 'schedule.attendeebusy': { | ||
84 | 80 | 'Meta': {'ordering': "('attendee', 'start_utc', 'end_utc')", 'object_name': 'AttendeeBusy'}, | ||
85 | 81 | 'attendee': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'busy_set'", 'to': "orm['schedule.Attendee']"}), | ||
86 | 82 | 'end_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'end'"}), | ||
87 | 83 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
88 | 84 | 'start_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'start'"}) | ||
89 | 85 | }, | ||
90 | 86 | 'schedule.crew': { | ||
91 | 87 | 'Meta': {'ordering': "('date_utc', 'attendee')", 'object_name': 'Crew'}, | ||
92 | 88 | 'attendee': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'crew_schedule'", 'to': "orm['schedule.Attendee']"}), | ||
93 | 89 | 'date_utc': ('django.db.models.fields.DateField', [], {'db_column': "'date'"}), | ||
94 | 90 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) | ||
95 | 91 | }, | ||
96 | 92 | 'schedule.lead': { | ||
97 | 93 | 'Meta': {'ordering': "('summit', 'track')", 'object_name': 'Lead'}, | ||
98 | 94 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
99 | 95 | 'lead': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lead'", 'to': "orm['schedule.Attendee']"}), | ||
100 | 96 | 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), | ||
101 | 97 | 'track': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Track']"}) | ||
102 | 98 | }, | ||
103 | 99 | 'schedule.meeting': { | ||
104 | 100 | 'Meta': {'object_name': 'Meeting'}, | ||
105 | 101 | 'approved': ('django.db.models.fields.CharField', [], {'default': "'PENDING'", 'max_length': '10', 'null': 'True'}), | ||
106 | 102 | 'approver': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'approver_set'", 'null': 'True', 'to': "orm['schedule.Attendee']"}), | ||
107 | 103 | 'assignee': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'assignee_set'", 'null': 'True', 'to': "orm['schedule.Attendee']"}), | ||
108 | 104 | 'broadcast_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), | ||
109 | 105 | 'description': ('django.db.models.fields.TextField', [], {'max_length': '2047', 'blank': 'True'}), | ||
110 | 106 | 'drafter': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'drafter_set'", 'null': 'True', 'to': "orm['schedule.Attendee']"}), | ||
111 | 107 | 'hangout_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), | ||
112 | 108 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
113 | 109 | 'launchpad_blueprint_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), | ||
114 | 110 | 'name': ('summit.schedule.fields.NameField', [], {'max_length': '100'}), | ||
115 | 111 | 'override_break': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
116 | 112 | 'pad_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), | ||
117 | 113 | 'participants': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Attendee']", 'symmetrical': 'False', 'through': "orm['schedule.Participant']", 'blank': 'True'}), | ||
118 | 114 | 'priority': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), | ||
119 | 115 | 'private': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
120 | 116 | 'private_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), | ||
121 | 117 | 'requires_dial_in': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
122 | 118 | 'scribe': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scribe_set'", 'null': 'True', 'to': "orm['schedule.Attendee']"}), | ||
123 | 119 | 'slots': ('django.db.models.fields.IntegerField', [], {'default': '1'}), | ||
124 | 120 | 'spec_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), | ||
125 | 121 | 'status': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), | ||
126 | 122 | 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), | ||
127 | 123 | 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
128 | 124 | 'tracks': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Track']", 'symmetrical': 'False', 'blank': 'True'}), | ||
129 | 125 | 'type': ('django.db.models.fields.CharField', [], {'default': "u'discussion'", 'max_length': '15'}), | ||
130 | 126 | 'video': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
131 | 127 | 'virtual_meeting': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
132 | 128 | 'wiki_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) | ||
133 | 129 | }, | ||
134 | 130 | 'schedule.participant': { | ||
135 | 131 | 'Meta': {'ordering': "('meeting', 'attendee', 'participation')", 'object_name': 'Participant'}, | ||
136 | 132 | 'attendee': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Attendee']"}), | ||
137 | 133 | 'from_launchpad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
138 | 134 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
139 | 135 | 'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Meeting']"}), | ||
140 | 136 | 'participation': ('django.db.models.fields.CharField', [], {'default': "'ATTENDING'", 'max_length': '32', 'null': 'True'}) | ||
141 | 137 | }, | ||
142 | 138 | 'schedule.room': { | ||
143 | 139 | 'Meta': {'ordering': "('summit', 'name')", 'object_name': 'Room'}, | ||
144 | 140 | 'end_utc': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'db_column': "'end'", 'blank': 'True'}), | ||
145 | 141 | 'has_dial_in': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
146 | 142 | 'icecast_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), | ||
147 | 143 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
148 | 144 | 'irc_channel': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}), | ||
149 | 145 | 'name': ('summit.schedule.fields.NameField', [], {'max_length': '50'}), | ||
150 | 146 | 'size': ('django.db.models.fields.IntegerField', [], {'default': '0'}), | ||
151 | 147 | 'start_utc': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'db_column': "'start'", 'blank': 'True'}), | ||
152 | 148 | 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), | ||
153 | 149 | 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
154 | 150 | 'tracks': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Track']", 'symmetrical': 'False', 'blank': 'True'}), | ||
155 | 151 | 'type': ('django.db.models.fields.CharField', [], {'default': "u'open'", 'max_length': '7'}) | ||
156 | 152 | }, | ||
157 | 153 | 'schedule.roombusy': { | ||
158 | 154 | 'Meta': {'ordering': "('room', 'start_utc', 'end_utc')", 'object_name': 'RoomBusy'}, | ||
159 | 155 | 'end_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'end'"}), | ||
160 | 156 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
161 | 157 | 'room': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'busy_set'", 'to': "orm['schedule.Room']"}), | ||
162 | 158 | 'start_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'start'"}) | ||
163 | 159 | }, | ||
164 | 160 | 'schedule.slot': { | ||
165 | 161 | 'Meta': {'ordering': "('summit', 'start_utc', 'end_utc')", 'object_name': 'Slot'}, | ||
166 | 162 | 'end_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'end'"}), | ||
167 | 163 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
168 | 164 | 'start_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'start'"}), | ||
169 | 165 | 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), | ||
170 | 166 | 'type': ('django.db.models.fields.CharField', [], {'default': "u'open'", 'max_length': '7'}) | ||
171 | 167 | }, | ||
172 | 168 | 'schedule.summit': { | ||
173 | 169 | 'Meta': {'ordering': "('name',)", 'object_name': 'Summit'}, | ||
174 | 170 | 'date_end': ('django.db.models.fields.DateField', [], {'null': 'True'}), | ||
175 | 171 | 'date_start': ('django.db.models.fields.DateField', [], {'null': 'True'}), | ||
176 | 172 | 'description': ('django.db.models.fields.TextField', [], {'max_length': '2047', 'blank': 'True'}), | ||
177 | 173 | 'etherpad': ('django.db.models.fields.URLField', [], {'default': "'http://pad.ubuntu.com/'", 'max_length': '75'}), | ||
178 | 174 | 'hashtag': ('django.db.models.fields.CharField', [], {'max_length': '25', 'blank': 'True'}), | ||
179 | 175 | 'help_text': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), | ||
180 | 176 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
181 | 177 | 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), | ||
182 | 178 | 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), | ||
183 | 179 | 'managers': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'managers'", 'blank': 'True', 'to': "orm['auth.User']"}), | ||
184 | 180 | 'name': ('summit.schedule.fields.NameField', [], {'max_length': '50'}), | ||
185 | 181 | 'qr': ('django.db.models.fields.URLField', [], {'default': "''", 'max_length': '100', 'blank': 'True'}), | ||
186 | 182 | 'schedulers': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'schedulers'", 'blank': 'True', 'to': "orm['auth.User']"}), | ||
187 | 183 | 'sites': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['sites.Site']", 'symmetrical': 'False'}), | ||
188 | 184 | 'social_media': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
189 | 185 | 'state': ('django.db.models.fields.CharField', [], {'default': "u'sponsor'", 'max_length': '10'}), | ||
190 | 186 | 'timezone': ('django.db.models.fields.CharField', [], {'max_length': '50'}), | ||
191 | 187 | 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
192 | 188 | 'virtual_summit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) | ||
193 | 189 | }, | ||
194 | 190 | 'schedule.summitsprint': { | ||
195 | 191 | 'Meta': {'ordering': "('summit', 'import_url')", 'object_name': 'SummitSprint'}, | ||
196 | 192 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
197 | 193 | 'import_url': ('django.db.models.fields.URLField', [], {'max_length': '200'}), | ||
198 | 194 | 'summit': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sprint_set'", 'to': "orm['schedule.Summit']"}) | ||
199 | 195 | }, | ||
200 | 196 | 'schedule.track': { | ||
201 | 197 | 'Meta': {'ordering': "('summit', 'title', 'slug')", 'object_name': 'Track'}, | ||
202 | 198 | 'allow_adjacent_sessions': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
203 | 199 | 'color': ('django.db.models.fields.CharField', [], {'default': "'FFFFFF'", 'max_length': '6'}), | ||
204 | 200 | 'description': ('django.db.models.fields.TextField', [], {'max_length': '1000', 'null': 'True'}), | ||
205 | 201 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
206 | 202 | 'slug': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}), | ||
207 | 203 | 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), | ||
208 | 204 | 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}) | ||
209 | 205 | }, | ||
210 | 206 | 'sites.site': { | ||
211 | 207 | 'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"}, | ||
212 | 208 | 'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
213 | 209 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
214 | 210 | 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) | ||
215 | 211 | } | ||
216 | 212 | } | ||
217 | 213 | |||
218 | 214 | complete_apps = ['schedule'] | ||
219 | 0 | \ No newline at end of file | 215 | \ No newline at end of file |
220 | 1 | 216 | ||
221 | === modified file 'summit/schedule/models/summitmodel.py' | |||
222 | --- summit/schedule/models/summitmodel.py 2013-05-14 01:43:55 +0000 | |||
223 | +++ summit/schedule/models/summitmodel.py 2014-05-04 07:06:48 +0000 | |||
224 | @@ -130,6 +130,10 @@ | |||
225 | 130 | blank=True, | 130 | blank=True, |
226 | 131 | help_text='Instructions and links for getting help during the event' | 131 | help_text='Instructions and links for getting help during the event' |
227 | 132 | ) | 132 | ) |
228 | 133 | social_media = models.BooleanField( | ||
229 | 134 | default=True, | ||
230 | 135 | help_text='Enable social media links for the summit' | ||
231 | 136 | ) | ||
232 | 133 | 137 | ||
233 | 134 | objects = models.Manager() | 138 | objects = models.Manager() |
234 | 135 | on_site = SummitManager() | 139 | on_site = SummitManager() |
235 | 136 | 140 | ||
236 | === modified file 'summit/schedule/templates/schedule/meeting.html' | |||
237 | --- summit/schedule/templates/schedule/meeting.html 2013-11-06 02:25:41 +0000 | |||
238 | +++ summit/schedule/templates/schedule/meeting.html 2014-05-04 07:06:48 +0000 | |||
239 | @@ -81,8 +81,7 @@ | |||
240 | 81 | 81 | ||
241 | 82 | </section> | 82 | </section> |
242 | 83 | <article class="span-3 last"> | 83 | <article class="span-3 last"> |
245 | 84 | {% if meeting.private %} | 84 | {% if not meeting.private and summit.social_media %} |
244 | 85 | {% else %} | ||
246 | 86 | <div class="share"> | 85 | <div class="share"> |
247 | 87 | <a href="http://www.reddit.com/submit" onclick="window.location = 'http://www.reddit.com/submit?url=' + encodeURIComponent(window.location); return false"> <img style="padding-bottom: 4px;"src="http://www.reddit.com/static/spreddit7.gif" alt="submit to reddit" border="0" /></a><br /> | 86 | <a href="http://www.reddit.com/submit" onclick="window.location = 'http://www.reddit.com/submit?url=' + encodeURIComponent(window.location); return false"> <img style="padding-bottom: 4px;"src="http://www.reddit.com/static/spreddit7.gif" alt="submit to reddit" border="0" /></a><br /> |
248 | 88 | <div id="fb-root"></div> | 87 | <div id="fb-root"></div> |
249 | 89 | 88 | ||
250 | === modified file 'summit/schedule/templates/schedule/summit.html' | |||
251 | --- summit/schedule/templates/schedule/summit.html 2014-04-13 21:50:21 +0000 | |||
252 | +++ summit/schedule/templates/schedule/summit.html 2014-05-04 07:06:48 +0000 | |||
253 | @@ -53,6 +53,7 @@ | |||
254 | 53 | {% endif %} | 53 | {% endif %} |
255 | 54 | </section> | 54 | </section> |
256 | 55 | <article class="span-4 last"> | 55 | <article class="span-4 last"> |
257 | 56 | {% if summit.social_media %} | ||
258 | 56 | <div class="share alone"> | 57 | <div class="share alone"> |
259 | 57 | <a href="http://www.reddit.com/submit" onclick="window.location = 'http://www.reddit.com/submit?url=' + encodeURIComponent(window.location); return false"> <img style="padding-bottom: 4px; border: 0;" src="http://www.reddit.com/static/spreddit7.gif" alt="submit to reddit" /></a><br /> | 58 | <a href="http://www.reddit.com/submit" onclick="window.location = 'http://www.reddit.com/submit?url=' + encodeURIComponent(window.location); return false"> <img style="padding-bottom: 4px; border: 0;" src="http://www.reddit.com/static/spreddit7.gif" alt="submit to reddit" /></a><br /> |
260 | 58 | <div id="fb-root"></div> | 59 | <div id="fb-root"></div> |
261 | @@ -70,6 +71,7 @@ | |||
262 | 70 | <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> | 71 | <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> |
263 | 71 | <script src="http://www.stumbleupon.com/hostedbadge.php?s=5"></script> | 72 | <script src="http://www.stumbleupon.com/hostedbadge.php?s=5"></script> |
264 | 72 | </div> | 73 | </div> |
265 | 74 | {% endif %} | ||
266 | 73 | </article> | 75 | </article> |
267 | 74 | </div> | 76 | </div> |
268 | 75 | <div class="row"> | 77 | <div class="row"> |
269 | 76 | 78 | ||
270 | === modified file 'summit/schedule/templates/schedule/virtual_meeting.html' | |||
271 | --- summit/schedule/templates/schedule/virtual_meeting.html 2013-11-06 02:25:41 +0000 | |||
272 | +++ summit/schedule/templates/schedule/virtual_meeting.html 2014-05-04 07:06:48 +0000 | |||
273 | @@ -72,8 +72,7 @@ | |||
274 | 72 | {% for ai in agenda_items %} | 72 | {% for ai in agenda_items %} |
275 | 73 | <h3>{{ ai.slot }} in {{ ai.room.title }}</h3> | 73 | <h3>{{ ai.slot }} in {{ ai.room.title }}</h3> |
276 | 74 | {% endfor %} | 74 | {% endfor %} |
279 | 75 | {% if meeting.private %} | 75 | {% if not meeting.private and summit.social_media %} |
278 | 76 | {% else %} | ||
280 | 77 | <div class="share"> | 76 | <div class="share"> |
281 | 78 | <div id="fb-root"></div> | 77 | <div id="fb-root"></div> |
282 | 79 | <script>(function(d, s, id) { | 78 | <script>(function(d, s, id) { |
283 | 80 | 79 | ||
284 | === modified file 'summit/schedule/tests/summit_model.py' | |||
285 | --- summit/schedule/tests/summit_model.py 2013-05-09 20:15:49 +0000 | |||
286 | +++ summit/schedule/tests/summit_model.py 2014-05-04 07:06:48 +0000 | |||
287 | @@ -642,3 +642,25 @@ | |||
288 | 642 | summit = self.create_summit() | 642 | summit = self.create_summit() |
289 | 643 | response = self.load_summit_page(summit) | 643 | response = self.load_summit_page(summit) |
290 | 644 | self.assertNotContains(response, "Launchpad information") | 644 | self.assertNotContains(response, "Launchpad information") |
291 | 645 | |||
292 | 646 | def test_summit_page_displays_social_media(self): | ||
293 | 647 | """ | ||
294 | 648 | Tests that the summit main page displays the social media links when | ||
295 | 649 | social_media=True | ||
296 | 650 | """ | ||
297 | 651 | summit = self.create_summit() | ||
298 | 652 | summit.social_media=True | ||
299 | 653 | summit.save() | ||
300 | 654 | response = self.load_summit_page(summit) | ||
301 | 655 | self.assertContains(response, "http://www.reddit.com/submit") | ||
302 | 656 | |||
303 | 657 | def test_summit_page_does_not_display_social_media(self): | ||
304 | 658 | """ | ||
305 | 659 | Tests that the summit main page does not display the social media | ||
306 | 660 | links when social_media=False | ||
307 | 661 | """ | ||
308 | 662 | summit = self.create_summit() | ||
309 | 663 | summit.social_media=False | ||
310 | 664 | summit.save() | ||
311 | 665 | response = self.load_summit_page(summit) | ||
312 | 666 | self.assertNotContains(response, "http://www.reddit.com/submit") |
Looks good, tests pass, thanks for the patch