Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Spring 2012 Release

  • Loading branch information...
commit e59acec3d600c049323397b17cae14fdcaaaec07 1 parent 04ac7d4
@fernando-devsar fernando-devsar authored
Showing with 3,865 additions and 259 deletions.
  1. +0 −17 .project
  2. +0 −5 .settings/org.eclipse.core.resources.prefs
  3. +3 −3 deploy/marketplaces.wsgi
  4. +18 −4 deploy/requirements.txt
  5. +0 −133 deploy/solr/schema.xml
  6. +3 −3 deploy/stores.wsgi
  7. BIN  marketplaces/.DS_Store
  8. +0 −5 marketplaces/admin.py
  9. 0  marketplaces/apps/flatpages/__init__.py
  10. +31 −0 marketplaces/apps/flatpages/admin.py
  11. +32 −0 marketplaces/apps/flatpages/fixtures/sample_flatpages.json
  12. +18 −0 marketplaces/apps/flatpages/middleware.py
  13. +75 −0 marketplaces/apps/flatpages/migrations/0001_initial.py
  14. +52 −0 marketplaces/apps/flatpages/migrations/0002_auto.py
  15. 0  marketplaces/apps/flatpages/migrations/__init__.py
  16. +26 −0 marketplaces/apps/flatpages/models.py
  17. +3 −0  marketplaces/apps/flatpages/tests/__init__.py
  18. +73 −0 marketplaces/apps/flatpages/tests/csrf.py
  19. +59 −0 marketplaces/apps/flatpages/tests/middleware.py
  20. +1 −0  marketplaces/apps/flatpages/tests/templates/404.html
  21. +2 −0  marketplaces/apps/flatpages/tests/templates/flatpages/default.html
  22. 0  marketplaces/apps/flatpages/tests/templates/registration/login.html
  23. +8 −0 marketplaces/apps/flatpages/tests/urls.py
  24. +53 −0 marketplaces/apps/flatpages/tests/views.py
  25. +5 −0 marketplaces/apps/flatpages/urls.py
  26. +67 −0 marketplaces/apps/flatpages/views.py
  27. +30 −13 marketplaces/apps/market/admin.py
  28. +4 −0 marketplaces/apps/market/captcha_generators.py
  29. +14 −7 marketplaces/apps/market/forms.py
  30. +1 −1  marketplaces/apps/market/middleware.py
  31. +140 −0 marketplaces/apps/market/migrations/0011_auto__del_unique_marketplace_charge_on_card_as.py
  32. +153 −0 marketplaces/apps/market/migrations/0012_auto__add_contactforminfo.py
  33. +155 −0 ...laces/apps/market/migrations/0013_auto__add_field_marketsubcategory_image__add_field_marketcategory_imag.py
  34. +150 −0 marketplaces/apps/market/migrations/0014_auto__add_field_contactforminfo_marketplace.py
  35. +151 −0 marketplaces/apps/market/migrations/0015_auto__add_field_marketblogpost_post_to_twitter.py
  36. +170 −0 marketplaces/apps/market/migrations/0016_auto__add_marketplacesettings.py
  37. +161 −0 marketplaces/apps/market/migrations/0017_auto__chg_field_marketplacesettings_twitter_maxlength.py
  38. +99 −5 marketplaces/apps/market/models.py
  39. +4 −2 marketplaces/apps/market/urls.py
  40. +116 −27 marketplaces/apps/market/views.py
  41. 0  marketplaces/apps/market_buy/auth_pipelines/__init__.py
  42. +32 −0 marketplaces/apps/market_buy/auth_pipelines/pipeline.py
  43. +1 −1  marketplaces/apps/market_buy/forms.py
  44. +182 −0 marketplaces/apps/market_buy/migrations/0008_auto__add_field_show_owner.py
  45. +40 −1 marketplaces/apps/market_buy/models.py
  46. +2 −0  marketplaces/apps/market_buy/urls.py
  47. +73 −26 marketplaces/apps/market_buy/views.py
  48. +6 −4 marketplaces/apps/market_sell/views.py
  49. +8 −2 marketplaces/cron_report_daily_activity.py
  50. +30 −0 marketplaces/media_out_s3/js/tiny_mce/default_textareas.js
  51. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/ar.js
  52. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/az.js
  53. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/be.js
  54. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/bg.js
  55. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/bn.js
  56. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/br.js
  57. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/bs.js
  58. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/ca.js
  59. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/ch.js
  60. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/cn.js
  61. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/cs.js
  62. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/cy.js
  63. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/da.js
  64. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/de.js
  65. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/dv.js
  66. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/el.js
  67. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/en.js
  68. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/eo.js
  69. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/es.js
  70. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/et.js
  71. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/eu.js
  72. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/fa.js
  73. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/fi.js
  74. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/fr.js
  75. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/gl.js
  76. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/gu.js
  77. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/he.js
  78. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/hi.js
  79. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/hr.js
  80. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/hu.js
  81. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/hy.js
  82. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/ia.js
  83. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/id.js
  84. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/is.js
  85. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/it.js
  86. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/ja.js
  87. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/ka.js
  88. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/kl.js
  89. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/km.js
  90. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/ko.js
  91. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/lb.js
  92. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/lt.js
  93. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/lv.js
  94. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/mk.js
  95. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/ml.js
  96. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/mn.js
  97. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/ms.js
  98. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/my.js
  99. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/nb.js
  100. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/nl.js
  101. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/nn.js
  102. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/no.js
  103. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/pl.js
  104. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/ps.js
  105. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/pt.js
  106. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/ro.js
  107. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/ru.js
  108. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/sc.js
  109. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/se.js
  110. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/si.js
  111. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/sk.js
  112. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/sl.js
  113. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/sq.js
  114. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/sr.js
  115. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/sv.js
  116. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/ta.js
  117. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/te.js
  118. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/th.js
  119. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/tn.js
  120. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/tr.js
  121. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/tt.js
  122. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/tw.js
  123. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/uk.js
  124. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/ur.js
  125. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/vi.js
  126. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/zh-cn.js
  127. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/zh-tw.js
  128. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/zh.js
  129. +1 −0  marketplaces/media_out_s3/js/tiny_mce/langs/zu.js
  130. +504 −0 marketplaces/media_out_s3/js/tiny_mce/license.txt
  131. +5 −0 marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/css/advhr.css
  132. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/editor_plugin.js
  133. +57 −0 marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/editor_plugin_src.js
  134. +43 −0 marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/js/rule.js
  135. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/ar_dlg.js
  136. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/az_dlg.js
  137. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/be_dlg.js
  138. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/bg_dlg.js
  139. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/bn_dlg.js
  140. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/br_dlg.js
  141. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/bs_dlg.js
  142. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/ca_dlg.js
  143. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/ch_dlg.js
  144. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/cn_dlg.js
  145. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/cs_dlg.js
  146. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/cy_dlg.js
  147. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/da_dlg.js
  148. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/de_dlg.js
  149. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/dv_dlg.js
  150. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/el_dlg.js
  151. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/en_dlg.js
  152. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/eo_dlg.js
  153. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/es_dlg.js
  154. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/et_dlg.js
  155. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/eu_dlg.js
  156. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/fa_dlg.js
  157. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/fi_dlg.js
  158. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/fr_dlg.js
  159. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/gl_dlg.js
  160. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/gu_dlg.js
  161. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/he_dlg.js
  162. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/hi_dlg.js
  163. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/hr_dlg.js
  164. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/hu_dlg.js
  165. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/hy_dlg.js
  166. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/ia_dlg.js
  167. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/id_dlg.js
  168. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/is_dlg.js
  169. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/it_dlg.js
  170. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/ja_dlg.js
  171. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/ka_dlg.js
  172. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/kl_dlg.js
  173. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/km_dlg.js
  174. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/ko_dlg.js
  175. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/lb_dlg.js
  176. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/lt_dlg.js
  177. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/lv_dlg.js
  178. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/mk_dlg.js
  179. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/ml_dlg.js
  180. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/mn_dlg.js
  181. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/ms_dlg.js
  182. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/my_dlg.js
  183. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/nb_dlg.js
  184. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/nl_dlg.js
  185. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/nn_dlg.js
  186. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/no_dlg.js
  187. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/pl_dlg.js
  188. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/ps_dlg.js
  189. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/pt_dlg.js
  190. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/ro_dlg.js
  191. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/ru_dlg.js
  192. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/sc_dlg.js
  193. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/se_dlg.js
  194. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/si_dlg.js
  195. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/sk_dlg.js
  196. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/sl_dlg.js
  197. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/sq_dlg.js
  198. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/sr_dlg.js
  199. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/sv_dlg.js
  200. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/ta_dlg.js
  201. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/te_dlg.js
  202. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/th_dlg.js
  203. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/tn_dlg.js
  204. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/tr_dlg.js
  205. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/tt_dlg.js
  206. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/tw_dlg.js
  207. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/uk_dlg.js
  208. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/ur_dlg.js
  209. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/vi_dlg.js
  210. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/zh-cn_dlg.js
  211. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/zh-tw_dlg.js
  212. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/zh_dlg.js
  213. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/langs/zu_dlg.js
  214. +58 −0 marketplaces/media_out_s3/js/tiny_mce/plugins/advhr/rule.htm
  215. +13 −0 marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/css/advimage.css
  216. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/editor_plugin.js
  217. +50 −0 marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/editor_plugin_src.js
  218. +235 −0 marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/image.htm
  219. BIN  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/img/sample.gif
  220. +462 −0 marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/js/image.js
  221. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/ar_dlg.js
  222. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/az_dlg.js
  223. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/be_dlg.js
  224. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/bg_dlg.js
  225. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/bn_dlg.js
  226. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/br_dlg.js
  227. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/bs_dlg.js
  228. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/ca_dlg.js
  229. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/ch_dlg.js
  230. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/cn_dlg.js
  231. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/cs_dlg.js
  232. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/cy_dlg.js
  233. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/da_dlg.js
  234. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/de_dlg.js
  235. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/dv_dlg.js
  236. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/el_dlg.js
  237. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/en_dlg.js
  238. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/eo_dlg.js
  239. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/es_dlg.js
  240. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/et_dlg.js
  241. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/eu_dlg.js
  242. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/fa_dlg.js
  243. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/fi_dlg.js
  244. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/fr_dlg.js
  245. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/gl_dlg.js
  246. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/gu_dlg.js
  247. +1 −0  marketplaces/media_out_s3/js/tiny_mce/plugins/advimage/langs/he_dlg.js
Sorry, we could not display the entire diff because too many files (3,447) changed.
View
17 .project
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>GitHub-CollectorCity-Market-Place</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.python.pydev.PyDevBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.python.pydev.pythonNature</nature>
- </natures>
-</projectDescription>
View
5 .settings/org.eclipse.core.resources.prefs
@@ -1,5 +0,0 @@
-#Sun Jun 19 22:50:19 EDT 2011
-eclipse.preferences.version=1
-encoding//stores/cron_past_due.py=utf-8
-encoding//stores/cron_send_daily_invoice.py=utf-8
-encoding//stores/cron_update_bt_payment_status.py=utf-8
View
6 deploy/marketplaces.wsgi
@@ -8,10 +8,10 @@ import sys
wsgi_path = os.path.abspath(os.path.dirname(__file__))
# guessing that this .wsgi file is under project/deploy/ directory
-sys.path.append(os.path.join(wsgi_path, "../../auctions-env/lib/python2.6/site-packages/"))
+sys.path.append(os.path.join(wsgi_path, "../env/lib/python2.6/site-packages/"))
sys.path.append(os.path.join(wsgi_path, ".."))
-sys.path.append(os.path.join(wsgi_path, "../../"))
-sys.path.append(os.path.join(wsgi_path, "../apps/"))
+#sys.path.append(os.path.join(wsgi_path, "../../"))
+#sys.path.append(os.path.join(wsgi_path, "../apps/"))
# we need to setup the DJANGO_SETTINGS_MODULE before doing any import form the
# django.* namespace:
View
22 deploy/requirements.txt
@@ -1,15 +1,29 @@
-django<1.3
+django<1.4
MySQL-python
PIL==1.1.7
-braintree==2.4.0
+#M2Crypto==0.21.1
+#braintree==2.4.0
+braintree==2.10
django-flash==1.7.2
gchecky==0.2.1
boto==1.9b
-pysolr==2.0.12
-django-haystack==1.0.1-final
+pysolr==2.0.13
+django-haystack==1.2.6
Jinja2>=2.5
httplib2
coverage
DjangoSEO
django-debug-toolbar
django-seo
+textile
+git+git://github.com/Tivix/django-cron.git
+django-extensions
+django-simple-captcha
+django-tinymce
+pyenchant
+django_compressor
+python-twitter
+bitlyapi
+django-pagination
+python-memcached
+django-social-auth
View
133 deploy/solr/schema.xml
@@ -1,133 +0,0 @@
-<?xml version="1.0" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<schema name="default" version="1.1">
- <types>
- <fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
- <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/>
-
- <!-- Numeric field types that manipulate the value into
- a string value that isn't human-readable in its internal form,
- but with a lexicographic ordering the same as the numeric ordering,
- so that range queries work correctly. -->
- <fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>
- <fieldType name="slong" class="solr.SortableLongField" sortMissingLast="true" omitNorms="true"/>
- <fieldType name="sfloat" class="solr.SortableFloatField" sortMissingLast="true" omitNorms="true"/>
- <fieldType name="sdouble" class="solr.SortableDoubleField" sortMissingLast="true" omitNorms="true"/>
-
- <fieldType name="date" class="solr.DateField" sortMissingLast="true" omitNorms="true"/>
-
- <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
- <analyzer type="index">
- <tokenizer class="solr.WhitespaceTokenizerFactory"/>
- <!-- in this example, we will only use synonyms at query time
- <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
- -->
- <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
- <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
- <filter class="solr.LowerCaseFilterFactory"/>
- <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
- <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
- </analyzer>
- <analyzer type="query">
- <tokenizer class="solr.WhitespaceTokenizerFactory"/>
- <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
- <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
- <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
- <filter class="solr.LowerCaseFilterFactory"/>
- <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
- <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
- </analyzer>
- </fieldType>
-
- <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
- <analyzer>
- <tokenizer class="solr.WhitespaceTokenizerFactory"/>
- </analyzer>
- </fieldType>
- </types>
-
- <fields>
- <!-- general -->
- <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
- <field name="type" type="string" indexed="true" stored="true" multiValued="false" />
- <field name="name" type="string" indexed="true" stored="true" multiValued="false" />
-
- <dynamicField name="*_i" type="sint" indexed="true" stored="true"/>
- <dynamicField name="*_s" type="string" indexed="true" stored="true"/>
- <dynamicField name="*_l" type="slong" indexed="true" stored="true"/>
- <dynamicField name="*_t" type="text" indexed="true" stored="true"/>
- <dynamicField name="*_b" type="boolean" indexed="true" stored="true"/>
- <dynamicField name="*_f" type="sfloat" indexed="true" stored="true"/>
- <dynamicField name="*_d" type="sdouble" indexed="true" stored="true"/>
- <dynamicField name="*_dt" type="date" indexed="true" stored="true"/>
-
- <field name="django_ct" type="string" indexed="true" stored="true" multiValued="false" />
- <field name="django_id" type="string" indexed="true" stored="true" multiValued="false" />
-
-
- <field name="category" type="text" indexed="true" stored="true" multiValued="false" />
-
- <field name="category_id" type="slong" indexed="true" stored="true" multiValued="false" />
-
- <field name="ends_at" type="date" indexed="true" stored="true" multiValued="false" />
-
- <field name="description" type="string" indexed="false" stored="true" multiValued="false" />
-
- <field name="summary" type="text" indexed="true" stored="true" multiValued="false" />
-
- <field name="title" type="string" indexed="true" stored="true" multiValued="false" />
-
- <field name="price" type="sfloat" indexed="true" stored="true" multiValued="false" />
-
- <field name="product_id" type="slong" indexed="true" stored="true" multiValued="false" />
-
- <field name="added_at" type="date" indexed="true" stored="true" multiValued="false" />
-
- <field name="shop_name" type="text" indexed="true" stored="true" multiValued="false" />
-
- <field name="state" type="text" indexed="true" stored="true" multiValued="false" />
-
- <field name="shop_id" type="slong" indexed="true" stored="true" multiValued="false" />
-
- <field name="starts_at" type="date" indexed="true" stored="true" multiValued="false" />
-
- <field name="subcategory" type="text" indexed="true" stored="true" multiValued="false" />
-
- <field name="subcategory_id" type="slong" indexed="true" stored="true" multiValued="false" />
-
- <field name="shop_default_dns" type="string" indexed="false" stored="true" multiValued="false" />
-
- <field name="marketplace_id" type="slong" indexed="true" stored="true" multiValued="false" />
-
- <field name="shop_currency" type="string" indexed="false" stored="true" multiValued="false" />
-
- <field name="image_url" type="text" indexed="false" stored="true" multiValued="false" />
- </fields>
-
- <!-- field to use to determine and enforce document uniqueness. -->
- <uniqueKey>id</uniqueKey>
-
- <!-- field for the QueryParser to use when an explicit fieldname is absent -->
- <defaultSearchField>summary</defaultSearchField>
-
- <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
- <solrQueryParser defaultOperator="AND" />
-</schema>
-
-
View
6 deploy/stores.wsgi
@@ -8,10 +8,10 @@ import sys
wsgi_path = os.path.abspath(os.path.dirname(__file__))
# guessing that this .wsgi file is under project/deploy/ directory
-sys.path.append(os.path.join(wsgi_path, "../../auctions-env/lib/python2.6/site-packages/"))
+sys.path.append(os.path.join(wsgi_path, "../env/lib/python2.6/site-packages/"))
sys.path.append(os.path.join(wsgi_path, ".."))
-sys.path.append(os.path.join(wsgi_path, "../../"))
-sys.path.append(os.path.join(wsgi_path, "../apps/"))
+#sys.path.append(os.path.join(wsgi_path, "../../"))
+#sys.path.append(os.path.join(wsgi_path, "../apps/"))
# we need to setup the DJANGO_SETTINGS_MODULE before doing any import form the
# django.* namespace:
View
BIN  marketplaces/.DS_Store
Binary file not shown
View
5 marketplaces/admin.py
@@ -1,5 +0,0 @@
-from models import *
-from django.contrib import admin
-
-
-
View
0  marketplaces/apps/flatpages/__init__.py
No changes.
View
31 marketplaces/apps/flatpages/admin.py
@@ -0,0 +1,31 @@
+from django import forms
+from django.contrib import admin
+from django.contrib.flatpages.models import FlatPage
+from django.utils.translation import ugettext_lazy as _
+
+
+class FlatpageForm(forms.ModelForm):
+ url = forms.RegexField(label=_("URL"), max_length=100, regex=r'^[-\w/]+$',
+ help_text = _("Example: '/about/contact/'. Make sure to have leading"
+ " and trailing slashes."),
+ error_message = _("This value must contain only letters, numbers,"
+ " underscores, dashes or slashes."))
+
+ class Meta:
+ model = FlatPage
+
+
+class FlatPageAdmin(admin.ModelAdmin):
+ form = FlatpageForm
+ fieldsets = (
+ (None, {'fields': ('url', 'title', 'content', 'marketplace')}),
+ (_('Advanced options'), {'classes': ('collapse',), 'fields': ('enable_comments', 'registration_required', 'template_name')}),
+ )
+ list_display = ('url', 'title')
+ list_filter = ('marketplace', 'enable_comments', 'registration_required')
+ search_fields = ('url', 'title')
+
+# class Media:
+# js = ('js/tiny_mce/tiny_mce.js', 'js/textareas.js')
+
+admin.site.register(FlatPage, FlatPageAdmin)
View
32 marketplaces/apps/flatpages/fixtures/sample_flatpages.json
@@ -0,0 +1,32 @@
+[
+ {
+ "pk": 1,
+ "model": "flatpages.flatpage",
+ "fields": {
+ "registration_required": false,
+ "title": "A Flatpage",
+ "url": "/flatpage/",
+ "template_name": "",
+ "sites": [
+ 1
+ ],
+ "content": "Isn't it flat!",
+ "enable_comments": false
+ }
+ },
+ {
+ "pk": 2,
+ "model": "flatpages.flatpage",
+ "fields": {
+ "registration_required": true,
+ "title": "Sekrit Flatpage",
+ "url": "/sekrit/",
+ "template_name": "",
+ "sites": [
+ 1
+ ],
+ "content": "Isn't it sekrit!",
+ "enable_comments": false
+ }
+ }
+]
View
18 marketplaces/apps/flatpages/middleware.py
@@ -0,0 +1,18 @@
+from views import flatpage
+from django.http import Http404
+from django.conf import settings
+
+class FlatpageFallbackMiddleware(object):
+ def process_response(self, request, response):
+ if response.status_code != 404:
+ return response # No need to check for a flatpage for non-404 responses.
+ try:
+ return flatpage(request, request.path_info)
+ # Return the original response if any errors happened. Because this
+ # is a middleware, we can't assume the errors will be caught elsewhere.
+ except Http404:
+ return response
+ except:
+ if settings.DEBUG:
+ raise
+ return response
View
75 marketplaces/apps/flatpages/migrations/0001_initial.py
@@ -0,0 +1,75 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding model 'FlatPage'
+ db.create_table('flatpages_flatpage', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('url', self.gf('django.db.models.fields.CharField')(max_length=100, db_index=True)),
+ ('title', self.gf('django.db.models.fields.CharField')(max_length=200)),
+ ('content', self.gf('django.db.models.fields.TextField')(blank=True)),
+ ('enable_comments', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
+ ('template_name', self.gf('django.db.models.fields.CharField')(max_length=70, blank=True)),
+ ('registration_required', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
+ ('marketplace', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['market.MarketPlace'])),
+ ))
+ db.send_create_signal('flatpages', ['FlatPage'])
+
+ # Adding M2M table for field sites on 'FlatPage'
+ db.create_table('flatpages_flatpage_sites', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('flatpage', models.ForeignKey(orm['flatpages.flatpage'], null=False)),
+ ('site', models.ForeignKey(orm['sites.site'], null=False))
+ ))
+ db.create_unique('flatpages_flatpage_sites', ['flatpage_id', 'site_id'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'FlatPage'
+ db.delete_table('flatpages_flatpage')
+
+ # Removing M2M table for field sites on 'FlatPage'
+ db.delete_table('flatpages_flatpage_sites')
+
+
+ models = {
+ 'flatpages.flatpage': {
+ 'Meta': {'object_name': 'FlatPage'},
+ 'content': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'registration_required': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'sites': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['sites.Site']", 'symmetrical': 'False'}),
+ 'template_name': ('django.db.models.fields.CharField', [], {'max_length': '70', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '100', 'db_index': 'True'})
+ },
+ 'market.marketplace': {
+ 'Meta': {'object_name': 'MarketPlace'},
+ 'base_domain': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
+ 'charge_on_card_as': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
+ 'contact_email': ('django.db.models.fields.EmailField', [], {'default': "'contact@yourstore.com'", 'max_length': '75'}),
+ 'contact_phone': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '92'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '92', 'db_index': 'True'}),
+ 'template_prefix': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '92', 'db_index': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '92'})
+ },
+ 'sites.site': {
+ 'Meta': {'object_name': 'Site', 'db_table': "'django_site'"},
+ 'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ }
+ }
+
+ complete_apps = ['flatpages']
View
52 marketplaces/apps/flatpages/migrations/0002_auto.py
@@ -0,0 +1,52 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Removing M2M table for field sites on 'FlatPage'
+ db.delete_table('flatpages_flatpage_sites')
+
+
+ def backwards(self, orm):
+
+ # Adding M2M table for field sites on 'FlatPage'
+ db.create_table('flatpages_flatpage_sites', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('flatpage', models.ForeignKey(orm['flatpages.flatpage'], null=False)),
+ ('site', models.ForeignKey(orm['sites.site'], null=False))
+ ))
+ db.create_unique('flatpages_flatpage_sites', ['flatpage_id', 'site_id'])
+
+
+ models = {
+ 'flatpages.flatpage': {
+ 'Meta': {'object_name': 'FlatPage'},
+ 'content': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'registration_required': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'template_name': ('django.db.models.fields.CharField', [], {'max_length': '70', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '100', 'db_index': 'True'})
+ },
+ 'market.marketplace': {
+ 'Meta': {'object_name': 'MarketPlace'},
+ 'base_domain': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
+ 'charge_on_card_as': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
+ 'contact_email': ('django.db.models.fields.EmailField', [], {'default': "'contact@yourstore.com'", 'max_length': '75'}),
+ 'contact_phone': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '92'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '92', 'db_index': 'True'}),
+ 'template_prefix': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '92', 'db_index': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '92'})
+ }
+ }
+
+ complete_apps = ['flatpages']
View
0  marketplaces/apps/flatpages/migrations/__init__.py
No changes.
View
26 marketplaces/apps/flatpages/models.py
@@ -0,0 +1,26 @@
+from django.db import models
+from django.utils.translation import ugettext_lazy as _
+
+from market.models import MarketPlace
+
+
+class FlatPage(models.Model):
+ url = models.CharField(_('URL'), max_length=100, db_index=True)
+ title = models.CharField(_('title'), max_length=200)
+ content = models.TextField(_('content'), blank=True)
+ enable_comments = models.BooleanField(_('enable comments'))
+ template_name = models.CharField(_('template name'), max_length=70, blank=True,
+ help_text=_("Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."))
+ registration_required = models.BooleanField(_('registration required'), help_text=_("If this is checked, only logged-in users will be able to view the page."))
+ marketplace = models.ForeignKey(MarketPlace)
+
+ class Meta:
+ verbose_name = _('flat page')
+ verbose_name_plural = _('flat pages')
+ ordering = ('url',)
+
+ def __unicode__(self):
+ return u"%s -- %s" % (self.url, self.title)
+
+ def get_absolute_url(self):
+ return self.url
View
3  marketplaces/apps/flatpages/tests/__init__.py
@@ -0,0 +1,3 @@
+from django.contrib.flatpages.tests.csrf import *
+from django.contrib.flatpages.tests.middleware import *
+from django.contrib.flatpages.tests.views import *
View
73 marketplaces/apps/flatpages/tests/csrf.py
@@ -0,0 +1,73 @@
+import os
+from django.conf import settings
+from django.test import TestCase, Client
+
+class FlatpageCSRFTests(TestCase):
+ fixtures = ['sample_flatpages']
+ urls = 'django.contrib.flatpages.tests.urls'
+
+ def setUp(self):
+ self.client = Client(enforce_csrf_checks=True)
+ self.old_MIDDLEWARE_CLASSES = settings.MIDDLEWARE_CLASSES
+ flatpage_middleware_class = 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'
+ csrf_middleware_class = 'django.middleware.csrf.CsrfViewMiddleware'
+ if csrf_middleware_class not in settings.MIDDLEWARE_CLASSES:
+ settings.MIDDLEWARE_CLASSES += (csrf_middleware_class,)
+ if flatpage_middleware_class not in settings.MIDDLEWARE_CLASSES:
+ settings.MIDDLEWARE_CLASSES += (flatpage_middleware_class,)
+ self.old_TEMPLATE_DIRS = settings.TEMPLATE_DIRS
+ settings.TEMPLATE_DIRS = (
+ os.path.join(
+ os.path.dirname(__file__),
+ 'templates'
+ ),
+ )
+ self.old_LOGIN_URL = settings.LOGIN_URL
+ settings.LOGIN_URL = '/accounts/login/'
+
+ def tearDown(self):
+ settings.MIDDLEWARE_CLASSES = self.old_MIDDLEWARE_CLASSES
+ settings.TEMPLATE_DIRS = self.old_TEMPLATE_DIRS
+ settings.LOGIN_URL = self.old_LOGIN_URL
+
+ def test_view_flatpage(self):
+ "A flatpage can be served through a view, even when the middleware is in use"
+ response = self.client.get('/flatpage_root/flatpage/')
+ self.assertEquals(response.status_code, 200)
+ self.assertContains(response, "<p>Isn't it flat!</p>")
+
+ def test_view_non_existent_flatpage(self):
+ "A non-existent flatpage raises 404 when served through a view, even when the middleware is in use"
+ response = self.client.get('/flatpage_root/no_such_flatpage/')
+ self.assertEquals(response.status_code, 404)
+
+ def test_view_authenticated_flatpage(self):
+ "A flatpage served through a view can require authentication"
+ response = self.client.get('/flatpage_root/sekrit/')
+ self.assertRedirects(response, '/accounts/login/?next=/flatpage_root/sekrit/')
+
+ def test_fallback_flatpage(self):
+ "A flatpage can be served by the fallback middlware"
+ response = self.client.get('/flatpage/')
+ self.assertEquals(response.status_code, 200)
+ self.assertContains(response, "<p>Isn't it flat!</p>")
+
+ def test_fallback_non_existent_flatpage(self):
+ "A non-existent flatpage raises a 404 when served by the fallback middlware"
+ response = self.client.get('/no_such_flatpage/')
+ self.assertEquals(response.status_code, 404)
+
+ def test_post_view_flatpage(self):
+ "POSTing to a flatpage served through a view will raise a CSRF error if no token is provided (Refs #14156)"
+ response = self.client.post('/flatpage_root/flatpage/')
+ self.assertEquals(response.status_code, 403)
+
+ def test_post_fallback_flatpage(self):
+ "POSTing to a flatpage served by the middleware will raise a CSRF error if no token is provided (Refs #14156)"
+ response = self.client.post('/flatpage/')
+ self.assertEquals(response.status_code, 403)
+
+ def test_post_unknown_page(self):
+ "POSTing to an unknown page isn't caught as a 403 CSRF error"
+ response = self.client.post('/no_such_page/')
+ self.assertEquals(response.status_code, 404)
View
59 marketplaces/apps/flatpages/tests/middleware.py
@@ -0,0 +1,59 @@
+import os
+from django.conf import settings
+from django.test import TestCase
+
+class FlatpageMiddlewareTests(TestCase):
+ fixtures = ['sample_flatpages']
+ urls = 'django.contrib.flatpages.tests.urls'
+
+ def setUp(self):
+ self.old_MIDDLEWARE_CLASSES = settings.MIDDLEWARE_CLASSES
+ flatpage_middleware_class = 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'
+ if flatpage_middleware_class not in settings.MIDDLEWARE_CLASSES:
+ settings.MIDDLEWARE_CLASSES += (flatpage_middleware_class,)
+ self.old_TEMPLATE_DIRS = settings.TEMPLATE_DIRS
+ settings.TEMPLATE_DIRS = (
+ os.path.join(
+ os.path.dirname(__file__),
+ 'templates'
+ ),
+ )
+ self.old_LOGIN_URL = settings.LOGIN_URL
+ settings.LOGIN_URL = '/accounts/login/'
+
+ def tearDown(self):
+ settings.MIDDLEWARE_CLASSES = self.old_MIDDLEWARE_CLASSES
+ settings.TEMPLATE_DIRS = self.old_TEMPLATE_DIRS
+ settings.LOGIN_URL = self.old_LOGIN_URL
+
+ def test_view_flatpage(self):
+ "A flatpage can be served through a view, even when the middleware is in use"
+ response = self.client.get('/flatpage_root/flatpage/')
+ self.assertEquals(response.status_code, 200)
+ self.assertContains(response, "<p>Isn't it flat!</p>")
+
+ def test_view_non_existent_flatpage(self):
+ "A non-existent flatpage raises 404 when served through a view, even when the middleware is in use"
+ response = self.client.get('/flatpage_root/no_such_flatpage/')
+ self.assertEquals(response.status_code, 404)
+
+ def test_view_authenticated_flatpage(self):
+ "A flatpage served through a view can require authentication"
+ response = self.client.get('/flatpage_root/sekrit/')
+ self.assertRedirects(response, '/accounts/login/?next=/flatpage_root/sekrit/')
+
+ def test_fallback_flatpage(self):
+ "A flatpage can be served by the fallback middlware"
+ response = self.client.get('/flatpage/')
+ self.assertEquals(response.status_code, 200)
+ self.assertContains(response, "<p>Isn't it flat!</p>")
+
+ def test_fallback_non_existent_flatpage(self):
+ "A non-existent flatpage raises a 404 when served by the fallback middlware"
+ response = self.client.get('/no_such_flatpage/')
+ self.assertEquals(response.status_code, 404)
+
+ def test_fallback_authenticated_flatpage(self):
+ "A flatpage served by the middleware can require authentication"
+ response = self.client.get('/sekrit/')
+ self.assertRedirects(response, '/accounts/login/?next=/sekrit/')
View
1  marketplaces/apps/flatpages/tests/templates/404.html
@@ -0,0 +1 @@
+<h1>Oh Noes!</h1>
View
2  marketplaces/apps/flatpages/tests/templates/flatpages/default.html
@@ -0,0 +1,2 @@
+<h1>{{ flatpage.title }}</h1>
+<p>{{ flatpage.content }}</p>
View
0  marketplaces/apps/flatpages/tests/templates/registration/login.html
No changes.
View
8 marketplaces/apps/flatpages/tests/urls.py
@@ -0,0 +1,8 @@
+from django.conf.urls.defaults import *
+
+# special urls for flatpage test cases
+urlpatterns = patterns('',
+ (r'^flatpage_root', include('django.contrib.flatpages.urls')),
+ (r'^accounts/', include('django.contrib.auth.urls')),
+)
+
View
53 marketplaces/apps/flatpages/tests/views.py
@@ -0,0 +1,53 @@
+import os
+from django.conf import settings
+from django.test import TestCase
+
+class FlatpageViewTests(TestCase):
+ fixtures = ['sample_flatpages']
+ urls = 'django.contrib.flatpages.tests.urls'
+
+ def setUp(self):
+ self.old_MIDDLEWARE_CLASSES = settings.MIDDLEWARE_CLASSES
+ flatpage_middleware_class = 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'
+ if flatpage_middleware_class in settings.MIDDLEWARE_CLASSES:
+ settings.MIDDLEWARE_CLASSES = tuple(m for m in settings.MIDDLEWARE_CLASSES if m != flatpage_middleware_class)
+ self.old_TEMPLATE_DIRS = settings.TEMPLATE_DIRS
+ settings.TEMPLATE_DIRS = (
+ os.path.join(
+ os.path.dirname(__file__),
+ 'templates'
+ ),
+ )
+ self.old_LOGIN_URL = settings.LOGIN_URL
+ settings.LOGIN_URL = '/accounts/login/'
+
+ def tearDown(self):
+ settings.MIDDLEWARE_CLASSES = self.old_MIDDLEWARE_CLASSES
+ settings.TEMPLATE_DIRS = self.old_TEMPLATE_DIRS
+ settings.LOGIN_URL = self.old_LOGIN_URL
+
+ def test_view_flatpage(self):
+ "A flatpage can be served through a view"
+ response = self.client.get('/flatpage_root/flatpage/')
+ self.assertEquals(response.status_code, 200)
+ self.assertContains(response, "<p>Isn't it flat!</p>")
+
+ def test_view_non_existent_flatpage(self):
+ "A non-existent flatpage raises 404 when served through a view"
+ response = self.client.get('/flatpage_root/no_such_flatpage/')
+ self.assertEquals(response.status_code, 404)
+
+ def test_view_authenticated_flatpage(self):
+ "A flatpage served through a view can require authentication"
+ response = self.client.get('/flatpage_root/sekrit/')
+ self.assertRedirects(response, '/accounts/login/?next=/flatpage_root/sekrit/')
+
+ def test_fallback_flatpage(self):
+ "A fallback flatpage won't be served if the middleware is disabled"
+ response = self.client.get('/flatpage/')
+ self.assertEquals(response.status_code, 404)
+
+ def test_fallback_non_existent_flatpage(self):
+ "A non-existent flatpage won't be served if the fallback middlware is disabled"
+ response = self.client.get('/no_such_flatpage/')
+ self.assertEquals(response.status_code, 404)
View
5 marketplaces/apps/flatpages/urls.py
@@ -0,0 +1,5 @@
+from django.conf.urls.defaults import *
+
+urlpatterns = patterns('flatpages.views',
+ (r'^(?P<url>.*)$', 'flatpage'),
+)
View
67 marketplaces/apps/flatpages/views.py
@@ -0,0 +1,67 @@
+from models import FlatPage
+from django.template import loader, RequestContext
+from django.shortcuts import get_object_or_404
+from django.http import HttpResponse, HttpResponseRedirect
+from django.conf import settings
+from django.core.xheaders import populate_xheaders
+from django.utils.safestring import mark_safe
+from django.views.decorators.csrf import csrf_protect
+
+DEFAULT_FLATPAGES_TEMPLATE = 'flatpages/default.html'
+
+# This view is called from FlatpageFallbackMiddleware.process_response
+# when a 404 is raised, which often means CsrfViewMiddleware.process_view
+# has not been called even if CsrfViewMiddleware is installed. So we need
+# to use @csrf_protect, in case the template needs {% csrf_token %}.
+# However, we can't just wrap this view; if no matching flatpage exists,
+# or a redirect is required for authentication, the 404 needs to be returned
+# without any CSRF checks. Therefore, we only
+# CSRF protect the internal implementation.
+def flatpage(request, url):
+ """
+ Public interface to the flat page view.
+
+ Models: `flatpages.flatpages`
+ Templates: Uses the template defined by the ``template_name`` field,
+ or `flatpages/default.html` if template_name is not defined.
+ Context:
+ flatpage
+ `flatpages.flatpages` object
+ """
+ if not url.endswith('/') and settings.APPEND_SLASH:
+ return HttpResponseRedirect("%s/" % request.path)
+ if not url.startswith('/'):
+ url = "/" + url
+ f = get_object_or_404(FlatPage, url__exact=url, marketplace__id=request.marketplace.id)
+ return render_flatpage(request, f)
+
+@csrf_protect
+def render_flatpage(request, f):
+ """
+ Internal interface to the flat page view.
+ """
+ # If registration is required for accessing this page, and the user isn't
+ # logged in, redirect to the login page.
+ DEFAULT_TEMPLATE = "%s/%s" % (request.marketplace.template_prefix, DEFAULT_FLATPAGES_TEMPLATE)
+
+ if f.registration_required and not request.user.is_authenticated():
+ from django.contrib.auth.views import redirect_to_login
+ return redirect_to_login(request.path)
+ if f.template_name:
+ t = loader.select_template(("%s/%s" % (request.marketplace.template_prefix, f.template_name),
+ DEFAULT_TEMPLATE))
+ else:
+ t = loader.get_template(DEFAULT_TEMPLATE)
+
+ # To avoid having to always use the "|safe" filter in flatpage templates,
+ # mark the title and content as already safe (since they are raw HTML
+ # content in the first place).
+ f.title = mark_safe(f.title)
+ f.content = mark_safe(f.content)
+
+ c = RequestContext(request, {
+ 'flatpage': f,
+ })
+ response = HttpResponse(t.render(c))
+ populate_xheaders(request, response, FlatPage, f.id)
+ return response
View
43 marketplaces/apps/market/admin.py
@@ -1,26 +1,43 @@
from django.contrib import admin
-from market.models import MarketPlace, MarketCategory, MarketSubCategory, MarketMailingListMember,\
+from market.models import MarketPlace, MarketPlaceSettings, MarketCategory, MarketSubCategory, MarketMailingListMember,\
MarketBlogPost, MarketPostCategory, MarketPostComment, MarketPostPick,\
PrivacyPolicy, TermsAndConditions
-admin.site.register(MarketBlogPost)
+
+class MarketPlaceSettingsInline(admin.StackedInline):
+ model = MarketPlaceSettings
+
+class MarketPlaceAdmin(admin.ModelAdmin):
+ inlines = [MarketPlaceSettingsInline]
+
+
+admin.site.register(MarketPlace, MarketPlaceAdmin)
admin.site.register(MarketPostCategory)
admin.site.register(MarketPostComment)
admin.site.register(MarketPostPick)
admin.site.register(MarketCategory)
admin.site.register(MarketSubCategory)
-admin.site.register(MarketPlace)
admin.site.register(MarketMailingListMember)
-class PrivacyPolicyAdmin(admin.ModelAdmin):
- class Media:
- js = ('js/tiny_mce/tiny_mce.js', 'js/textareas.js')
-
-class TermsAndConditionsAdmin(admin.ModelAdmin):
- class Media:
- js = ('js/tiny_mce/tiny_mce.js', 'js/textareas.js')
-
-admin.site.register(PrivacyPolicy, PrivacyPolicyAdmin)
-admin.site.register(TermsAndConditions, TermsAndConditionsAdmin)
+#class PrivacyPolicyAdmin(admin.ModelAdmin):
+# class Media:
+# js = ('js/tiny_mce/tiny_mce.js', 'js/textareas.js')
+#
+#class TermsAndConditionsAdmin(admin.ModelAdmin):
+# class Media:
+# js = ('js/tiny_mce/tiny_mce.js', 'js/textareas.js')
+#
+#class MarketBlogPostAdmin(admin.ModelAdmin):
+# class Media:
+# js = ('js/tiny_mce/tiny_mce.js', 'js/textareas.js')
+#
+#
+#admin.site.register(PrivacyPolicy, PrivacyPolicyAdmin)
+#admin.site.register(TermsAndConditions, TermsAndConditionsAdmin)
+#admin.site.register(MarketBlogPost, MarketBlogPostAdmin)
+
+admin.site.register(PrivacyPolicy)
+admin.site.register(TermsAndConditions)
+admin.site.register(MarketBlogPost)
View
4 marketplaces/apps/market/captcha_generators.py
@@ -0,0 +1,4 @@
+from models import MarketCategory
+
+def category_captcha():
+ return MarketCategory.generate_captcha()
View
21 marketplaces/apps/market/forms.py
@@ -1,21 +1,21 @@
-from django.forms import ModelForm
-
+from django import forms
+from captcha.fields import CaptchaField
from market.models import MarketCategory, MarketSubCategory, MarketMailingListMember, MarketPostComment
-
-class MarketPostCommentForm(ModelForm):
+
+class MarketPostCommentForm(forms.ModelForm):
class Meta:
model = MarketPostComment
exclude = ['user', 'post']
-class MarketCategoryForm(ModelForm):
+class MarketCategoryForm(forms.ModelForm):
class Meta:
model = MarketCategory
exclude = ['marketplace']
-class MarketSubCategoryForm(ModelForm):
+class MarketSubCategoryForm(forms.ModelForm):
class Meta:
model = MarketSubCategory
fields = ['marketplace', 'slug']
@@ -28,7 +28,14 @@ class Meta:
# category = self.fields.get('category')
# category.queryset = Category.objects.filter(shop=self.shop)
-class MarketMailingListMemberForm(ModelForm):
+class MarketMailingListMemberForm(forms.ModelForm):
class Meta:
model = MarketMailingListMember
exclude = ['marketplace']
+
+class ContactForm(forms.Form):
+ name = forms.CharField()
+ phone = forms.CharField()
+ email = forms.EmailField()
+ message = forms.CharField(widget=forms.Textarea)
+ captcha = CaptchaField()
View
2  marketplaces/apps/market/middleware.py
@@ -9,7 +9,7 @@
class MarketPlaceMiddleware:
def process_request(self, request):
- host = request.get_host()
+ host = request.get_host().split(':')[0]
request.marketplace = None
for base_domain, market in MARKETS.iteritems():
if host.endswith(base_domain):
View
140 marketplaces/apps/market/migrations/0011_auto__del_unique_marketplace_charge_on_card_as.py
@@ -0,0 +1,140 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Removing unique constraint on 'MarketPlace', fields ['charge_on_card_as']
+ db.delete_unique('market_marketplace', ['charge_on_card_as'])
+
+
+ def backwards(self, orm):
+
+ # Adding unique constraint on 'MarketPlace', fields ['charge_on_card_as']
+ db.create_unique('market_marketplace', ['charge_on_card_as'])
+
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'market.marketblogpost': {
+ 'Meta': {'object_name': 'MarketBlogPost'},
+ 'allow_comments': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'posted_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'posted_on': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '80', 'db_index': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
+ 'views': ('django.db.models.fields.IntegerField', [], {'default': '0'})
+ },
+ 'market.marketcategory': {
+ 'Meta': {'object_name': 'MarketCategory'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '255'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '60', 'db_index': 'True'})
+ },
+ 'market.marketmailinglistmember': {
+ 'Meta': {'object_name': 'MarketMailingListMember'},
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"})
+ },
+ 'market.marketplace': {
+ 'Meta': {'object_name': 'MarketPlace'},
+ 'base_domain': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
+ 'charge_on_card_as': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
+ 'contact_email': ('django.db.models.fields.EmailField', [], {'default': "'contact@yourstore.com'", 'max_length': '75'}),
+ 'contact_phone': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '92'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '92', 'db_index': 'True'}),
+ 'template_prefix': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '92', 'db_index': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '92'})
+ },
+ 'market.marketpostcategory': {
+ 'Meta': {'object_name': 'MarketPostCategory'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '80', 'db_index': 'True'}),
+ 'tag': ('django.db.models.fields.CharField', [], {'max_length': '80'})
+ },
+ 'market.marketpostcomment': {
+ 'Meta': {'object_name': 'MarketPostComment'},
+ 'comment': ('django.db.models.fields.TextField', [], {}),
+ 'commented_on': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketBlogPost']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'market.marketpostpick': {
+ 'Meta': {'object_name': 'MarketPostPick'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '5'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketBlogPost']"})
+ },
+ 'market.marketsubcategory': {
+ 'Meta': {'unique_together': "(('parent', 'slug'),)", 'object_name': 'MarketSubCategory'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '255'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'subcategories'", 'null': 'True', 'to': "orm['market.MarketCategory']"}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '60', 'db_index': 'True'})
+ },
+ 'market.privacypolicy': {
+ 'Meta': {'object_name': 'PrivacyPolicy'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'default': "''"})
+ },
+ 'market.termsandconditions': {
+ 'Meta': {'object_name': 'TermsAndConditions'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'default': "''"})
+ }
+ }
+
+ complete_apps = ['market']
View
153 marketplaces/apps/market/migrations/0012_auto__add_contactforminfo.py
@@ -0,0 +1,153 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding model 'ContactFormInfo'
+ db.create_table('market_contactforminfo', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('datetime', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
+ ('email', self.gf('django.db.models.fields.EmailField')(max_length=64, null=True)),
+ ('ip', self.gf('django.db.models.fields.CharField')(max_length=64)),
+ ))
+ db.send_create_signal('market', ['ContactFormInfo'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'ContactFormInfo'
+ db.delete_table('market_contactforminfo')
+
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'market.contactforminfo': {
+ 'Meta': {'object_name': 'ContactFormInfo'},
+ 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '64', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip': ('django.db.models.fields.CharField', [], {'max_length': '64'})
+ },
+ 'market.marketblogpost': {
+ 'Meta': {'object_name': 'MarketBlogPost'},
+ 'allow_comments': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'posted_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'posted_on': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '80', 'db_index': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
+ 'views': ('django.db.models.fields.IntegerField', [], {'default': '0'})
+ },
+ 'market.marketcategory': {
+ 'Meta': {'object_name': 'MarketCategory'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '255'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '60', 'db_index': 'True'})
+ },
+ 'market.marketmailinglistmember': {
+ 'Meta': {'object_name': 'MarketMailingListMember'},
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"})
+ },
+ 'market.marketplace': {
+ 'Meta': {'object_name': 'MarketPlace'},
+ 'base_domain': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
+ 'charge_on_card_as': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
+ 'contact_email': ('django.db.models.fields.EmailField', [], {'default': "'contact@yourstore.com'", 'max_length': '75'}),
+ 'contact_phone': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '92'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '92', 'db_index': 'True'}),
+ 'template_prefix': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '92', 'db_index': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '92'})
+ },
+ 'market.marketpostcategory': {
+ 'Meta': {'object_name': 'MarketPostCategory'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '80', 'db_index': 'True'}),
+ 'tag': ('django.db.models.fields.CharField', [], {'max_length': '80'})
+ },
+ 'market.marketpostcomment': {
+ 'Meta': {'object_name': 'MarketPostComment'},
+ 'comment': ('django.db.models.fields.TextField', [], {}),
+ 'commented_on': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketBlogPost']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'market.marketpostpick': {
+ 'Meta': {'object_name': 'MarketPostPick'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '5'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketBlogPost']"})
+ },
+ 'market.marketsubcategory': {
+ 'Meta': {'unique_together': "(('parent', 'slug'),)", 'object_name': 'MarketSubCategory'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '255'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'subcategories'", 'null': 'True', 'to': "orm['market.MarketCategory']"}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '60', 'db_index': 'True'})
+ },
+ 'market.privacypolicy': {
+ 'Meta': {'object_name': 'PrivacyPolicy'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'default': "''"})
+ },
+ 'market.termsandconditions': {
+ 'Meta': {'object_name': 'TermsAndConditions'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'default': "''"})
+ }
+ }
+
+ complete_apps = ['market']
View
155 ...migrations/0013_auto__add_field_marketsubcategory_image__add_field_marketcategory_imag.py
@@ -0,0 +1,155 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'MarketSubCategory.image'
+ db.add_column('market_marketsubcategory', 'image', self.gf('core.thumbs.ImageWithThumbsField')(max_length=100, null=True, blank=True), keep_default=False)
+
+ # Adding field 'MarketCategory.image'
+ db.add_column('market_marketcategory', 'image', self.gf('core.thumbs.ImageWithThumbsField')(max_length=100, null=True, blank=True), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'MarketSubCategory.image'
+ db.delete_column('market_marketsubcategory', 'image')
+
+ # Deleting field 'MarketCategory.image'
+ db.delete_column('market_marketcategory', 'image')
+
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'market.contactforminfo': {
+ 'Meta': {'object_name': 'ContactFormInfo'},
+ 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '64', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip': ('django.db.models.fields.CharField', [], {'max_length': '64'})
+ },
+ 'market.marketblogpost': {
+ 'Meta': {'object_name': 'MarketBlogPost'},
+ 'allow_comments': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'posted_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'posted_on': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '80', 'db_index': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
+ 'views': ('django.db.models.fields.IntegerField', [], {'default': '0'})
+ },
+ 'market.marketcategory': {
+ 'Meta': {'object_name': 'MarketCategory'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('core.thumbs.ImageWithThumbsField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '255'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '60', 'db_index': 'True'})
+ },
+ 'market.marketmailinglistmember': {
+ 'Meta': {'object_name': 'MarketMailingListMember'},
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"})
+ },
+ 'market.marketplace': {
+ 'Meta': {'object_name': 'MarketPlace'},
+ 'base_domain': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
+ 'charge_on_card_as': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
+ 'contact_email': ('django.db.models.fields.EmailField', [], {'default': "'contact@yourstore.com'", 'max_length': '75'}),
+ 'contact_phone': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '92'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '92', 'db_index': 'True'}),
+ 'template_prefix': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '92', 'db_index': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '92'})
+ },
+ 'market.marketpostcategory': {
+ 'Meta': {'object_name': 'MarketPostCategory'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '80', 'db_index': 'True'}),
+ 'tag': ('django.db.models.fields.CharField', [], {'max_length': '80'})
+ },
+ 'market.marketpostcomment': {
+ 'Meta': {'object_name': 'MarketPostComment'},
+ 'comment': ('django.db.models.fields.TextField', [], {}),
+ 'commented_on': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketBlogPost']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'market.marketpostpick': {
+ 'Meta': {'object_name': 'MarketPostPick'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '5'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketBlogPost']"})
+ },
+ 'market.marketsubcategory': {
+ 'Meta': {'unique_together': "(('parent', 'slug'),)", 'object_name': 'MarketSubCategory'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('core.thumbs.ImageWithThumbsField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '255'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'subcategories'", 'null': 'True', 'to': "orm['market.MarketCategory']"}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '60', 'db_index': 'True'})
+ },
+ 'market.privacypolicy': {
+ 'Meta': {'object_name': 'PrivacyPolicy'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'default': "''"})
+ },
+ 'market.termsandconditions': {
+ 'Meta': {'object_name': 'TermsAndConditions'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'default': "''"})
+ }
+ }
+
+ complete_apps = ['market']
View
150 marketplaces/apps/market/migrations/0014_auto__add_field_contactforminfo_marketplace.py
@@ -0,0 +1,150 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'ContactFormInfo.marketplace'
+ db.add_column('market_contactforminfo', 'marketplace', self.gf('django.db.models.fields.related.ForeignKey')(default=1, to=orm['market.MarketPlace']), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'ContactFormInfo.marketplace'
+ db.delete_column('market_contactforminfo', 'marketplace_id')
+
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'market.contactforminfo': {
+ 'Meta': {'object_name': 'ContactFormInfo'},
+ 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '64', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"})
+ },
+ 'market.marketblogpost': {
+ 'Meta': {'object_name': 'MarketBlogPost'},
+ 'allow_comments': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'posted_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'posted_on': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '80', 'db_index': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
+ 'views': ('django.db.models.fields.IntegerField', [], {'default': '0'})
+ },
+ 'market.marketcategory': {
+ 'Meta': {'object_name': 'MarketCategory'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('core.thumbs.ImageWithThumbsField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '255'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '60', 'db_index': 'True'})
+ },
+ 'market.marketmailinglistmember': {
+ 'Meta': {'object_name': 'MarketMailingListMember'},
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'marketplace': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['market.MarketPlace']"})
+ },
+ 'market.marketplace': {
+ 'Meta': {'object_name': 'MarketPlace'},
+ 'base_domain': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
+ 'charge_on_card_as': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),