Merge lp:~cjohnston/summit/manager-scheduler-user-role into lp:summit
- manager-scheduler-user-role
- Merge into trunk
Status: | Merged |
---|---|
Approved by: | Nigel Babu |
Approved revision: | 239 |
Merged at revision: | 238 |
Proposed branch: | lp:~cjohnston/summit/manager-scheduler-user-role |
Merge into: | lp:summit |
Diff against target: |
450 lines (+219/-201) 4 files modified
summit/schedule/migrations/0008_change_video.py (+0/-201) summit/schedule/migrations/0011_add_managers_schedulers.py (+215/-0) summit/schedule/models/__init__.py (+1/-0) summit/schedule/models/summitmodel.py (+3/-0) |
To merge this branch: | bzr merge lp:~cjohnston/summit/manager-scheduler-user-role |
Related bugs: | |
Related blueprints: |
Linaro Connect Q1.12 Requirements
(Essential)
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Nigel Babu (community) | Approve | ||
Данило Шеган (community) | Approve | ||
Review via email: mp+86844@code.launchpad.net |
Commit message
Adds manager and scheduler user roles to summit
Description of the change
Nigel Babu (nigelbabu) wrote : | # |
- 237. By Данило Шеган
-
[r=chrisjohnston] Changes meeting name to 100 chars
- 238. By Chris Johnston
-
removes bad migration
- 239. By Chris Johnston
-
fix for migration issues
Данило Шеган (danilo) wrote : | # |
The core of this branch is basically lines:
446 + managers = models.
447 + schedulers = models.
This allows us to store a list of managers and schedulers on the Summit object.
The rest of the branch seems to be boiler-plate (and automatically generated) code to manage database migrations as done by South. Removal of summit/
It's not authoritative, but I give my approval for this patch :)
Nigel Babu (nigelbabu) wrote : | # |
Chris answered my question on IRC, and added with your review, I'm good as well.
Preview Diff
1 | === removed file 'summit/schedule/migrations/0008_change_video.py' |
2 | --- summit/schedule/migrations/0008_change_video.py 2011-12-11 10:57:42 +0000 |
3 | +++ summit/schedule/migrations/0008_change_video.py 1970-01-01 00:00:00 +0000 |
4 | @@ -1,201 +0,0 @@ |
5 | -# encoding: utf-8 |
6 | -import datetime |
7 | -from south.db import db |
8 | -from south.v2 import SchemaMigration |
9 | -from django.db import models |
10 | - |
11 | -class Migration(SchemaMigration): |
12 | - |
13 | - def forwards(self, orm): |
14 | - |
15 | - # Deleting field 'Meeting.videographer2' |
16 | - db.delete_column('schedule_meeting', 'videographer2_id') |
17 | - |
18 | - # Deleting field 'Meeting.videographer1' |
19 | - db.delete_column('schedule_meeting', 'videographer1_id') |
20 | - |
21 | - # Adding field 'Meeting.video' |
22 | - db.add_column('schedule_meeting', 'video', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False) |
23 | - |
24 | - |
25 | - def backwards(self, orm): |
26 | - |
27 | - # Adding field 'Meeting.videographer2' |
28 | - db.add_column('schedule_meeting', 'videographer2', self.gf('django.db.models.fields.related.ForeignKey')(related_name='videographer2_set', null=True, to=orm['schedule.Attendee'], blank=True), keep_default=False) |
29 | - |
30 | - # Adding field 'Meeting.videographer1' |
31 | - db.add_column('schedule_meeting', 'videographer1', self.gf('django.db.models.fields.related.ForeignKey')(related_name='videographer1_set', null=True, to=orm['schedule.Attendee'], blank=True), keep_default=False) |
32 | - |
33 | - # Deleting field 'Meeting.video' |
34 | - db.delete_column('schedule_meeting', 'video') |
35 | - |
36 | - |
37 | - models = { |
38 | - 'auth.group': { |
39 | - 'Meta': {'object_name': 'Group'}, |
40 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
41 | - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
42 | - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
43 | - }, |
44 | - 'auth.permission': { |
45 | - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, |
46 | - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
47 | - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), |
48 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
49 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
50 | - }, |
51 | - 'auth.user': { |
52 | - 'Meta': {'object_name': 'User'}, |
53 | - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
54 | - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
55 | - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
56 | - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
57 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
58 | - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
59 | - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
60 | - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
61 | - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
62 | - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
63 | - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
64 | - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
65 | - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
66 | - }, |
67 | - 'contenttypes.contenttype': { |
68 | - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
69 | - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
70 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
71 | - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
72 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
73 | - }, |
74 | - 'schedule.agenda': { |
75 | - 'Meta': {'ordering': "('slot', 'room')", 'unique_together': "(('slot', 'room'),)", 'object_name': 'Agenda'}, |
76 | - 'auto': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
77 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
78 | - 'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Meeting']"}), |
79 | - 'room': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Room']"}), |
80 | - 'slot': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Slot']"}) |
81 | - }, |
82 | - 'schedule.attendee': { |
83 | - 'Meta': {'ordering': "('summit', 'user')", 'object_name': 'Attendee'}, |
84 | - 'crew': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_column': "'crew'"}), |
85 | - 'end_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'end'"}), |
86 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
87 | - 'secret_key_id': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), |
88 | - 'start_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'start'"}), |
89 | - 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), |
90 | - 'topics': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Topic']", 'symmetrical': 'False', 'blank': 'True'}), |
91 | - 'tracks': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Track']", 'symmetrical': 'False', 'blank': 'True'}), |
92 | - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) |
93 | - }, |
94 | - 'schedule.attendeebusy': { |
95 | - 'Meta': {'ordering': "('attendee', 'start_utc', 'end_utc')", 'object_name': 'AttendeeBusy'}, |
96 | - 'attendee': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'busy_set'", 'to': "orm['schedule.Attendee']"}), |
97 | - 'end_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'end'"}), |
98 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
99 | - 'start_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'start'"}) |
100 | - }, |
101 | - 'schedule.crew': { |
102 | - 'Meta': {'ordering': "('date_utc', 'attendee')", 'object_name': 'Crew'}, |
103 | - 'attendee': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'crew_schedule'", 'to': "orm['schedule.Attendee']"}), |
104 | - 'date_utc': ('django.db.models.fields.DateField', [], {'db_column': "'date'"}), |
105 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) |
106 | - }, |
107 | - 'schedule.meeting': { |
108 | - 'Meta': {'object_name': 'Meeting'}, |
109 | - 'approver': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'approver_set'", 'null': 'True', 'to': "orm['schedule.Attendee']"}), |
110 | - 'assignee': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'assignee_set'", 'null': 'True', 'to': "orm['schedule.Attendee']"}), |
111 | - 'description': ('django.db.models.fields.TextField', [], {'max_length': '2047', 'blank': 'True'}), |
112 | - 'drafter': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'drafter_set'", 'null': 'True', 'to': "orm['schedule.Attendee']"}), |
113 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
114 | - 'name': ('summit.schedule.fields.NameField', [], {'max_length': '50', 'blank': 'True'}), |
115 | - 'pad_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), |
116 | - 'participants': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Attendee']", 'symmetrical': 'False', 'through': "orm['schedule.Participant']", 'blank': 'True'}), |
117 | - 'priority': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
118 | - 'private': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
119 | - 'requires_dial_in': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
120 | - 'scribe': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scribe_set'", 'null': 'True', 'to': "orm['schedule.Attendee']"}), |
121 | - 'slots': ('django.db.models.fields.IntegerField', [], {'default': '1'}), |
122 | - 'spec_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), |
123 | - 'status': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), |
124 | - 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), |
125 | - 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
126 | - 'topics': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Topic']", 'symmetrical': 'False', 'blank': 'True'}), |
127 | - 'tracks': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Track']", 'symmetrical': 'False', 'blank': 'True'}), |
128 | - 'type': ('django.db.models.fields.CharField', [], {'default': "u'blueprint'", 'max_length': '15'}), |
129 | - 'video': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
130 | - 'wiki_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) |
131 | - }, |
132 | - 'schedule.participant': { |
133 | - 'Meta': {'ordering': "('meeting', 'attendee', 'required')", 'object_name': 'Participant'}, |
134 | - 'attendee': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Attendee']"}), |
135 | - 'from_launchpad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
136 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
137 | - 'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Meeting']"}), |
138 | - 'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) |
139 | - }, |
140 | - 'schedule.room': { |
141 | - 'Meta': {'ordering': "('summit', 'name')", 'object_name': 'Room'}, |
142 | - 'end_utc': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'db_column': "'end'", 'blank': 'True'}), |
143 | - 'has_dial_in': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
144 | - 'icecast_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), |
145 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
146 | - 'name': ('summit.schedule.fields.NameField', [], {'max_length': '50'}), |
147 | - 'size': ('django.db.models.fields.IntegerField', [], {'default': '0'}), |
148 | - 'start_utc': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'db_column': "'start'", 'blank': 'True'}), |
149 | - 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), |
150 | - 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
151 | - 'tracks': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Track']", 'symmetrical': 'False', 'blank': 'True'}), |
152 | - 'type': ('django.db.models.fields.CharField', [], {'default': "u'open'", 'max_length': '7'}) |
153 | - }, |
154 | - 'schedule.roombusy': { |
155 | - 'Meta': {'ordering': "('room', 'start_utc', 'end_utc')", 'object_name': 'RoomBusy'}, |
156 | - 'end_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'end'"}), |
157 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
158 | - 'room': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'busy_set'", 'to': "orm['schedule.Room']"}), |
159 | - 'start_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'start'"}) |
160 | - }, |
161 | - 'schedule.slot': { |
162 | - 'Meta': {'ordering': "('summit', 'start_utc', 'end_utc')", 'object_name': 'Slot'}, |
163 | - 'end_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'end'"}), |
164 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
165 | - 'start_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'start'"}), |
166 | - 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), |
167 | - 'type': ('django.db.models.fields.CharField', [], {'default': "u'open'", 'max_length': '7'}) |
168 | - }, |
169 | - 'schedule.summit': { |
170 | - 'Meta': {'ordering': "('name',)", 'object_name': 'Summit'}, |
171 | - 'date_end': ('django.db.models.fields.DateField', [], {'null': 'True'}), |
172 | - 'date_start': ('django.db.models.fields.DateField', [], {'null': 'True'}), |
173 | - 'description': ('django.db.models.fields.TextField', [], {'max_length': '2047', 'blank': 'True'}), |
174 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
175 | - 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
176 | - 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), |
177 | - 'name': ('summit.schedule.fields.NameField', [], {'max_length': '50'}), |
178 | - 'state': ('django.db.models.fields.CharField', [], {'default': "u'sponsor'", 'max_length': '10'}), |
179 | - 'timezone': ('django.db.models.fields.CharField', [], {'max_length': '50'}), |
180 | - 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
181 | - }, |
182 | - 'schedule.summitsprint': { |
183 | - 'Meta': {'ordering': "('summit', 'import_url')", 'object_name': 'SummitSprint'}, |
184 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
185 | - 'import_url': ('django.db.models.fields.URLField', [], {'max_length': '200'}), |
186 | - 'summit': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sprint_set'", 'to': "orm['schedule.Summit']"}) |
187 | - }, |
188 | - 'schedule.topic': { |
189 | - 'Meta': {'ordering': "('summit', 'title')", 'object_name': 'Topic'}, |
190 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
191 | - 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), |
192 | - 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
193 | - }, |
194 | - 'schedule.track': { |
195 | - 'Meta': {'ordering': "('summit', 'title', 'slug')", 'object_name': 'Track'}, |
196 | - 'allow_adjacent_sessions': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
197 | - 'color': ('django.db.models.fields.CharField', [], {'default': "'FFFFFF'", 'max_length': '6'}), |
198 | - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
199 | - 'slug': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}), |
200 | - 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), |
201 | - 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
202 | - } |
203 | - } |
204 | - |
205 | - complete_apps = ['schedule'] |
206 | |
207 | === added file 'summit/schedule/migrations/0011_add_managers_schedulers.py' |
208 | --- summit/schedule/migrations/0011_add_managers_schedulers.py 1970-01-01 00:00:00 +0000 |
209 | +++ summit/schedule/migrations/0011_add_managers_schedulers.py 2012-01-06 18:11:24 +0000 |
210 | @@ -0,0 +1,215 @@ |
211 | +# encoding: utf-8 |
212 | +import datetime |
213 | +from south.db import db |
214 | +from south.v2 import SchemaMigration |
215 | +from django.db import models |
216 | + |
217 | +class Migration(SchemaMigration): |
218 | + |
219 | + def forwards(self, orm): |
220 | + |
221 | + # Adding M2M table for field managers on 'Summit' |
222 | + db.create_table('schedule_summit_managers', ( |
223 | + ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), |
224 | + ('summit', models.ForeignKey(orm['schedule.summit'], null=False)), |
225 | + ('user', models.ForeignKey(orm['auth.user'], null=False)) |
226 | + )) |
227 | + db.create_unique('schedule_summit_managers', ['summit_id', 'user_id']) |
228 | + |
229 | + # Adding M2M table for field schedulers on 'Summit' |
230 | + db.create_table('schedule_summit_schedulers', ( |
231 | + ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), |
232 | + ('summit', models.ForeignKey(orm['schedule.summit'], null=False)), |
233 | + ('user', models.ForeignKey(orm['auth.user'], null=False)) |
234 | + )) |
235 | + db.create_unique('schedule_summit_schedulers', ['summit_id', 'user_id']) |
236 | + |
237 | + |
238 | + def backwards(self, orm): |
239 | + |
240 | + # Removing M2M table for field managers on 'Summit' |
241 | + db.delete_table('schedule_summit_managers') |
242 | + |
243 | + # Removing M2M table for field schedulers on 'Summit' |
244 | + db.delete_table('schedule_summit_schedulers') |
245 | + |
246 | + |
247 | + models = { |
248 | + 'auth.group': { |
249 | + 'Meta': {'object_name': 'Group'}, |
250 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
251 | + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
252 | + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
253 | + }, |
254 | + 'auth.permission': { |
255 | + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, |
256 | + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
257 | + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), |
258 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
259 | + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
260 | + }, |
261 | + 'auth.user': { |
262 | + 'Meta': {'object_name': 'User'}, |
263 | + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
264 | + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
265 | + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
266 | + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
267 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
268 | + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
269 | + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
270 | + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
271 | + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
272 | + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
273 | + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
274 | + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
275 | + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
276 | + }, |
277 | + 'contenttypes.contenttype': { |
278 | + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
279 | + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
280 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
281 | + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
282 | + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
283 | + }, |
284 | + 'schedule.agenda': { |
285 | + 'Meta': {'ordering': "('slot', 'room')", 'unique_together': "(('slot', 'room'),)", 'object_name': 'Agenda'}, |
286 | + 'auto': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
287 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
288 | + 'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Meeting']"}), |
289 | + 'room': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Room']"}), |
290 | + 'slot': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Slot']"}) |
291 | + }, |
292 | + 'schedule.attendee': { |
293 | + 'Meta': {'ordering': "('summit', 'user')", 'object_name': 'Attendee'}, |
294 | + 'crew': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_column': "'crew'"}), |
295 | + 'end_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'end'"}), |
296 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
297 | + 'secret_key_id': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), |
298 | + 'start_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'start'"}), |
299 | + 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), |
300 | + 'topics': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Topic']", 'symmetrical': 'False', 'blank': 'True'}), |
301 | + 'tracks': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Track']", 'symmetrical': 'False', 'blank': 'True'}), |
302 | + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) |
303 | + }, |
304 | + 'schedule.attendeebusy': { |
305 | + 'Meta': {'ordering': "('attendee', 'start_utc', 'end_utc')", 'object_name': 'AttendeeBusy'}, |
306 | + 'attendee': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'busy_set'", 'to': "orm['schedule.Attendee']"}), |
307 | + 'end_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'end'"}), |
308 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
309 | + 'start_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'start'"}) |
310 | + }, |
311 | + 'schedule.crew': { |
312 | + 'Meta': {'ordering': "('date_utc', 'attendee')", 'object_name': 'Crew'}, |
313 | + 'attendee': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'crew_schedule'", 'to': "orm['schedule.Attendee']"}), |
314 | + 'date_utc': ('django.db.models.fields.DateField', [], {'db_column': "'date'"}), |
315 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) |
316 | + }, |
317 | + 'schedule.lead': { |
318 | + 'Meta': {'ordering': "('summit', 'track')", 'object_name': 'Lead'}, |
319 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
320 | + 'lead': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lead'", 'to': "orm['schedule.Attendee']"}), |
321 | + 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), |
322 | + 'track': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Track']"}) |
323 | + }, |
324 | + 'schedule.meeting': { |
325 | + 'Meta': {'object_name': 'Meeting'}, |
326 | + 'approver': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'approver_set'", 'null': 'True', 'to': "orm['schedule.Attendee']"}), |
327 | + 'assignee': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'assignee_set'", 'null': 'True', 'to': "orm['schedule.Attendee']"}), |
328 | + 'description': ('django.db.models.fields.TextField', [], {'max_length': '2047', 'blank': 'True'}), |
329 | + 'drafter': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'drafter_set'", 'null': 'True', 'to': "orm['schedule.Attendee']"}), |
330 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
331 | + 'name': ('summit.schedule.fields.NameField', [], {'max_length': '100', 'blank': 'True'}), |
332 | + 'pad_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), |
333 | + 'participants': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Attendee']", 'symmetrical': 'False', 'through': "orm['schedule.Participant']", 'blank': 'True'}), |
334 | + 'priority': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
335 | + 'private': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
336 | + 'requires_dial_in': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
337 | + 'scribe': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scribe_set'", 'null': 'True', 'to': "orm['schedule.Attendee']"}), |
338 | + 'slots': ('django.db.models.fields.IntegerField', [], {'default': '1'}), |
339 | + 'spec_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), |
340 | + 'status': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), |
341 | + 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), |
342 | + 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
343 | + 'topics': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Topic']", 'symmetrical': 'False', 'blank': 'True'}), |
344 | + 'tracks': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Track']", 'symmetrical': 'False', 'blank': 'True'}), |
345 | + 'type': ('django.db.models.fields.CharField', [], {'default': "u'blueprint'", 'max_length': '15'}), |
346 | + 'video': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
347 | + 'wiki_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) |
348 | + }, |
349 | + 'schedule.participant': { |
350 | + 'Meta': {'ordering': "('meeting', 'attendee', 'required')", 'object_name': 'Participant'}, |
351 | + 'attendee': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Attendee']"}), |
352 | + 'from_launchpad': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
353 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
354 | + 'meeting': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Meeting']"}), |
355 | + 'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) |
356 | + }, |
357 | + 'schedule.room': { |
358 | + 'Meta': {'ordering': "('summit', 'name')", 'object_name': 'Room'}, |
359 | + 'end_utc': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'db_column': "'end'", 'blank': 'True'}), |
360 | + 'has_dial_in': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
361 | + 'icecast_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), |
362 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
363 | + 'name': ('summit.schedule.fields.NameField', [], {'max_length': '50'}), |
364 | + 'size': ('django.db.models.fields.IntegerField', [], {'default': '0'}), |
365 | + 'start_utc': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'db_column': "'start'", 'blank': 'True'}), |
366 | + 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), |
367 | + 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
368 | + 'tracks': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['schedule.Track']", 'symmetrical': 'False', 'blank': 'True'}), |
369 | + 'type': ('django.db.models.fields.CharField', [], {'default': "u'open'", 'max_length': '7'}) |
370 | + }, |
371 | + 'schedule.roombusy': { |
372 | + 'Meta': {'ordering': "('room', 'start_utc', 'end_utc')", 'object_name': 'RoomBusy'}, |
373 | + 'end_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'end'"}), |
374 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
375 | + 'room': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'busy_set'", 'to': "orm['schedule.Room']"}), |
376 | + 'start_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'start'"}) |
377 | + }, |
378 | + 'schedule.slot': { |
379 | + 'Meta': {'ordering': "('summit', 'start_utc', 'end_utc')", 'object_name': 'Slot'}, |
380 | + 'end_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'end'"}), |
381 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
382 | + 'start_utc': ('django.db.models.fields.DateTimeField', [], {'db_column': "'start'"}), |
383 | + 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), |
384 | + 'type': ('django.db.models.fields.CharField', [], {'default': "u'open'", 'max_length': '7'}) |
385 | + }, |
386 | + 'schedule.summit': { |
387 | + 'Meta': {'ordering': "('name',)", 'object_name': 'Summit'}, |
388 | + 'date_end': ('django.db.models.fields.DateField', [], {'null': 'True'}), |
389 | + 'date_start': ('django.db.models.fields.DateField', [], {'null': 'True'}), |
390 | + 'description': ('django.db.models.fields.TextField', [], {'max_length': '2047', 'blank': 'True'}), |
391 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
392 | + 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
393 | + 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), |
394 | + 'managers': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'managers'", 'blank': 'True', 'to': "orm['auth.User']"}), |
395 | + 'name': ('summit.schedule.fields.NameField', [], {'max_length': '50'}), |
396 | + 'schedulers': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'schedulers'", 'blank': 'True', 'to': "orm['auth.User']"}), |
397 | + 'state': ('django.db.models.fields.CharField', [], {'default': "u'sponsor'", 'max_length': '10'}), |
398 | + 'timezone': ('django.db.models.fields.CharField', [], {'max_length': '50'}), |
399 | + 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
400 | + }, |
401 | + 'schedule.summitsprint': { |
402 | + 'Meta': {'ordering': "('summit', 'import_url')", 'object_name': 'SummitSprint'}, |
403 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
404 | + 'import_url': ('django.db.models.fields.URLField', [], {'max_length': '200'}), |
405 | + 'summit': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sprint_set'", 'to': "orm['schedule.Summit']"}) |
406 | + }, |
407 | + 'schedule.topic': { |
408 | + 'Meta': {'ordering': "('summit', 'title')", 'object_name': 'Topic'}, |
409 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
410 | + 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), |
411 | + 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
412 | + }, |
413 | + 'schedule.track': { |
414 | + 'Meta': {'ordering': "('summit', 'title', 'slug')", 'object_name': 'Track'}, |
415 | + 'allow_adjacent_sessions': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
416 | + 'color': ('django.db.models.fields.CharField', [], {'default': "'FFFFFF'", 'max_length': '6'}), |
417 | + 'description': ('django.db.models.fields.TextField', [], {'max_length': '1000', 'null': 'True'}), |
418 | + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
419 | + 'slug': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}), |
420 | + 'summit': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['schedule.Summit']"}), |
421 | + 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
422 | + } |
423 | + } |
424 | + |
425 | + complete_apps = ['schedule'] |
426 | |
427 | === modified file 'summit/schedule/models/__init__.py' |
428 | --- summit/schedule/models/__init__.py 2011-11-17 21:26:34 +0000 |
429 | +++ summit/schedule/models/__init__.py 2012-01-06 18:11:24 +0000 |
430 | @@ -29,6 +29,7 @@ |
431 | from crewmodel import * |
432 | from leadmodel import * |
433 | |
434 | + |
435 | def meeting_update_callback(sender, **kwargs): |
436 | # Invalidate meeting HTML cache |
437 | instance = kwargs['instance'] |
438 | |
439 | === modified file 'summit/schedule/models/summitmodel.py' |
440 | --- summit/schedule/models/summitmodel.py 2012-01-05 16:39:20 +0000 |
441 | +++ summit/schedule/models/summitmodel.py 2012-01-06 18:11:24 +0000 |
442 | @@ -69,6 +69,9 @@ |
443 | default=STATE_CHOICES[0][0]) |
444 | date_start = models.DateField(blank=False, null=True) |
445 | date_end = models.DateField(blank=False, null=True) |
446 | + managers = models.ManyToManyField(User, blank=True, related_name='managers') |
447 | + schedulers = models.ManyToManyField(User, blank=True, related_name='schedulers') |
448 | + |
449 | |
450 | objects = SummitManager() |
451 |
Err, what are you trying to do?