From a87efe2d53adc660a4b0832140af0d14647b367f Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Fri, 11 Feb 2011 02:41:45 -0500 Subject: added display of country flags --- askbot/__init__.py | 2 +- askbot/forms.py | 49 +++- .../migrations/0035_add_country_fields_to_user.py | 311 +++++++++++++++++++++ askbot/models/__init__.py | 6 +- askbot/models/question.py | 4 +- askbot/setup_templates/settings.py | 2 + askbot/skins/default/media/images/flags/.DS_Store | Bin 0 -> 12292 bytes askbot/skins/default/media/images/flags/ad.gif | Bin 0 -> 371 bytes askbot/skins/default/media/images/flags/ae.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/af.gif | Bin 0 -> 369 bytes askbot/skins/default/media/images/flags/ag.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/ai.gif | Bin 0 -> 369 bytes askbot/skins/default/media/images/flags/al.gif | Bin 0 -> 370 bytes askbot/skins/default/media/images/flags/am.gif | Bin 0 -> 363 bytes askbot/skins/default/media/images/flags/an.gif | Bin 0 -> 368 bytes askbot/skins/default/media/images/flags/ao.gif | Bin 0 -> 244 bytes askbot/skins/default/media/images/flags/ar.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/as.gif | Bin 0 -> 365 bytes askbot/skins/default/media/images/flags/at.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/au.gif | Bin 0 -> 378 bytes askbot/skins/default/media/images/flags/aw.gif | Bin 0 -> 365 bytes askbot/skins/default/media/images/flags/ax.gif | Bin 0 -> 376 bytes askbot/skins/default/media/images/flags/az.gif | Bin 0 -> 370 bytes askbot/skins/default/media/images/flags/ba.gif | Bin 0 -> 363 bytes askbot/skins/default/media/images/flags/bb.gif | Bin 0 -> 368 bytes askbot/skins/default/media/images/flags/bd.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/be.gif | Bin 0 -> 359 bytes askbot/skins/default/media/images/flags/bf.gif | Bin 0 -> 358 bytes askbot/skins/default/media/images/flags/bg.gif | Bin 0 -> 360 bytes askbot/skins/default/media/images/flags/bh.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/bi.gif | Bin 0 -> 374 bytes askbot/skins/default/media/images/flags/bj.gif | Bin 0 -> 368 bytes askbot/skins/default/media/images/flags/bm.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/bn.gif | Bin 0 -> 373 bytes askbot/skins/default/media/images/flags/bo.gif | Bin 0 -> 359 bytes askbot/skins/default/media/images/flags/br.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/bs.gif | Bin 0 -> 351 bytes askbot/skins/default/media/images/flags/bt.gif | Bin 0 -> 377 bytes askbot/skins/default/media/images/flags/bv.gif | Bin 0 -> 376 bytes askbot/skins/default/media/images/flags/bw.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/by.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/bz.gif | Bin 0 -> 368 bytes askbot/skins/default/media/images/flags/ca.gif | Bin 0 -> 376 bytes .../skins/default/media/images/flags/catalonia.gif | Bin 0 -> 238 bytes askbot/skins/default/media/images/flags/cc.gif | Bin 0 -> 371 bytes askbot/skins/default/media/images/flags/cd.gif | Bin 0 -> 243 bytes askbot/skins/default/media/images/flags/cf.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/cg.gif | Bin 0 -> 359 bytes askbot/skins/default/media/images/flags/ch.gif | Bin 0 -> 332 bytes askbot/skins/default/media/images/flags/ci.gif | Bin 0 -> 368 bytes askbot/skins/default/media/images/flags/ck.gif | Bin 0 -> 362 bytes askbot/skins/default/media/images/flags/cl.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/cm.gif | Bin 0 -> 369 bytes askbot/skins/default/media/images/flags/cn.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/co.gif | Bin 0 -> 353 bytes askbot/skins/default/media/images/flags/cr.gif | Bin 0 -> 359 bytes askbot/skins/default/media/images/flags/cs.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/cu.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/cv.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/cx.gif | Bin 0 -> 363 bytes askbot/skins/default/media/images/flags/cy.gif | Bin 0 -> 365 bytes askbot/skins/default/media/images/flags/cz.gif | Bin 0 -> 362 bytes askbot/skins/default/media/images/flags/de.gif | Bin 0 -> 362 bytes askbot/skins/default/media/images/flags/dj.gif | Bin 0 -> 369 bytes askbot/skins/default/media/images/flags/dk.gif | Bin 0 -> 374 bytes askbot/skins/default/media/images/flags/dm.gif | Bin 0 -> 368 bytes askbot/skins/default/media/images/flags/do.gif | Bin 0 -> 362 bytes askbot/skins/default/media/images/flags/dz.gif | Bin 0 -> 370 bytes askbot/skins/default/media/images/flags/ec.gif | Bin 0 -> 362 bytes askbot/skins/default/media/images/flags/ee.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/eg.gif | Bin 0 -> 363 bytes askbot/skins/default/media/images/flags/eh.gif | Bin 0 -> 359 bytes .../skins/default/media/images/flags/england.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/er.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/es.gif | Bin 0 -> 360 bytes askbot/skins/default/media/images/flags/et.gif | Bin 0 -> 364 bytes .../default/media/images/flags/europeanunion.gif | Bin 0 -> 171 bytes askbot/skins/default/media/images/flags/fam.gif | Bin 0 -> 370 bytes askbot/skins/default/media/images/flags/fi.gif | Bin 0 -> 371 bytes askbot/skins/default/media/images/flags/fj.gif | Bin 0 -> 370 bytes askbot/skins/default/media/images/flags/fk.gif | Bin 0 -> 372 bytes askbot/skins/default/media/images/flags/fm.gif | Bin 0 -> 377 bytes askbot/skins/default/media/images/flags/fo.gif | Bin 0 -> 370 bytes askbot/skins/default/media/images/flags/fr.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/ga.gif | Bin 0 -> 359 bytes askbot/skins/default/media/images/flags/gb.gif | Bin 0 -> 260 bytes askbot/skins/default/media/images/flags/gd.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/ge.gif | Bin 0 -> 379 bytes askbot/skins/default/media/images/flags/gf.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/gh.gif | Bin 0 -> 358 bytes askbot/skins/default/media/images/flags/gi.gif | Bin 0 -> 370 bytes askbot/skins/default/media/images/flags/gl.gif | Bin 0 -> 368 bytes askbot/skins/default/media/images/flags/gm.gif | Bin 0 -> 362 bytes askbot/skins/default/media/images/flags/gn.gif | Bin 0 -> 363 bytes askbot/skins/default/media/images/flags/gp.gif | Bin 0 -> 357 bytes askbot/skins/default/media/images/flags/gq.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/gr.gif | Bin 0 -> 368 bytes askbot/skins/default/media/images/flags/gs.gif | Bin 0 -> 363 bytes askbot/skins/default/media/images/flags/gt.gif | Bin 0 -> 374 bytes askbot/skins/default/media/images/flags/gu.gif | Bin 0 -> 370 bytes askbot/skins/default/media/images/flags/gw.gif | Bin 0 -> 358 bytes askbot/skins/default/media/images/flags/gy.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/hk.gif | Bin 0 -> 373 bytes askbot/skins/default/media/images/flags/hm.gif | Bin 0 -> 378 bytes askbot/skins/default/media/images/flags/hn.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/hr.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/ht.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/hu.gif | Bin 0 -> 357 bytes askbot/skins/default/media/images/flags/id.gif | Bin 0 -> 362 bytes askbot/skins/default/media/images/flags/ie.gif | Bin 0 -> 371 bytes askbot/skins/default/media/images/flags/il.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/in.gif | Bin 0 -> 363 bytes askbot/skins/default/media/images/flags/io.gif | Bin 0 -> 373 bytes askbot/skins/default/media/images/flags/iq.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/ir.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/is.gif | Bin 0 -> 373 bytes askbot/skins/default/media/images/flags/it.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/jm.gif | Bin 0 -> 365 bytes askbot/skins/default/media/images/flags/jo.gif | Bin 0 -> 360 bytes askbot/skins/default/media/images/flags/jp.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/ke.gif | Bin 0 -> 360 bytes askbot/skins/default/media/images/flags/kg.gif | Bin 0 -> 373 bytes askbot/skins/default/media/images/flags/kh.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/ki.gif | Bin 0 -> 371 bytes askbot/skins/default/media/images/flags/km.gif | Bin 0 -> 358 bytes askbot/skins/default/media/images/flags/kn.gif | Bin 0 -> 370 bytes askbot/skins/default/media/images/flags/kp.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/kr.gif | Bin 0 -> 385 bytes askbot/skins/default/media/images/flags/kw.gif | Bin 0 -> 362 bytes askbot/skins/default/media/images/flags/ky.gif | Bin 0 -> 373 bytes askbot/skins/default/media/images/flags/kz.gif | Bin 0 -> 374 bytes askbot/skins/default/media/images/flags/la.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/lb.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/lc.gif | Bin 0 -> 259 bytes askbot/skins/default/media/images/flags/li.gif | Bin 0 -> 359 bytes askbot/skins/default/media/images/flags/lk.gif | Bin 0 -> 377 bytes askbot/skins/default/media/images/flags/lr.gif | Bin 0 -> 360 bytes askbot/skins/default/media/images/flags/ls.gif | Bin 0 -> 369 bytes askbot/skins/default/media/images/flags/lt.gif | Bin 0 -> 362 bytes askbot/skins/default/media/images/flags/lu.gif | Bin 0 -> 368 bytes askbot/skins/default/media/images/flags/lv.gif | Bin 0 -> 363 bytes askbot/skins/default/media/images/flags/ly.gif | Bin 0 -> 362 bytes askbot/skins/default/media/images/flags/ma.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/mc.gif | Bin 0 -> 359 bytes askbot/skins/default/media/images/flags/md.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/me.gif | Bin 0 -> 238 bytes askbot/skins/default/media/images/flags/mg.gif | Bin 0 -> 372 bytes askbot/skins/default/media/images/flags/mh.gif | Bin 0 -> 370 bytes askbot/skins/default/media/images/flags/mk.gif | Bin 0 -> 382 bytes askbot/skins/default/media/images/flags/ml.gif | Bin 0 -> 363 bytes askbot/skins/default/media/images/flags/mm.gif | Bin 0 -> 365 bytes askbot/skins/default/media/images/flags/mn.gif | Bin 0 -> 368 bytes askbot/skins/default/media/images/flags/mo.gif | Bin 0 -> 378 bytes askbot/skins/default/media/images/flags/mp.gif | Bin 0 -> 368 bytes askbot/skins/default/media/images/flags/mq.gif | Bin 0 -> 379 bytes askbot/skins/default/media/images/flags/mr.gif | Bin 0 -> 377 bytes askbot/skins/default/media/images/flags/ms.gif | Bin 0 -> 371 bytes askbot/skins/default/media/images/flags/mt.gif | Bin 0 -> 369 bytes askbot/skins/default/media/images/flags/mu.gif | Bin 0 -> 358 bytes askbot/skins/default/media/images/flags/mv.gif | Bin 0 -> 372 bytes askbot/skins/default/media/images/flags/mw.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/mx.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/my.gif | Bin 0 -> 375 bytes askbot/skins/default/media/images/flags/mz.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/na.gif | Bin 0 -> 371 bytes askbot/skins/default/media/images/flags/nc.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/ne.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/nf.gif | Bin 0 -> 375 bytes askbot/skins/default/media/images/flags/ng.gif | Bin 0 -> 371 bytes askbot/skins/default/media/images/flags/ni.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/nl.gif | Bin 0 -> 360 bytes askbot/skins/default/media/images/flags/no.gif | Bin 0 -> 376 bytes askbot/skins/default/media/images/flags/np.gif | Bin 0 -> 302 bytes askbot/skins/default/media/images/flags/nr.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/nu.gif | Bin 0 -> 369 bytes askbot/skins/default/media/images/flags/nz.gif | Bin 0 -> 369 bytes askbot/skins/default/media/images/flags/om.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/pa.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/pe.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/pf.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/pg.gif | Bin 0 -> 360 bytes askbot/skins/default/media/images/flags/ph.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/pk.gif | Bin 0 -> 377 bytes askbot/skins/default/media/images/flags/pl.gif | Bin 0 -> 360 bytes askbot/skins/default/media/images/flags/pm.gif | Bin 0 -> 374 bytes askbot/skins/default/media/images/flags/pn.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/pr.gif | Bin 0 -> 369 bytes askbot/skins/default/media/images/flags/ps.gif | Bin 0 -> 358 bytes askbot/skins/default/media/images/flags/pt.gif | Bin 0 -> 369 bytes askbot/skins/default/media/images/flags/pw.gif | Bin 0 -> 374 bytes askbot/skins/default/media/images/flags/py.gif | Bin 0 -> 363 bytes askbot/skins/default/media/images/flags/qa.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/re.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/ro.gif | Bin 0 -> 363 bytes askbot/skins/default/media/images/flags/rs.gif | Bin 0 -> 238 bytes askbot/skins/default/media/images/flags/ru.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/rw.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/sa.gif | Bin 0 -> 370 bytes askbot/skins/default/media/images/flags/sb.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/sc.gif | Bin 0 -> 357 bytes .../skins/default/media/images/flags/scotland.gif | Bin 0 -> 378 bytes askbot/skins/default/media/images/flags/sd.gif | Bin 0 -> 355 bytes askbot/skins/default/media/images/flags/se.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/sg.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/sh.gif | Bin 0 -> 371 bytes askbot/skins/default/media/images/flags/si.gif | Bin 0 -> 362 bytes askbot/skins/default/media/images/flags/sj.gif | Bin 0 -> 376 bytes askbot/skins/default/media/images/flags/sk.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/sl.gif | Bin 0 -> 363 bytes askbot/skins/default/media/images/flags/sm.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/sn.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/so.gif | Bin 0 -> 376 bytes askbot/skins/default/media/images/flags/sr.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/st.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/sv.gif | Bin 0 -> 363 bytes askbot/skins/default/media/images/flags/sy.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/sz.gif | Bin 0 -> 363 bytes askbot/skins/default/media/images/flags/tc.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/td.gif | Bin 0 -> 368 bytes askbot/skins/default/media/images/flags/tf.gif | Bin 0 -> 365 bytes askbot/skins/default/media/images/flags/tg.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/th.gif | Bin 0 -> 360 bytes askbot/skins/default/media/images/flags/tj.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/tk.gif | Bin 0 -> 372 bytes askbot/skins/default/media/images/flags/tl.gif | Bin 0 -> 360 bytes askbot/skins/default/media/images/flags/tm.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/tn.gif | Bin 0 -> 375 bytes askbot/skins/default/media/images/flags/to.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/tr.gif | Bin 0 -> 371 bytes askbot/skins/default/media/images/flags/tt.gif | Bin 0 -> 377 bytes askbot/skins/default/media/images/flags/tv.gif | Bin 0 -> 361 bytes askbot/skins/default/media/images/flags/tw.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/tz.gif | Bin 0 -> 366 bytes askbot/skins/default/media/images/flags/ua.gif | Bin 0 -> 360 bytes askbot/skins/default/media/images/flags/ug.gif | Bin 0 -> 359 bytes askbot/skins/default/media/images/flags/um.gif | Bin 0 -> 371 bytes askbot/skins/default/media/images/flags/us.gif | Bin 0 -> 367 bytes askbot/skins/default/media/images/flags/uy.gif | Bin 0 -> 373 bytes askbot/skins/default/media/images/flags/uz.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/va.gif | Bin 0 -> 369 bytes askbot/skins/default/media/images/flags/vc.gif | Bin 0 -> 370 bytes askbot/skins/default/media/images/flags/ve.gif | Bin 0 -> 364 bytes askbot/skins/default/media/images/flags/vg.gif | Bin 0 -> 368 bytes askbot/skins/default/media/images/flags/vi.gif | Bin 0 -> 376 bytes askbot/skins/default/media/images/flags/vn.gif | Bin 0 -> 370 bytes askbot/skins/default/media/images/flags/vu.gif | Bin 0 -> 365 bytes askbot/skins/default/media/images/flags/wales.gif | Bin 0 -> 372 bytes askbot/skins/default/media/images/flags/wf.gif | Bin 0 -> 377 bytes askbot/skins/default/media/images/flags/ws.gif | Bin 0 -> 365 bytes askbot/skins/default/media/images/flags/ye.gif | Bin 0 -> 356 bytes askbot/skins/default/media/images/flags/yt.gif | Bin 0 -> 382 bytes askbot/skins/default/media/images/flags/za.gif | Bin 0 -> 363 bytes askbot/skins/default/media/images/flags/zm.gif | Bin 0 -> 358 bytes askbot/skins/default/media/images/flags/zw.gif | Bin 0 -> 365 bytes askbot/skins/default/media/js/live_search.js | 16 ++ askbot/skins/default/media/style/style.css | 22 +- askbot/skins/default/templates/macros.html | 26 +- .../default/templates/user_profile/user_edit.html | 24 +- .../default/templates/user_profile/user_info.html | 18 +- askbot/skins/default/templates/users.html | 2 +- askbot/templatetags/extra_filters_jinja.py | 14 + askbot/views/readers.py | 5 + askbot/views/users.py | 2 + setup.py | 1 + 264 files changed, 473 insertions(+), 31 deletions(-) create mode 100644 askbot/migrations/0035_add_country_fields_to_user.py create mode 100644 askbot/skins/default/media/images/flags/.DS_Store create mode 100755 askbot/skins/default/media/images/flags/ad.gif create mode 100755 askbot/skins/default/media/images/flags/ae.gif create mode 100755 askbot/skins/default/media/images/flags/af.gif create mode 100755 askbot/skins/default/media/images/flags/ag.gif create mode 100755 askbot/skins/default/media/images/flags/ai.gif create mode 100755 askbot/skins/default/media/images/flags/al.gif create mode 100755 askbot/skins/default/media/images/flags/am.gif create mode 100755 askbot/skins/default/media/images/flags/an.gif create mode 100644 askbot/skins/default/media/images/flags/ao.gif create mode 100755 askbot/skins/default/media/images/flags/ar.gif create mode 100755 askbot/skins/default/media/images/flags/as.gif create mode 100755 askbot/skins/default/media/images/flags/at.gif create mode 100755 askbot/skins/default/media/images/flags/au.gif create mode 100755 askbot/skins/default/media/images/flags/aw.gif create mode 100755 askbot/skins/default/media/images/flags/ax.gif create mode 100755 askbot/skins/default/media/images/flags/az.gif create mode 100755 askbot/skins/default/media/images/flags/ba.gif create mode 100755 askbot/skins/default/media/images/flags/bb.gif create mode 100755 askbot/skins/default/media/images/flags/bd.gif create mode 100755 askbot/skins/default/media/images/flags/be.gif create mode 100755 askbot/skins/default/media/images/flags/bf.gif create mode 100755 askbot/skins/default/media/images/flags/bg.gif create mode 100755 askbot/skins/default/media/images/flags/bh.gif create mode 100755 askbot/skins/default/media/images/flags/bi.gif create mode 100755 askbot/skins/default/media/images/flags/bj.gif create mode 100755 askbot/skins/default/media/images/flags/bm.gif create mode 100755 askbot/skins/default/media/images/flags/bn.gif create mode 100755 askbot/skins/default/media/images/flags/bo.gif create mode 100755 askbot/skins/default/media/images/flags/br.gif create mode 100755 askbot/skins/default/media/images/flags/bs.gif create mode 100755 askbot/skins/default/media/images/flags/bt.gif create mode 100755 askbot/skins/default/media/images/flags/bv.gif create mode 100755 askbot/skins/default/media/images/flags/bw.gif create mode 100755 askbot/skins/default/media/images/flags/by.gif create mode 100755 askbot/skins/default/media/images/flags/bz.gif create mode 100755 askbot/skins/default/media/images/flags/ca.gif create mode 100644 askbot/skins/default/media/images/flags/catalonia.gif create mode 100755 askbot/skins/default/media/images/flags/cc.gif create mode 100644 askbot/skins/default/media/images/flags/cd.gif create mode 100755 askbot/skins/default/media/images/flags/cf.gif create mode 100755 askbot/skins/default/media/images/flags/cg.gif create mode 100755 askbot/skins/default/media/images/flags/ch.gif create mode 100755 askbot/skins/default/media/images/flags/ci.gif create mode 100755 askbot/skins/default/media/images/flags/ck.gif create mode 100755 askbot/skins/default/media/images/flags/cl.gif create mode 100755 askbot/skins/default/media/images/flags/cm.gif create mode 100755 askbot/skins/default/media/images/flags/cn.gif create mode 100755 askbot/skins/default/media/images/flags/co.gif create mode 100755 askbot/skins/default/media/images/flags/cr.gif create mode 100755 askbot/skins/default/media/images/flags/cs.gif create mode 100755 askbot/skins/default/media/images/flags/cu.gif create mode 100755 askbot/skins/default/media/images/flags/cv.gif create mode 100755 askbot/skins/default/media/images/flags/cx.gif create mode 100755 askbot/skins/default/media/images/flags/cy.gif create mode 100755 askbot/skins/default/media/images/flags/cz.gif create mode 100755 askbot/skins/default/media/images/flags/de.gif create mode 100755 askbot/skins/default/media/images/flags/dj.gif create mode 100755 askbot/skins/default/media/images/flags/dk.gif create mode 100755 askbot/skins/default/media/images/flags/dm.gif create mode 100755 askbot/skins/default/media/images/flags/do.gif create mode 100755 askbot/skins/default/media/images/flags/dz.gif create mode 100755 askbot/skins/default/media/images/flags/ec.gif create mode 100755 askbot/skins/default/media/images/flags/ee.gif create mode 100755 askbot/skins/default/media/images/flags/eg.gif create mode 100755 askbot/skins/default/media/images/flags/eh.gif create mode 100755 askbot/skins/default/media/images/flags/england.gif create mode 100755 askbot/skins/default/media/images/flags/er.gif create mode 100755 askbot/skins/default/media/images/flags/es.gif create mode 100755 askbot/skins/default/media/images/flags/et.gif create mode 100644 askbot/skins/default/media/images/flags/europeanunion.gif create mode 100755 askbot/skins/default/media/images/flags/fam.gif create mode 100755 askbot/skins/default/media/images/flags/fi.gif create mode 100755 askbot/skins/default/media/images/flags/fj.gif create mode 100755 askbot/skins/default/media/images/flags/fk.gif create mode 100755 askbot/skins/default/media/images/flags/fm.gif create mode 100755 askbot/skins/default/media/images/flags/fo.gif create mode 100755 askbot/skins/default/media/images/flags/fr.gif create mode 100755 askbot/skins/default/media/images/flags/ga.gif create mode 100644 askbot/skins/default/media/images/flags/gb.gif create mode 100755 askbot/skins/default/media/images/flags/gd.gif create mode 100755 askbot/skins/default/media/images/flags/ge.gif create mode 100755 askbot/skins/default/media/images/flags/gf.gif create mode 100755 askbot/skins/default/media/images/flags/gh.gif create mode 100755 askbot/skins/default/media/images/flags/gi.gif create mode 100755 askbot/skins/default/media/images/flags/gl.gif create mode 100755 askbot/skins/default/media/images/flags/gm.gif create mode 100755 askbot/skins/default/media/images/flags/gn.gif create mode 100755 askbot/skins/default/media/images/flags/gp.gif create mode 100755 askbot/skins/default/media/images/flags/gq.gif create mode 100755 askbot/skins/default/media/images/flags/gr.gif create mode 100755 askbot/skins/default/media/images/flags/gs.gif create mode 100755 askbot/skins/default/media/images/flags/gt.gif create mode 100755 askbot/skins/default/media/images/flags/gu.gif create mode 100755 askbot/skins/default/media/images/flags/gw.gif create mode 100755 askbot/skins/default/media/images/flags/gy.gif create mode 100755 askbot/skins/default/media/images/flags/hk.gif create mode 100755 askbot/skins/default/media/images/flags/hm.gif create mode 100755 askbot/skins/default/media/images/flags/hn.gif create mode 100755 askbot/skins/default/media/images/flags/hr.gif create mode 100755 askbot/skins/default/media/images/flags/ht.gif create mode 100755 askbot/skins/default/media/images/flags/hu.gif create mode 100755 askbot/skins/default/media/images/flags/id.gif create mode 100755 askbot/skins/default/media/images/flags/ie.gif create mode 100755 askbot/skins/default/media/images/flags/il.gif create mode 100755 askbot/skins/default/media/images/flags/in.gif create mode 100755 askbot/skins/default/media/images/flags/io.gif create mode 100755 askbot/skins/default/media/images/flags/iq.gif create mode 100755 askbot/skins/default/media/images/flags/ir.gif create mode 100755 askbot/skins/default/media/images/flags/is.gif create mode 100755 askbot/skins/default/media/images/flags/it.gif create mode 100755 askbot/skins/default/media/images/flags/jm.gif create mode 100755 askbot/skins/default/media/images/flags/jo.gif create mode 100755 askbot/skins/default/media/images/flags/jp.gif create mode 100755 askbot/skins/default/media/images/flags/ke.gif create mode 100755 askbot/skins/default/media/images/flags/kg.gif create mode 100755 askbot/skins/default/media/images/flags/kh.gif create mode 100755 askbot/skins/default/media/images/flags/ki.gif create mode 100755 askbot/skins/default/media/images/flags/km.gif create mode 100755 askbot/skins/default/media/images/flags/kn.gif create mode 100755 askbot/skins/default/media/images/flags/kp.gif create mode 100755 askbot/skins/default/media/images/flags/kr.gif create mode 100755 askbot/skins/default/media/images/flags/kw.gif create mode 100755 askbot/skins/default/media/images/flags/ky.gif create mode 100755 askbot/skins/default/media/images/flags/kz.gif create mode 100755 askbot/skins/default/media/images/flags/la.gif create mode 100755 askbot/skins/default/media/images/flags/lb.gif create mode 100644 askbot/skins/default/media/images/flags/lc.gif create mode 100755 askbot/skins/default/media/images/flags/li.gif create mode 100755 askbot/skins/default/media/images/flags/lk.gif create mode 100755 askbot/skins/default/media/images/flags/lr.gif create mode 100755 askbot/skins/default/media/images/flags/ls.gif create mode 100755 askbot/skins/default/media/images/flags/lt.gif create mode 100755 askbot/skins/default/media/images/flags/lu.gif create mode 100755 askbot/skins/default/media/images/flags/lv.gif create mode 100755 askbot/skins/default/media/images/flags/ly.gif create mode 100755 askbot/skins/default/media/images/flags/ma.gif create mode 100755 askbot/skins/default/media/images/flags/mc.gif create mode 100755 askbot/skins/default/media/images/flags/md.gif create mode 100644 askbot/skins/default/media/images/flags/me.gif create mode 100755 askbot/skins/default/media/images/flags/mg.gif create mode 100755 askbot/skins/default/media/images/flags/mh.gif create mode 100755 askbot/skins/default/media/images/flags/mk.gif create mode 100755 askbot/skins/default/media/images/flags/ml.gif create mode 100755 askbot/skins/default/media/images/flags/mm.gif create mode 100755 askbot/skins/default/media/images/flags/mn.gif create mode 100755 askbot/skins/default/media/images/flags/mo.gif create mode 100755 askbot/skins/default/media/images/flags/mp.gif create mode 100755 askbot/skins/default/media/images/flags/mq.gif create mode 100755 askbot/skins/default/media/images/flags/mr.gif create mode 100755 askbot/skins/default/media/images/flags/ms.gif create mode 100755 askbot/skins/default/media/images/flags/mt.gif create mode 100755 askbot/skins/default/media/images/flags/mu.gif create mode 100755 askbot/skins/default/media/images/flags/mv.gif create mode 100755 askbot/skins/default/media/images/flags/mw.gif create mode 100755 askbot/skins/default/media/images/flags/mx.gif create mode 100755 askbot/skins/default/media/images/flags/my.gif create mode 100755 askbot/skins/default/media/images/flags/mz.gif create mode 100755 askbot/skins/default/media/images/flags/na.gif create mode 100755 askbot/skins/default/media/images/flags/nc.gif create mode 100755 askbot/skins/default/media/images/flags/ne.gif create mode 100755 askbot/skins/default/media/images/flags/nf.gif create mode 100755 askbot/skins/default/media/images/flags/ng.gif create mode 100755 askbot/skins/default/media/images/flags/ni.gif create mode 100755 askbot/skins/default/media/images/flags/nl.gif create mode 100755 askbot/skins/default/media/images/flags/no.gif create mode 100755 askbot/skins/default/media/images/flags/np.gif create mode 100755 askbot/skins/default/media/images/flags/nr.gif create mode 100755 askbot/skins/default/media/images/flags/nu.gif create mode 100755 askbot/skins/default/media/images/flags/nz.gif create mode 100755 askbot/skins/default/media/images/flags/om.gif create mode 100755 askbot/skins/default/media/images/flags/pa.gif create mode 100755 askbot/skins/default/media/images/flags/pe.gif create mode 100755 askbot/skins/default/media/images/flags/pf.gif create mode 100755 askbot/skins/default/media/images/flags/pg.gif create mode 100755 askbot/skins/default/media/images/flags/ph.gif create mode 100755 askbot/skins/default/media/images/flags/pk.gif create mode 100755 askbot/skins/default/media/images/flags/pl.gif create mode 100755 askbot/skins/default/media/images/flags/pm.gif create mode 100755 askbot/skins/default/media/images/flags/pn.gif create mode 100755 askbot/skins/default/media/images/flags/pr.gif create mode 100755 askbot/skins/default/media/images/flags/ps.gif create mode 100755 askbot/skins/default/media/images/flags/pt.gif create mode 100755 askbot/skins/default/media/images/flags/pw.gif create mode 100755 askbot/skins/default/media/images/flags/py.gif create mode 100755 askbot/skins/default/media/images/flags/qa.gif create mode 100755 askbot/skins/default/media/images/flags/re.gif create mode 100755 askbot/skins/default/media/images/flags/ro.gif create mode 100644 askbot/skins/default/media/images/flags/rs.gif create mode 100755 askbot/skins/default/media/images/flags/ru.gif create mode 100755 askbot/skins/default/media/images/flags/rw.gif create mode 100755 askbot/skins/default/media/images/flags/sa.gif create mode 100755 askbot/skins/default/media/images/flags/sb.gif create mode 100755 askbot/skins/default/media/images/flags/sc.gif create mode 100755 askbot/skins/default/media/images/flags/scotland.gif create mode 100755 askbot/skins/default/media/images/flags/sd.gif create mode 100755 askbot/skins/default/media/images/flags/se.gif create mode 100755 askbot/skins/default/media/images/flags/sg.gif create mode 100755 askbot/skins/default/media/images/flags/sh.gif create mode 100755 askbot/skins/default/media/images/flags/si.gif create mode 100755 askbot/skins/default/media/images/flags/sj.gif create mode 100755 askbot/skins/default/media/images/flags/sk.gif create mode 100755 askbot/skins/default/media/images/flags/sl.gif create mode 100755 askbot/skins/default/media/images/flags/sm.gif create mode 100755 askbot/skins/default/media/images/flags/sn.gif create mode 100755 askbot/skins/default/media/images/flags/so.gif create mode 100755 askbot/skins/default/media/images/flags/sr.gif create mode 100755 askbot/skins/default/media/images/flags/st.gif create mode 100755 askbot/skins/default/media/images/flags/sv.gif create mode 100755 askbot/skins/default/media/images/flags/sy.gif create mode 100755 askbot/skins/default/media/images/flags/sz.gif create mode 100755 askbot/skins/default/media/images/flags/tc.gif create mode 100755 askbot/skins/default/media/images/flags/td.gif create mode 100755 askbot/skins/default/media/images/flags/tf.gif create mode 100755 askbot/skins/default/media/images/flags/tg.gif create mode 100755 askbot/skins/default/media/images/flags/th.gif create mode 100755 askbot/skins/default/media/images/flags/tj.gif create mode 100755 askbot/skins/default/media/images/flags/tk.gif create mode 100755 askbot/skins/default/media/images/flags/tl.gif create mode 100755 askbot/skins/default/media/images/flags/tm.gif create mode 100755 askbot/skins/default/media/images/flags/tn.gif create mode 100755 askbot/skins/default/media/images/flags/to.gif create mode 100755 askbot/skins/default/media/images/flags/tr.gif create mode 100755 askbot/skins/default/media/images/flags/tt.gif create mode 100755 askbot/skins/default/media/images/flags/tv.gif create mode 100755 askbot/skins/default/media/images/flags/tw.gif create mode 100755 askbot/skins/default/media/images/flags/tz.gif create mode 100755 askbot/skins/default/media/images/flags/ua.gif create mode 100755 askbot/skins/default/media/images/flags/ug.gif create mode 100755 askbot/skins/default/media/images/flags/um.gif create mode 100755 askbot/skins/default/media/images/flags/us.gif create mode 100755 askbot/skins/default/media/images/flags/uy.gif create mode 100755 askbot/skins/default/media/images/flags/uz.gif create mode 100755 askbot/skins/default/media/images/flags/va.gif create mode 100755 askbot/skins/default/media/images/flags/vc.gif create mode 100755 askbot/skins/default/media/images/flags/ve.gif create mode 100755 askbot/skins/default/media/images/flags/vg.gif create mode 100755 askbot/skins/default/media/images/flags/vi.gif create mode 100755 askbot/skins/default/media/images/flags/vn.gif create mode 100755 askbot/skins/default/media/images/flags/vu.gif create mode 100755 askbot/skins/default/media/images/flags/wales.gif create mode 100755 askbot/skins/default/media/images/flags/wf.gif create mode 100755 askbot/skins/default/media/images/flags/ws.gif create mode 100755 askbot/skins/default/media/images/flags/ye.gif create mode 100755 askbot/skins/default/media/images/flags/yt.gif create mode 100755 askbot/skins/default/media/images/flags/za.gif create mode 100755 askbot/skins/default/media/images/flags/zm.gif create mode 100755 askbot/skins/default/media/images/flags/zw.gif diff --git a/askbot/__init__.py b/askbot/__init__.py index 6a67a686..2fa25ee0 100644 --- a/askbot/__init__.py +++ b/askbot/__init__.py @@ -19,4 +19,4 @@ def get_version(): """returns version of the askbot app this version is meaningful for pypi only """ - return '0.6.70' + return '0.6.71' diff --git a/askbot/forms.py b/askbot/forms.py index ccb65ab5..115a7485 100644 --- a/askbot/forms.py +++ b/askbot/forms.py @@ -2,10 +2,11 @@ import re from django import forms from askbot import models from askbot import const -from django.utils.translation import ugettext as _ -from django.utils.translation import ungettext +from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import ungettext_lazy from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType +from django_countries import countries from askbot.utils.forms import NextUrlField, UserNameField from askbot.deps.recaptcha_django import ReCaptchaField from askbot.conf import settings as askbot_settings @@ -43,6 +44,29 @@ def filter_choices(remove_choices = None, from_choices = None): return filtered_choices + +COUNTRY_CHOICES = (('unknown',_('select country')),) + countries.COUNTRIES + +class CountryField(forms.ChoiceField): + """this is better placed into the django_coutries app""" + + def __init__(self, *args, **kwargs): + """sets label and the country choices + """ + kwargs['choices'] = kwargs.pop('choices', COUNTRY_CHOICES) + kwargs['label'] = kwargs.pop('label', _('Country')) + super(CountryField, self).__init__(*args, **kwargs) + + def clean(self, value): + """Handles case of 'unknown' country selection + """ + if self.required: + if value == 'unknown': + raise forms.ValidationError(_('Country field is required')) + if value == 'unknown': + return None + return value + class TitleField(forms.CharField): def __init__(self, *args, **kwargs): super(TitleField, self).__init__(*args, **kwargs) @@ -98,7 +122,7 @@ class TagNamesField(forms.CharField): tag_count = len(tag_strings) if tag_count > askbot_settings.MAX_TAGS_PER_POST: max_tags = askbot_settings.MAX_TAGS_PER_POST - msg = ungettext( + msg = ungettext_lazy( 'please use %(tag_count)d tag or less', 'please use %(tag_count)d tags or less', tag_count) % {'tag_count':max_tags} @@ -108,7 +132,7 @@ class TagNamesField(forms.CharField): if tag_length > askbot_settings.MAX_TAG_LENGTH: #singular form is odd in english, but required for pluralization #in other languages - msg = ungettext('each tag must be shorter than %(max_chars)d character',#odd but added for completeness + msg = ungettext_lazy('each tag must be shorter than %(max_chars)d character',#odd but added for completeness 'each tag must be shorter than %(max_chars)d characters', tag_length) % {'max_chars':tag_length} raise forms.ValidationError(msg) @@ -521,7 +545,7 @@ class EditAnswerForm(forms.Form): class EditUserForm(forms.Form): email = forms.EmailField( label=u'Email', - help_text=_('this email does not have to be linked to gravatar'), + help_text=_('this email will be linked to gravatar'), required=True, max_length=255, widget=forms.TextInput(attrs={'size' : 35}) @@ -542,12 +566,19 @@ class EditUserForm(forms.Form): ) city = forms.CharField( - label=_('Location'), + label=_('City'), required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}) ) + country = CountryField(required = False) + + show_country = forms.BooleanField( + label=_('Show country'), + required=False + ) + birthday = forms.DateField( label=_('Date of birth'), help_text=_('will not be shown, used to calculate age, format: YYYY-MM-DD'), @@ -572,6 +603,12 @@ class EditUserForm(forms.Form): self.fields['realname'].initial = user.real_name self.fields['website'].initial = user.website self.fields['city'].initial = user.location + if user.country == None: + country = 'unknown' + else: + country = user.country + self.fields['country'].initial = country + self.fields['show_country'].initial = user.show_country if user.date_of_birth is not None: self.fields['birthday'].initial = user.date_of_birth diff --git a/askbot/migrations/0035_add_country_fields_to_user.py b/askbot/migrations/0035_add_country_fields_to_user.py new file mode 100644 index 00000000..f9c58f12 --- /dev/null +++ b/askbot/migrations/0035_add_country_fields_to_user.py @@ -0,0 +1,311 @@ +# 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 country fields to the model auth_user + try: + db.add_column(u'auth_user', 'country', self.gf('django_countries.fields.CountryField')(max_length=2, blank=True, null=True)) + db.add_column(u'auth_user', 'show_country', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)) + except Exception, e: + print '*****************' + print unicode(e) + pass + + + def backwards(self, orm): + + # Deleting country fields + db.delete_column(u'auth_user', 'country') + db.delete_column(u'auth_user', 'show_country') + + + models = { + 'askbot.activity': { + 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"}, + 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}), + 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}), + 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'to': "orm['auth.User']"}), + 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'through': "'ActivityAuditStatus'", 'to': "orm['auth.User']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'askbot.activityauditstatus': { + 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'}, + 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'askbot.anonymousanswer': { + 'Meta': {'object_name': 'AnonymousAnswer'}, + 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}), + 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}), + 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}), + 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}), + 'text': ('django.db.models.fields.TextField', [], {}), + 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}) + }, + 'askbot.anonymousquestion': { + 'Meta': {'object_name': 'AnonymousQuestion'}, + 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}), + 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}), + 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}), + 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}), + 'text': ('django.db.models.fields.TextField', [], {}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}), + 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}) + }, + 'askbot.answer': { + 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"}, + 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}), + 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}), + 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}), + 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}), + 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}), + 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}), + 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}) + }, + 'askbot.answerrevision': { + 'Meta': {'object_name': 'AnswerRevision', 'db_table': "u'answer_revision'"}, + 'answer': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'revisions'", 'to': "orm['askbot.Answer']"}), + 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answerrevisions'", 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'revised_at': ('django.db.models.fields.DateTimeField', [], {}), + 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}), + 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}), + 'text': ('django.db.models.fields.TextField', [], {}) + }, + 'askbot.award': { + 'Meta': {'object_name': 'Award', 'db_table': "u'award'"}, + 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"}) + }, + 'askbot.badgedata': { + 'Meta': {'object_name': 'BadgeData'}, + 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'through': "'Award'", 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'}) + }, + 'askbot.comment': { + 'Meta': {'object_name': 'Comment', 'db_table': "u'comment'"}, + 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}), + 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"}) + }, + 'askbot.emailfeedsetting': { + 'Meta': {'object_name': 'EmailFeedSetting'}, + 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}), + 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}), + 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"}) + }, + 'askbot.favoritequestion': { + 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"}, + 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"}) + }, + 'askbot.markedtag': { + 'Meta': {'object_name': 'MarkedTag'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}), + 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"}) + }, + 'askbot.question': { + 'Meta': {'object_name': 'Question', 'db_table': "u'question'"}, + 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}), + 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}), + 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'closed_questions'", 'null': 'True', 'to': "orm['auth.User']"}), + 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}), + 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'through': "'FavoriteQuestion'", 'to': "orm['auth.User']"}), + 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'to': "orm['auth.User']"}), + 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}), + 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}), + 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}), + 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}), + 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}), + 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'to': "orm['askbot.Tag']"}), + 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}), + 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}) + }, + 'askbot.questionrevision': { + 'Meta': {'object_name': 'QuestionRevision', 'db_table': "u'question_revision'"}, + 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questionrevisions'", 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'revisions'", 'to': "orm['askbot.Question']"}), + 'revised_at': ('django.db.models.fields.DateTimeField', [], {}), + 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}), + 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}), + 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}), + 'text': ('django.db.models.fields.TextField', [], {}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}) + }, + 'askbot.questionview': { + 'Meta': {'object_name': 'QuestionView'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}), + 'when': ('django.db.models.fields.DateTimeField', [], {}), + 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"}) + }, + 'askbot.repute': { + 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"}, + 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}), + 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}), + 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'askbot.tag': { + 'Meta': {'object_name': 'Tag', 'db_table': "u'tag'"}, + 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}), + 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}), + 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}) + }, + 'askbot.vote': { + 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}), + 'vote': ('django.db.models.fields.SmallIntegerField', [], {}), + 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}) + }, + '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']", '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'}, + 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True', 'null': 'True'}), + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'blank': 'True'}), + 'has_custom_avatar': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'hide_ignored_questions': ('django.db.models.fields.BooleanField', [], {'default': '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'}), + 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), + 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}), + 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), + 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}), + 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}), + 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}), + 'tag_filter_setting': ('django.db.models.fields.CharField', [], {'default': "'ignored'", 'max_length': '16'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}), + 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) + }, + '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'}) + } + } + + complete_apps = ['askbot'] diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py index c92b894d..b4d9f4d4 100644 --- a/askbot/models/__init__.py +++ b/askbot/models/__init__.py @@ -14,6 +14,7 @@ from django.db import models from django.conf import settings as django_settings from django.contrib.contenttypes.models import ContentType from django.core import exceptions as django_exceptions +from django_countries.fields import CountryField import askbot from askbot import exceptions as askbot_exceptions from askbot import const @@ -72,8 +73,11 @@ User.add_to_class('last_seen', models.DateTimeField(default=datetime.datetime.now)) User.add_to_class('real_name', models.CharField(max_length=100, blank=True)) User.add_to_class('website', models.URLField(max_length=200, blank=True)) -#denormed user avatar url +#location field is actually city User.add_to_class('location', models.CharField(max_length=100, blank=True)) +User.add_to_class('country', CountryField(blank = True)) +User.add_to_class('show_country', models.BooleanField(default = False)) + User.add_to_class('date_of_birth', models.DateField(null=True, blank=True)) User.add_to_class('about', models.TextField(blank=True)) User.add_to_class('hide_ignored_questions', models.BooleanField(default=False)) diff --git a/askbot/models/question.py b/askbot/models/question.py index 03274a7f..04147c92 100644 --- a/askbot/models/question.py +++ b/askbot/models/question.py @@ -236,7 +236,9 @@ class QuestionManager(models.Manager): 'last_activity_by__reputation', 'last_activity_by__gold', 'last_activity_by__silver', - 'last_activity_by__bronze' + 'last_activity_by__bronze', + 'last_activity_by__country', + 'last_activity_by__show_country', ) related_tags = Tag.objects.get_related_to_search( diff --git a/askbot/setup_templates/settings.py b/askbot/setup_templates/settings.py index dc44f3f9..b186b852 100644 --- a/askbot/setup_templates/settings.py +++ b/askbot/setup_templates/settings.py @@ -145,6 +145,8 @@ INSTALLED_APPS = ( 'askbot.deps.livesettings', 'keyedcache', 'robots', + 'django_countries', + 'staticfiles', #'avatar',#experimental use git clone git://github.com/ericflo/django-avatar.git$ #requires setting of MEDIA_ROOT and MEDIA_URL ) diff --git a/askbot/skins/default/media/images/flags/.DS_Store b/askbot/skins/default/media/images/flags/.DS_Store new file mode 100644 index 00000000..eb96b838 Binary files /dev/null and b/askbot/skins/default/media/images/flags/.DS_Store differ diff --git a/askbot/skins/default/media/images/flags/ad.gif b/askbot/skins/default/media/images/flags/ad.gif new file mode 100755 index 00000000..57b49973 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ad.gif differ diff --git a/askbot/skins/default/media/images/flags/ae.gif b/askbot/skins/default/media/images/flags/ae.gif new file mode 100755 index 00000000..78d15b67 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ae.gif differ diff --git a/askbot/skins/default/media/images/flags/af.gif b/askbot/skins/default/media/images/flags/af.gif new file mode 100755 index 00000000..98894082 Binary files /dev/null and b/askbot/skins/default/media/images/flags/af.gif differ diff --git a/askbot/skins/default/media/images/flags/ag.gif b/askbot/skins/default/media/images/flags/ag.gif new file mode 100755 index 00000000..48f8e7bc Binary files /dev/null and b/askbot/skins/default/media/images/flags/ag.gif differ diff --git a/askbot/skins/default/media/images/flags/ai.gif b/askbot/skins/default/media/images/flags/ai.gif new file mode 100755 index 00000000..1cbc5795 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ai.gif differ diff --git a/askbot/skins/default/media/images/flags/al.gif b/askbot/skins/default/media/images/flags/al.gif new file mode 100755 index 00000000..c44fe0a0 Binary files /dev/null and b/askbot/skins/default/media/images/flags/al.gif differ diff --git a/askbot/skins/default/media/images/flags/am.gif b/askbot/skins/default/media/images/flags/am.gif new file mode 100755 index 00000000..2915e30c Binary files /dev/null and b/askbot/skins/default/media/images/flags/am.gif differ diff --git a/askbot/skins/default/media/images/flags/an.gif b/askbot/skins/default/media/images/flags/an.gif new file mode 100755 index 00000000..cb570c67 Binary files /dev/null and b/askbot/skins/default/media/images/flags/an.gif differ diff --git a/askbot/skins/default/media/images/flags/ao.gif b/askbot/skins/default/media/images/flags/ao.gif new file mode 100644 index 00000000..8c854fa1 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ao.gif differ diff --git a/askbot/skins/default/media/images/flags/ar.gif b/askbot/skins/default/media/images/flags/ar.gif new file mode 100755 index 00000000..a9f71f7d Binary files /dev/null and b/askbot/skins/default/media/images/flags/ar.gif differ diff --git a/askbot/skins/default/media/images/flags/as.gif b/askbot/skins/default/media/images/flags/as.gif new file mode 100755 index 00000000..d776ec27 Binary files /dev/null and b/askbot/skins/default/media/images/flags/as.gif differ diff --git a/askbot/skins/default/media/images/flags/at.gif b/askbot/skins/default/media/images/flags/at.gif new file mode 100755 index 00000000..87e12173 Binary files /dev/null and b/askbot/skins/default/media/images/flags/at.gif differ diff --git a/askbot/skins/default/media/images/flags/au.gif b/askbot/skins/default/media/images/flags/au.gif new file mode 100755 index 00000000..5269c6a0 Binary files /dev/null and b/askbot/skins/default/media/images/flags/au.gif differ diff --git a/askbot/skins/default/media/images/flags/aw.gif b/askbot/skins/default/media/images/flags/aw.gif new file mode 100755 index 00000000..27fdb4d1 Binary files /dev/null and b/askbot/skins/default/media/images/flags/aw.gif differ diff --git a/askbot/skins/default/media/images/flags/ax.gif b/askbot/skins/default/media/images/flags/ax.gif new file mode 100755 index 00000000..0ceb6849 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ax.gif differ diff --git a/askbot/skins/default/media/images/flags/az.gif b/askbot/skins/default/media/images/flags/az.gif new file mode 100755 index 00000000..d7716184 Binary files /dev/null and b/askbot/skins/default/media/images/flags/az.gif differ diff --git a/askbot/skins/default/media/images/flags/ba.gif b/askbot/skins/default/media/images/flags/ba.gif new file mode 100755 index 00000000..9bf5f0ac Binary files /dev/null and b/askbot/skins/default/media/images/flags/ba.gif differ diff --git a/askbot/skins/default/media/images/flags/bb.gif b/askbot/skins/default/media/images/flags/bb.gif new file mode 100755 index 00000000..b7d08e57 Binary files /dev/null and b/askbot/skins/default/media/images/flags/bb.gif differ diff --git a/askbot/skins/default/media/images/flags/bd.gif b/askbot/skins/default/media/images/flags/bd.gif new file mode 100755 index 00000000..0fd27eca Binary files /dev/null and b/askbot/skins/default/media/images/flags/bd.gif differ diff --git a/askbot/skins/default/media/images/flags/be.gif b/askbot/skins/default/media/images/flags/be.gif new file mode 100755 index 00000000..ae09bfbe Binary files /dev/null and b/askbot/skins/default/media/images/flags/be.gif differ diff --git a/askbot/skins/default/media/images/flags/bf.gif b/askbot/skins/default/media/images/flags/bf.gif new file mode 100755 index 00000000..9d6772cd Binary files /dev/null and b/askbot/skins/default/media/images/flags/bf.gif differ diff --git a/askbot/skins/default/media/images/flags/bg.gif b/askbot/skins/default/media/images/flags/bg.gif new file mode 100755 index 00000000..11cf8ff3 Binary files /dev/null and b/askbot/skins/default/media/images/flags/bg.gif differ diff --git a/askbot/skins/default/media/images/flags/bh.gif b/askbot/skins/default/media/images/flags/bh.gif new file mode 100755 index 00000000..56aa72b2 Binary files /dev/null and b/askbot/skins/default/media/images/flags/bh.gif differ diff --git a/askbot/skins/default/media/images/flags/bi.gif b/askbot/skins/default/media/images/flags/bi.gif new file mode 100755 index 00000000..6e2cbe12 Binary files /dev/null and b/askbot/skins/default/media/images/flags/bi.gif differ diff --git a/askbot/skins/default/media/images/flags/bj.gif b/askbot/skins/default/media/images/flags/bj.gif new file mode 100755 index 00000000..e676116f Binary files /dev/null and b/askbot/skins/default/media/images/flags/bj.gif differ diff --git a/askbot/skins/default/media/images/flags/bm.gif b/askbot/skins/default/media/images/flags/bm.gif new file mode 100755 index 00000000..9feb87bc Binary files /dev/null and b/askbot/skins/default/media/images/flags/bm.gif differ diff --git a/askbot/skins/default/media/images/flags/bn.gif b/askbot/skins/default/media/images/flags/bn.gif new file mode 100755 index 00000000..b7b6b0f9 Binary files /dev/null and b/askbot/skins/default/media/images/flags/bn.gif differ diff --git a/askbot/skins/default/media/images/flags/bo.gif b/askbot/skins/default/media/images/flags/bo.gif new file mode 100755 index 00000000..4844f856 Binary files /dev/null and b/askbot/skins/default/media/images/flags/bo.gif differ diff --git a/askbot/skins/default/media/images/flags/br.gif b/askbot/skins/default/media/images/flags/br.gif new file mode 100755 index 00000000..8c866162 Binary files /dev/null and b/askbot/skins/default/media/images/flags/br.gif differ diff --git a/askbot/skins/default/media/images/flags/bs.gif b/askbot/skins/default/media/images/flags/bs.gif new file mode 100755 index 00000000..c0a741e5 Binary files /dev/null and b/askbot/skins/default/media/images/flags/bs.gif differ diff --git a/askbot/skins/default/media/images/flags/bt.gif b/askbot/skins/default/media/images/flags/bt.gif new file mode 100755 index 00000000..abe2f3cc Binary files /dev/null and b/askbot/skins/default/media/images/flags/bt.gif differ diff --git a/askbot/skins/default/media/images/flags/bv.gif b/askbot/skins/default/media/images/flags/bv.gif new file mode 100755 index 00000000..6202d1f3 Binary files /dev/null and b/askbot/skins/default/media/images/flags/bv.gif differ diff --git a/askbot/skins/default/media/images/flags/bw.gif b/askbot/skins/default/media/images/flags/bw.gif new file mode 100755 index 00000000..986ab63c Binary files /dev/null and b/askbot/skins/default/media/images/flags/bw.gif differ diff --git a/askbot/skins/default/media/images/flags/by.gif b/askbot/skins/default/media/images/flags/by.gif new file mode 100755 index 00000000..43ffcd4c Binary files /dev/null and b/askbot/skins/default/media/images/flags/by.gif differ diff --git a/askbot/skins/default/media/images/flags/bz.gif b/askbot/skins/default/media/images/flags/bz.gif new file mode 100755 index 00000000..791737f0 Binary files /dev/null and b/askbot/skins/default/media/images/flags/bz.gif differ diff --git a/askbot/skins/default/media/images/flags/ca.gif b/askbot/skins/default/media/images/flags/ca.gif new file mode 100755 index 00000000..457d9662 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ca.gif differ diff --git a/askbot/skins/default/media/images/flags/catalonia.gif b/askbot/skins/default/media/images/flags/catalonia.gif new file mode 100644 index 00000000..73df9a04 Binary files /dev/null and b/askbot/skins/default/media/images/flags/catalonia.gif differ diff --git a/askbot/skins/default/media/images/flags/cc.gif b/askbot/skins/default/media/images/flags/cc.gif new file mode 100755 index 00000000..3f783270 Binary files /dev/null and b/askbot/skins/default/media/images/flags/cc.gif differ diff --git a/askbot/skins/default/media/images/flags/cd.gif b/askbot/skins/default/media/images/flags/cd.gif new file mode 100644 index 00000000..1df717ae Binary files /dev/null and b/askbot/skins/default/media/images/flags/cd.gif differ diff --git a/askbot/skins/default/media/images/flags/cf.gif b/askbot/skins/default/media/images/flags/cf.gif new file mode 100755 index 00000000..35787ca4 Binary files /dev/null and b/askbot/skins/default/media/images/flags/cf.gif differ diff --git a/askbot/skins/default/media/images/flags/cg.gif b/askbot/skins/default/media/images/flags/cg.gif new file mode 100755 index 00000000..e0a62a51 Binary files /dev/null and b/askbot/skins/default/media/images/flags/cg.gif differ diff --git a/askbot/skins/default/media/images/flags/ch.gif b/askbot/skins/default/media/images/flags/ch.gif new file mode 100755 index 00000000..d5c0e5b7 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ch.gif differ diff --git a/askbot/skins/default/media/images/flags/ci.gif b/askbot/skins/default/media/images/flags/ci.gif new file mode 100755 index 00000000..844120a5 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ci.gif differ diff --git a/askbot/skins/default/media/images/flags/ck.gif b/askbot/skins/default/media/images/flags/ck.gif new file mode 100755 index 00000000..2edb7399 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ck.gif differ diff --git a/askbot/skins/default/media/images/flags/cl.gif b/askbot/skins/default/media/images/flags/cl.gif new file mode 100755 index 00000000..cbc370e6 Binary files /dev/null and b/askbot/skins/default/media/images/flags/cl.gif differ diff --git a/askbot/skins/default/media/images/flags/cm.gif b/askbot/skins/default/media/images/flags/cm.gif new file mode 100755 index 00000000..1fb102b2 Binary files /dev/null and b/askbot/skins/default/media/images/flags/cm.gif differ diff --git a/askbot/skins/default/media/images/flags/cn.gif b/askbot/skins/default/media/images/flags/cn.gif new file mode 100755 index 00000000..b0525309 Binary files /dev/null and b/askbot/skins/default/media/images/flags/cn.gif differ diff --git a/askbot/skins/default/media/images/flags/co.gif b/askbot/skins/default/media/images/flags/co.gif new file mode 100755 index 00000000..d0e15caf Binary files /dev/null and b/askbot/skins/default/media/images/flags/co.gif differ diff --git a/askbot/skins/default/media/images/flags/cr.gif b/askbot/skins/default/media/images/flags/cr.gif new file mode 100755 index 00000000..0728dd6a Binary files /dev/null and b/askbot/skins/default/media/images/flags/cr.gif differ diff --git a/askbot/skins/default/media/images/flags/cs.gif b/askbot/skins/default/media/images/flags/cs.gif new file mode 100755 index 00000000..101db649 Binary files /dev/null and b/askbot/skins/default/media/images/flags/cs.gif differ diff --git a/askbot/skins/default/media/images/flags/cu.gif b/askbot/skins/default/media/images/flags/cu.gif new file mode 100755 index 00000000..291255ca Binary files /dev/null and b/askbot/skins/default/media/images/flags/cu.gif differ diff --git a/askbot/skins/default/media/images/flags/cv.gif b/askbot/skins/default/media/images/flags/cv.gif new file mode 100755 index 00000000..43c6c6cb Binary files /dev/null and b/askbot/skins/default/media/images/flags/cv.gif differ diff --git a/askbot/skins/default/media/images/flags/cx.gif b/askbot/skins/default/media/images/flags/cx.gif new file mode 100755 index 00000000..a5b43089 Binary files /dev/null and b/askbot/skins/default/media/images/flags/cx.gif differ diff --git a/askbot/skins/default/media/images/flags/cy.gif b/askbot/skins/default/media/images/flags/cy.gif new file mode 100755 index 00000000..35c661e1 Binary files /dev/null and b/askbot/skins/default/media/images/flags/cy.gif differ diff --git a/askbot/skins/default/media/images/flags/cz.gif b/askbot/skins/default/media/images/flags/cz.gif new file mode 100755 index 00000000..0a605e58 Binary files /dev/null and b/askbot/skins/default/media/images/flags/cz.gif differ diff --git a/askbot/skins/default/media/images/flags/de.gif b/askbot/skins/default/media/images/flags/de.gif new file mode 100755 index 00000000..75728ddf Binary files /dev/null and b/askbot/skins/default/media/images/flags/de.gif differ diff --git a/askbot/skins/default/media/images/flags/dj.gif b/askbot/skins/default/media/images/flags/dj.gif new file mode 100755 index 00000000..212406d9 Binary files /dev/null and b/askbot/skins/default/media/images/flags/dj.gif differ diff --git a/askbot/skins/default/media/images/flags/dk.gif b/askbot/skins/default/media/images/flags/dk.gif new file mode 100755 index 00000000..03e75bd2 Binary files /dev/null and b/askbot/skins/default/media/images/flags/dk.gif differ diff --git a/askbot/skins/default/media/images/flags/dm.gif b/askbot/skins/default/media/images/flags/dm.gif new file mode 100755 index 00000000..2f87f3ca Binary files /dev/null and b/askbot/skins/default/media/images/flags/dm.gif differ diff --git a/askbot/skins/default/media/images/flags/do.gif b/askbot/skins/default/media/images/flags/do.gif new file mode 100755 index 00000000..f7d0bad3 Binary files /dev/null and b/askbot/skins/default/media/images/flags/do.gif differ diff --git a/askbot/skins/default/media/images/flags/dz.gif b/askbot/skins/default/media/images/flags/dz.gif new file mode 100755 index 00000000..ed580a7c Binary files /dev/null and b/askbot/skins/default/media/images/flags/dz.gif differ diff --git a/askbot/skins/default/media/images/flags/ec.gif b/askbot/skins/default/media/images/flags/ec.gif new file mode 100755 index 00000000..9e41e0ec Binary files /dev/null and b/askbot/skins/default/media/images/flags/ec.gif differ diff --git a/askbot/skins/default/media/images/flags/ee.gif b/askbot/skins/default/media/images/flags/ee.gif new file mode 100755 index 00000000..9397a2d0 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ee.gif differ diff --git a/askbot/skins/default/media/images/flags/eg.gif b/askbot/skins/default/media/images/flags/eg.gif new file mode 100755 index 00000000..6857c7dd Binary files /dev/null and b/askbot/skins/default/media/images/flags/eg.gif differ diff --git a/askbot/skins/default/media/images/flags/eh.gif b/askbot/skins/default/media/images/flags/eh.gif new file mode 100755 index 00000000..dd0391c2 Binary files /dev/null and b/askbot/skins/default/media/images/flags/eh.gif differ diff --git a/askbot/skins/default/media/images/flags/england.gif b/askbot/skins/default/media/images/flags/england.gif new file mode 100755 index 00000000..933a4f0b Binary files /dev/null and b/askbot/skins/default/media/images/flags/england.gif differ diff --git a/askbot/skins/default/media/images/flags/er.gif b/askbot/skins/default/media/images/flags/er.gif new file mode 100755 index 00000000..3d4d612c Binary files /dev/null and b/askbot/skins/default/media/images/flags/er.gif differ diff --git a/askbot/skins/default/media/images/flags/es.gif b/askbot/skins/default/media/images/flags/es.gif new file mode 100755 index 00000000..c27d65e5 Binary files /dev/null and b/askbot/skins/default/media/images/flags/es.gif differ diff --git a/askbot/skins/default/media/images/flags/et.gif b/askbot/skins/default/media/images/flags/et.gif new file mode 100755 index 00000000..f77995d0 Binary files /dev/null and b/askbot/skins/default/media/images/flags/et.gif differ diff --git a/askbot/skins/default/media/images/flags/europeanunion.gif b/askbot/skins/default/media/images/flags/europeanunion.gif new file mode 100644 index 00000000..28a762a5 Binary files /dev/null and b/askbot/skins/default/media/images/flags/europeanunion.gif differ diff --git a/askbot/skins/default/media/images/flags/fam.gif b/askbot/skins/default/media/images/flags/fam.gif new file mode 100755 index 00000000..7d528852 Binary files /dev/null and b/askbot/skins/default/media/images/flags/fam.gif differ diff --git a/askbot/skins/default/media/images/flags/fi.gif b/askbot/skins/default/media/images/flags/fi.gif new file mode 100755 index 00000000..8d3a1918 Binary files /dev/null and b/askbot/skins/default/media/images/flags/fi.gif differ diff --git a/askbot/skins/default/media/images/flags/fj.gif b/askbot/skins/default/media/images/flags/fj.gif new file mode 100755 index 00000000..486151cb Binary files /dev/null and b/askbot/skins/default/media/images/flags/fj.gif differ diff --git a/askbot/skins/default/media/images/flags/fk.gif b/askbot/skins/default/media/images/flags/fk.gif new file mode 100755 index 00000000..37b5ecf3 Binary files /dev/null and b/askbot/skins/default/media/images/flags/fk.gif differ diff --git a/askbot/skins/default/media/images/flags/fm.gif b/askbot/skins/default/media/images/flags/fm.gif new file mode 100755 index 00000000..7f8723b7 Binary files /dev/null and b/askbot/skins/default/media/images/flags/fm.gif differ diff --git a/askbot/skins/default/media/images/flags/fo.gif b/askbot/skins/default/media/images/flags/fo.gif new file mode 100755 index 00000000..4a90fc04 Binary files /dev/null and b/askbot/skins/default/media/images/flags/fo.gif differ diff --git a/askbot/skins/default/media/images/flags/fr.gif b/askbot/skins/default/media/images/flags/fr.gif new file mode 100755 index 00000000..43d0b801 Binary files /dev/null and b/askbot/skins/default/media/images/flags/fr.gif differ diff --git a/askbot/skins/default/media/images/flags/ga.gif b/askbot/skins/default/media/images/flags/ga.gif new file mode 100755 index 00000000..23fd5f0d Binary files /dev/null and b/askbot/skins/default/media/images/flags/ga.gif differ diff --git a/askbot/skins/default/media/images/flags/gb.gif b/askbot/skins/default/media/images/flags/gb.gif new file mode 100644 index 00000000..3c6bce15 Binary files /dev/null and b/askbot/skins/default/media/images/flags/gb.gif differ diff --git a/askbot/skins/default/media/images/flags/gd.gif b/askbot/skins/default/media/images/flags/gd.gif new file mode 100755 index 00000000..25ea3123 Binary files /dev/null and b/askbot/skins/default/media/images/flags/gd.gif differ diff --git a/askbot/skins/default/media/images/flags/ge.gif b/askbot/skins/default/media/images/flags/ge.gif new file mode 100755 index 00000000..faa7f126 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ge.gif differ diff --git a/askbot/skins/default/media/images/flags/gf.gif b/askbot/skins/default/media/images/flags/gf.gif new file mode 100755 index 00000000..43d0b801 Binary files /dev/null and b/askbot/skins/default/media/images/flags/gf.gif differ diff --git a/askbot/skins/default/media/images/flags/gh.gif b/askbot/skins/default/media/images/flags/gh.gif new file mode 100755 index 00000000..273fb7d1 Binary files /dev/null and b/askbot/skins/default/media/images/flags/gh.gif differ diff --git a/askbot/skins/default/media/images/flags/gi.gif b/askbot/skins/default/media/images/flags/gi.gif new file mode 100755 index 00000000..7b1984bc Binary files /dev/null and b/askbot/skins/default/media/images/flags/gi.gif differ diff --git a/askbot/skins/default/media/images/flags/gl.gif b/askbot/skins/default/media/images/flags/gl.gif new file mode 100755 index 00000000..ef445be0 Binary files /dev/null and b/askbot/skins/default/media/images/flags/gl.gif differ diff --git a/askbot/skins/default/media/images/flags/gm.gif b/askbot/skins/default/media/images/flags/gm.gif new file mode 100755 index 00000000..6847c5a8 Binary files /dev/null and b/askbot/skins/default/media/images/flags/gm.gif differ diff --git a/askbot/skins/default/media/images/flags/gn.gif b/askbot/skins/default/media/images/flags/gn.gif new file mode 100755 index 00000000..a982ac6f Binary files /dev/null and b/askbot/skins/default/media/images/flags/gn.gif differ diff --git a/askbot/skins/default/media/images/flags/gp.gif b/askbot/skins/default/media/images/flags/gp.gif new file mode 100755 index 00000000..31166db6 Binary files /dev/null and b/askbot/skins/default/media/images/flags/gp.gif differ diff --git a/askbot/skins/default/media/images/flags/gq.gif b/askbot/skins/default/media/images/flags/gq.gif new file mode 100755 index 00000000..8b4e0cc4 Binary files /dev/null and b/askbot/skins/default/media/images/flags/gq.gif differ diff --git a/askbot/skins/default/media/images/flags/gr.gif b/askbot/skins/default/media/images/flags/gr.gif new file mode 100755 index 00000000..b4c8c04e Binary files /dev/null and b/askbot/skins/default/media/images/flags/gr.gif differ diff --git a/askbot/skins/default/media/images/flags/gs.gif b/askbot/skins/default/media/images/flags/gs.gif new file mode 100755 index 00000000..ccc96ec0 Binary files /dev/null and b/askbot/skins/default/media/images/flags/gs.gif differ diff --git a/askbot/skins/default/media/images/flags/gt.gif b/askbot/skins/default/media/images/flags/gt.gif new file mode 100755 index 00000000..7e94d1dd Binary files /dev/null and b/askbot/skins/default/media/images/flags/gt.gif differ diff --git a/askbot/skins/default/media/images/flags/gu.gif b/askbot/skins/default/media/images/flags/gu.gif new file mode 100755 index 00000000..eafef683 Binary files /dev/null and b/askbot/skins/default/media/images/flags/gu.gif differ diff --git a/askbot/skins/default/media/images/flags/gw.gif b/askbot/skins/default/media/images/flags/gw.gif new file mode 100755 index 00000000..55f75711 Binary files /dev/null and b/askbot/skins/default/media/images/flags/gw.gif differ diff --git a/askbot/skins/default/media/images/flags/gy.gif b/askbot/skins/default/media/images/flags/gy.gif new file mode 100755 index 00000000..1cb4cd71 Binary files /dev/null and b/askbot/skins/default/media/images/flags/gy.gif differ diff --git a/askbot/skins/default/media/images/flags/hk.gif b/askbot/skins/default/media/images/flags/hk.gif new file mode 100755 index 00000000..798af96d Binary files /dev/null and b/askbot/skins/default/media/images/flags/hk.gif differ diff --git a/askbot/skins/default/media/images/flags/hm.gif b/askbot/skins/default/media/images/flags/hm.gif new file mode 100755 index 00000000..5269c6a0 Binary files /dev/null and b/askbot/skins/default/media/images/flags/hm.gif differ diff --git a/askbot/skins/default/media/images/flags/hn.gif b/askbot/skins/default/media/images/flags/hn.gif new file mode 100755 index 00000000..6c4ffe8e Binary files /dev/null and b/askbot/skins/default/media/images/flags/hn.gif differ diff --git a/askbot/skins/default/media/images/flags/hr.gif b/askbot/skins/default/media/images/flags/hr.gif new file mode 100755 index 00000000..557c6602 Binary files /dev/null and b/askbot/skins/default/media/images/flags/hr.gif differ diff --git a/askbot/skins/default/media/images/flags/ht.gif b/askbot/skins/default/media/images/flags/ht.gif new file mode 100755 index 00000000..059604ab Binary files /dev/null and b/askbot/skins/default/media/images/flags/ht.gif differ diff --git a/askbot/skins/default/media/images/flags/hu.gif b/askbot/skins/default/media/images/flags/hu.gif new file mode 100755 index 00000000..6142d868 Binary files /dev/null and b/askbot/skins/default/media/images/flags/hu.gif differ diff --git a/askbot/skins/default/media/images/flags/id.gif b/askbot/skins/default/media/images/flags/id.gif new file mode 100755 index 00000000..865161b0 Binary files /dev/null and b/askbot/skins/default/media/images/flags/id.gif differ diff --git a/askbot/skins/default/media/images/flags/ie.gif b/askbot/skins/default/media/images/flags/ie.gif new file mode 100755 index 00000000..506ad285 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ie.gif differ diff --git a/askbot/skins/default/media/images/flags/il.gif b/askbot/skins/default/media/images/flags/il.gif new file mode 100755 index 00000000..c8483ae5 Binary files /dev/null and b/askbot/skins/default/media/images/flags/il.gif differ diff --git a/askbot/skins/default/media/images/flags/in.gif b/askbot/skins/default/media/images/flags/in.gif new file mode 100755 index 00000000..1cd80272 Binary files /dev/null and b/askbot/skins/default/media/images/flags/in.gif differ diff --git a/askbot/skins/default/media/images/flags/io.gif b/askbot/skins/default/media/images/flags/io.gif new file mode 100755 index 00000000..de7e7ab3 Binary files /dev/null and b/askbot/skins/default/media/images/flags/io.gif differ diff --git a/askbot/skins/default/media/images/flags/iq.gif b/askbot/skins/default/media/images/flags/iq.gif new file mode 100755 index 00000000..c34fe3c4 Binary files /dev/null and b/askbot/skins/default/media/images/flags/iq.gif differ diff --git a/askbot/skins/default/media/images/flags/ir.gif b/askbot/skins/default/media/images/flags/ir.gif new file mode 100755 index 00000000..156040fc Binary files /dev/null and b/askbot/skins/default/media/images/flags/ir.gif differ diff --git a/askbot/skins/default/media/images/flags/is.gif b/askbot/skins/default/media/images/flags/is.gif new file mode 100755 index 00000000..b42502de Binary files /dev/null and b/askbot/skins/default/media/images/flags/is.gif differ diff --git a/askbot/skins/default/media/images/flags/it.gif b/askbot/skins/default/media/images/flags/it.gif new file mode 100755 index 00000000..d79e90e9 Binary files /dev/null and b/askbot/skins/default/media/images/flags/it.gif differ diff --git a/askbot/skins/default/media/images/flags/jm.gif b/askbot/skins/default/media/images/flags/jm.gif new file mode 100755 index 00000000..0bed67c2 Binary files /dev/null and b/askbot/skins/default/media/images/flags/jm.gif differ diff --git a/askbot/skins/default/media/images/flags/jo.gif b/askbot/skins/default/media/images/flags/jo.gif new file mode 100755 index 00000000..03daf8af Binary files /dev/null and b/askbot/skins/default/media/images/flags/jo.gif differ diff --git a/askbot/skins/default/media/images/flags/jp.gif b/askbot/skins/default/media/images/flags/jp.gif new file mode 100755 index 00000000..444c1d05 Binary files /dev/null and b/askbot/skins/default/media/images/flags/jp.gif differ diff --git a/askbot/skins/default/media/images/flags/ke.gif b/askbot/skins/default/media/images/flags/ke.gif new file mode 100755 index 00000000..c2b5d45c Binary files /dev/null and b/askbot/skins/default/media/images/flags/ke.gif differ diff --git a/askbot/skins/default/media/images/flags/kg.gif b/askbot/skins/default/media/images/flags/kg.gif new file mode 100755 index 00000000..72a4d412 Binary files /dev/null and b/askbot/skins/default/media/images/flags/kg.gif differ diff --git a/askbot/skins/default/media/images/flags/kh.gif b/askbot/skins/default/media/images/flags/kh.gif new file mode 100755 index 00000000..30a18315 Binary files /dev/null and b/askbot/skins/default/media/images/flags/kh.gif differ diff --git a/askbot/skins/default/media/images/flags/ki.gif b/askbot/skins/default/media/images/flags/ki.gif new file mode 100755 index 00000000..4a0751a2 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ki.gif differ diff --git a/askbot/skins/default/media/images/flags/km.gif b/askbot/skins/default/media/images/flags/km.gif new file mode 100755 index 00000000..5859595e Binary files /dev/null and b/askbot/skins/default/media/images/flags/km.gif differ diff --git a/askbot/skins/default/media/images/flags/kn.gif b/askbot/skins/default/media/images/flags/kn.gif new file mode 100755 index 00000000..bb9cc34a Binary files /dev/null and b/askbot/skins/default/media/images/flags/kn.gif differ diff --git a/askbot/skins/default/media/images/flags/kp.gif b/askbot/skins/default/media/images/flags/kp.gif new file mode 100755 index 00000000..6e0ca09e Binary files /dev/null and b/askbot/skins/default/media/images/flags/kp.gif differ diff --git a/askbot/skins/default/media/images/flags/kr.gif b/askbot/skins/default/media/images/flags/kr.gif new file mode 100755 index 00000000..1cddbe75 Binary files /dev/null and b/askbot/skins/default/media/images/flags/kr.gif differ diff --git a/askbot/skins/default/media/images/flags/kw.gif b/askbot/skins/default/media/images/flags/kw.gif new file mode 100755 index 00000000..1efc7347 Binary files /dev/null and b/askbot/skins/default/media/images/flags/kw.gif differ diff --git a/askbot/skins/default/media/images/flags/ky.gif b/askbot/skins/default/media/images/flags/ky.gif new file mode 100755 index 00000000..d3d02ee4 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ky.gif differ diff --git a/askbot/skins/default/media/images/flags/kz.gif b/askbot/skins/default/media/images/flags/kz.gif new file mode 100755 index 00000000..24baebe0 Binary files /dev/null and b/askbot/skins/default/media/images/flags/kz.gif differ diff --git a/askbot/skins/default/media/images/flags/la.gif b/askbot/skins/default/media/images/flags/la.gif new file mode 100755 index 00000000..d14cf4d8 Binary files /dev/null and b/askbot/skins/default/media/images/flags/la.gif differ diff --git a/askbot/skins/default/media/images/flags/lb.gif b/askbot/skins/default/media/images/flags/lb.gif new file mode 100755 index 00000000..003d83af Binary files /dev/null and b/askbot/skins/default/media/images/flags/lb.gif differ diff --git a/askbot/skins/default/media/images/flags/lc.gif b/askbot/skins/default/media/images/flags/lc.gif new file mode 100644 index 00000000..f5fe5bff Binary files /dev/null and b/askbot/skins/default/media/images/flags/lc.gif differ diff --git a/askbot/skins/default/media/images/flags/li.gif b/askbot/skins/default/media/images/flags/li.gif new file mode 100755 index 00000000..713c58e1 Binary files /dev/null and b/askbot/skins/default/media/images/flags/li.gif differ diff --git a/askbot/skins/default/media/images/flags/lk.gif b/askbot/skins/default/media/images/flags/lk.gif new file mode 100755 index 00000000..1b3ee7f5 Binary files /dev/null and b/askbot/skins/default/media/images/flags/lk.gif differ diff --git a/askbot/skins/default/media/images/flags/lr.gif b/askbot/skins/default/media/images/flags/lr.gif new file mode 100755 index 00000000..435af9e5 Binary files /dev/null and b/askbot/skins/default/media/images/flags/lr.gif differ diff --git a/askbot/skins/default/media/images/flags/ls.gif b/askbot/skins/default/media/images/flags/ls.gif new file mode 100755 index 00000000..427ae957 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ls.gif differ diff --git a/askbot/skins/default/media/images/flags/lt.gif b/askbot/skins/default/media/images/flags/lt.gif new file mode 100755 index 00000000..dee9c601 Binary files /dev/null and b/askbot/skins/default/media/images/flags/lt.gif differ diff --git a/askbot/skins/default/media/images/flags/lu.gif b/askbot/skins/default/media/images/flags/lu.gif new file mode 100755 index 00000000..7d7293ed Binary files /dev/null and b/askbot/skins/default/media/images/flags/lu.gif differ diff --git a/askbot/skins/default/media/images/flags/lv.gif b/askbot/skins/default/media/images/flags/lv.gif new file mode 100755 index 00000000..17e71b7e Binary files /dev/null and b/askbot/skins/default/media/images/flags/lv.gif differ diff --git a/askbot/skins/default/media/images/flags/ly.gif b/askbot/skins/default/media/images/flags/ly.gif new file mode 100755 index 00000000..a654c30a Binary files /dev/null and b/askbot/skins/default/media/images/flags/ly.gif differ diff --git a/askbot/skins/default/media/images/flags/ma.gif b/askbot/skins/default/media/images/flags/ma.gif new file mode 100755 index 00000000..fc784119 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ma.gif differ diff --git a/askbot/skins/default/media/images/flags/mc.gif b/askbot/skins/default/media/images/flags/mc.gif new file mode 100755 index 00000000..02a7c8e1 Binary files /dev/null and b/askbot/skins/default/media/images/flags/mc.gif differ diff --git a/askbot/skins/default/media/images/flags/md.gif b/askbot/skins/default/media/images/flags/md.gif new file mode 100755 index 00000000..e4b8a7e3 Binary files /dev/null and b/askbot/skins/default/media/images/flags/md.gif differ diff --git a/askbot/skins/default/media/images/flags/me.gif b/askbot/skins/default/media/images/flags/me.gif new file mode 100644 index 00000000..a260453c Binary files /dev/null and b/askbot/skins/default/media/images/flags/me.gif differ diff --git a/askbot/skins/default/media/images/flags/mg.gif b/askbot/skins/default/media/images/flags/mg.gif new file mode 100755 index 00000000..a91b577d Binary files /dev/null and b/askbot/skins/default/media/images/flags/mg.gif differ diff --git a/askbot/skins/default/media/images/flags/mh.gif b/askbot/skins/default/media/images/flags/mh.gif new file mode 100755 index 00000000..92f5f485 Binary files /dev/null and b/askbot/skins/default/media/images/flags/mh.gif differ diff --git a/askbot/skins/default/media/images/flags/mk.gif b/askbot/skins/default/media/images/flags/mk.gif new file mode 100755 index 00000000..7aeb8311 Binary files /dev/null and b/askbot/skins/default/media/images/flags/mk.gif differ diff --git a/askbot/skins/default/media/images/flags/ml.gif b/askbot/skins/default/media/images/flags/ml.gif new file mode 100755 index 00000000..53d6f490 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ml.gif differ diff --git a/askbot/skins/default/media/images/flags/mm.gif b/askbot/skins/default/media/images/flags/mm.gif new file mode 100755 index 00000000..9e0a2756 Binary files /dev/null and b/askbot/skins/default/media/images/flags/mm.gif differ diff --git a/askbot/skins/default/media/images/flags/mn.gif b/askbot/skins/default/media/images/flags/mn.gif new file mode 100755 index 00000000..dff8ea5a Binary files /dev/null and b/askbot/skins/default/media/images/flags/mn.gif differ diff --git a/askbot/skins/default/media/images/flags/mo.gif b/askbot/skins/default/media/images/flags/mo.gif new file mode 100755 index 00000000..66cf5b4f Binary files /dev/null and b/askbot/skins/default/media/images/flags/mo.gif differ diff --git a/askbot/skins/default/media/images/flags/mp.gif b/askbot/skins/default/media/images/flags/mp.gif new file mode 100755 index 00000000..73b7147e Binary files /dev/null and b/askbot/skins/default/media/images/flags/mp.gif differ diff --git a/askbot/skins/default/media/images/flags/mq.gif b/askbot/skins/default/media/images/flags/mq.gif new file mode 100755 index 00000000..570bc5dd Binary files /dev/null and b/askbot/skins/default/media/images/flags/mq.gif differ diff --git a/askbot/skins/default/media/images/flags/mr.gif b/askbot/skins/default/media/images/flags/mr.gif new file mode 100755 index 00000000..f52fcf09 Binary files /dev/null and b/askbot/skins/default/media/images/flags/mr.gif differ diff --git a/askbot/skins/default/media/images/flags/ms.gif b/askbot/skins/default/media/images/flags/ms.gif new file mode 100755 index 00000000..5e5a67aa Binary files /dev/null and b/askbot/skins/default/media/images/flags/ms.gif differ diff --git a/askbot/skins/default/media/images/flags/mt.gif b/askbot/skins/default/media/images/flags/mt.gif new file mode 100755 index 00000000..45c709f2 Binary files /dev/null and b/askbot/skins/default/media/images/flags/mt.gif differ diff --git a/askbot/skins/default/media/images/flags/mu.gif b/askbot/skins/default/media/images/flags/mu.gif new file mode 100755 index 00000000..081ab453 Binary files /dev/null and b/askbot/skins/default/media/images/flags/mu.gif differ diff --git a/askbot/skins/default/media/images/flags/mv.gif b/askbot/skins/default/media/images/flags/mv.gif new file mode 100755 index 00000000..46b63875 Binary files /dev/null and b/askbot/skins/default/media/images/flags/mv.gif differ diff --git a/askbot/skins/default/media/images/flags/mw.gif b/askbot/skins/default/media/images/flags/mw.gif new file mode 100755 index 00000000..ad045a09 Binary files /dev/null and b/askbot/skins/default/media/images/flags/mw.gif differ diff --git a/askbot/skins/default/media/images/flags/mx.gif b/askbot/skins/default/media/images/flags/mx.gif new file mode 100755 index 00000000..ddc75d04 Binary files /dev/null and b/askbot/skins/default/media/images/flags/mx.gif differ diff --git a/askbot/skins/default/media/images/flags/my.gif b/askbot/skins/default/media/images/flags/my.gif new file mode 100755 index 00000000..fc7d5236 Binary files /dev/null and b/askbot/skins/default/media/images/flags/my.gif differ diff --git a/askbot/skins/default/media/images/flags/mz.gif b/askbot/skins/default/media/images/flags/mz.gif new file mode 100755 index 00000000..7d635082 Binary files /dev/null and b/askbot/skins/default/media/images/flags/mz.gif differ diff --git a/askbot/skins/default/media/images/flags/na.gif b/askbot/skins/default/media/images/flags/na.gif new file mode 100755 index 00000000..c0babe72 Binary files /dev/null and b/askbot/skins/default/media/images/flags/na.gif differ diff --git a/askbot/skins/default/media/images/flags/nc.gif b/askbot/skins/default/media/images/flags/nc.gif new file mode 100755 index 00000000..b1e91b9a Binary files /dev/null and b/askbot/skins/default/media/images/flags/nc.gif differ diff --git a/askbot/skins/default/media/images/flags/ne.gif b/askbot/skins/default/media/images/flags/ne.gif new file mode 100755 index 00000000..ff4eaf07 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ne.gif differ diff --git a/askbot/skins/default/media/images/flags/nf.gif b/askbot/skins/default/media/images/flags/nf.gif new file mode 100755 index 00000000..c83424c2 Binary files /dev/null and b/askbot/skins/default/media/images/flags/nf.gif differ diff --git a/askbot/skins/default/media/images/flags/ng.gif b/askbot/skins/default/media/images/flags/ng.gif new file mode 100755 index 00000000..bdde7cb3 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ng.gif differ diff --git a/askbot/skins/default/media/images/flags/ni.gif b/askbot/skins/default/media/images/flags/ni.gif new file mode 100755 index 00000000..d05894d0 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ni.gif differ diff --git a/askbot/skins/default/media/images/flags/nl.gif b/askbot/skins/default/media/images/flags/nl.gif new file mode 100755 index 00000000..c1c8f46d Binary files /dev/null and b/askbot/skins/default/media/images/flags/nl.gif differ diff --git a/askbot/skins/default/media/images/flags/no.gif b/askbot/skins/default/media/images/flags/no.gif new file mode 100755 index 00000000..6202d1f3 Binary files /dev/null and b/askbot/skins/default/media/images/flags/no.gif differ diff --git a/askbot/skins/default/media/images/flags/np.gif b/askbot/skins/default/media/images/flags/np.gif new file mode 100755 index 00000000..1096893a Binary files /dev/null and b/askbot/skins/default/media/images/flags/np.gif differ diff --git a/askbot/skins/default/media/images/flags/nr.gif b/askbot/skins/default/media/images/flags/nr.gif new file mode 100755 index 00000000..2e4c0c5c Binary files /dev/null and b/askbot/skins/default/media/images/flags/nr.gif differ diff --git a/askbot/skins/default/media/images/flags/nu.gif b/askbot/skins/default/media/images/flags/nu.gif new file mode 100755 index 00000000..618210a7 Binary files /dev/null and b/askbot/skins/default/media/images/flags/nu.gif differ diff --git a/askbot/skins/default/media/images/flags/nz.gif b/askbot/skins/default/media/images/flags/nz.gif new file mode 100755 index 00000000..028a5dc6 Binary files /dev/null and b/askbot/skins/default/media/images/flags/nz.gif differ diff --git a/askbot/skins/default/media/images/flags/om.gif b/askbot/skins/default/media/images/flags/om.gif new file mode 100755 index 00000000..2b8c7750 Binary files /dev/null and b/askbot/skins/default/media/images/flags/om.gif differ diff --git a/askbot/skins/default/media/images/flags/pa.gif b/askbot/skins/default/media/images/flags/pa.gif new file mode 100755 index 00000000..d518b2f9 Binary files /dev/null and b/askbot/skins/default/media/images/flags/pa.gif differ diff --git a/askbot/skins/default/media/images/flags/pe.gif b/askbot/skins/default/media/images/flags/pe.gif new file mode 100755 index 00000000..3bc76390 Binary files /dev/null and b/askbot/skins/default/media/images/flags/pe.gif differ diff --git a/askbot/skins/default/media/images/flags/pf.gif b/askbot/skins/default/media/images/flags/pf.gif new file mode 100755 index 00000000..849297a5 Binary files /dev/null and b/askbot/skins/default/media/images/flags/pf.gif differ diff --git a/askbot/skins/default/media/images/flags/pg.gif b/askbot/skins/default/media/images/flags/pg.gif new file mode 100755 index 00000000..2d20b078 Binary files /dev/null and b/askbot/skins/default/media/images/flags/pg.gif differ diff --git a/askbot/skins/default/media/images/flags/ph.gif b/askbot/skins/default/media/images/flags/ph.gif new file mode 100755 index 00000000..12b380ac Binary files /dev/null and b/askbot/skins/default/media/images/flags/ph.gif differ diff --git a/askbot/skins/default/media/images/flags/pk.gif b/askbot/skins/default/media/images/flags/pk.gif new file mode 100755 index 00000000..f3f62c2e Binary files /dev/null and b/askbot/skins/default/media/images/flags/pk.gif differ diff --git a/askbot/skins/default/media/images/flags/pl.gif b/askbot/skins/default/media/images/flags/pl.gif new file mode 100755 index 00000000..bf106463 Binary files /dev/null and b/askbot/skins/default/media/images/flags/pl.gif differ diff --git a/askbot/skins/default/media/images/flags/pm.gif b/askbot/skins/default/media/images/flags/pm.gif new file mode 100755 index 00000000..99bf6fdb Binary files /dev/null and b/askbot/skins/default/media/images/flags/pm.gif differ diff --git a/askbot/skins/default/media/images/flags/pn.gif b/askbot/skins/default/media/images/flags/pn.gif new file mode 100755 index 00000000..4bc86a1d Binary files /dev/null and b/askbot/skins/default/media/images/flags/pn.gif differ diff --git a/askbot/skins/default/media/images/flags/pr.gif b/askbot/skins/default/media/images/flags/pr.gif new file mode 100755 index 00000000..6d5d5896 Binary files /dev/null and b/askbot/skins/default/media/images/flags/pr.gif differ diff --git a/askbot/skins/default/media/images/flags/ps.gif b/askbot/skins/default/media/images/flags/ps.gif new file mode 100755 index 00000000..6afa3b71 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ps.gif differ diff --git a/askbot/skins/default/media/images/flags/pt.gif b/askbot/skins/default/media/images/flags/pt.gif new file mode 100755 index 00000000..e735f740 Binary files /dev/null and b/askbot/skins/default/media/images/flags/pt.gif differ diff --git a/askbot/skins/default/media/images/flags/pw.gif b/askbot/skins/default/media/images/flags/pw.gif new file mode 100755 index 00000000..5854510f Binary files /dev/null and b/askbot/skins/default/media/images/flags/pw.gif differ diff --git a/askbot/skins/default/media/images/flags/py.gif b/askbot/skins/default/media/images/flags/py.gif new file mode 100755 index 00000000..f2e66af7 Binary files /dev/null and b/askbot/skins/default/media/images/flags/py.gif differ diff --git a/askbot/skins/default/media/images/flags/qa.gif b/askbot/skins/default/media/images/flags/qa.gif new file mode 100755 index 00000000..2e843ff9 Binary files /dev/null and b/askbot/skins/default/media/images/flags/qa.gif differ diff --git a/askbot/skins/default/media/images/flags/re.gif b/askbot/skins/default/media/images/flags/re.gif new file mode 100755 index 00000000..43d0b801 Binary files /dev/null and b/askbot/skins/default/media/images/flags/re.gif differ diff --git a/askbot/skins/default/media/images/flags/ro.gif b/askbot/skins/default/media/images/flags/ro.gif new file mode 100755 index 00000000..f5d5f125 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ro.gif differ diff --git a/askbot/skins/default/media/images/flags/rs.gif b/askbot/skins/default/media/images/flags/rs.gif new file mode 100644 index 00000000..3bd1fb2f Binary files /dev/null and b/askbot/skins/default/media/images/flags/rs.gif differ diff --git a/askbot/skins/default/media/images/flags/ru.gif b/askbot/skins/default/media/images/flags/ru.gif new file mode 100755 index 00000000..b525c462 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ru.gif differ diff --git a/askbot/skins/default/media/images/flags/rw.gif b/askbot/skins/default/media/images/flags/rw.gif new file mode 100755 index 00000000..0d095f7a Binary files /dev/null and b/askbot/skins/default/media/images/flags/rw.gif differ diff --git a/askbot/skins/default/media/images/flags/sa.gif b/askbot/skins/default/media/images/flags/sa.gif new file mode 100755 index 00000000..179961b6 Binary files /dev/null and b/askbot/skins/default/media/images/flags/sa.gif differ diff --git a/askbot/skins/default/media/images/flags/sb.gif b/askbot/skins/default/media/images/flags/sb.gif new file mode 100755 index 00000000..8f5ff837 Binary files /dev/null and b/askbot/skins/default/media/images/flags/sb.gif differ diff --git a/askbot/skins/default/media/images/flags/sc.gif b/askbot/skins/default/media/images/flags/sc.gif new file mode 100755 index 00000000..31b47677 Binary files /dev/null and b/askbot/skins/default/media/images/flags/sc.gif differ diff --git a/askbot/skins/default/media/images/flags/scotland.gif b/askbot/skins/default/media/images/flags/scotland.gif new file mode 100755 index 00000000..03f3f1de Binary files /dev/null and b/askbot/skins/default/media/images/flags/scotland.gif differ diff --git a/askbot/skins/default/media/images/flags/sd.gif b/askbot/skins/default/media/images/flags/sd.gif new file mode 100755 index 00000000..53ae214f Binary files /dev/null and b/askbot/skins/default/media/images/flags/sd.gif differ diff --git a/askbot/skins/default/media/images/flags/se.gif b/askbot/skins/default/media/images/flags/se.gif new file mode 100755 index 00000000..80f62852 Binary files /dev/null and b/askbot/skins/default/media/images/flags/se.gif differ diff --git a/askbot/skins/default/media/images/flags/sg.gif b/askbot/skins/default/media/images/flags/sg.gif new file mode 100755 index 00000000..5663d39f Binary files /dev/null and b/askbot/skins/default/media/images/flags/sg.gif differ diff --git a/askbot/skins/default/media/images/flags/sh.gif b/askbot/skins/default/media/images/flags/sh.gif new file mode 100755 index 00000000..dcc7f3bc Binary files /dev/null and b/askbot/skins/default/media/images/flags/sh.gif differ diff --git a/askbot/skins/default/media/images/flags/si.gif b/askbot/skins/default/media/images/flags/si.gif new file mode 100755 index 00000000..23852b50 Binary files /dev/null and b/askbot/skins/default/media/images/flags/si.gif differ diff --git a/askbot/skins/default/media/images/flags/sj.gif b/askbot/skins/default/media/images/flags/sj.gif new file mode 100755 index 00000000..6202d1f3 Binary files /dev/null and b/askbot/skins/default/media/images/flags/sj.gif differ diff --git a/askbot/skins/default/media/images/flags/sk.gif b/askbot/skins/default/media/images/flags/sk.gif new file mode 100755 index 00000000..1b3f22ba Binary files /dev/null and b/askbot/skins/default/media/images/flags/sk.gif differ diff --git a/askbot/skins/default/media/images/flags/sl.gif b/askbot/skins/default/media/images/flags/sl.gif new file mode 100755 index 00000000..f0f34923 Binary files /dev/null and b/askbot/skins/default/media/images/flags/sl.gif differ diff --git a/askbot/skins/default/media/images/flags/sm.gif b/askbot/skins/default/media/images/flags/sm.gif new file mode 100755 index 00000000..04d98de5 Binary files /dev/null and b/askbot/skins/default/media/images/flags/sm.gif differ diff --git a/askbot/skins/default/media/images/flags/sn.gif b/askbot/skins/default/media/images/flags/sn.gif new file mode 100755 index 00000000..6dac8709 Binary files /dev/null and b/askbot/skins/default/media/images/flags/sn.gif differ diff --git a/askbot/skins/default/media/images/flags/so.gif b/askbot/skins/default/media/images/flags/so.gif new file mode 100755 index 00000000..f1961694 Binary files /dev/null and b/askbot/skins/default/media/images/flags/so.gif differ diff --git a/askbot/skins/default/media/images/flags/sr.gif b/askbot/skins/default/media/images/flags/sr.gif new file mode 100755 index 00000000..0f7499ad Binary files /dev/null and b/askbot/skins/default/media/images/flags/sr.gif differ diff --git a/askbot/skins/default/media/images/flags/st.gif b/askbot/skins/default/media/images/flags/st.gif new file mode 100755 index 00000000..4f1e6e09 Binary files /dev/null and b/askbot/skins/default/media/images/flags/st.gif differ diff --git a/askbot/skins/default/media/images/flags/sv.gif b/askbot/skins/default/media/images/flags/sv.gif new file mode 100755 index 00000000..2d7b159a Binary files /dev/null and b/askbot/skins/default/media/images/flags/sv.gif differ diff --git a/askbot/skins/default/media/images/flags/sy.gif b/askbot/skins/default/media/images/flags/sy.gif new file mode 100755 index 00000000..dc8bd509 Binary files /dev/null and b/askbot/skins/default/media/images/flags/sy.gif differ diff --git a/askbot/skins/default/media/images/flags/sz.gif b/askbot/skins/default/media/images/flags/sz.gif new file mode 100755 index 00000000..f37aaf80 Binary files /dev/null and b/askbot/skins/default/media/images/flags/sz.gif differ diff --git a/askbot/skins/default/media/images/flags/tc.gif b/askbot/skins/default/media/images/flags/tc.gif new file mode 100755 index 00000000..11a8c232 Binary files /dev/null and b/askbot/skins/default/media/images/flags/tc.gif differ diff --git a/askbot/skins/default/media/images/flags/td.gif b/askbot/skins/default/media/images/flags/td.gif new file mode 100755 index 00000000..7aa8a10d Binary files /dev/null and b/askbot/skins/default/media/images/flags/td.gif differ diff --git a/askbot/skins/default/media/images/flags/tf.gif b/askbot/skins/default/media/images/flags/tf.gif new file mode 100755 index 00000000..51a43250 Binary files /dev/null and b/askbot/skins/default/media/images/flags/tf.gif differ diff --git a/askbot/skins/default/media/images/flags/tg.gif b/askbot/skins/default/media/images/flags/tg.gif new file mode 100755 index 00000000..ca6b4e77 Binary files /dev/null and b/askbot/skins/default/media/images/flags/tg.gif differ diff --git a/askbot/skins/default/media/images/flags/th.gif b/askbot/skins/default/media/images/flags/th.gif new file mode 100755 index 00000000..01307924 Binary files /dev/null and b/askbot/skins/default/media/images/flags/th.gif differ diff --git a/askbot/skins/default/media/images/flags/tj.gif b/askbot/skins/default/media/images/flags/tj.gif new file mode 100755 index 00000000..2fe38d4a Binary files /dev/null and b/askbot/skins/default/media/images/flags/tj.gif differ diff --git a/askbot/skins/default/media/images/flags/tk.gif b/askbot/skins/default/media/images/flags/tk.gif new file mode 100755 index 00000000..3d3a727f Binary files /dev/null and b/askbot/skins/default/media/images/flags/tk.gif differ diff --git a/askbot/skins/default/media/images/flags/tl.gif b/askbot/skins/default/media/images/flags/tl.gif new file mode 100755 index 00000000..df22d582 Binary files /dev/null and b/askbot/skins/default/media/images/flags/tl.gif differ diff --git a/askbot/skins/default/media/images/flags/tm.gif b/askbot/skins/default/media/images/flags/tm.gif new file mode 100755 index 00000000..36d0994f Binary files /dev/null and b/askbot/skins/default/media/images/flags/tm.gif differ diff --git a/askbot/skins/default/media/images/flags/tn.gif b/askbot/skins/default/media/images/flags/tn.gif new file mode 100755 index 00000000..917d4288 Binary files /dev/null and b/askbot/skins/default/media/images/flags/tn.gif differ diff --git a/askbot/skins/default/media/images/flags/to.gif b/askbot/skins/default/media/images/flags/to.gif new file mode 100755 index 00000000..d7ed4d11 Binary files /dev/null and b/askbot/skins/default/media/images/flags/to.gif differ diff --git a/askbot/skins/default/media/images/flags/tr.gif b/askbot/skins/default/media/images/flags/tr.gif new file mode 100755 index 00000000..e407d553 Binary files /dev/null and b/askbot/skins/default/media/images/flags/tr.gif differ diff --git a/askbot/skins/default/media/images/flags/tt.gif b/askbot/skins/default/media/images/flags/tt.gif new file mode 100755 index 00000000..47d3b806 Binary files /dev/null and b/askbot/skins/default/media/images/flags/tt.gif differ diff --git a/askbot/skins/default/media/images/flags/tv.gif b/askbot/skins/default/media/images/flags/tv.gif new file mode 100755 index 00000000..3c338277 Binary files /dev/null and b/askbot/skins/default/media/images/flags/tv.gif differ diff --git a/askbot/skins/default/media/images/flags/tw.gif b/askbot/skins/default/media/images/flags/tw.gif new file mode 100755 index 00000000..cacfd9b7 Binary files /dev/null and b/askbot/skins/default/media/images/flags/tw.gif differ diff --git a/askbot/skins/default/media/images/flags/tz.gif b/askbot/skins/default/media/images/flags/tz.gif new file mode 100755 index 00000000..82b52ca2 Binary files /dev/null and b/askbot/skins/default/media/images/flags/tz.gif differ diff --git a/askbot/skins/default/media/images/flags/ua.gif b/askbot/skins/default/media/images/flags/ua.gif new file mode 100755 index 00000000..5d6cd83f Binary files /dev/null and b/askbot/skins/default/media/images/flags/ua.gif differ diff --git a/askbot/skins/default/media/images/flags/ug.gif b/askbot/skins/default/media/images/flags/ug.gif new file mode 100755 index 00000000..58b731ad Binary files /dev/null and b/askbot/skins/default/media/images/flags/ug.gif differ diff --git a/askbot/skins/default/media/images/flags/um.gif b/askbot/skins/default/media/images/flags/um.gif new file mode 100755 index 00000000..3b4c8483 Binary files /dev/null and b/askbot/skins/default/media/images/flags/um.gif differ diff --git a/askbot/skins/default/media/images/flags/us.gif b/askbot/skins/default/media/images/flags/us.gif new file mode 100755 index 00000000..8f198f73 Binary files /dev/null and b/askbot/skins/default/media/images/flags/us.gif differ diff --git a/askbot/skins/default/media/images/flags/uy.gif b/askbot/skins/default/media/images/flags/uy.gif new file mode 100755 index 00000000..12848c74 Binary files /dev/null and b/askbot/skins/default/media/images/flags/uy.gif differ diff --git a/askbot/skins/default/media/images/flags/uz.gif b/askbot/skins/default/media/images/flags/uz.gif new file mode 100755 index 00000000..dc9daeca Binary files /dev/null and b/askbot/skins/default/media/images/flags/uz.gif differ diff --git a/askbot/skins/default/media/images/flags/va.gif b/askbot/skins/default/media/images/flags/va.gif new file mode 100755 index 00000000..2bd74468 Binary files /dev/null and b/askbot/skins/default/media/images/flags/va.gif differ diff --git a/askbot/skins/default/media/images/flags/vc.gif b/askbot/skins/default/media/images/flags/vc.gif new file mode 100755 index 00000000..48213816 Binary files /dev/null and b/askbot/skins/default/media/images/flags/vc.gif differ diff --git a/askbot/skins/default/media/images/flags/ve.gif b/askbot/skins/default/media/images/flags/ve.gif new file mode 100755 index 00000000..19ce6c14 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ve.gif differ diff --git a/askbot/skins/default/media/images/flags/vg.gif b/askbot/skins/default/media/images/flags/vg.gif new file mode 100755 index 00000000..1fc0f96e Binary files /dev/null and b/askbot/skins/default/media/images/flags/vg.gif differ diff --git a/askbot/skins/default/media/images/flags/vi.gif b/askbot/skins/default/media/images/flags/vi.gif new file mode 100755 index 00000000..66f9e746 Binary files /dev/null and b/askbot/skins/default/media/images/flags/vi.gif differ diff --git a/askbot/skins/default/media/images/flags/vn.gif b/askbot/skins/default/media/images/flags/vn.gif new file mode 100755 index 00000000..f1e20c94 Binary files /dev/null and b/askbot/skins/default/media/images/flags/vn.gif differ diff --git a/askbot/skins/default/media/images/flags/vu.gif b/askbot/skins/default/media/images/flags/vu.gif new file mode 100755 index 00000000..8a8b2b06 Binary files /dev/null and b/askbot/skins/default/media/images/flags/vu.gif differ diff --git a/askbot/skins/default/media/images/flags/wales.gif b/askbot/skins/default/media/images/flags/wales.gif new file mode 100755 index 00000000..901d1750 Binary files /dev/null and b/askbot/skins/default/media/images/flags/wales.gif differ diff --git a/askbot/skins/default/media/images/flags/wf.gif b/askbot/skins/default/media/images/flags/wf.gif new file mode 100755 index 00000000..eaa954b1 Binary files /dev/null and b/askbot/skins/default/media/images/flags/wf.gif differ diff --git a/askbot/skins/default/media/images/flags/ws.gif b/askbot/skins/default/media/images/flags/ws.gif new file mode 100755 index 00000000..a51f939e Binary files /dev/null and b/askbot/skins/default/media/images/flags/ws.gif differ diff --git a/askbot/skins/default/media/images/flags/ye.gif b/askbot/skins/default/media/images/flags/ye.gif new file mode 100755 index 00000000..7b0183d0 Binary files /dev/null and b/askbot/skins/default/media/images/flags/ye.gif differ diff --git a/askbot/skins/default/media/images/flags/yt.gif b/askbot/skins/default/media/images/flags/yt.gif new file mode 100755 index 00000000..a2267c05 Binary files /dev/null and b/askbot/skins/default/media/images/flags/yt.gif differ diff --git a/askbot/skins/default/media/images/flags/za.gif b/askbot/skins/default/media/images/flags/za.gif new file mode 100755 index 00000000..ede52589 Binary files /dev/null and b/askbot/skins/default/media/images/flags/za.gif differ diff --git a/askbot/skins/default/media/images/flags/zm.gif b/askbot/skins/default/media/images/flags/zm.gif new file mode 100755 index 00000000..b2851d2b Binary files /dev/null and b/askbot/skins/default/media/images/flags/zm.gif differ diff --git a/askbot/skins/default/media/images/flags/zw.gif b/askbot/skins/default/media/images/flags/zw.gif new file mode 100755 index 00000000..02901f62 Binary files /dev/null and b/askbot/skins/default/media/images/flags/zw.gif differ diff --git a/askbot/skins/default/media/js/live_search.js b/askbot/skins/default/media/js/live_search.js index 57621cd1..20203d1f 100644 --- a/askbot/skins/default/media/js/live_search.js +++ b/askbot/skins/default/media/js/live_search.js @@ -145,6 +145,21 @@ $(document).ready(function(){ return html; }; + var render_user_flag = function(result){ + var country_code = result['u_country_code']; + if (country_code) { + return ''; + } else { + return ''; + } + }; + var render_user_info = function(result){ var user_html = '
' + @@ -154,6 +169,7 @@ $(document).ready(function(){ result['timesince'] + ' ' + render_user_link(result) + + render_user_flag(result) + //render_user_badge_and_karma(result) + '
'; return user_html; diff --git a/askbot/skins/default/media/style/style.css b/askbot/skins/default/media/style/style.css index a5f0d7ff..887e938a 100755 --- a/askbot/skins/default/media/style/style.css +++ b/askbot/skins/default/media/style/style.css @@ -1241,6 +1241,7 @@ ins .post-tag { font-weight: 800; color: #777; line-height: 40px; /*letter-spacing:0px*/ + margin-top: 3px; } .user-details { @@ -1746,8 +1747,8 @@ ul.form-horizontal-rows li input { } .user-profile-tool-links { - padding-bottom: 10px; font-weight: bold; + vertical-align: top; } .post-controls, .post-tags { @@ -1995,6 +1996,25 @@ img.gravatar { .user-profile-page .avatar p { margin-bottom: 0px; } +.user-profile-page .tabBar a#stats { + margin-left: 0; +} +.user-profile-page img.gravatar { + margin: 2px 0 3px 0; +} +.user-profile-page h3 { + padding: 0; + margin-top: -3px; +} + +img.flag { + border: 1px solid #eee; + vertical-align: text-top; +} + +.main-page img.flag { + vertical-align: text-bottom; +} .fb-share, .twitter-share { background: url(../images/sprite.png) no-repeat; diff --git a/askbot/skins/default/templates/macros.html b/askbot/skins/default/templates/macros.html index f6cb907d..32d4c5bb 100644 --- a/askbot/skins/default/templates/macros.html +++ b/askbot/skins/default/templates/macros.html @@ -44,6 +44,26 @@ {%- endif -%} {%- endmacro -%} +{%- macro user_country_flag(user) -%} + {% if user.country and user.show_country %} + + {% endif %} +{%- endmacro -%} + +{%- macro user_country_name_and_flag(user) -%} + {% if user.country and user.show_country %} + {{ user.country.name }} + {{ user_country_flag(user) }} + {% endif %} +{%- endmacro -%} + +{%- macro user_full_location(user) -%} + {% if user.location %} + {{ user.location }}, + {% endif %} + {{ user_country_name_and_flag(user) }} +{%- endmacro -%} + {%- macro paginator(p, position='left') -%}{# p is paginator context dictionary #} {% spaceless %} {% if p.is_paginated %} @@ -176,7 +196,7 @@ poor design of the data or methods on data objects #} {% endif %}

{{ gravatar(post.author, 32) }} - {{post.author.get_profile_link()}}{% if not post.author.website %}
{% endif %} + {{post.author.get_profile_link()}}{{ user_country_flag(post.author)}}{% if not post.author.website %}
{% endif %} {{ user_score_and_badge_summary(post.author) }}
{{ user_website_link(post.author) }} {% endif %} @@ -204,7 +224,7 @@ poor design of the data or methods on data objects #}

{% if original_author != update_author or is_wiki %} {{ gravatar(update_author, 32) }} - {{update_author.get_profile_link()}}{% if not update_author.website %}
{% endif %} + {{update_author.get_profile_link()}}{{ user_country_flag(update_author) }}{% if not update_author.website %}
{% endif %} {{ user_score_and_badge_summary(update_author) }}
{{ user_website_link(update_author) }} {% endif %} @@ -258,7 +278,7 @@ poor design of the data or methods on data objects #}
{{ question.last_activity_at|diff_date }} - {{question.last_activity_by.username}} + {{question.last_activity_by.username}}{{ user_country_flag(question.last_activity_by) }} {#{user_score_and_badge_summary(question.last_activity_by)}#}
diff --git a/askbot/skins/default/templates/user_profile/user_edit.html b/askbot/skins/default/templates/user_profile/user_edit.html index 98da4932..9308bf90 100644 --- a/askbot/skins/default/templates/user_profile/user_edit.html +++ b/askbot/skins/default/templates/user_profile/user_edit.html @@ -23,7 +23,7 @@ - + {% trans %}Screen Name{% endtrans %}: {% if settings.EDITABLE_SCREEN_NAME %} @@ -34,31 +34,39 @@ {% endif %} - + {{ form.email.label_tag() }}: {{ form.email }} {{ form.email.errors }} - + {{ form.email.help_text }} - + {{ form.realname.label_tag() }}: {{ form.realname }} {{ form.realname.errors }} - + {{ form.website.label_tag() }}: {{ form.website }} {{ form.website.errors }} - + {{ form.city.label_tag() }}: {{ form.city }} {{ form.city.errors }} - + + {{ form.country.label_tag() }}: + {{ form.country }} {{ form.country.errors }} + + + {{ form.show_country.label_tag() }}: + {{ form.show_country }} {{ form.show_country.errors }} + + {{ form.birthday.label_tag() }}: {{ form.birthday }} {{ form.birthday.errors }} - + {{ form.birthday.help_text }} diff --git a/askbot/skins/default/templates/user_profile/user_info.html b/askbot/skins/default/templates/user_profile/user_info.html index 7909d52b..6c6868c7 100644 --- a/askbot/skins/default/templates/user_profile/user_info.html +++ b/askbot/skins/default/templates/user_profile/user_info.html @@ -2,7 +2,7 @@ {% import "macros.html" as macros %} - -
+
{{ macros.gravatar(view_user, 128) }} {% if request.user == view_user %} @@ -24,19 +24,19 @@
{{view_user.reputation|intcomma}}

{% trans %}reputation{% endtrans %}

+ {% if request.user == view_user %} {% endif %} @@ -67,10 +67,10 @@ {% endif %} - {% if view_user.location %} + {% if view_user.location or view_user.country %} - + {% endif %} {% if view_user.date_of_birth%} diff --git a/askbot/skins/default/templates/users.html b/askbot/skins/default/templates/users.html index 13381e96..dab2e661 100644 --- a/askbot/skins/default/templates/users.html +++ b/askbot/skins/default/templates/users.html @@ -48,7 +48,7 @@
diff --git a/askbot/templatetags/extra_filters_jinja.py b/askbot/templatetags/extra_filters_jinja.py index 3ca2e09a..545b6fc9 100644 --- a/askbot/templatetags/extra_filters_jinja.py +++ b/askbot/templatetags/extra_filters_jinja.py @@ -12,8 +12,22 @@ from askbot.skins import utils as skin_utils from askbot.utils import functions from askbot.utils.slug import slugify +from django_countries import countries +from django_countries import settings as countries_settings + register = coffin_template.Library() +@register.filter +def country_display_name(country_code): + country_dict = dict(countries.COUNTRIES) + return country_dict[country_code] + +@register.filter +def country_flag_url(country_code): + import pdb + pdb.set_trace() + return countries_settings.FLAG_URL % country_code + @register.filter def collapse(input): input = str(input) diff --git a/askbot/views/readers.py b/askbot/views/readers.py index 06786714..16e71f3e 100644 --- a/askbot/views/readers.py +++ b/askbot/views/readers.py @@ -217,6 +217,10 @@ def questions(request): else: views_class = 'some-views' + country_code = None + if author.country and author.show_country: + country_code = author.country.code + question_data = { 'title': question.title, 'summary': question.summary, @@ -257,6 +261,7 @@ def questions(request): ), 'u_bronze_badge_symbol': const.BADGE_DISPLAY_SYMBOL, 'u_bronze_css_class': bronze_badge_css_class, + 'u_country_code': country_code, } ajax_data['questions'].append(question_data) diff --git a/askbot/views/users.py b/askbot/views/users.py index 8a348164..807ccc11 100644 --- a/askbot/views/users.py +++ b/askbot/views/users.py @@ -254,6 +254,8 @@ def edit_user(request, id): user.location = sanitize_html(form.cleaned_data['city']) user.date_of_birth = form.cleaned_data.get('birthday', None) user.about = sanitize_html(form.cleaned_data['about']) + user.country = form.cleaned_data['country'] + user.show_country = form.cleaned_data['show_country'] user.save() # send user updated signal if full fields have been updated diff --git a/setup.py b/setup.py index 7807995b..f950152d 100644 --- a/setup.py +++ b/setup.py @@ -19,6 +19,7 @@ install_requires = [ 'django-threaded-multihost', 'django-robots', 'unidecode', + 'django-countries==1.0.5', ] import askbot -- cgit v1.2.3-1-g7c22
{{ macros.user_website_link(view_user, max_display_length = 30) }}
{% trans %}location{% endtrans %}{{view_user.location}}{{ macros.user_full_location(view_user) }}