summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--askbot/__init__.py2
-rw-r--r--askbot/forms.py49
-rw-r--r--askbot/migrations/0035_add_country_fields_to_user.py311
-rw-r--r--askbot/models/__init__.py6
-rw-r--r--askbot/models/question.py4
-rw-r--r--askbot/setup_templates/settings.py2
-rw-r--r--askbot/skins/default/media/images/flags/.DS_Storebin0 -> 12292 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ad.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ae.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/af.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ag.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ai.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/al.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/am.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/an.gifbin0 -> 368 bytes
-rw-r--r--askbot/skins/default/media/images/flags/ao.gifbin0 -> 244 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ar.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/as.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/at.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/au.gifbin0 -> 378 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/aw.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ax.gifbin0 -> 376 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/az.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ba.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/bb.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/bd.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/be.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/bf.gifbin0 -> 358 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/bg.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/bh.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/bi.gifbin0 -> 374 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/bj.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/bm.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/bn.gifbin0 -> 373 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/bo.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/br.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/bs.gifbin0 -> 351 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/bt.gifbin0 -> 377 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/bv.gifbin0 -> 376 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/bw.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/by.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/bz.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ca.gifbin0 -> 376 bytes
-rw-r--r--askbot/skins/default/media/images/flags/catalonia.gifbin0 -> 238 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/cc.gifbin0 -> 371 bytes
-rw-r--r--askbot/skins/default/media/images/flags/cd.gifbin0 -> 243 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/cf.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/cg.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ch.gifbin0 -> 332 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ci.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ck.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/cl.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/cm.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/cn.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/co.gifbin0 -> 353 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/cr.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/cs.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/cu.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/cv.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/cx.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/cy.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/cz.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/de.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/dj.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/dk.gifbin0 -> 374 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/dm.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/do.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/dz.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ec.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ee.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/eg.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/eh.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/england.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/er.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/es.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/et.gifbin0 -> 364 bytes
-rw-r--r--askbot/skins/default/media/images/flags/europeanunion.gifbin0 -> 171 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/fam.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/fi.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/fj.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/fk.gifbin0 -> 372 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/fm.gifbin0 -> 377 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/fo.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/fr.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ga.gifbin0 -> 359 bytes
-rw-r--r--askbot/skins/default/media/images/flags/gb.gifbin0 -> 260 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/gd.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ge.gifbin0 -> 379 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/gf.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/gh.gifbin0 -> 358 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/gi.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/gl.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/gm.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/gn.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/gp.gifbin0 -> 357 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/gq.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/gr.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/gs.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/gt.gifbin0 -> 374 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/gu.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/gw.gifbin0 -> 358 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/gy.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/hk.gifbin0 -> 373 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/hm.gifbin0 -> 378 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/hn.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/hr.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ht.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/hu.gifbin0 -> 357 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/id.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ie.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/il.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/in.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/io.gifbin0 -> 373 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/iq.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ir.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/is.gifbin0 -> 373 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/it.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/jm.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/jo.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/jp.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ke.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/kg.gifbin0 -> 373 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/kh.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ki.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/km.gifbin0 -> 358 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/kn.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/kp.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/kr.gifbin0 -> 385 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/kw.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ky.gifbin0 -> 373 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/kz.gifbin0 -> 374 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/la.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/lb.gifbin0 -> 366 bytes
-rw-r--r--askbot/skins/default/media/images/flags/lc.gifbin0 -> 259 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/li.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/lk.gifbin0 -> 377 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/lr.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ls.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/lt.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/lu.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/lv.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ly.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ma.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mc.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/md.gifbin0 -> 367 bytes
-rw-r--r--askbot/skins/default/media/images/flags/me.gifbin0 -> 238 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mg.gifbin0 -> 372 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mh.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mk.gifbin0 -> 382 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ml.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mm.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mn.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mo.gifbin0 -> 378 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mp.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mq.gifbin0 -> 379 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mr.gifbin0 -> 377 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ms.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mt.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mu.gifbin0 -> 358 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mv.gifbin0 -> 372 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mw.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mx.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/my.gifbin0 -> 375 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/mz.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/na.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/nc.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ne.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/nf.gifbin0 -> 375 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ng.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ni.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/nl.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/no.gifbin0 -> 376 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/np.gifbin0 -> 302 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/nr.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/nu.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/nz.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/om.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/pa.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/pe.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/pf.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/pg.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ph.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/pk.gifbin0 -> 377 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/pl.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/pm.gifbin0 -> 374 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/pn.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/pr.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ps.gifbin0 -> 358 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/pt.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/pw.gifbin0 -> 374 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/py.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/qa.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/re.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ro.gifbin0 -> 363 bytes
-rw-r--r--askbot/skins/default/media/images/flags/rs.gifbin0 -> 238 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ru.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/rw.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/sa.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/sb.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/sc.gifbin0 -> 357 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/scotland.gifbin0 -> 378 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/sd.gifbin0 -> 355 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/se.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/sg.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/sh.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/si.gifbin0 -> 362 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/sj.gifbin0 -> 376 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/sk.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/sl.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/sm.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/sn.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/so.gifbin0 -> 376 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/sr.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/st.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/sv.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/sy.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/sz.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/tc.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/td.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/tf.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/tg.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/th.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/tj.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/tk.gifbin0 -> 372 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/tl.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/tm.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/tn.gifbin0 -> 375 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/to.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/tr.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/tt.gifbin0 -> 377 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/tv.gifbin0 -> 361 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/tw.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/tz.gifbin0 -> 366 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ua.gifbin0 -> 360 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ug.gifbin0 -> 359 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/um.gifbin0 -> 371 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/us.gifbin0 -> 367 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/uy.gifbin0 -> 373 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/uz.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/va.gifbin0 -> 369 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/vc.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ve.gifbin0 -> 364 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/vg.gifbin0 -> 368 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/vi.gifbin0 -> 376 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/vn.gifbin0 -> 370 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/vu.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/wales.gifbin0 -> 372 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/wf.gifbin0 -> 377 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ws.gifbin0 -> 365 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/ye.gifbin0 -> 356 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/yt.gifbin0 -> 382 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/za.gifbin0 -> 363 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/zm.gifbin0 -> 358 bytes
-rwxr-xr-xaskbot/skins/default/media/images/flags/zw.gifbin0 -> 365 bytes
-rw-r--r--askbot/skins/default/media/js/live_search.js16
-rwxr-xr-xaskbot/skins/default/media/style/style.css22
-rw-r--r--askbot/skins/default/templates/macros.html26
-rw-r--r--askbot/skins/default/templates/user_profile/user_edit.html24
-rw-r--r--askbot/skins/default/templates/user_profile/user_info.html18
-rw-r--r--askbot/skins/default/templates/users.html2
-rw-r--r--askbot/templatetags/extra_filters_jinja.py14
-rw-r--r--askbot/views/readers.py5
-rw-r--r--askbot/views/users.py2
-rw-r--r--setup.py1
264 files changed, 473 insertions, 31 deletions
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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/.DS_Store
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ad.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ae.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/af.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ag.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ai.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/al.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/am.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/an.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ao.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ar.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/as.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/at.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/au.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/aw.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ax.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/az.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ba.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/bb.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/bd.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/be.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/bf.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/bg.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/bh.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/bi.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/bj.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/bm.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/bn.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/bo.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/br.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/bs.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/bt.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/bv.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/bw.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/by.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/bz.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ca.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/catalonia.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/cc.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/cd.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/cf.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/cg.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ch.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ci.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ck.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/cl.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/cm.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/cn.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/co.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/cr.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/cs.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/cu.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/cv.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/cx.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/cy.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/cz.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/de.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/dj.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/dk.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/dm.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/do.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/dz.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ec.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ee.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/eg.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/eh.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/england.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/er.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/es.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/et.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/europeanunion.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/fam.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/fi.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/fj.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/fk.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/fm.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/fo.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/fr.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ga.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gb.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gd.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ge.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gf.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gh.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gi.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gl.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gm.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gn.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gp.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gq.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gr.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gs.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gt.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gu.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gw.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/gy.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/hk.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/hm.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/hn.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/hr.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ht.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/hu.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/id.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ie.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/il.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/in.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/io.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/iq.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ir.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/is.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/it.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/jm.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/jo.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/jp.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ke.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/kg.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/kh.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ki.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/km.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/kn.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/kp.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/kr.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/kw.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ky.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/kz.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/la.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/lb.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/lc.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/li.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/lk.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/lr.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ls.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/lt.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/lu.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/lv.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ly.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ma.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mc.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/md.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/me.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mg.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mh.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mk.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ml.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mm.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mn.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mo.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mp.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mq.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mr.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ms.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mt.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mu.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mv.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mw.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mx.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/my.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/mz.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/na.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/nc.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ne.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/nf.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ng.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ni.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/nl.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/no.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/np.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/nr.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/nu.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/nz.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/om.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/pa.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/pe.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/pf.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/pg.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ph.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/pk.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/pl.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/pm.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/pn.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/pr.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ps.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/pt.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/pw.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/py.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/qa.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/re.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ro.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/rs.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ru.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/rw.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/sa.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/sb.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/sc.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/scotland.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/sd.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/se.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/sg.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/sh.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/si.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/sj.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/sk.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/sl.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/sm.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/sn.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/so.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/sr.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/st.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/sv.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/sy.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/sz.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/tc.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/td.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/tf.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/tg.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/th.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/tj.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/tk.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/tl.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/tm.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/tn.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/to.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/tr.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/tt.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/tv.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/tw.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/tz.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ua.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ug.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/um.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/us.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/uy.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/uz.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/va.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/vc.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ve.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/vg.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/vi.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/vn.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/vu.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/wales.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/wf.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ws.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/ye.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/yt.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/za.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/zm.gif
Binary files 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
--- /dev/null
+++ b/askbot/skins/default/media/images/flags/zw.gif
Binary files 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 '<img class="flag" src="'+
+ mediaUrl(
+ 'media/images/flags/' +
+ country_code.toLowerCase() +
+ '.gif'
+ ) +
+ '"/>';
+ } else {
+ return '';
+ }
+ };
+
var render_user_info = function(result){
var user_html =
'<div class="userinfo">' +
@@ -154,6 +169,7 @@ $(document).ready(function(){
result['timesince'] +
'</span> ' +
render_user_link(result) +
+ render_user_flag(result) +
//render_user_badge_and_karma(result) +
'</div>';
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 %}
+ <img class="flag" src="{{ ('/images/flags/' ~ user.country.code|lower ~ '.gif')|media }}"/>
+ {% 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 %}
</p>
{{ gravatar(post.author, 32) }}
- {{post.author.get_profile_link()}}{% if not post.author.website %}<br/>{% endif %}
+ {{post.author.get_profile_link()}}{{ user_country_flag(post.author)}}{% if not post.author.website %}<br/>{% endif %}
{{ user_score_and_badge_summary(post.author) }}<br/>
{{ user_website_link(post.author) }}
{% endif %}
@@ -204,7 +224,7 @@ poor design of the data or methods on data objects #}
</p>
{% if original_author != update_author or is_wiki %}
{{ gravatar(update_author, 32) }}
- {{update_author.get_profile_link()}}{% if not update_author.website %}<br/>{% endif %}
+ {{update_author.get_profile_link()}}{{ user_country_flag(update_author) }}{% if not update_author.website %}<br/>{% endif %}
{{ user_score_and_badge_summary(update_author) }}<br/>
{{ user_website_link(update_author) }}
{% endif %}
@@ -258,7 +278,7 @@ poor design of the data or methods on data objects #}
<div style="clear:both"></div>
<div class="userinfo">
<span class="relativetime" title="{{question.last_activity_at}}">{{ question.last_activity_at|diff_date }}</span>
- <a href="{% url user_profile question.last_activity_by.id, question.last_activity_by.username|slugify %}">{{question.last_activity_by.username}}</a>
+ <a href="{% url user_profile question.last_activity_by.id, question.last_activity_by.username|slugify %}">{{question.last_activity_by.username}}</a>{{ user_country_flag(question.last_activity_by) }}
{#{user_score_and_badge_summary(question.last_activity_by)}#}
</div>
</div>
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 @@
<th width="100px"></th>
<th></th>
</tr>
- <tr style="height:35px">
+ <tr>
<td>{% trans %}Screen Name{% endtrans %}:</td>
<td>
{% if settings.EDITABLE_SCREEN_NAME %}
@@ -34,31 +34,39 @@
{% endif %}
</td>
</tr>
- <tr style="height:35px">
+ <tr>
<td>{{ form.email.label_tag() }}:</td>
<td>{{ form.email }} <span class="form-error"></span> {{ form.email.errors }} </td>
</tr>
- <tr style="height:35px">
+ <tr>
<td></td>
<td class="title-desc">{{ form.email.help_text }}</td>
</tr>
- <tr style="height:35px">
+ <tr>
<td>{{ form.realname.label_tag() }}:</td>
<td>{{ form.realname }} <span class="form-error"></span> {{ form.realname.errors }} </td>
</tr>
- <tr style="height:35px">
+ <tr>
<td>{{ form.website.label_tag() }}:</td>
<td>{{ form.website }} <span class="form-error"></span> {{ form.website.errors }} </td>
</tr>
- <tr style="height:35px">
+ <tr>
<td>{{ form.city.label_tag() }}:</td>
<td>{{ form.city }} <span class="form-error"></span> {{ form.city.errors }} </td>
</tr>
- <tr style="height:35px">
+ <tr>
+ <td>{{ form.country.label_tag() }}:</td>
+ <td>{{ form.country }} <span class="form-error"></span> {{ form.country.errors }} </td>
+ </tr>
+ <tr>
+ <td>{{ form.show_country.label_tag() }}:</td>
+ <td>{{ form.show_country }} <span class="form-error"></span> {{ form.show_country.errors }} </td>
+ </tr>
+ <tr>
<td>{{ form.birthday.label_tag() }}:</td>
<td>{{ form.birthday }} <span class="form-error"></span> {{ form.birthday.errors }} </td>
</tr>
- <tr style="height:35px">
+ <tr>
<td></td>
<td class="title-desc">{{ form.birthday.help_text }}</td>
</tr>
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 %}
<table class="user-info-table">
<tr>
- <td style="vertical-align:middle;text-align:center;">
+ <td style="vertical-align:top;text-align:center;">
<div class='avatar'>
{{ macros.gravatar(view_user, 128) }}
{% if request.user == view_user %}
@@ -24,19 +24,19 @@
<div class="scoreNumber">{{view_user.reputation|intcomma}}</div>
<p><b style="color:#777;">{% trans %}reputation{% endtrans %}</b></p>
</td>
- <td width="360" style="vertical-align: top;">
+ <td width="360" style="padding-left:5px;vertical-align: top;">
<table class="user-details">
{% if request.user == view_user %}
<tr>
<td class="user-profile-tool-links" align="left" colspan="2">
- {% if request.user == view_user %}
- <a href="{% url user_signin %}?next={% url user_signin %}">
- {% trans %}manage login methods{% endtrans %}
- </a> |
- {% endif %}
<a href="{% url edit_user view_user.id %}">
{% trans %}update profile{% endtrans %}
</a>
+ {% if request.user == view_user %}
+ | <a href="{% url user_signin %}?next={% url user_signin %}">
+ {% trans %}manage login methods{% endtrans %}
+ </a>
+ {% endif %}
</td>
</tr>
{% endif %}
@@ -67,10 +67,10 @@
<td>{{ macros.user_website_link(view_user, max_display_length = 30) }}</td>
</tr>
{% endif %}
- {% if view_user.location %}
+ {% if view_user.location or view_user.country %}
<tr>
<td>{% trans %}location{% endtrans %}</td>
- <td>{{view_user.location}}</td>
+ <td>{{ macros.user_full_location(view_user) }}</td>
</tr>
{% 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 @@
<div class="user">
<ul>
<li class="thumb">{{ macros.gravatar(user, 32) }}</li>
- <li><a href="{% url user_profile user.id, user.username|slugify %}">{{user.username}}</a></li>
+ <li><a href="{% url user_profile user.id, user.username|slugify %}">{{user.username}}</a>{{ macros.user_country_flag(user) }}</li>
<li>{{ macros.user_score_and_badge_summary(user) }}</li>
</ul>
</div>
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,9 +12,23 @@ 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)
return ' '.join(input.split())
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