Merge lp:~developer-ubuntu-com-dev/developer-ubuntu-com/1470715 into lp:developer-ubuntu-com
- 1470715
- Merge into stable
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | 169 | ||||
Proposed branch: | lp:~developer-ubuntu-com-dev/developer-ubuntu-com/1470715 | ||||
Merge into: | lp:developer-ubuntu-com | ||||
Diff against target: |
1489 lines (+206/-790) 23 files modified
Makefile (+30/-6) README.md (+2/-2) api_docs/migrations/0001_initial.py (+0/-186) developer_portal/admin.py (+3/-1) developer_portal/blog/views.py (+3/-1) developer_portal/management/commands/import-external-docs-branches.py (+10/-6) developer_portal/management/commands/initdb.py (+1/-1) developer_portal/migrations/0001_initial.py (+0/-20) developer_portal/migrations/0002_add_rawhtml_plugin.py (+0/-53) developer_portal/migrations/0003_add_external_docs_branches.py (+0/-62) developer_portal/migrations/0004_auto__add_seoextension.py (+0/-126) developer_portal/settings.py (+42/-22) developer_portal/urls.py (+1/-1) requirements.txt (+38/-40) service/urls.py (+7/-7) store_data/migrations/0001_initial.py (+62/-133) store_data/migrations/0002_add_title_field.py (+0/-58) store_data/migrations/0003_add_website_field.py (+0/-59) templates/zinnia/_entry_detail_base.html (+2/-2) templates/zinnia/base.html (+1/-1) templates/zinnia/category_list.html (+2/-1) templates/zinnia/entry_detail_base.html (+1/-1) templates/zinnia/entry_list.html (+1/-1) |
||||
To merge this branch: | bzr merge lp:~developer-ubuntu-com-dev/developer-ubuntu-com/1470715 | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Daniel Holbach (community) | Approve | ||
David Callé | Pending | ||
Michael Hall | Pending | ||
Review via email:
|
Commit message
Description of the change
Migration notes:
- Use lp:developer-ubuntu-com as a basis, if it's not an instance with live data, make sure you've run all steps from README.md
- Run:
./env/bin/python manage.py cms delete_
./env/bin/python manage.py cms fix-mptt
- merge this branch
- Run:
make update-1470715
./env/bin/python manage.py runserver

Michael Hall (mhall119) wrote : | # |
> Ok, this might need some work if we fully plan to move off of mptt - where is
> templates/
>
I believe it's used here: https:/

Daniel Holbach (dholbach) wrote : | # |
I removed the mptt references, they're not required for our app. zinnia still uses mptt internally though.
- 163. By Daniel Holbach
-
merged trunk
- 164. By David Callé
-
Fix importer commands
- 165. By David Callé
-
Fix diverged branches
- 166. By Daniel Holbach
-
update various packages
- 167. By Daniel Holbach
-
django 1.8.6 is not on pypi yet
- 168. By Daniel Holbach
-
fix djangocms_link migrations path
- 169. By Daniel Holbach
-
@transaction.
commit_ on_success now is @transaction.atomic (https:/ /stackoverflow. com/questions/ 21861207/) - 170. By Daniel Holbach
-
merge trunk

Daniel Holbach (dholbach) wrote : | # |
Markdown importer works after migration in sqlite scenario using these steps: http://

Daniel Holbach (dholbach) wrote : | # |
The migration using http://
- 171. By Daniel Holbach
-
merge trunk
- 172. By Daniel Holbach
-
update permissions model changes
- 173. By Daniel Holbach
-
merge trunk
- 174. By Daniel Holbach
-
update migrations accordingly
- 175. By Daniel Holbach
-
remove non-existing migration dependency
- 176. By Daniel Holbach
-
update Makefile target for migration
- 177. By Daniel Holbach
-
update pip components and migration script
- 178. By Daniel Holbach
-
avoid breakage with some newer components

Daniel Holbach (dholbach) wrote : | # |
With this we are not 100% up to date:
daniel@
argparse (Current: 1.2.1 Latest: 1.4.0)
→ Pillow (Current: 2.9.0 Latest: 3.0.0)
pip (Current: 1.5.6 Latest: 7.1.2)
→ django-cms (Current: 3.1.2 Latest: 3.1.3)
html5lib (Current: 0.999 Latest: 0.9999999)
Django-Select2 (Current: 4.3.2 Latest: 5.3.0)
→ Django (Current: 1.8.5 Latest: 1.8.6)
daniel@
I ran into some issues with the newest versions (components marked with '→'), so I downgraded them. The other components are just pulled in by others.
- 179. By Daniel Holbach
-
remove comments

Daniel Holbach (dholbach) : | # |
Preview Diff
1 | === modified file 'Makefile' |
2 | --- Makefile 2015-10-30 10:11:17 +0000 |
3 | +++ Makefile 2015-11-17 14:32:37 +0000 |
4 | @@ -3,9 +3,34 @@ |
5 | SOURCE_DIR := $(PWD) |
6 | REVNO := `bzr revno` |
7 | |
8 | +update-1470715: |
9 | + ./env/bin/pip install -r requirements.txt --upgrade |
10 | + ./env/bin/pip uninstall -yq South |
11 | + ./env/bin/pip uninstall -yq python-keystoneclient |
12 | + ./env/bin/python manage.py migrate --fake admin |
13 | + ./env/bin/python manage.py migrate --fake sessions |
14 | + ./env/bin/python manage.py migrate --fake sites |
15 | + ./env/bin/python manage.py migrate --fake cms 0001_initial |
16 | + ./env/bin/python manage.py migrate --fake cms 0002_auto_20140816_1918 |
17 | + ./env/bin/python manage.py migrate --fake cmsplugin_zinnia |
18 | + ./env/bin/python manage.py migrate --fake djangocms_link 0001_initial |
19 | + ./env/bin/python manage.py migrate --fake djangocms_picture |
20 | + ./env/bin/python manage.py migrate --fake djangocms_snippet 0001_initial |
21 | + ./env/bin/python manage.py migrate --fake djangocms_text_ckeditor |
22 | + ./env/bin/python manage.py migrate --fake djangocms_video |
23 | + ./env/bin/python manage.py migrate --fake django_comments 0001_initial |
24 | + ./env/bin/python manage.py migrate --fake menus |
25 | + ./env/bin/python manage.py migrate --fake reversion 0001_initial |
26 | + ./env/bin/python manage.py migrate cms |
27 | + ./env/bin/python manage.py migrate --fake developer_portal |
28 | + ./env/bin/python manage.py migrate --fake api_docs |
29 | + ./env/bin/python manage.py migrate --fake django_openid_auth 0001_initial |
30 | + ./env/bin/python manage.py migrate --fake store_data 0001_initial |
31 | + ./env/bin/python manage.py migrate |
32 | + |
33 | update-instance: |
34 | @echo "Nothing to do for the app"; |
35 | - |
36 | + |
37 | update-common: |
38 | @echo "Updating database" |
39 | if [ $(DATABASE_URL) ]; then $(MAKE) initdb; fi |
40 | @@ -45,8 +70,8 @@ |
41 | @python manage.py init_apidocs --settings charm_settings |
42 | |
43 | syncdb: |
44 | - @echo "Syncing database" |
45 | - @python manage.py syncdb --noinput --migrate --settings charm_settings |
46 | + @echo "Syncing/migrating database" |
47 | + @python manage.py migrate --noinput --settings charm_settings |
48 | |
49 | collectstatic: collectstatic.done |
50 | collectstatic.done: |
51 | @@ -63,7 +88,7 @@ |
52 | rm -rf pip-cache |
53 | bzr branch lp:~developer-ubuntu-com-dev/developer-ubuntu-com/dependencies pip-cache |
54 | pip install --exists-action=w --download pip-cache/ -r requirements.txt |
55 | - bzr add pip-cache/* |
56 | + bzr add pip-cache/* |
57 | bzr commit pip-cache/ -m 'automatically updated devportal requirements' |
58 | bzr push --directory pip-cache lp:~developer-ubuntu-com-dev/developer-ubuntu-com/dependencies |
59 | bzr revno pip-cache > pip-cache-revno.txt |
60 | @@ -82,7 +107,7 @@ |
61 | |
62 | db.sqlite3: env |
63 | @echo "Initializing database" |
64 | - @./env/bin/python manage.py syncdb --noinput --migrate |
65 | + @./env/bin/python manage.py migrate --noinput |
66 | @./env/bin/python manage.py initdb |
67 | @./env/bin/python manage.py init_apidocs |
68 | |
69 | @@ -111,4 +136,3 @@ |
70 | @rm ../developer_portal.tar.gz |
71 | @$(MAKE) tarball; |
72 | @echo build_label=`bzr revno` |
73 | - |
74 | |
75 | === modified file 'README.md' |
76 | --- README.md 2015-10-01 13:48:23 +0000 |
77 | +++ README.md 2015-11-17 14:32:37 +0000 |
78 | @@ -4,7 +4,7 @@ |
79 | 2. Change directory to the branch location |
80 | 3. Install the apt requirements: |
81 | |
82 | - sudo apt install python-dev python-django python-django-south python-psycopg2 pwgen virtualenv |
83 | + sudo apt install python-dev python-django python-psycopg2 pwgen virtualenv |
84 | |
85 | 4. Setup your local dev environment: |
86 | |
87 | @@ -27,7 +27,7 @@ |
88 | ./env/bin/python manage.py flush --noinput |
89 | echo "delete from auth_permission;" | ./env/bin/python manage.py dbshell |
90 | ./env/bin/python manage.py loaddata ../dbbackup/dbdump.json |
91 | - ./env/bin/python manage.py syncdb --noinput --all |
92 | + ./env/bin/python manage.py migrate --noinput |
93 | ./env/bin/python manage.py initdb |
94 | |
95 | # Managing translations |
96 | |
97 | === added file 'api_docs/migrations/0001_initial.py' |
98 | --- api_docs/migrations/0001_initial.py 1970-01-01 00:00:00 +0000 |
99 | +++ api_docs/migrations/0001_initial.py 2015-11-17 14:32:37 +0000 |
100 | @@ -0,0 +1,139 @@ |
101 | +# -*- coding: utf-8 -*- |
102 | +from __future__ import unicode_literals |
103 | + |
104 | +from django.db import migrations, models |
105 | + |
106 | + |
107 | +class Migration(migrations.Migration): |
108 | + |
109 | + dependencies = [ |
110 | + ] |
111 | + |
112 | + operations = [ |
113 | + migrations.CreateModel( |
114 | + name='Element', |
115 | + fields=[ |
116 | + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
117 | + ('name', models.CharField(max_length=64)), |
118 | + ('description', models.CharField(default=b'', max_length=256, blank=True)), |
119 | + ('fullname', models.CharField(max_length=128)), |
120 | + ('keywords', models.CharField(default=b'', max_length=256, blank=True)), |
121 | + ('data', models.TextField(default=b'', blank=True)), |
122 | + ('source_file', models.CharField(max_length=128, null=True, blank=True)), |
123 | + ('source_format', models.CharField(max_length=32, null=True, blank=True)), |
124 | + ], |
125 | + options={ |
126 | + 'ordering': ('name',), |
127 | + 'verbose_name': 'Rendered Element', |
128 | + 'verbose_name_plural': 'Rendered Elements', |
129 | + }, |
130 | + ), |
131 | + migrations.CreateModel( |
132 | + name='Language', |
133 | + fields=[ |
134 | + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
135 | + ('name', models.CharField(max_length=64)), |
136 | + ('slug', models.CharField(max_length=64)), |
137 | + ], |
138 | + ), |
139 | + migrations.CreateModel( |
140 | + name='Namespace', |
141 | + fields=[ |
142 | + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
143 | + ('name', models.CharField(max_length=64)), |
144 | + ('display_name', models.CharField(default=b'', max_length=64, blank=True)), |
145 | + ('data', models.TextField(default=b'', blank=True)), |
146 | + ('source_file', models.CharField(max_length=128, null=True, blank=True)), |
147 | + ('source_format', models.CharField(max_length=32, null=True, blank=True)), |
148 | + ], |
149 | + options={ |
150 | + 'ordering': ('name',), |
151 | + }, |
152 | + ), |
153 | + migrations.CreateModel( |
154 | + name='Page', |
155 | + fields=[ |
156 | + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
157 | + ('slug', models.CharField(max_length=64)), |
158 | + ('title', models.CharField(max_length=64)), |
159 | + ('description', models.CharField(default=b'', max_length=256, blank=True)), |
160 | + ('fullname', models.CharField(max_length=128)), |
161 | + ('keywords', models.CharField(default=b'', max_length=256, blank=True)), |
162 | + ('data', models.TextField(default=b'', blank=True)), |
163 | + ('source_file', models.CharField(max_length=128, null=True, blank=True)), |
164 | + ('source_format', models.CharField(max_length=32, null=True, blank=True)), |
165 | + ('order_index', models.PositiveIntegerField(default=0, blank=True)), |
166 | + ('namespace', models.ForeignKey(blank=True, to='api_docs.Namespace', null=True)), |
167 | + ], |
168 | + options={ |
169 | + 'ordering': ('order_index',), |
170 | + 'verbose_name': 'Rendered Page', |
171 | + 'verbose_name_plural': 'Rendered Pages', |
172 | + }, |
173 | + ), |
174 | + migrations.CreateModel( |
175 | + name='Section', |
176 | + fields=[ |
177 | + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
178 | + ('name', models.CharField(max_length=64)), |
179 | + ('description', models.TextField(null=True, blank=True)), |
180 | + ], |
181 | + ), |
182 | + migrations.CreateModel( |
183 | + name='Topic', |
184 | + fields=[ |
185 | + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
186 | + ('name', models.CharField(max_length=64)), |
187 | + ('slug', models.CharField(max_length=64)), |
188 | + ], |
189 | + ), |
190 | + migrations.CreateModel( |
191 | + name='Version', |
192 | + fields=[ |
193 | + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
194 | + ('name', models.CharField(max_length=64)), |
195 | + ('slug', models.CharField(max_length=64)), |
196 | + ('language', models.ForeignKey(to='api_docs.Language', null=True)), |
197 | + ], |
198 | + ), |
199 | + migrations.AddField( |
200 | + model_name='section', |
201 | + name='topic_version', |
202 | + field=models.ForeignKey(to='api_docs.Version'), |
203 | + ), |
204 | + migrations.AddField( |
205 | + model_name='page', |
206 | + name='section', |
207 | + field=models.ForeignKey(to='api_docs.Section'), |
208 | + ), |
209 | + migrations.AddField( |
210 | + model_name='namespace', |
211 | + name='platform_section', |
212 | + field=models.ForeignKey(to='api_docs.Section'), |
213 | + ), |
214 | + migrations.AddField( |
215 | + model_name='language', |
216 | + name='current_version', |
217 | + field=models.ForeignKey(related_name='current_for_lang', blank=True, to='api_docs.Version', null=True), |
218 | + ), |
219 | + migrations.AddField( |
220 | + model_name='language', |
221 | + name='development_version', |
222 | + field=models.ForeignKey(related_name='development_for_lang', blank=True, to='api_docs.Version', null=True), |
223 | + ), |
224 | + migrations.AddField( |
225 | + model_name='language', |
226 | + name='topic', |
227 | + field=models.ForeignKey(to='api_docs.Topic'), |
228 | + ), |
229 | + migrations.AddField( |
230 | + model_name='element', |
231 | + name='namespace', |
232 | + field=models.ForeignKey(blank=True, to='api_docs.Namespace', null=True), |
233 | + ), |
234 | + migrations.AddField( |
235 | + model_name='element', |
236 | + name='section', |
237 | + field=models.ForeignKey(to='api_docs.Section'), |
238 | + ), |
239 | + ] |
240 | |
241 | === removed file 'api_docs/migrations/0001_initial.py' |
242 | --- api_docs/migrations/0001_initial.py 2015-02-05 14:24:04 +0000 |
243 | +++ api_docs/migrations/0001_initial.py 1970-01-01 00:00:00 +0000 |
244 | @@ -1,186 +0,0 @@ |
245 | -# -*- coding: utf-8 -*- |
246 | -from south.utils import datetime_utils as datetime |
247 | -from south.db import db |
248 | -from south.v2 import SchemaMigration |
249 | -from django.db import models |
250 | - |
251 | - |
252 | -class Migration(SchemaMigration): |
253 | - |
254 | - def forwards(self, orm): |
255 | - # Adding model 'Topic' |
256 | - db.create_table(u'api_docs_topic', ( |
257 | - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
258 | - ('name', self.gf('django.db.models.fields.CharField')(max_length=64)), |
259 | - ('slug', self.gf('django.db.models.fields.CharField')(max_length=64)), |
260 | - )) |
261 | - db.send_create_signal(u'api_docs', ['Topic']) |
262 | - |
263 | - # Adding model 'Language' |
264 | - db.create_table(u'api_docs_language', ( |
265 | - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
266 | - ('topic', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['api_docs.Topic'])), |
267 | - ('name', self.gf('django.db.models.fields.CharField')(max_length=64)), |
268 | - ('slug', self.gf('django.db.models.fields.CharField')(max_length=64)), |
269 | - ('current_version', self.gf('django.db.models.fields.related.ForeignKey')(related_name='current_for_lang', null=True, to=orm['api_docs.Version'])), |
270 | - ('development_version', self.gf('django.db.models.fields.related.ForeignKey')(related_name='development_for_lang', null=True, to=orm['api_docs.Version'])), |
271 | - )) |
272 | - db.send_create_signal(u'api_docs', ['Language']) |
273 | - |
274 | - # Adding model 'Version' |
275 | - db.create_table(u'api_docs_version', ( |
276 | - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
277 | - ('language', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['api_docs.Language'], null=True)), |
278 | - ('name', self.gf('django.db.models.fields.CharField')(max_length=64)), |
279 | - ('slug', self.gf('django.db.models.fields.CharField')(max_length=64)), |
280 | - )) |
281 | - db.send_create_signal(u'api_docs', ['Version']) |
282 | - |
283 | - # Adding model 'Section' |
284 | - db.create_table(u'api_docs_section', ( |
285 | - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
286 | - ('name', self.gf('django.db.models.fields.CharField')(max_length=64)), |
287 | - ('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)), |
288 | - ('topic_version', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['api_docs.Version'])), |
289 | - )) |
290 | - db.send_create_signal(u'api_docs', ['Section']) |
291 | - |
292 | - # Adding model 'Namespace' |
293 | - db.create_table(u'api_docs_namespace', ( |
294 | - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
295 | - ('platform_section', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['api_docs.Section'])), |
296 | - ('name', self.gf('django.db.models.fields.CharField')(max_length=64)), |
297 | - ('display_name', self.gf('django.db.models.fields.CharField')(default='', max_length=64, blank=True)), |
298 | - ('data', self.gf('django.db.models.fields.TextField')(default='', blank=True)), |
299 | - ('source_file', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)), |
300 | - ('source_format', self.gf('django.db.models.fields.CharField')(max_length=32, null=True, blank=True)), |
301 | - )) |
302 | - db.send_create_signal(u'api_docs', ['Namespace']) |
303 | - |
304 | - # Adding model 'Element' |
305 | - db.create_table(u'api_docs_element', ( |
306 | - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
307 | - ('name', self.gf('django.db.models.fields.CharField')(max_length=64)), |
308 | - ('description', self.gf('django.db.models.fields.CharField')(default='', max_length=256, blank=True)), |
309 | - ('namespace', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['api_docs.Namespace'], null=True, blank=True)), |
310 | - ('section', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['api_docs.Section'])), |
311 | - ('fullname', self.gf('django.db.models.fields.CharField')(max_length=128)), |
312 | - ('keywords', self.gf('django.db.models.fields.CharField')(default='', max_length=256, blank=True)), |
313 | - ('data', self.gf('django.db.models.fields.TextField')(default='', blank=True)), |
314 | - ('source_file', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)), |
315 | - ('source_format', self.gf('django.db.models.fields.CharField')(max_length=32, null=True, blank=True)), |
316 | - )) |
317 | - db.send_create_signal(u'api_docs', ['Element']) |
318 | - |
319 | - # Adding model 'Page' |
320 | - db.create_table(u'api_docs_page', ( |
321 | - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
322 | - ('slug', self.gf('django.db.models.fields.CharField')(max_length=64)), |
323 | - ('title', self.gf('django.db.models.fields.CharField')(max_length=64)), |
324 | - ('description', self.gf('django.db.models.fields.CharField')(default='', max_length=256, blank=True)), |
325 | - ('namespace', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['api_docs.Namespace'], null=True, blank=True)), |
326 | - ('section', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['api_docs.Section'])), |
327 | - ('fullname', self.gf('django.db.models.fields.CharField')(max_length=128)), |
328 | - ('keywords', self.gf('django.db.models.fields.CharField')(default='', max_length=256, blank=True)), |
329 | - ('data', self.gf('django.db.models.fields.TextField')(default='', blank=True)), |
330 | - ('source_file', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)), |
331 | - ('source_format', self.gf('django.db.models.fields.CharField')(max_length=32, null=True, blank=True)), |
332 | - ('order_index', self.gf('django.db.models.fields.PositiveIntegerField')(default=0, blank=True)), |
333 | - )) |
334 | - db.send_create_signal(u'api_docs', ['Page']) |
335 | - |
336 | - |
337 | - def backwards(self, orm): |
338 | - # Deleting model 'Topic' |
339 | - db.delete_table(u'api_docs_topic') |
340 | - |
341 | - # Deleting model 'Language' |
342 | - db.delete_table(u'api_docs_language') |
343 | - |
344 | - # Deleting model 'Version' |
345 | - db.delete_table(u'api_docs_version') |
346 | - |
347 | - # Deleting model 'Section' |
348 | - db.delete_table(u'api_docs_section') |
349 | - |
350 | - # Deleting model 'Namespace' |
351 | - db.delete_table(u'api_docs_namespace') |
352 | - |
353 | - # Deleting model 'Element' |
354 | - db.delete_table(u'api_docs_element') |
355 | - |
356 | - # Deleting model 'Page' |
357 | - db.delete_table(u'api_docs_page') |
358 | - |
359 | - |
360 | - models = { |
361 | - u'api_docs.element': { |
362 | - 'Meta': {'ordering': "('name',)", 'object_name': 'Element'}, |
363 | - 'data': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
364 | - 'description': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), |
365 | - 'fullname': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
366 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
367 | - 'keywords': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), |
368 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}), |
369 | - 'namespace': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['api_docs.Namespace']", 'null': 'True', 'blank': 'True'}), |
370 | - 'section': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['api_docs.Section']"}), |
371 | - 'source_file': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
372 | - 'source_format': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}) |
373 | - }, |
374 | - u'api_docs.language': { |
375 | - 'Meta': {'object_name': 'Language'}, |
376 | - 'current_version': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'current_for_lang'", 'null': 'True', 'to': u"orm['api_docs.Version']"}), |
377 | - 'development_version': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'development_for_lang'", 'null': 'True', 'to': u"orm['api_docs.Version']"}), |
378 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
379 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}), |
380 | - 'slug': ('django.db.models.fields.CharField', [], {'max_length': '64'}), |
381 | - 'topic': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['api_docs.Topic']"}) |
382 | - }, |
383 | - u'api_docs.namespace': { |
384 | - 'Meta': {'ordering': "('name',)", 'object_name': 'Namespace'}, |
385 | - 'data': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
386 | - 'display_name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), |
387 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
388 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}), |
389 | - 'platform_section': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['api_docs.Section']"}), |
390 | - 'source_file': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
391 | - 'source_format': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}) |
392 | - }, |
393 | - u'api_docs.page': { |
394 | - 'Meta': {'ordering': "('order_index',)", 'object_name': 'Page'}, |
395 | - 'data': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
396 | - 'description': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), |
397 | - 'fullname': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
398 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
399 | - 'keywords': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), |
400 | - 'namespace': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['api_docs.Namespace']", 'null': 'True', 'blank': 'True'}), |
401 | - 'order_index': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'blank': 'True'}), |
402 | - 'section': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['api_docs.Section']"}), |
403 | - 'slug': ('django.db.models.fields.CharField', [], {'max_length': '64'}), |
404 | - 'source_file': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
405 | - 'source_format': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), |
406 | - 'title': ('django.db.models.fields.CharField', [], {'max_length': '64'}) |
407 | - }, |
408 | - u'api_docs.section': { |
409 | - 'Meta': {'object_name': 'Section'}, |
410 | - 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
411 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
412 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}), |
413 | - 'topic_version': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['api_docs.Version']"}) |
414 | - }, |
415 | - u'api_docs.topic': { |
416 | - 'Meta': {'object_name': 'Topic'}, |
417 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
418 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}), |
419 | - 'slug': ('django.db.models.fields.CharField', [], {'max_length': '64'}) |
420 | - }, |
421 | - u'api_docs.version': { |
422 | - 'Meta': {'object_name': 'Version'}, |
423 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
424 | - 'language': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['api_docs.Language']", 'null': 'True'}), |
425 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}), |
426 | - 'slug': ('django.db.models.fields.CharField', [], {'max_length': '64'}) |
427 | - } |
428 | - } |
429 | - |
430 | - complete_apps = ['api_docs'] |
431 | \ No newline at end of file |
432 | |
433 | === modified file 'developer_portal/admin.py' |
434 | --- developer_portal/admin.py 2015-10-21 14:41:23 +0000 |
435 | +++ developer_portal/admin.py 2015-11-17 14:32:37 +0000 |
436 | @@ -12,8 +12,10 @@ |
437 | |
438 | |
439 | def import_selected_external_docs_branches(modeladmin, request, queryset): |
440 | + branches = [] |
441 | for branch in queryset: |
442 | - call_command('import-external-docs-branches', branch.docs_namespace) |
443 | + branches.append(branch.docs_namespace) |
444 | + call_command('import-external-docs-branches', *branches) |
445 | import_selected_external_docs_branches.short_description = \ |
446 | "Import selected branches" |
447 | |
448 | |
449 | === modified file 'developer_portal/blog/views.py' |
450 | --- developer_portal/blog/views.py 2015-01-14 22:38:55 +0000 |
451 | +++ developer_portal/blog/views.py 2015-11-17 14:32:37 +0000 |
452 | @@ -35,7 +35,9 @@ |
453 | return super(MultiLangEntryIndex, self).get(request, *args, **kwargs) |
454 | |
455 | def get_dated_queryset(self, ordering=None, **lookup): |
456 | - return super(MultiLangEntryIndex, self).get_dated_queryset(ordering, **lookup).filter(categories__slug=self.language) |
457 | + if ordering: |
458 | + return super(MultiLangEntryIndex, self).get_dated_queryset(**lookup).filter(categories__slug=self.language).order_by(ordering) |
459 | + return super(MultiLangEntryIndex, self).get_dated_queryset(**lookup).filter(categories__slug=self.language) |
460 | |
461 | class MultiLangEntryYear(MultiLangMixin, EntryYear): |
462 | def get(self, request, *args, **kwargs): |
463 | |
464 | === modified file 'developer_portal/management/commands/import-external-docs-branches.py' |
465 | --- developer_portal/management/commands/import-external-docs-branches.py 2015-11-06 09:46:58 +0000 |
466 | +++ developer_portal/management/commands/import-external-docs-branches.py 2015-11-17 14:32:37 +0000 |
467 | @@ -33,7 +33,7 @@ |
468 | def remove_page(self, page_id): |
469 | self.removed_pages += [page_id] |
470 | |
471 | - @transaction.commit_on_success() |
472 | + @transaction.atomic() |
473 | def run(self): |
474 | for added_page in self.added_pages: |
475 | page = get_or_create_page(**added_page) |
476 | @@ -44,7 +44,7 @@ |
477 | created_by="script").delete() |
478 | |
479 | # https://stackoverflow.com/questions/33284171/ |
480 | - call_command('cms', 'fix-mptt') |
481 | + call_command('cms', 'fix-tree') |
482 | |
483 | |
484 | class MarkdownFile: |
485 | @@ -353,13 +353,17 @@ |
486 | class Command(BaseCommand): |
487 | help = "Import external branches for documentation." |
488 | |
489 | + def add_arguments(self, parser): |
490 | + parser.add_argument('branches', nargs='*') |
491 | + |
492 | def handle(*args, **options): |
493 | logging.basicConfig( |
494 | level=logging.ERROR, |
495 | format='%(asctime)s %(levelname)-8s %(message)s', |
496 | datefmt='%F %T') |
497 | - if len(args) < 2 or args[1] == "all": |
498 | - selection = '.*' |
499 | + branches = options['branches'] |
500 | + if not branches: |
501 | + import_branches('.*') |
502 | else: |
503 | - selection = args[1] |
504 | - import_branches(selection) |
505 | + for b in branches: |
506 | + import_branches(b) |
507 | |
508 | === modified file 'developer_portal/management/commands/initdb.py' |
509 | --- developer_portal/management/commands/initdb.py 2015-06-23 10:54:49 +0000 |
510 | +++ developer_portal/management/commands/initdb.py 2015-11-17 14:32:37 +0000 |
511 | @@ -53,7 +53,7 @@ |
512 | if hasattr(settings, 'EDITOR_GROUP') and settings.EDITOR_GROUP != "": |
513 | print "Configuring "+settings.EDITOR_GROUP+" group." |
514 | editors, created = PageUserGroup.objects.get_or_create(name=settings.EDITOR_GROUP, defaults={'created_by': admin}) |
515 | - page_perms = Permission.objects.filter(content_type__app_label='cms', content_type__name='page') |
516 | + page_perms = Permission.objects.filter(content_type__app_label='cms', content_type__model='page') |
517 | editors.permissions.add(*list(page_perms)) |
518 | |
519 | print "Configuring global permissions for group." |
520 | |
521 | === added file 'developer_portal/migrations/0001_initial.py' |
522 | --- developer_portal/migrations/0001_initial.py 1970-01-01 00:00:00 +0000 |
523 | +++ developer_portal/migrations/0001_initial.py 2015-11-17 14:32:37 +0000 |
524 | @@ -0,0 +1,45 @@ |
525 | +# -*- coding: utf-8 -*- |
526 | +from __future__ import unicode_literals |
527 | + |
528 | +from django.db import migrations, models |
529 | + |
530 | + |
531 | +class Migration(migrations.Migration): |
532 | + |
533 | + dependencies = [ |
534 | + ] |
535 | + |
536 | + operations = [ |
537 | + migrations.CreateModel( |
538 | + name='ExternalDocsBranch', |
539 | + fields=[ |
540 | + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
541 | + ('lp_origin', models.CharField(help_text='External branch location, ie: lp:snappy/15.04 or https://github.com/ubuntu-core/snappy.git', max_length=200)), |
542 | + ('docs_namespace', models.CharField(help_text='Path alias we want to use for the docs, ie "snappy/guides/15.04" or "snappy/guides/latest", etc.', max_length=120)), |
543 | + ('index_doc', models.CharField(help_text='File name of doc to be used as index document, ie "intro.md"', max_length=120, blank=True)), |
544 | + ], |
545 | + ), |
546 | + migrations.CreateModel( |
547 | + name='RawHtml', |
548 | + fields=[ |
549 | + ('cmsplugin_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='cms.CMSPlugin')), |
550 | + ('body', models.TextField(verbose_name='body')), |
551 | + ], |
552 | + options={ |
553 | + 'abstract': False, |
554 | + }, |
555 | + bases=('cms.cmsplugin',), |
556 | + ), |
557 | + migrations.CreateModel( |
558 | + name='SEOExtension', |
559 | + fields=[ |
560 | + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
561 | + ('keywords', models.CharField(max_length=256)), |
562 | + ('extended_object', models.OneToOneField(editable=False, to='cms.Title')), |
563 | + ('public_extension', models.OneToOneField(related_name='draft_extension', null=True, editable=False, to='developer_portal.SEOExtension')), |
564 | + ], |
565 | + options={ |
566 | + 'abstract': False, |
567 | + }, |
568 | + ), |
569 | + ] |
570 | |
571 | === removed file 'developer_portal/migrations/0001_initial.py' |
572 | --- developer_portal/migrations/0001_initial.py 2015-01-19 16:29:47 +0000 |
573 | +++ developer_portal/migrations/0001_initial.py 1970-01-01 00:00:00 +0000 |
574 | @@ -1,20 +0,0 @@ |
575 | -# -*- coding: utf-8 -*- |
576 | -from south.utils import datetime_utils as datetime |
577 | -from south.db import db |
578 | -from south.v2 import SchemaMigration |
579 | -from django.db import models |
580 | - |
581 | - |
582 | -class Migration(SchemaMigration): |
583 | - |
584 | - def forwards(self, orm): |
585 | - pass |
586 | - |
587 | - def backwards(self, orm): |
588 | - pass |
589 | - |
590 | - models = { |
591 | - |
592 | - } |
593 | - |
594 | - complete_apps = ['developer_portal'] |
595 | \ No newline at end of file |
596 | |
597 | === removed file 'developer_portal/migrations/0002_add_rawhtml_plugin.py' |
598 | --- developer_portal/migrations/0002_add_rawhtml_plugin.py 2015-01-19 16:29:47 +0000 |
599 | +++ developer_portal/migrations/0002_add_rawhtml_plugin.py 1970-01-01 00:00:00 +0000 |
600 | @@ -1,53 +0,0 @@ |
601 | -# -*- coding: utf-8 -*- |
602 | -from south.utils import datetime_utils as datetime |
603 | -from south.db import db |
604 | -from south.v2 import SchemaMigration |
605 | -from django.db import models |
606 | - |
607 | - |
608 | -class Migration(SchemaMigration): |
609 | - |
610 | - def forwards(self, orm): |
611 | - # Adding model 'RawHtml' |
612 | - db.create_table(u'developer_portal_rawhtml', ( |
613 | - (u'cmsplugin_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['cms.CMSPlugin'], unique=True, primary_key=True)), |
614 | - ('body', self.gf('django.db.models.fields.TextField')()), |
615 | - )) |
616 | - db.send_create_signal(u'developer_portal', ['RawHtml']) |
617 | - |
618 | - |
619 | - def backwards(self, orm): |
620 | - # Deleting model 'RawHtml' |
621 | - db.delete_table(u'developer_portal_rawhtml') |
622 | - |
623 | - |
624 | - models = { |
625 | - 'cms.cmsplugin': { |
626 | - 'Meta': {'object_name': 'CMSPlugin'}, |
627 | - 'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
628 | - 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
629 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
630 | - 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
631 | - 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
632 | - 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
633 | - 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
634 | - 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
635 | - 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
636 | - 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
637 | - 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
638 | - 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
639 | - }, |
640 | - 'cms.placeholder': { |
641 | - 'Meta': {'object_name': 'Placeholder'}, |
642 | - 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
643 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
644 | - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}) |
645 | - }, |
646 | - u'developer_portal.rawhtml': { |
647 | - 'Meta': {'object_name': 'RawHtml'}, |
648 | - 'body': ('django.db.models.fields.TextField', [], {}), |
649 | - u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}) |
650 | - } |
651 | - } |
652 | - |
653 | - complete_apps = ['developer_portal'] |
654 | \ No newline at end of file |
655 | |
656 | === removed file 'developer_portal/migrations/0003_add_external_docs_branches.py' |
657 | --- developer_portal/migrations/0003_add_external_docs_branches.py 2015-08-06 09:30:11 +0000 |
658 | +++ developer_portal/migrations/0003_add_external_docs_branches.py 1970-01-01 00:00:00 +0000 |
659 | @@ -1,62 +0,0 @@ |
660 | -# -*- coding: utf-8 -*- |
661 | -from south.utils import datetime_utils as datetime |
662 | -from south.db import db |
663 | -from south.v2 import SchemaMigration |
664 | -from django.db import models |
665 | - |
666 | - |
667 | -class Migration(SchemaMigration): |
668 | - |
669 | - def forwards(self, orm): |
670 | - # Adding model 'ExternalDocsBranch' |
671 | - db.create_table(u'developer_portal_externaldocsbranch', ( |
672 | - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
673 | - ('lp_origin', self.gf('django.db.models.fields.CharField')(max_length=200)), |
674 | - ('docs_namespace', self.gf('django.db.models.fields.CharField')(max_length=120)), |
675 | - ('index_doc', self.gf('django.db.models.fields.CharField')(max_length=120, blank=True)), |
676 | - )) |
677 | - db.send_create_signal(u'developer_portal', ['ExternalDocsBranch']) |
678 | - |
679 | - |
680 | - def backwards(self, orm): |
681 | - # Deleting model 'ExternalDocsBranch' |
682 | - db.delete_table(u'developer_portal_externaldocsbranch') |
683 | - |
684 | - |
685 | - models = { |
686 | - 'cms.cmsplugin': { |
687 | - 'Meta': {'object_name': 'CMSPlugin'}, |
688 | - 'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
689 | - 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
690 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
691 | - 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
692 | - 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
693 | - 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
694 | - 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
695 | - 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
696 | - 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
697 | - 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
698 | - 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
699 | - 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
700 | - }, |
701 | - 'cms.placeholder': { |
702 | - 'Meta': {'object_name': 'Placeholder'}, |
703 | - 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
704 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
705 | - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}) |
706 | - }, |
707 | - u'developer_portal.externaldocsbranch': { |
708 | - 'Meta': {'object_name': 'ExternalDocsBranch'}, |
709 | - 'docs_namespace': ('django.db.models.fields.CharField', [], {'max_length': '120'}), |
710 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
711 | - 'index_doc': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}), |
712 | - 'lp_origin': ('django.db.models.fields.CharField', [], {'max_length': '200'}) |
713 | - }, |
714 | - u'developer_portal.rawhtml': { |
715 | - 'Meta': {'object_name': 'RawHtml'}, |
716 | - 'body': ('django.db.models.fields.TextField', [], {}), |
717 | - u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}) |
718 | - } |
719 | - } |
720 | - |
721 | - complete_apps = ['developer_portal'] |
722 | \ No newline at end of file |
723 | |
724 | === removed file 'developer_portal/migrations/0004_auto__add_seoextension.py' |
725 | --- developer_portal/migrations/0004_auto__add_seoextension.py 2015-10-21 14:41:23 +0000 |
726 | +++ developer_portal/migrations/0004_auto__add_seoextension.py 1970-01-01 00:00:00 +0000 |
727 | @@ -1,126 +0,0 @@ |
728 | -# -*- coding: utf-8 -*- |
729 | -from south.utils import datetime_utils as datetime |
730 | -from south.db import db |
731 | -from south.v2 import SchemaMigration |
732 | -from django.db import models |
733 | - |
734 | - |
735 | -class Migration(SchemaMigration): |
736 | - |
737 | - def forwards(self, orm): |
738 | - # Adding model 'SEOExtension' |
739 | - db.create_table(u'developer_portal_seoextension', ( |
740 | - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
741 | - ('public_extension', self.gf('django.db.models.fields.related.OneToOneField')(related_name='draft_extension', unique=True, null=True, to=orm['developer_portal.SEOExtension'])), |
742 | - ('extended_object', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['cms.Title'], unique=True)), |
743 | - ('keywords', self.gf('django.db.models.fields.CharField')(max_length=256)), |
744 | - )) |
745 | - db.send_create_signal(u'developer_portal', ['SEOExtension']) |
746 | - |
747 | - |
748 | - def backwards(self, orm): |
749 | - # Deleting model 'SEOExtension' |
750 | - db.delete_table(u'developer_portal_seoextension') |
751 | - |
752 | - |
753 | - models = { |
754 | - 'cms.cmsplugin': { |
755 | - 'Meta': {'object_name': 'CMSPlugin'}, |
756 | - 'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
757 | - 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
758 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
759 | - 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
760 | - 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
761 | - 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
762 | - 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
763 | - 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
764 | - 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
765 | - 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
766 | - 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
767 | - 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
768 | - }, |
769 | - 'cms.page': { |
770 | - 'Meta': {'ordering': "('tree_id', 'lft')", 'unique_together': "(('publisher_is_draft', 'application_namespace'), ('reverse_id', 'site', 'publisher_is_draft'))", 'object_name': 'Page'}, |
771 | - 'application_namespace': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), |
772 | - 'application_urls': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '200', 'null': 'True', 'blank': 'True'}), |
773 | - 'changed_by': ('django.db.models.fields.CharField', [], {'max_length': '70'}), |
774 | - 'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
775 | - 'created_by': ('django.db.models.fields.CharField', [], {'max_length': '70'}), |
776 | - 'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
777 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
778 | - 'in_navigation': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), |
779 | - 'is_home': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), |
780 | - 'languages': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
781 | - 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
782 | - 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
783 | - 'limit_visibility_in_menu': ('django.db.models.fields.SmallIntegerField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), |
784 | - 'login_required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
785 | - 'navigation_extenders': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '80', 'null': 'True', 'blank': 'True'}), |
786 | - 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.Page']"}), |
787 | - 'placeholders': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['cms.Placeholder']", 'symmetrical': 'False'}), |
788 | - 'publication_date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), |
789 | - 'publication_end_date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), |
790 | - 'publisher_is_draft': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), |
791 | - 'publisher_public': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'publisher_draft'", 'unique': 'True', 'null': 'True', 'to': "orm['cms.Page']"}), |
792 | - 'reverse_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '40', 'null': 'True', 'blank': 'True'}), |
793 | - 'revision_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), |
794 | - 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
795 | - 'site': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'djangocms_pages'", 'to': u"orm['sites.Site']"}), |
796 | - 'soft_root': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), |
797 | - 'template': ('django.db.models.fields.CharField', [], {'default': "'INHERIT'", 'max_length': '100'}), |
798 | - 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
799 | - 'xframe_options': ('django.db.models.fields.IntegerField', [], {'default': '0'}) |
800 | - }, |
801 | - 'cms.placeholder': { |
802 | - 'Meta': {'object_name': 'Placeholder'}, |
803 | - 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
804 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
805 | - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}) |
806 | - }, |
807 | - 'cms.title': { |
808 | - 'Meta': {'unique_together': "(('language', 'page'),)", 'object_name': 'Title'}, |
809 | - 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
810 | - 'has_url_overwrite': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), |
811 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
812 | - 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
813 | - 'menu_title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
814 | - 'meta_description': ('django.db.models.fields.TextField', [], {'max_length': '155', 'null': 'True', 'blank': 'True'}), |
815 | - 'page': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'title_set'", 'to': "orm['cms.Page']"}), |
816 | - 'page_title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
817 | - 'path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}), |
818 | - 'published': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
819 | - 'publisher_is_draft': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), |
820 | - 'publisher_public': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'publisher_draft'", 'unique': 'True', 'null': 'True', 'to': "orm['cms.Title']"}), |
821 | - 'publisher_state': ('django.db.models.fields.SmallIntegerField', [], {'default': '0', 'db_index': 'True'}), |
822 | - 'redirect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
823 | - 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '255'}), |
824 | - 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}) |
825 | - }, |
826 | - u'developer_portal.externaldocsbranch': { |
827 | - 'Meta': {'object_name': 'ExternalDocsBranch'}, |
828 | - 'docs_namespace': ('django.db.models.fields.CharField', [], {'max_length': '120'}), |
829 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
830 | - 'index_doc': ('django.db.models.fields.CharField', [], {'max_length': '120', 'blank': 'True'}), |
831 | - 'lp_origin': ('django.db.models.fields.CharField', [], {'max_length': '200'}) |
832 | - }, |
833 | - u'developer_portal.rawhtml': { |
834 | - 'Meta': {'object_name': 'RawHtml'}, |
835 | - 'body': ('django.db.models.fields.TextField', [], {}), |
836 | - u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}) |
837 | - }, |
838 | - u'developer_portal.seoextension': { |
839 | - 'Meta': {'object_name': 'SEOExtension'}, |
840 | - 'extended_object': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.Title']", 'unique': 'True'}), |
841 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
842 | - 'keywords': ('django.db.models.fields.CharField', [], {'max_length': '256'}), |
843 | - 'public_extension': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'draft_extension'", 'unique': 'True', 'null': 'True', 'to': u"orm['developer_portal.SEOExtension']"}) |
844 | - }, |
845 | - u'sites.site': { |
846 | - 'Meta': {'ordering': "(u'domain',)", 'object_name': 'Site', 'db_table': "u'django_site'"}, |
847 | - 'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
848 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
849 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
850 | - } |
851 | - } |
852 | - |
853 | - complete_apps = ['developer_portal'] |
854 | \ No newline at end of file |
855 | |
856 | === modified file 'developer_portal/settings.py' |
857 | --- developer_portal/settings.py 2015-10-02 15:50:10 +0000 |
858 | +++ developer_portal/settings.py 2015-11-17 14:32:37 +0000 |
859 | @@ -30,8 +30,6 @@ |
860 | # SECURITY WARNING: don't run with debug turned on in production! |
861 | DEBUG = True |
862 | |
863 | -TEMPLATE_DEBUG = True |
864 | - |
865 | ALLOWED_HOSTS = ['127.0.0.1', 'developer.ubuntu.com'] |
866 | |
867 | |
868 | @@ -49,14 +47,13 @@ |
869 | # Allow login from Ubuntu SSO |
870 | 'django_openid_auth', |
871 | |
872 | - 'mptt', #utilities for implementing a modified pre-order traversal tree |
873 | 'menus', #helper for model independent hierarchical website navigation |
874 | - 'south', #intelligent schema and data migrations |
875 | 'sekizai', #for javascript and css management |
876 | 'reversion', #content versioning |
877 | 'django_pygments', |
878 | 'django_comments', |
879 | 'tagging', |
880 | + 'template_debug', |
881 | |
882 | 'ckeditor', |
883 | 'djangocms_text_ckeditor', |
884 | @@ -66,6 +63,7 @@ |
885 | 'djangocms_picture', |
886 | 'djangocms_video', |
887 | 'djangocms_snippet', |
888 | + 'treebeard', #required by django CMS |
889 | |
890 | 'cmsplugin_zinnia', |
891 | 'zinnia', |
892 | @@ -107,24 +105,29 @@ |
893 | #CACHE_MIDDLEWARE_SECONDS = 3600 |
894 | #CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True |
895 | |
896 | -TEMPLATE_CONTEXT_PROCESSORS = ( |
897 | - 'django.contrib.auth.context_processors.auth', |
898 | - 'django.core.context_processors.i18n', |
899 | - 'django.core.context_processors.request', |
900 | - 'django.core.context_processors.media', |
901 | - 'django.core.context_processors.static', |
902 | - |
903 | - 'sekizai.context_processors.sekizai', |
904 | - 'cms.context_processors.cms_settings', |
905 | - 'django.contrib.messages.context_processors.messages', |
906 | -) |
907 | - |
908 | -TEMPLATE_DIRS = ( |
909 | - # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". |
910 | - # Always use forward slashes, even on Windows. |
911 | - # Don't forget to use absolute paths, not relative paths. |
912 | - os.path.join(PROJECT_PATH, "templates"), |
913 | -) |
914 | + |
915 | +TEMPLATES = [ |
916 | + { |
917 | + 'BACKEND': 'django.template.backends.django.DjangoTemplates', |
918 | + 'DIRS': [ |
919 | + os.path.join(PROJECT_PATH, "templates"), |
920 | + ], |
921 | + 'APP_DIRS': True, |
922 | + 'OPTIONS': { |
923 | + 'context_processors': [ |
924 | + 'django.core.context_processors.request', |
925 | + 'django.contrib.auth.context_processors.auth', |
926 | + 'django.core.context_processors.i18n', |
927 | + 'django.core.context_processors.media', |
928 | + 'django.core.context_processors.static', |
929 | + |
930 | + 'sekizai.context_processors.sekizai', |
931 | + 'cms.context_processors.cms_settings', |
932 | + 'django.contrib.messages.context_processors.messages', |
933 | + ] |
934 | + } |
935 | + } |
936 | +] |
937 | |
938 | ROOT_URLCONF = 'developer_portal.urls' |
939 | |
940 | @@ -313,6 +316,23 @@ |
941 | #'PAGINATE_BY': 10, |
942 | } |
943 | |
944 | +MIGRATION_MODULES = { |
945 | + 'cms': 'cms.migrations', |
946 | + 'cmsplugin_zinnia': 'cmsplugin_zinnia.migrations', |
947 | + 'djangocms_link': 'djangocms_link.migrations', |
948 | + 'djangocms_picture': 'djangocms_picture.migrations_django', |
949 | + 'djangocms_snippet': 'djangocms_snippet.migrations_django', |
950 | + 'djangocms_text_ckeditor': 'djangocms_text_ckeditor.migrations', |
951 | + 'djangocms_video': 'djangocms_video.migrations_django', |
952 | + 'django_comments': 'django_comments.migrations', |
953 | + 'menus': 'menus.migrations', |
954 | + 'rest_framework.authtoken': 'rest_framework.authtoken.migrations', |
955 | + 'reversion': 'reversion.migrations', |
956 | + 'tagging': 'tagging.migrations', |
957 | + 'taggit': 'taggit.migrations', |
958 | + 'zinnia': 'zinnia.migrations', |
959 | +} |
960 | + |
961 | LOGGING = { |
962 | 'version': 1, |
963 | 'disable_existing_loggers': False, |
964 | |
965 | === modified file 'developer_portal/urls.py' |
966 | --- developer_portal/urls.py 2015-06-25 21:53:23 +0000 |
967 | +++ developer_portal/urls.py 2015-11-17 14:32:37 +0000 |
968 | @@ -32,7 +32,7 @@ |
969 | |
970 | urlpatterns += i18n_patterns('', |
971 | url(r'^search/', 'developer_portal.views.search', name='search'), |
972 | - url(r'^ckeditor/', include('ckeditor.urls')), |
973 | + url(r'^ckeditor/', include('ckeditor_uploader.urls')), |
974 | url(r'^', include('cms.urls')), |
975 | ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) |
976 | |
977 | |
978 | === modified file 'requirements.txt' |
979 | --- requirements.txt 2015-10-29 10:55:07 +0000 |
980 | +++ requirements.txt 2015-11-17 14:32:37 +0000 |
981 | @@ -1,53 +1,51 @@ |
982 | -oslo.config==1.6.0 |
983 | -oslo.i18n==1.2.0 |
984 | -oslo.serialization==1.2.0 |
985 | -oslo.utils==1.2.0 |
986 | -Django==1.6.8 |
987 | -Markdown==2.6.2 |
988 | -South==1.0.1 |
989 | -Pillow==2.6.1 |
990 | -beautifulsoup4==4.4.0 |
991 | -cmsplugin-zinnia==0.6 |
992 | +Django==1.8.5 |
993 | +django-template-debug==0.3.5 |
994 | +oslo.config==2.7.0 |
995 | +oslo.i18n==2.7.0 |
996 | +oslo.serialization==1.11.0 |
997 | +oslo.utils==2.8.0 |
998 | +Pillow==2.9.0 |
999 | +cmsplugin-zinnia==0.8 |
1000 | +Markdown==2.6.4 |
1001 | +beautifulsoup4==4.4.1 |
1002 | dj-database-url==0.3.0 |
1003 | -django-admin-enhancer==0.1.3.1 |
1004 | -django-appconf==0.6 |
1005 | -django-blog-zinnia==0.14.2 |
1006 | -django-ckeditor==4.4.7 |
1007 | +django-admin-enhancer==1.0.0 |
1008 | +django-appconf==1.0.1 |
1009 | +django-blog-zinnia==0.15.2 |
1010 | +django-ckeditor==5.0.2 |
1011 | django-ckeditor-updated==4.4.4 |
1012 | -django-classy-tags==0.5.1 |
1013 | -django-cms==3.0.6 |
1014 | -django-contrib-comments==1.5 |
1015 | -django-meta==0.2.0 |
1016 | -django-meta-mixin==0.1.1 |
1017 | +django-classy-tags==0.6.2 |
1018 | +django-cms==3.1.2 |
1019 | +django-contrib-comments==1.6.1 |
1020 | +django-meta==0.3.1 |
1021 | +django-meta-mixin==0.2.1 |
1022 | django-missing==0.1.13 |
1023 | -django-mptt==0.7.4 |
1024 | -django-parler==1.1.1 |
1025 | -django-polymorphic==0.6 |
1026 | -django-reversion==1.8.4 |
1027 | -django-sekizai==0.7 |
1028 | +django-parler==1.5.1 |
1029 | +django-polymorphic==0.7.2 |
1030 | +django-reversion==1.9.3 |
1031 | +django-sekizai==0.8.2 |
1032 | django-swiftstorage==1.1.0 |
1033 | -django-tagging==0.3.3 |
1034 | -django-taggit==0.12.2 |
1035 | -django-taggit-autosuggest==0.2.5 |
1036 | +django-tagging==0.4 |
1037 | +django-taggit==0.17.3 |
1038 | +django-taggit-autosuggest==0.2.7 |
1039 | django-taggit-templatetags==0.2.5 |
1040 | django-templatetag-sugar==1.0 |
1041 | django-xmlrpc==0.1.5 |
1042 | -djangocms-admin-style==0.2.2 |
1043 | -djangocms-link==1.5 |
1044 | +djangocms-admin-style==1.0.5 |
1045 | +djangocms-link==1.7.1 |
1046 | djangocms-picture==0.1 |
1047 | -djangocms-snippet==1.3 |
1048 | -djangocms-text-ckeditor==2.4.2 |
1049 | +djangocms-snippet==1.5 |
1050 | +djangocms-text-ckeditor==2.7.0 |
1051 | djangocms-utils==0.9.5 |
1052 | djangocms-video==0.1 |
1053 | -python-keystoneclient==0.11.2 |
1054 | -python-swiftclient==2.3.1 |
1055 | -pytz==2014.7 |
1056 | +python-swiftclient==2.6.0 |
1057 | +pytz==2015.7 |
1058 | simple-translation==0.8.6 |
1059 | -simplejson==3.6.5 |
1060 | +simplejson==3.8.1 |
1061 | wsgiref==0.1.2 |
1062 | -zinnia-wysiwyg-ckeditor==1.1 |
1063 | -Pygments==1.6 |
1064 | +zinnia-wysiwyg-ckeditor==1.3 |
1065 | +Pygments==2.0.2 |
1066 | django-pygments==0.1 |
1067 | -django-openid-auth==0.5 |
1068 | -python-openid==2.2.4 |
1069 | -djangorestframework==3.0.4 |
1070 | +django-openid-auth==0.7 |
1071 | +python-openid==2.2.5 |
1072 | +djangorestframework==3.3.1 |
1073 | |
1074 | === modified file 'service/urls.py' |
1075 | --- service/urls.py 2015-02-05 14:24:04 +0000 |
1076 | +++ service/urls.py 2015-11-17 14:32:37 +0000 |
1077 | @@ -4,13 +4,13 @@ |
1078 | |
1079 | # Routers provide an easy way of automatically determining the URL conf |
1080 | router = routers.DefaultRouter() |
1081 | -router.register(r'elements', ElementViewSet) |
1082 | -router.register(r'pages', PageViewSet) |
1083 | -router.register(r'namespaces', NamespaceViewSet) |
1084 | -router.register(r'sections', SectionViewSet) |
1085 | -router.register(r'versions', VersionViewSet) |
1086 | -router.register(r'languages', LanguageViewSet) |
1087 | -router.register(r'topics', TopicViewSet) |
1088 | +router.register(r'elements', ElementViewSet, base_name='element-list') |
1089 | +router.register(r'pages', PageViewSet, base_name='page-list') |
1090 | +router.register(r'namespaces', NamespaceViewSet, base_name='namespace-list') |
1091 | +router.register(r'sections', SectionViewSet, base_name='section-list') |
1092 | +router.register(r'versions', VersionViewSet, base_name='version-list') |
1093 | +router.register(r'languages', LanguageViewSet, base_name='language-list') |
1094 | +router.register(r'topics', TopicViewSet, base_name='topic-list') |
1095 | |
1096 | |
1097 | # Wire up our API using automatic URL routing. |
1098 | |
1099 | === modified file 'store_data/migrations/0001_initial.py' |
1100 | --- store_data/migrations/0001_initial.py 2015-07-02 08:49:35 +0000 |
1101 | +++ store_data/migrations/0001_initial.py 2015-11-17 14:32:37 +0000 |
1102 | @@ -1,134 +1,63 @@ |
1103 | # -*- coding: utf-8 -*- |
1104 | -from south.utils import datetime_utils as datetime |
1105 | -from south.db import db |
1106 | -from south.v2 import SchemaMigration |
1107 | -from django.db import models |
1108 | - |
1109 | - |
1110 | -class Migration(SchemaMigration): |
1111 | - |
1112 | - def forwards(self, orm): |
1113 | - # Adding model 'Release' |
1114 | - db.create_table(u'store_data_release', ( |
1115 | - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
1116 | - ('name', self.gf('django.db.models.fields.CharField')(max_length=25)), |
1117 | - )) |
1118 | - db.send_create_signal(u'store_data', ['Release']) |
1119 | - |
1120 | - # Adding model 'Architecture' |
1121 | - db.create_table(u'store_data_architecture', ( |
1122 | - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
1123 | - ('name', self.gf('django.db.models.fields.CharField')(max_length=10)), |
1124 | - )) |
1125 | - db.send_create_signal(u'store_data', ['Architecture']) |
1126 | - |
1127 | - # Adding model 'ScreenshotURL' |
1128 | - db.create_table(u'store_data_screenshoturl', ( |
1129 | - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
1130 | - ('url', self.gf('django.db.models.fields.URLField')(max_length=200, blank=True)), |
1131 | - )) |
1132 | - db.send_create_signal(u'store_data', ['ScreenshotURL']) |
1133 | - |
1134 | - # Adding model 'GadgetSnap' |
1135 | - db.create_table(u'store_data_gadgetsnap', ( |
1136 | - (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
1137 | - ('icon_url', self.gf('django.db.models.fields.URLField')(max_length=200, blank=True)), |
1138 | - ('name', self.gf('django.db.models.fields.CharField')(max_length=100)), |
1139 | - ('ratings_average', self.gf('django.db.models.fields.DecimalField')(max_digits=2, decimal_places=1)), |
1140 | - ('alias', self.gf('django.db.models.fields.CharField')(max_length=100, null=True, blank=True)), |
1141 | - ('price', self.gf('django.db.models.fields.DecimalField')(max_digits=5, decimal_places=2)), |
1142 | - ('publisher', self.gf('django.db.models.fields.CharField')(max_length=100)), |
1143 | - ('store_url', self.gf('django.db.models.fields.URLField')(max_length=200, blank=True)), |
1144 | - ('version', self.gf('django.db.models.fields.CharField')(max_length=25)), |
1145 | - ('last_updated', self.gf('django.db.models.fields.DateTimeField')()), |
1146 | - ('description', self.gf('django.db.models.fields.TextField')(max_length=5000)), |
1147 | - )) |
1148 | - db.send_create_signal(u'store_data', ['GadgetSnap']) |
1149 | - |
1150 | - # Adding M2M table for field release on 'GadgetSnap' |
1151 | - m2m_table_name = db.shorten_name(u'store_data_gadgetsnap_release') |
1152 | - db.create_table(m2m_table_name, ( |
1153 | - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), |
1154 | - ('gadgetsnap', models.ForeignKey(orm[u'store_data.gadgetsnap'], null=False)), |
1155 | - ('release', models.ForeignKey(orm[u'store_data.release'], null=False)) |
1156 | - )) |
1157 | - db.create_unique(m2m_table_name, ['gadgetsnap_id', 'release_id']) |
1158 | - |
1159 | - # Adding M2M table for field architecture on 'GadgetSnap' |
1160 | - m2m_table_name = db.shorten_name(u'store_data_gadgetsnap_architecture') |
1161 | - db.create_table(m2m_table_name, ( |
1162 | - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), |
1163 | - ('gadgetsnap', models.ForeignKey(orm[u'store_data.gadgetsnap'], null=False)), |
1164 | - ('architecture', models.ForeignKey(orm[u'store_data.architecture'], null=False)) |
1165 | - )) |
1166 | - db.create_unique(m2m_table_name, ['gadgetsnap_id', 'architecture_id']) |
1167 | - |
1168 | - # Adding M2M table for field screenshot_url on 'GadgetSnap' |
1169 | - m2m_table_name = db.shorten_name(u'store_data_gadgetsnap_screenshot_url') |
1170 | - db.create_table(m2m_table_name, ( |
1171 | - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), |
1172 | - ('gadgetsnap', models.ForeignKey(orm[u'store_data.gadgetsnap'], null=False)), |
1173 | - ('screenshoturl', models.ForeignKey(orm[u'store_data.screenshoturl'], null=False)) |
1174 | - )) |
1175 | - db.create_unique(m2m_table_name, ['gadgetsnap_id', 'screenshoturl_id']) |
1176 | - |
1177 | - |
1178 | - def backwards(self, orm): |
1179 | - # Deleting model 'Release' |
1180 | - db.delete_table(u'store_data_release') |
1181 | - |
1182 | - # Deleting model 'Architecture' |
1183 | - db.delete_table(u'store_data_architecture') |
1184 | - |
1185 | - # Deleting model 'ScreenshotURL' |
1186 | - db.delete_table(u'store_data_screenshoturl') |
1187 | - |
1188 | - # Deleting model 'GadgetSnap' |
1189 | - db.delete_table(u'store_data_gadgetsnap') |
1190 | - |
1191 | - # Removing M2M table for field release on 'GadgetSnap' |
1192 | - db.delete_table(db.shorten_name(u'store_data_gadgetsnap_release')) |
1193 | - |
1194 | - # Removing M2M table for field architecture on 'GadgetSnap' |
1195 | - db.delete_table(db.shorten_name(u'store_data_gadgetsnap_architecture')) |
1196 | - |
1197 | - # Removing M2M table for field screenshot_url on 'GadgetSnap' |
1198 | - db.delete_table(db.shorten_name(u'store_data_gadgetsnap_screenshot_url')) |
1199 | - |
1200 | - |
1201 | - models = { |
1202 | - u'store_data.architecture': { |
1203 | - 'Meta': {'object_name': 'Architecture'}, |
1204 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
1205 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '10'}) |
1206 | - }, |
1207 | - u'store_data.gadgetsnap': { |
1208 | - 'Meta': {'object_name': 'GadgetSnap'}, |
1209 | - 'alias': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
1210 | - 'architecture': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['store_data.Architecture']", 'symmetrical': 'False'}), |
1211 | - 'description': ('django.db.models.fields.TextField', [], {'max_length': '5000'}), |
1212 | - 'icon_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), |
1213 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
1214 | - 'last_updated': ('django.db.models.fields.DateTimeField', [], {}), |
1215 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
1216 | - 'price': ('django.db.models.fields.DecimalField', [], {'max_digits': '5', 'decimal_places': '2'}), |
1217 | - 'publisher': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
1218 | - 'ratings_average': ('django.db.models.fields.DecimalField', [], {'max_digits': '2', 'decimal_places': '1'}), |
1219 | - 'release': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['store_data.Release']", 'symmetrical': 'False'}), |
1220 | - 'screenshot_url': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['store_data.ScreenshotURL']", 'symmetrical': 'False'}), |
1221 | - 'store_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), |
1222 | - 'version': ('django.db.models.fields.CharField', [], {'max_length': '25'}) |
1223 | - }, |
1224 | - u'store_data.release': { |
1225 | - 'Meta': {'object_name': 'Release'}, |
1226 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
1227 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '25'}) |
1228 | - }, |
1229 | - u'store_data.screenshoturl': { |
1230 | - 'Meta': {'object_name': 'ScreenshotURL'}, |
1231 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
1232 | - 'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) |
1233 | - } |
1234 | - } |
1235 | - |
1236 | - complete_apps = ['store_data'] |
1237 | \ No newline at end of file |
1238 | +from __future__ import unicode_literals |
1239 | + |
1240 | +from django.db import migrations, models |
1241 | + |
1242 | + |
1243 | +class Migration(migrations.Migration): |
1244 | + |
1245 | + dependencies = [ |
1246 | + ] |
1247 | + |
1248 | + operations = [ |
1249 | + migrations.CreateModel( |
1250 | + name='Architecture', |
1251 | + fields=[ |
1252 | + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
1253 | + ('name', models.CharField(max_length=10)), |
1254 | + ], |
1255 | + ), |
1256 | + migrations.CreateModel( |
1257 | + name='GadgetSnap', |
1258 | + fields=[ |
1259 | + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
1260 | + ('icon_url', models.URLField(blank=True)), |
1261 | + ('name', models.CharField(max_length=100)), |
1262 | + ('title', models.CharField(max_length=250, null=True, blank=True)), |
1263 | + ('ratings_average', models.DecimalField(max_digits=2, decimal_places=1)), |
1264 | + ('alias', models.CharField(max_length=100, null=True, blank=True)), |
1265 | + ('price', models.DecimalField(max_digits=5, decimal_places=2)), |
1266 | + ('publisher', models.CharField(max_length=100)), |
1267 | + ('store_url', models.URLField(blank=True)), |
1268 | + ('version', models.CharField(max_length=25)), |
1269 | + ('last_updated', models.DateTimeField()), |
1270 | + ('description', models.TextField(max_length=5000)), |
1271 | + ('website', models.URLField(blank=True)), |
1272 | + ('architecture', models.ManyToManyField(to='store_data.Architecture')), |
1273 | + ], |
1274 | + ), |
1275 | + migrations.CreateModel( |
1276 | + name='Release', |
1277 | + fields=[ |
1278 | + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
1279 | + ('name', models.CharField(max_length=25)), |
1280 | + ], |
1281 | + ), |
1282 | + migrations.CreateModel( |
1283 | + name='ScreenshotURL', |
1284 | + fields=[ |
1285 | + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
1286 | + ('url', models.URLField(blank=True)), |
1287 | + ], |
1288 | + ), |
1289 | + migrations.AddField( |
1290 | + model_name='gadgetsnap', |
1291 | + name='release', |
1292 | + field=models.ManyToManyField(to='store_data.Release'), |
1293 | + ), |
1294 | + migrations.AddField( |
1295 | + model_name='gadgetsnap', |
1296 | + name='screenshot_url', |
1297 | + field=models.ManyToManyField(to='store_data.ScreenshotURL'), |
1298 | + ), |
1299 | + ] |
1300 | |
1301 | === removed file 'store_data/migrations/0002_add_title_field.py' |
1302 | --- store_data/migrations/0002_add_title_field.py 2015-11-10 14:13:42 +0000 |
1303 | +++ store_data/migrations/0002_add_title_field.py 1970-01-01 00:00:00 +0000 |
1304 | @@ -1,58 +0,0 @@ |
1305 | -# -*- coding: utf-8 -*- |
1306 | -from south.utils import datetime_utils as datetime |
1307 | -from south.db import db |
1308 | -from south.v2 import SchemaMigration |
1309 | -from django.db import models |
1310 | - |
1311 | - |
1312 | -class Migration(SchemaMigration): |
1313 | - |
1314 | - def forwards(self, orm): |
1315 | - # Adding field 'GadgetSnap.title' |
1316 | - db.add_column(u'store_data_gadgetsnap', 'title', |
1317 | - self.gf('django.db.models.fields.CharField')(max_length=250, null=True, blank=True), |
1318 | - keep_default=False) |
1319 | - |
1320 | - |
1321 | - def backwards(self, orm): |
1322 | - # Deleting field 'GadgetSnap.title' |
1323 | - db.delete_column(u'store_data_gadgetsnap', 'title') |
1324 | - |
1325 | - |
1326 | - models = { |
1327 | - u'store_data.architecture': { |
1328 | - 'Meta': {'object_name': 'Architecture'}, |
1329 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
1330 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '10'}) |
1331 | - }, |
1332 | - u'store_data.gadgetsnap': { |
1333 | - 'Meta': {'object_name': 'GadgetSnap'}, |
1334 | - 'alias': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
1335 | - 'architecture': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['store_data.Architecture']", 'symmetrical': 'False'}), |
1336 | - 'description': ('django.db.models.fields.TextField', [], {'max_length': '5000'}), |
1337 | - 'icon_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), |
1338 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
1339 | - 'last_updated': ('django.db.models.fields.DateTimeField', [], {}), |
1340 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
1341 | - 'price': ('django.db.models.fields.DecimalField', [], {'max_digits': '5', 'decimal_places': '2'}), |
1342 | - 'publisher': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
1343 | - 'ratings_average': ('django.db.models.fields.DecimalField', [], {'max_digits': '2', 'decimal_places': '1'}), |
1344 | - 'release': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['store_data.Release']", 'symmetrical': 'False'}), |
1345 | - 'screenshot_url': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['store_data.ScreenshotURL']", 'symmetrical': 'False'}), |
1346 | - 'store_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), |
1347 | - 'title': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}), |
1348 | - 'version': ('django.db.models.fields.CharField', [], {'max_length': '25'}) |
1349 | - }, |
1350 | - u'store_data.release': { |
1351 | - 'Meta': {'object_name': 'Release'}, |
1352 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
1353 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '25'}) |
1354 | - }, |
1355 | - u'store_data.screenshoturl': { |
1356 | - 'Meta': {'object_name': 'ScreenshotURL'}, |
1357 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
1358 | - 'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) |
1359 | - } |
1360 | - } |
1361 | - |
1362 | - complete_apps = ['store_data'] |
1363 | \ No newline at end of file |
1364 | |
1365 | === removed file 'store_data/migrations/0003_add_website_field.py' |
1366 | --- store_data/migrations/0003_add_website_field.py 2015-11-10 14:52:15 +0000 |
1367 | +++ store_data/migrations/0003_add_website_field.py 1970-01-01 00:00:00 +0000 |
1368 | @@ -1,59 +0,0 @@ |
1369 | -# -*- coding: utf-8 -*- |
1370 | -from south.utils import datetime_utils as datetime |
1371 | -from south.db import db |
1372 | -from south.v2 import SchemaMigration |
1373 | -from django.db import models |
1374 | - |
1375 | - |
1376 | -class Migration(SchemaMigration): |
1377 | - |
1378 | - def forwards(self, orm): |
1379 | - # Adding field 'GadgetSnap.website' |
1380 | - db.add_column(u'store_data_gadgetsnap', 'website', |
1381 | - self.gf('django.db.models.fields.URLField')(default='', max_length=200, blank=True), |
1382 | - keep_default=False) |
1383 | - |
1384 | - |
1385 | - def backwards(self, orm): |
1386 | - # Deleting field 'GadgetSnap.website' |
1387 | - db.delete_column(u'store_data_gadgetsnap', 'website') |
1388 | - |
1389 | - |
1390 | - models = { |
1391 | - u'store_data.architecture': { |
1392 | - 'Meta': {'object_name': 'Architecture'}, |
1393 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
1394 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '10'}) |
1395 | - }, |
1396 | - u'store_data.gadgetsnap': { |
1397 | - 'Meta': {'object_name': 'GadgetSnap'}, |
1398 | - 'alias': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
1399 | - 'architecture': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['store_data.Architecture']", 'symmetrical': 'False'}), |
1400 | - 'description': ('django.db.models.fields.TextField', [], {'max_length': '5000'}), |
1401 | - 'icon_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), |
1402 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
1403 | - 'last_updated': ('django.db.models.fields.DateTimeField', [], {}), |
1404 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
1405 | - 'price': ('django.db.models.fields.DecimalField', [], {'max_digits': '5', 'decimal_places': '2'}), |
1406 | - 'publisher': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
1407 | - 'ratings_average': ('django.db.models.fields.DecimalField', [], {'max_digits': '2', 'decimal_places': '1'}), |
1408 | - 'release': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['store_data.Release']", 'symmetrical': 'False'}), |
1409 | - 'screenshot_url': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['store_data.ScreenshotURL']", 'symmetrical': 'False'}), |
1410 | - 'store_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), |
1411 | - 'title': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}), |
1412 | - 'version': ('django.db.models.fields.CharField', [], {'max_length': '25'}), |
1413 | - 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) |
1414 | - }, |
1415 | - u'store_data.release': { |
1416 | - 'Meta': {'object_name': 'Release'}, |
1417 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
1418 | - 'name': ('django.db.models.fields.CharField', [], {'max_length': '25'}) |
1419 | - }, |
1420 | - u'store_data.screenshoturl': { |
1421 | - 'Meta': {'object_name': 'ScreenshotURL'}, |
1422 | - u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
1423 | - 'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) |
1424 | - } |
1425 | - } |
1426 | - |
1427 | - complete_apps = ['store_data'] |
1428 | \ No newline at end of file |
1429 | |
1430 | === modified file 'templates/zinnia/_entry_detail_base.html' |
1431 | --- templates/zinnia/_entry_detail_base.html 2014-12-16 22:52:40 +0000 |
1432 | +++ templates/zinnia/_entry_detail_base.html 2015-11-17 14:32:37 +0000 |
1433 | @@ -1,4 +1,4 @@ |
1434 | -{% load i18n zinnia_tags %} |
1435 | +{% load i18n zinnia %} |
1436 | <article class="row no-border no-padding-bottom post {% if object.featured %} featured{% endif %}"> |
1437 | <div class="eight-col"> |
1438 | {% block entry-header %} |
1439 | @@ -70,4 +70,4 @@ |
1440 | </aside> |
1441 | {% endblock entry-info %} |
1442 | </div> |
1443 | -</article> |
1444 | \ No newline at end of file |
1445 | +</article> |
1446 | |
1447 | === modified file 'templates/zinnia/base.html' |
1448 | --- templates/zinnia/base.html 2015-01-14 22:38:55 +0000 |
1449 | +++ templates/zinnia/base.html 2015-11-17 14:32:37 +0000 |
1450 | @@ -1,5 +1,5 @@ |
1451 | {% extends "base.html" %} |
1452 | -{% load zinnia_tags i18n %} |
1453 | +{% load zinnia i18n %} |
1454 | {% load cms_tags sekizai_tags menu_tags static %} |
1455 | |
1456 | {% block meta-keywords %}{% get_tags as entry_tags %}{{ entry_tags|join:", "}}{% endblock meta-keywords %} |
1457 | |
1458 | === modified file 'templates/zinnia/category_list.html' |
1459 | --- templates/zinnia/category_list.html 2015-01-16 21:02:45 +0000 |
1460 | +++ templates/zinnia/category_list.html 2015-11-17 14:32:37 +0000 |
1461 | @@ -1,5 +1,6 @@ |
1462 | {% extends "zinnia/base.html" %} |
1463 | -{% load i18n mptt_tags %} |
1464 | + |
1465 | +{% load i18n %} |
1466 | |
1467 | {% block meta-description %}{% trans "Category list" %}{% endblock meta-description %} |
1468 | |
1469 | |
1470 | === modified file 'templates/zinnia/entry_detail_base.html' |
1471 | --- templates/zinnia/entry_detail_base.html 2015-01-16 21:02:45 +0000 |
1472 | +++ templates/zinnia/entry_detail_base.html 2015-11-17 14:32:37 +0000 |
1473 | @@ -1,5 +1,5 @@ |
1474 | {% extends "zinnia/base.html" %} |
1475 | -{% load i18n comments zinnia_tags %} |
1476 | +{% load i18n comments zinnia %} |
1477 | {% load cycle from future %} |
1478 | |
1479 | {% block title %}{{ object.title }} | {{ block.super }}{% endblock title%} |
1480 | |
1481 | === modified file 'templates/zinnia/entry_list.html' |
1482 | --- templates/zinnia/entry_list.html 2014-12-17 10:51:06 +0000 |
1483 | +++ templates/zinnia/entry_list.html 2015-11-17 14:32:37 +0000 |
1484 | @@ -1,5 +1,5 @@ |
1485 | {% extends "zinnia/base.html" %} |
1486 | -{% load i18n zinnia_tags %} |
1487 | +{% load i18n zinnia %} |
1488 | |
1489 | {% block meta-description %}{% trans "Latest entries for" %} {% if category %}{% trans "the category" %} {{ category }}{% if category.description %}: {{ category.description|striptags|safe }}{% endif %}{% endif %}{% if tag %}{% trans "the tag" %} {{ tag }}{% endif %}{% if author %}{% trans "the author" %} {{ author }}{% endif %}{% endblock meta-description %} |
1490 |
Ok, this might need some work if we fully plan to move off of mptt - where is templates/ zinnia/ category_ list.html used?
daniel@ daydream: ~/dev/sites/ developer- ubuntu- com$ bzr grep mptt portal/ settings. py: 'mptt', #utilities for implementing a modified pre-order traversal tree txt:django- mptt==0. 6.1 zinnia/ category_ list.html: {% load i18n mptt_tags %} daydream: ~/dev/sites/ developer- ubuntu- com$
developer_
requirements.
templates/
daniel@