hotels, countries, cities

remotes/origin/1203
Nazar Kotyuk 12 years ago
parent ad3974c9b8
commit f41b72eac5
  1. 30
      city/models.py
  2. 7
      city/urls.py
  3. 8
      city/views.py
  4. 1
      country/management/__init__.py
  5. 1
      country/management/commands/__init__.py
  6. 25
      country/management/commands/country_coordinates.py
  7. 30
      country/models.py
  8. 8
      country/urls.py
  9. 8
      country/views.py
  10. 1
      directories/management/__init__.py
  11. 1
      directories/management/commands/__init__.py
  12. 36
      directories/management/commands/fill_currencies.py
  13. 758
      directories/management/commands/fill_languages.py
  14. 24
      directories/models.py
  15. 1
      exposition/models.py
  16. 6
      functions/model_mixin.py
  17. 1
      place_exposition/models.py
  18. 33
      proj/settings.py
  19. 2
      proj/urls.py
  20. 5
      proj/views.py
  21. 144
      templates/client/city/city.html
  22. 181
      templates/client/country/country.html
  23. 6
      templates/client/includes/event_list.html
  24. 13
      templates/client/includes/event_object.html
  25. 4
      templates/client/includes/event_steps.html
  26. 2
      templates/client/includes/exposition/exposition_list.html
  27. 15
      templates/client/includes/organiser/organiser_list.html
  28. 2
      templates/client/includes/place/place_list.html
  29. 0
      templates/client/includes/place/place_object.html
  30. 4
      templates/client/place_catalog_test.html

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from datetime import date
from django.db import models from django.db import models
from django.db.models.signals import post_save, pre_save from django.db.models.signals import post_save, pre_save
from hvad.models import TranslatableModel, TranslatedFields, TranslationManager from hvad.models import TranslatableModel, TranslatedFields, TranslationManager
@ -7,6 +8,9 @@ from sorl.thumbnail import ImageField
# models # models
from directories.models import Iata from directories.models import Iata
from service.models import Service from service.models import Service
from exposition.models import Exposition
from place_exposition.models import PlaceExposition
from organiser.models import Organiser
# custom functions # custom functions
from functions.db import db_table_exists from functions.db import db_table_exists
from functions.signal_handlers import post_save_handler from functions.signal_handlers import post_save_handler
@ -24,6 +28,8 @@ class City(TranslatableModel):
""" """
objects = ExpoManager() objects = ExpoManager()
catalog = '/city/'
services = BitField(flags=flags) services = BitField(flags=flags)
url = models.SlugField(unique=True) url = models.SlugField(unique=True)
@ -54,9 +60,30 @@ class City(TranslatableModel):
return self.lazy_translation_getter('name', self.pk) return self.lazy_translation_getter('name', self.pk)
def get_hotels(self): def get_hotels(self):
return self.hotels.all()[:4] return self.hotels.all()[:4]
def get_events(self):
now = date.today()
return Exposition.objects.filter(data_begin__gte=now, city=self).order_by('data_begin')[:3]
def get_places(self):
return PlaceExposition.objects.filter(city=self)[:3]
def get_organisers(self):
return Organiser.objects.filter(city=self)
def get_permanent_url(self):
return self.catalog+self.url
def events_catalog(self):
return Exposition.catalog+'city-%s'%self.url
def places_catalog(self):
return PlaceExposition.catalog+'city-%s'%self.url
class Hotel(TranslatableModel): class Hotel(TranslatableModel):
url = models.URLField(max_length=255) url = models.URLField(max_length=255)
@ -71,7 +98,6 @@ class Hotel(TranslatableModel):
translations = TranslatedFields( translations = TranslatedFields(
name = models.CharField(max_length=255, blank=True), name = models.CharField(max_length=255, blank=True),
address = models.CharField(max_length=255, blank=True) address = models.CharField(max_length=255, blank=True)
) )
post_save.connect(post_save_handler, sender=City) post_save.connect(post_save_handler, sender=City)

@ -0,0 +1,7 @@
# -*- coding: utf-8 -*-
from django.conf.urls import patterns, url
from views import CityView
urlpatterns = patterns('',
url(r'(?P<slug>.*)', CityView.as_view()),
)

@ -0,0 +1,8 @@
from django.views.generic import DetailView
from models import City
class CityView(DetailView):
model = City
slug_field = 'url'
template_name = 'city/city.html'

@ -0,0 +1 @@
__author__ = 'kotzilla'

@ -0,0 +1 @@
__author__ = 'kotzilla'

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
import MySQLdb
from MySQLdb.cursors import DictCursor
from django.core.management.base import BaseCommand, CommandError
from country.models import Country
class Command(BaseCommand):
def handle(self, *args, **options):
# local database(will not work on production)
db = MySQLdb.connect(host="localhost",
user="root",
passwd="qazedc",
db="test",
charset='utf8',
cursorclass=DictCursor)
cursor = db.cursor()
# !!!database can change
sql = "SELECT country_code as code, geo_lat as latitude, geo_lng as longitude FROM test.country_country LEFT JOIN localization.meta_location ON test.country_country.country_code=localization.meta_location.iso COLLATE utf8_unicode_ci WHERE localization.meta_location.type='CO' AND geo_lat IS NOT NULL;"
cursor.execute(sql)
result = cursor.fetchall()
for item in result:
updates = Country.objects.filter(country_code=item['code']).update(latitude=item['latitude'], longitude=item['longitude'])
if updates:
print(item['code'])

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from datetime import date
from django.db import models from django.db import models
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.contrib.contenttypes import generic from django.contrib.contenttypes import generic
@ -9,6 +10,9 @@ from bitfield import BitField
from directories.models import Language, Currency from directories.models import Language, Currency
from city.models import City from city.models import City
from service.models import Service from service.models import Service
from exposition.models import Exposition
from place_exposition.models import PlaceExposition
from organiser.models import Organiser
# func # func
from functions.custom_fields import EnumField from functions.custom_fields import EnumField
from functions.db import db_table_exists from functions.db import db_table_exists
@ -40,6 +44,7 @@ class Area(TranslatableModel):
def __unicode__(self): def __unicode__(self):
return self.lazy_translation_getter('name', unicode(self.pk)) return self.lazy_translation_getter('name', unicode(self.pk))
class Country(TranslatableModel): class Country(TranslatableModel):
""" """
Create Country model Create Country model
@ -49,6 +54,8 @@ class Country(TranslatableModel):
""" """
objects = CountryManager() objects = CountryManager()
catalog = '/country/'
services = BitField(flags=flags) services = BitField(flags=flags)
url = models.SlugField(unique=True) url = models.SlugField(unique=True)
# relations # relations
@ -64,6 +71,8 @@ class Country(TranslatableModel):
phone_code = models.PositiveIntegerField(blank=True, null=True) phone_code = models.PositiveIntegerField(blank=True, null=True)
time_delivery = models.PositiveSmallIntegerField(blank=True, null=True) time_delivery = models.PositiveSmallIntegerField(blank=True, null=True)
latitude = models.FloatField(blank=True, null=True)
longitude = models.FloatField(blank=True, null=True)
# fields saves information about creating and changing model # fields saves information about creating and changing model
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
@ -93,4 +102,25 @@ class Country(TranslatableModel):
def __unicode__(self): def __unicode__(self):
return self.lazy_translation_getter('name', unicode(self.pk)) return self.lazy_translation_getter('name', unicode(self.pk))
def get_events(self):
now = date.today()
return Exposition.objects.filter(data_begin__gte=now, country=self).order_by('data_begin')[:3]
def get_places(self):
return PlaceExposition.objects.filter(country=self)[:3]
def get_organisers(self):
return Organiser.objects.filter(country=self)
def get_permanent_url(self):
return self.catalog+self.url
def events_catalog(self):
return Exposition.catalog+'country-%s'%self.url
def places_catalog(self):
return PlaceExposition.catalog+'country-%s'%self.url
post_save.connect(post_save_handler, sender=Country) post_save.connect(post_save_handler, sender=Country)

@ -0,0 +1,8 @@
# -*- coding: utf-8 -*-
from django.conf.urls import patterns, url
from views import CountryView
urlpatterns = patterns('',
url(r'(?P<slug>.*)', CountryView.as_view()),
)

@ -0,0 +1,8 @@
from django.views.generic import DetailView
from models import Country
class CountryView(DetailView):
model = Country
slug_field = 'url'
template_name = 'country/country.html'

@ -0,0 +1 @@
__author__ = 'kotzilla'

@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
import MySQLdb
from MySQLdb.cursors import DictCursor
from django.core.management.base import BaseCommand, CommandError
from directories.models import Currency
class Command(BaseCommand):
def handle(self, *args, **options):
# local database(will not work on production)
db = MySQLdb.connect(host="localhost",
user="root",
passwd="qazedc",
db="test",
charset='utf8',
cursorclass=DictCursor)
cursor = db.cursor()
# !!!database can change
sql = "SELECT code, name FROM localization.currencies;"
cursor.execute(sql)
result = cursor.fetchall()
for item in result:
try:
currency = Currency.objects.get(code=item['code'])
print('currency with code %s already exist'%currency.code)
continue
except Currency.DoesNotExist:
currency = Currency(code=item['code'])
currency.translate('ru')
currency.name = item['name']
currency.save()
currency.translate('en')
currency.name = item['name']
currency.save()
print(currency.code)

@ -0,0 +1,758 @@
# -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand, CommandError
from directories.models import Language
isoLangs = {
"ab":{
"name":"Abkhaz",
"nativeName":"аҧсуа"
},
"aa":{
"name":"Afar",
"nativeName":"Afaraf"
},
"af":{
"name":"Afrikaans",
"nativeName":"Afrikaans"
},
"ak":{
"name":"Akan",
"nativeName":"Akan"
},
"sq":{
"name":"Albanian",
"nativeName":"Shqip"
},
"am":{
"name":"Amharic",
"nativeName":"አማርኛ"
},
"ar":{
"name":"Arabic",
"nativeName":"العربية"
},
"an":{
"name":"Aragonese",
"nativeName":"Aragonés"
},
"hy":{
"name":"Armenian",
"nativeName":"Հայերեն"
},
"as":{
"name":"Assamese",
"nativeName":"অসম"
},
"av":{
"name":"Avaric",
"nativeName":"авар мацӀ, магӀарул мацӀ"
},
"ae":{
"name":"Avestan",
"nativeName":"avesta"
},
"ay":{
"name":"Aymara",
"nativeName":"aymar aru"
},
"az":{
"name":"Azerbaijani",
"nativeName":"azərbaycan dili"
},
"bm":{
"name":"Bambara",
"nativeName":"bamanankan"
},
"ba":{
"name":"Bashkir",
"nativeName":"башҡорт теле"
},
"eu":{
"name":"Basque",
"nativeName":"euskara, euskera"
},
"be":{
"name":"Belarusian",
"nativeName":"Беларуская"
},
"bn":{
"name":"Bengali",
"nativeName":""
},
"bh":{
"name":"Bihari",
"nativeName":"जप"
},
"bi":{
"name":"Bislama",
"nativeName":"Bislama"
},
"bs":{
"name":"Bosnian",
"nativeName":"bosanski jezik"
},
"br":{
"name":"Breton",
"nativeName":"brezhoneg"
},
"bg":{
"name":"Bulgarian",
"nativeName":"български език"
},
"my":{
"name":"Burmese",
"nativeName":"ဗမ"
},
"ca":{
"name":"Catalan; Valencian",
"nativeName":"Català"
},
"ch":{
"name":"Chamorro",
"nativeName":"Chamoru"
},
"ce":{
"name":"Chechen",
"nativeName":"нохчийн мотт"
},
"ny":{
"name":"Chichewa; Chewa; Nyanja",
"nativeName":"chiCheŵa, chinyanja"
},
"zh":{
"name":"Chinese",
"nativeName":"中文 (Zhōngwén), 汉语, 漢語"
},
"cv":{
"name":"Chuvash",
"nativeName":"чӑваш чӗлхи"
},
"kw":{
"name":"Cornish",
"nativeName":"Kernewek"
},
"co":{
"name":"Corsican",
"nativeName":"corsu, lingua corsa"
},
"cr":{
"name":"Cree",
"nativeName":"ᓀᐦᐃᔭᐍᐏᐣ"
},
"hr":{
"name":"Croatian",
"nativeName":"hrvatski"
},
"cs":{
"name":"Czech",
"nativeName":"česky, čeština"
},
"da":{
"name":"Danish",
"nativeName":"dansk"
},
"dv":{
"name":"Divehi; Dhivehi; Maldivian;",
"nativeName":"ދިވެހި"
},
"nl":{
"name":"Dutch",
"nativeName":"Nederlands, Vlaams"
},
"en":{
"name":"English",
"nativeName":"English"
},
"eo":{
"name":"Esperanto",
"nativeName":"Esperanto"
},
"et":{
"name":"Estonian",
"nativeName":"eesti, eesti keel"
},
"ee":{
"name":"Ewe",
"nativeName":"Eʋegbe"
},
"fo":{
"name":"Faroese",
"nativeName":"føroyskt"
},
"fj":{
"name":"Fijian",
"nativeName":"vosa Vakaviti"
},
"fi":{
"name":"Finnish",
"nativeName":"suomi, suomen kieli"
},
"fr":{
"name":"French",
"nativeName":"français, langue française"
},
"ff":{
"name":"Fula; Fulah; Pulaar; Pular",
"nativeName":"Fulfulde, Pulaar, Pular"
},
"gl":{
"name":"Galician",
"nativeName":"Galego"
},
"ka":{
"name":"Georgian",
"nativeName":"ქართული"
},
"de":{
"name":"German",
"nativeName":"Deutsch"
},
"el":{
"name":"Greek, Modern",
"nativeName":"Ελληνικά"
},
"gn":{
"name":"Guaraní",
"nativeName":"Avañeẽ"
},
"gu":{
"name":"Gujarati",
"nativeName":"જર"
},
"ht":{
"name":"Haitian; Haitian Creole",
"nativeName":"Kreyòl ayisyen"
},
"ha":{
"name":"Hausa",
"nativeName":"Hausa, هَوُسَ"
},
"he":{
"name":"Hebrew (modern)",
"nativeName":"עברית"
},
"hz":{
"name":"Herero",
"nativeName":"Otjiherero"
},
"hi":{
"name":"Hindi",
"nativeName":"ि, हि"
},
"ho":{
"name":"Hiri Motu",
"nativeName":"Hiri Motu"
},
"hu":{
"name":"Hungarian",
"nativeName":"Magyar"
},
"ia":{
"name":"Interlingua",
"nativeName":"Interlingua"
},
"id":{
"name":"Indonesian",
"nativeName":"Bahasa Indonesia"
},
"ie":{
"name":"Interlingue",
"nativeName":"Originally called Occidental; then Interlingue after WWII"
},
"ga":{
"name":"Irish",
"nativeName":"Gaeilge"
},
"ig":{
"name":"Igbo",
"nativeName":"Asụsụ Igbo"
},
"ik":{
"name":"Inupiaq",
"nativeName":"Iñupiaq, Iñupiatun"
},
"io":{
"name":"Ido",
"nativeName":"Ido"
},
"is":{
"name":"Icelandic",
"nativeName":"Íslenska"
},
"it":{
"name":"Italian",
"nativeName":"Italiano"
},
"iu":{
"name":"Inuktitut",
"nativeName":"ᐃᓄᒃᑎᑐᑦ"
},
"ja":{
"name":"Japanese",
"nativeName":"日本語 (にほんご/にっぽんご)"
},
"jv":{
"name":"Javanese",
"nativeName":"basa Jawa"
},
"kl":{
"name":"Kalaallisut, Greenlandic",
"nativeName":"kalaallisut, kalaallit oqaasii"
},
"kn":{
"name":"Kannada",
"nativeName":"ಕನನಡ"
},
"kr":{
"name":"Kanuri",
"nativeName":"Kanuri"
},
"ks":{
"name":"Kashmiri",
"nativeName":"कश, كشميري"
},
"kk":{
"name":"Kazakh",
"nativeName":"Қазақ тілі"
},
"km":{
"name":"Khmer",
"nativeName":""
},
"ki":{
"name":"Kikuyu, Gikuyu",
"nativeName":"Gĩkũyũ"
},
"rw":{
"name":"Kinyarwanda",
"nativeName":"Ikinyarwanda"
},
"ky":{
"name":"Kirghiz, Kyrgyz",
"nativeName":"кыргыз тили"
},
"kv":{
"name":"Komi",
"nativeName":"коми кыв"
},
"kg":{
"name":"Kongo",
"nativeName":"KiKongo"
},
"ko":{
"name":"Korean",
"nativeName":"한국어 (韓國語), 조선말 (朝鮮語)"
},
"ku":{
"name":"Kurdish",
"nativeName":"Kurdî, كوردی"
},
"kj":{
"name":"Kwanyama, Kuanyama",
"nativeName":"Kuanyama"
},
"la":{
"name":"Latin",
"nativeName":"latine, lingua latina"
},
"lb":{
"name":"Luxembourgish, Letzeburgesch",
"nativeName":"Lëtzebuergesch"
},
"lg":{
"name":"Luganda",
"nativeName":"Luganda"
},
"li":{
"name":"Limburgish, Limburgan, Limburger",
"nativeName":"Limburgs"
},
"ln":{
"name":"Lingala",
"nativeName":"Lingála"
},
"lo":{
"name":"Lao",
"nativeName":"ພາສາລາວ"
},
"lt":{
"name":"Lithuanian",
"nativeName":"lietuvių kalba"
},
"lu":{
"name":"Luba-Katanga",
"nativeName":""
},
"lv":{
"name":"Latvian",
"nativeName":"latviešu valoda"
},
"gv":{
"name":"Manx",
"nativeName":"Gaelg, Gailck"
},
"mk":{
"name":"Macedonian",
"nativeName":"македонски јазик"
},
"mg":{
"name":"Malagasy",
"nativeName":"Malagasy fiteny"
},
"ms":{
"name":"Malay",
"nativeName":"bahasa Melayu, بهاس ملايو"
},
"ml":{
"name":"Malayalam",
"nativeName":"മലയ"
},
"mt":{
"name":"Maltese",
"nativeName":"Malti"
},
"mi":{
"name":"Māori",
"nativeName":"te reo Māori"
},
"mr":{
"name":"Marathi (Marāṭhī)",
"nativeName":"मर"
},
"mh":{
"name":"Marshallese",
"nativeName":"Kajin M̧ajeļ"
},
"mn":{
"name":"Mongolian",
"nativeName":"монгол"
},
"na":{
"name":"Nauru",
"nativeName":"Ekakairũ Naoero"
},
"nv":{
"name":"Navajo, Navaho",
"nativeName":"Diné bizaad, Dinékʼehǰí"
},
"nb":{
"name":"Norwegian Bokmål",
"nativeName":"Norsk bokmål"
},
"nd":{
"name":"North Ndebele",
"nativeName":"isiNdebele"
},
"ne":{
"name":"Nepali",
"nativeName":""
},
"ng":{
"name":"Ndonga",
"nativeName":"Owambo"
},
"nn":{
"name":"Norwegian Nynorsk",
"nativeName":"Norsk nynorsk"
},
"no":{
"name":"Norwegian",
"nativeName":"Norsk"
},
"ii":{
"name":"Nuosu",
"nativeName":"ꆈꌠ꒿ Nuosuhxop"
},
"nr":{
"name":"South Ndebele",
"nativeName":"isiNdebele"
},
"oc":{
"name":"Occitan",
"nativeName":"Occitan"
},
"oj":{
"name":"Ojibwe, Ojibwa",
"nativeName":"ᐊᓂᔑᓈᐯᒧᐎᓐ"
},
"cu":{
"name":"Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic",
"nativeName":"ѩзыкъ словѣньскъ"
},
"om":{
"name":"Oromo",
"nativeName":"Afaan Oromoo"
},
"or":{
"name":"Oriya",
"nativeName":"ଓଡି"
},
"os":{
"name":"Ossetian, Ossetic",
"nativeName":"ирон æвзаг"
},
"pa":{
"name":"Panjabi, Punjabi",
"nativeName":", پنجابی"
},
"pi":{
"name":"Pāli",
"nativeName":"ि"
},
"fa":{
"name":"Persian",
"nativeName":"فارسی"
},
"pl":{
"name":"Polish",
"nativeName":"polski"
},
"ps":{
"name":"Pashto, Pushto",
"nativeName":"پښتو"
},
"pt":{
"name":"Portuguese",
"nativeName":"Português"
},
"qu":{
"name":"Quechua",
"nativeName":"Runa Simi, Kichwa"
},
"rm":{
"name":"Romansh",
"nativeName":"rumantsch grischun"
},
"rn":{
"name":"Kirundi",
"nativeName":"kiRundi"
},
"ro":{
"name":"Romanian, Moldavian, Moldovan",
"nativeName":"română"
},
"ru":{
"name":"Russian",
"nativeName":"русский язык"
},
"sa":{
"name":"Sanskrit (Saṁskṛta)",
"nativeName":"तम"
},
"sc":{
"name":"Sardinian",
"nativeName":"sardu"
},
"sd":{
"name":"Sindhi",
"nativeName":"ि, سنڌي، سندھی"
},
"se":{
"name":"Northern Sami",
"nativeName":"Davvisámegiella"
},
"sm":{
"name":"Samoan",
"nativeName":"gagana faa Samoa"
},
"sg":{
"name":"Sango",
"nativeName":"yângâ tî sängö"
},
"sr":{
"name":"Serbian",
"nativeName":"српски језик"
},
"gd":{
"name":"Scottish Gaelic; Gaelic",
"nativeName":"Gàidhlig"
},
"sn":{
"name":"Shona",
"nativeName":"chiShona"
},
"si":{
"name":"Sinhala, Sinhalese",
"nativeName":"හල"
},
"sk":{
"name":"Slovak",
"nativeName":"slovenčina"
},
"sl":{
"name":"Slovene",
"nativeName":"slovenščina"
},
"so":{
"name":"Somali",
"nativeName":"Soomaaliga, af Soomaali"
},
"st":{
"name":"Southern Sotho",
"nativeName":"Sesotho"
},
"es":{
"name":"Spanish; Castilian",
"nativeName":"español, castellano"
},
"su":{
"name":"Sundanese",
"nativeName":"Basa Sunda"
},
"sw":{
"name":"Swahili",
"nativeName":"Kiswahili"
},
"ss":{
"name":"Swati",
"nativeName":"SiSwati"
},
"sv":{
"name":"Swedish",
"nativeName":"svenska"
},
"ta":{
"name":"Tamil",
"nativeName":"தமி"
},
"te":{
"name":"Telugu",
"nativeName":""
},
"tg":{
"name":"Tajik",
"nativeName":"тоҷикӣ, toğikī, تاجیکی"
},
"th":{
"name":"Thai",
"nativeName":"ไทย"
},
"ti":{
"name":"Tigrinya",
"nativeName":"ትግርኛ"
},
"bo":{
"name":"Tibetan Standard, Tibetan, Central",
"nativeName":"ད་ཡ"
},
"tk":{
"name":"Turkmen",
"nativeName":"Türkmen, Түркмен"
},
"tl":{
"name":"Tagalog",
"nativeName":"Wikang Tagalog, ᜏᜃᜅ ᜆᜄᜎ"
},
"tn":{
"name":"Tswana",
"nativeName":"Setswana"
},
"to":{
"name":"Tonga (Tonga Islands)",
"nativeName":"faka Tonga"
},
"tr":{
"name":"Turkish",
"nativeName":"Türkçe"
},
"ts":{
"name":"Tsonga",
"nativeName":"Xitsonga"
},
"tt":{
"name":"Tatar",
"nativeName":"татарча, tatarça, تاتارچا"
},
"tw":{
"name":"Twi",
"nativeName":"Twi"
},
"ty":{
"name":"Tahitian",
"nativeName":"Reo Tahiti"
},
"ug":{
"name":"Uighur, Uyghur",
"nativeName":"Uyƣurqə, ئۇيغۇرچە"
},
"uk":{
"name":"Ukrainian",
"nativeName":"українська"
},
"ur":{
"name":"Urdu",
"nativeName":"اردو"
},
"uz":{
"name":"Uzbek",
"nativeName":"zbek, Ўзбек, أۇزبېك"
},
"ve":{
"name":"Venda",
"nativeName":"Tshivenḓa"
},
"vi":{
"name":"Vietnamese",
"nativeName":"Tiếng Việt"
},
"vo":{
"name":"Volapük",
"nativeName":"Volapük"
},
"wa":{
"name":"Walloon",
"nativeName":"Walon"
},
"cy":{
"name":"Welsh",
"nativeName":"Cymraeg"
},
"wo":{
"name":"Wolof",
"nativeName":"Wollof"
},
"fy":{
"name":"Western Frisian",
"nativeName":"Frysk"
},
"xh":{
"name":"Xhosa",
"nativeName":"isiXhosa"
},
"yi":{
"name":"Yiddish",
"nativeName":"ייִדיש"
},
"yo":{
"name":"Yoruba",
"nativeName":"Yorùbá"
},
"za":{
"name":"Zhuang, Chuang",
"nativeName":"Saɯ cueŋƅ, Saw cuengh"
}
}
class Command(BaseCommand):
def handle(self, *args, **options):
for code, value in isoLangs.iteritems():
print(code)
try:
language = Language.objects.get(code=code)
print('Language with code %s alredy exist'%language.code)
continue
except Language.DoesNotExist:
language = Language(code=code, language=value['nativeName'])
language.translate('ru')
language.name = value['name']
language.save()
language.translate('en')
language.name = value['name']
language.save()
print(language.code)

@ -1,31 +1,41 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.db import models from django.db import models
from hvad.models import TranslatableModel, TranslatedFields, TranslationManager
class Language(models.Model): class Language(TranslatableModel):
""" """
Creates Language model Creates Language model
""" """
language = models.CharField(max_length=50) language = models.CharField(max_length=255)# native language name
code = models.CharField(max_length=2)
# name for translations(ex: russian, русский)
translations = TranslatedFields(
name = models.CharField(max_length='255', blank='True')
)
def __unicode__(self): def __unicode__(self):
return self.language return self.language
class Currency(models.Model): class Currency(TranslatableModel):
""" """
Creates Currency model Creates Currency model
""" """
currency = models.CharField(max_length=20) code = models.CharField(max_length=3)
translations = TranslatedFields(
name = models.CharField(max_length='255', blank='True')
)
def __unicode__(self): def __unicode__(self):
return self.currency return self.code
class Iata (models.Model): class Iata (models.Model):
""" """
Creates Iata model Creates Iata model
""" """
airport = models.CharField(max_length=50) airport = models.CharField(max_length=255)
code = models.CharField(max_length=5) code = models.CharField(max_length=4)
def __unicode__(self): def __unicode__(self):
return self.code return self.code

@ -71,6 +71,7 @@ class Exposition(TranslatableModel, EventMixin, ExpoMixin):
periodic = models.FloatField(verbose_name='Переодичность', blank=True, null=True) periodic = models.FloatField(verbose_name='Переодичность', blank=True, null=True)
#audience = EnumField(values=AUDIENCE, blank=True) #audience = EnumField(values=AUDIENCE, blank=True)
web_page = models.CharField(verbose_name='Вебсайт', max_length=255, blank=True) web_page = models.CharField(verbose_name='Вебсайт', max_length=255, blank=True)
registration_link = models.URLField(verbose_name='Ссылка на регистрацию', max_length=255, blank=True)
min_area = models.PositiveIntegerField(verbose_name='Минимальная площадь', blank=True, null=True) min_area = models.PositiveIntegerField(verbose_name='Минимальная площадь', blank=True, null=True)
# #
currency = EnumField(values=CURRENCY, default='USD') currency = EnumField(values=CURRENCY, default='USD')

@ -1,5 +1,6 @@
from service.models import Service
import calendar as python_calendar import calendar as python_calendar
from service.models import Service
class ExpoMixin(object): class ExpoMixin(object):
@ -86,6 +87,3 @@ class EventMixin(object):
return self.data_end.day return self.data_end.day
return 0 return 0

@ -32,6 +32,7 @@ class PlaceExposition(TranslatableModel, ExpoMixin):
""" """
#set manager of this model #set manager of this model
objects = ExpoManager() objects = ExpoManager()
catalog = '/places/'
url = models.SlugField(unique=True, max_length=255) url = models.SlugField(unique=True, max_length=255)
country = models.ForeignKey('country.Country', on_delete=models.PROTECT) country = models.ForeignKey('country.Country', on_delete=models.PROTECT)

@ -94,17 +94,17 @@ CKEDITOR_CONFIGS = {
}, },
} }
TINYMCE_JS_URL = os.path.join(MEDIA_ROOT, "js/tiny_mce/tiny_mce.js") #TINYMCE_JS_URL = os.path.join(MEDIA_ROOT, "js/tiny_mce/tiny_mce.js")
TINYMCE_DEFAULT_CONFIG = { #TINYMCE_DEFAULT_CONFIG = {
'plugins': "table,spellchecker,paste,searchreplace", # 'plugins': "table,spellchecker,paste,searchreplace",
'theme': "advanced", # 'theme': "advanced",
'cleanup_on_startup': True, # 'cleanup_on_startup': True,
'custom_undo_redo_levels': 10, # 'custom_undo_redo_levels': 10,
'width' : 565, # 'width' : 565,
'height' : 100 # 'height' : 100
} #}
TINYMCE_SPELLCHECKER = True #TINYMCE_SPELLCHECKER = True
TINYMCE_COMPRESSOR = True #TINYMCE_COMPRESSOR = True
# URL that handles the media served from MEDIA_ROOT. Make sure to use a # URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash. # trailing slash.
@ -122,12 +122,6 @@ STATIC_ROOT = os.path.join(SITE_ROOT, 'static')
STATIC_URL = '/static/' STATIC_URL = '/static/'
# Additional locations of static files # Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
'',#'/home/kotzilla/Documents/qwer/static',
)
# List of finder classes that know how to find static files in # List of finder classes that know how to find static files in
# various locations. # various locations.
@ -174,8 +168,9 @@ MIDDLEWARE_CLASSES = (
'social.apps.django_app.middleware.SocialAuthExceptionMiddleware', 'social.apps.django_app.middleware.SocialAuthExceptionMiddleware',
# 'django.middleware.cache.FetchFromCacheMiddleware', # 'django.middleware.cache.FetchFromCacheMiddleware',
# Uncomment the next line for simple clickjacking protection: # Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',
#'debug_toolbar.middleware.DebugToolbarMiddleware',#должно быть последним полем 'debug_toolbar.middleware.DebugToolbarMiddleware',#должно быть последним полем
) )
ROOT_URLCONF = 'proj.urls' ROOT_URLCONF = 'proj.urls'

@ -15,6 +15,8 @@ urlpatterns = patterns('',
url(r'^', include('webinar.urls')), url(r'^', include('webinar.urls')),
url(r'^', include('company.urls')), url(r'^', include('company.urls')),
url(r'^', include('photoreport.urls')), url(r'^', include('photoreport.urls')),
url(r'^country/', include('country.urls')),
url(r'^city/', include('city.urls')),
url(r'^organiser/', include('organiser.urls')), url(r'^organiser/', include('organiser.urls')),

@ -61,10 +61,6 @@ def home(request):
return render_to_response('index.html', args, context_instance=RequestContext(request)) return render_to_response('index.html', args, context_instance=RequestContext(request))
class Test(ExpoListView): class Test(ExpoListView):
model = Exposition model = Exposition
@ -75,4 +71,3 @@ class AdvertisingView(TemplateView):
class AboutView(TemplateView): class AboutView(TemplateView):
template_name = 'simple_pages/about.html' template_name = 'simple_pages/about.html'

@ -0,0 +1,144 @@
{% extends 'base_catalog.html' %}
{% load static %}
{% load i18n %}
{% block bread_scrumbs %}
<div class="bread-crumbs">
<a href="/">{% trans 'Главная страница' %}</a>
<strong>{{ object.name }}</strong>
</div>
{% endblock %}
{% block page_title %}
{% endblock %}
{% block content_list %}
<div class="m-article">
<div class="item-wrap place clearfix">
<aside>
<div class="i-pict">
{% include 'client/includes/show_logo.html' with obj=object %}
</div>
</aside>
<div class="i-info">
<header>
<div class="i-title">{{ object.name }}</div>
</header>
<table class="country_table">
<tr>
<td>
<ul>
{% if object.population %}
<li><strong>{% trans 'Население' %}:</strong><span>{{ object.population }} {% trans 'человек' %}</span></li>
{% endif %}
{% if object.code_IATA %}
<li>Код IATA:<span>{{ object.code_IATA.code }}</span></li>
{% endif %}
{% if object.phone_code %}
<li>{% trans 'Телефонный код' %}:<span>+{{ object.phone_code }}</span></li>
{% endif %}
{% if object.transport %}
<li><i>{% trans 'Транспорт' %}:</i><span>{{ object.transport }}</span></li>
{% endif %}
</ul>
</td>
</tr>
</table>
<div class="i-address map-opened country_map">
<div class="i-map">
<!-- позиция для карты задается в атрибуте data-coords -->
<div class="map-canvas" id="map-canvas" data-coords="{{ object.latitude|stringformat:'f' }},{{ object.longitude|stringformat:'f' }}" ></div>
<div class="close-map"><a class="toggle-map" href="#">{% trans 'Скрыть карту' %}</a></div>
</div>
<header>
<div class="show-map show-map_1"><a class="toggle-map" href="#">{% trans 'Раскрыть карту' %}</a></div>
</header>
</div>
</div>
</div>
<table class="map_info_block">
{% if object.famous_places %}
<tr>
<th>{% trans 'Должны посетить' %}:</th>
<td class="width_1">
{{ object.famous_places }}
</td>
</tr>
{% endif %}
{% if object.shoping %}
<tr>
<th>{% trans 'Шоппинг' %}:</th>
<td class="width_1">
{{ object.shoping }}
</td>
</tr>
{% endif %}
</table>
{% if object.description %}
<hr />
<div class="i-services country_content">
<div class="sect-title">Описание</div>
<div class="i-descr">
{{ object.description }}
</div>
</div>
{% endif %}
{% if object.get_photos %}
<div class="i-photo-slides i-photo-slides_1">
<div class="sect-title">Фотогалерея</div>
<div id="ps-photo-gallery" class="ps-photo-gallery swiper-container">
<ul class="swiper-wrapper">
<li class="swiper-slide"><img src="img/_del-temp/place-photo-1.jpg" alt="" /></li>
<li class="swiper-slide"><img src="img/_del-temp/event-photo-1.jpg" alt="" /></li>
</ul>
<div class="re-controls">
<a class="prev" href="#">&lt;</a>
<a class="next" href="#">&gt;</a>
</div>
</div>
</div>
{% endif %}
</div>
{% if object.get_events %}
<br>
<div class="i-events-list">
<div class="sect-title blog_link">
<a href="#" title="">{% trans 'События в' %} {{ object.name }}</a><a class="button more" href="{{ object.events_catalog }}">{% trans 'Все события' %}</a>
</div>
{% include 'includes/exposition/exposition_list.html' with object_list=object.get_events %}
</div>
{% endif %}
{% if object.get_places %}
<br>
<div class="i-events-list">
<div class="sect-title blog_link">
<a href="#" title="">{% trans 'Места в' %} {{ object.name }}</a><a class="button more" href="{{ object.places_catalog }}">{% trans 'Все места' %}</a>
</div>
{% include 'includes/place/place_list.html' with object_list=object.get_places %}
</div>
{% endif %}
{% if object.get_organisers %}
<br>
<div class="i-events-list">
<div class="sect-title blog_link">
<a href="#" title="">{% trans 'Организаторы в' %} {{ object.name }}</a><a class="button more" href="#">{% trans 'Все организаторы' %} </a>
</div>
{% include 'includes/organiser/organiser_list.html' with object_list=object.get_organisers %}
</div>
{% endif %}
{% endblock %}

@ -0,0 +1,181 @@
{% extends 'base_catalog.html' %}
{% load static %}
{% load i18n %}
{% block bread_scrumbs %}
<div class="bread-crumbs">
<a href="/">{% trans 'Главная страница' %}</a>
<strong>{{ object.name }}</strong>
</div>
{% endblock %}
{% block page_title %}
{% endblock %}
{% block content_list %}
<div class="m-article">
<div class="item-wrap place clearfix">
<aside>
<div class="i-pict">
{% include 'client/includes/show_logo.html' with obj=object %}
</div>
</aside>
<div class="i-info">
<header>
<div class="i-title">{{ object.name }}</div>
</header>
<table class="country_table">
<tr>
<td>
<ul>
{% if object.capital %}
<li><strong>{% trans 'Столица' %}:</strong><span><a href="/city/{{ object.capital.url }}" title="">{{ object.capital.name }}</a></span></li>
{% endif %}
{% if object.language.all %}
<li>{% trans 'Официальный язык' %}:
{% for lang in object.language.all %}
<span>{{ lang.name }}</span>
{% endfor %}
</li>
{% endif %}
{% if object.timezone %}
<li>{% trans 'Часовая зона' %}:<span>{{ object.timezone }}</span></li>
<li>{% trans 'Часовые пояса' %}:<span>среднее время по Гринвичу</span></li>
{% endif %}
</ul>
</td>
<td>
<ul>
{% if object.population %}
<li>{% trans 'Население' %}:<span>{{ object.population }} {% trans 'человек' %}</span></li>
{% endif %}
{% if object.phone_code %}
<li>{% trans 'Телефонный код' %}:<span>+ {{ object.phone_code }}</span></li>
{% endif %}
{% if object.currency.all %}
<li>{% trans 'Валюта' %}:
{% for currency in object.currency.all %}
<span>{{ currency.code }}</span>
{% endfor %}
{% endif %}
</li>
</ul>
</td>
</tr>
</table>
{% if object.latitude %}
<div class="i-address map-opened country_map">
<div class="i-map">
<!-- позиция для карты задается в атрибуте data-coords -->
<div class="map-canvas" id="map-canvas" data-coords="{{ object.latitude|stringformat:'f' }},{{ object.longitude|stringformat:'f' }}" ></div>
<div class="close-map"><a class="toggle-map" href="#">{% trans 'Скрыть карту' %}</a></div>
</div>
<header>
<div class="show-map show-map_1"><a class="toggle-map" href="#">{% trans 'Раскрыть карту' %}</a></div>
</header>
</div>
</div>
{% endif %}
</div>
{% if object.big_cities.all %}
<div class="country_towns">
<h4>{% trans 'Крупные города' %}:</h4>
<table>
<tr>
<td>
<ul>
{% for city in object.big_cities.all %}
<li><a href="#" title="">{{ city.name }}</a></li>
{% endfor %}
</ul>
</td>
<th>&nbsp;</th>
</tr>
</table>
</div>
{% endif %}
<hr />
{% if object.description %}
<div class="i-services country_content">
<div class="sect-title">{% trans 'Описание' %}</div>
<div class="i-descr">
{{ object.description }}
</div>
</div>
{% endif %}
{% if object.get_photos %}
<div class="i-photo-slides">
<div class="sect-title">{% trans 'Фотогалерея' %}</div>
<div id="ps-photo-gallery" class="ps-photo-gallery swiper-container">
<ul class="swiper-wrapper">
<li class="swiper-slide"><img src="img/_del-temp/place-photo-1.jpg" alt="" /></li>
<li class="swiper-slide"><img src="img/_del-temp/event-photo-1.jpg" alt="" /></li>
</ul>
<div class="re-controls">
<a class="prev" href="#">&lt;</a>
<a class="next" href="#">&gt;</a>
</div>
</div>
</div>
<hr>
{% endif %}
{% if object.rules %}
<div class="i-services country_content">
<div class="sect-title">{% trans 'Визовая информация' %}</div>
<div class="i-descr">
{{ object.rules }}
</div>
</div>
{% endif %}
{% if object.documents or object.consulate %}
<table class="country_content_table">
<tr>
<td>
<h4>{% trans 'Документы' %}</h4>
<ul>
{{ object.documents }}
</ul>
</td>
<td class="delimiter">&nbsp;</td>
<th>
{{ object.consulate }}
</th>
</tr>
</table>
{% endif %}
</div>
{% if object.get_events %}
<br>
<div class="i-events-list">
<div class="sect-title blog_link">
<a href="#" title="">{% trans 'События в' %} {{ object.name }}</a><a class="button more" href="{{ object.events_catalog }}">{% trans 'Все события' %}</a>
</div>
{% include 'includes/exposition/exposition_list.html' with object_list=object.get_events %}
</div>
{% endif %}
{% if object.get_places %}
<br>
<div class="i-events-list">
<div class="sect-title blog_link">
<a href="#" title="">{% trans 'Места в' %} {{ object.name }}</a><a class="button more" href="{{ object.places_catalog }}">{% trans 'Все места' %}</a>
</div>
{% include 'includes/place/place_list.html' with object_list=object.get_places %}
</div>
{% endif %}
{% if object.get_organisers %}
<br>
<div class="i-events-list">
<div class="sect-title blog_link">
<a href="#" title="">{% trans 'Организаторы в' %} {{ object.name }}</a><a class="button more" href="#">{% trans 'Все организаторы' %} </a>
</div>
{% include 'includes/organiser/organiser_list.html' with object_list=object.get_organisers %}
</div>
{% endif %}
{% endblock %}

@ -56,10 +56,10 @@
</div> </div>
{% if obj.country %} {% if obj.country %}
<div class="cli-place"> <div class="cli-place">
<a href="#">{{ obj.country }}</a>, <a href="#">{{ obj.city }}</a>, <a href="{{ obj.country.get_permanent_url }}">{{ obj.country }}</a>, <a href="{{ obj.city.get_permanent_url }}">{{ obj.city }}</a>
{% if obj.place %} {% if obj.place %}
<a href="/places/{{ obj.place.url }}">{{ obj.place }}</a> , <a href="/places/{{ obj.place.url }}">{{ obj.place }}</a>
{% endif %} {% endif %}
</div> </div>
{% endif %} {% endif %}
@ -86,7 +86,7 @@
</div> </div>
<div class="cli-s-buttons"> <div class="cli-s-buttons">
<a class="button blue2 lc" href="#">{% trans 'Лучшие цены на отели на' %} <i>Booking</i>.com</a> <a class="button blue2 lc" target="_blank" href="http://www.booking.com/searchresults.html?aid={{ book_aid }}&city={{ obj.city.id }}">{% trans 'Лучшие цены на отели на' %} <i>Booking</i>.com</a>
</div> </div>
</div> </div>
</div> </div>

@ -110,9 +110,8 @@
</ul> </ul>
</div> </div>
{% with event=exposition filter=filter %} {% include 'includes/event_steps.html' with event=exposition filter=filter %}
{% include 'includes/event_steps.html' %}
{% endwith %}
{% if exposition.get_photos %} {% if exposition.get_photos %}
<hr /> <hr />
@ -131,12 +130,14 @@
</div> </div>
</div> </div>
{% endif %} {% endif %}
{% if exposition.description %}
<div class="i-event-description"> <div class="i-event-description">
<div class="ied-title">{% trans 'О выставке' %} {{ exposition.name|safe }}</div> <div class="ied-title">{% trans 'О выставке' %} {{ exposition.name|safe }}</div>
<div class="ied-text">{{ exposition.description|safe|linebreaks }}</div> <div class="ied-text">{{ exposition.description|safe|linebreaks }}</div>
</div> </div>
<hr /> <hr />
{% endif %}
<div class="i-event-additional clearfix"> <div class="i-event-additional clearfix">
<div class="sect-title">{% trans 'Дополнительная информация' %}</div> <div class="sect-title">{% trans 'Дополнительная информация' %}</div>
<ul class="e-docs"> <ul class="e-docs">
@ -291,9 +292,9 @@
{% endwith %} {% endwith %}
</div> </div>
<div class="cli-place"> <div class="cli-place">
<a href="#">{{ exp.country }}</a>, <a href="#">{{ exp.city }}</a> <a href="{{ exp.country.get_permanent_url }}">{{ exp.country }}</a>, <a href="{{ exp.city.get_permanent_url }}">{{ exp.city }}</a>
{% if exp.place %} {% if exp.place %}
, <a href="#">{{ exp.place }}</a> , <a href="{{ exp.place.get_permanent_url }}">{{ exp.place }}</a>
{% endif %} {% endif %}
</div> </div>
</div> </div>

@ -7,7 +7,9 @@
<ul> <ul>
<li class="s1"> <li class="s1">
<div class="label">1. {% trans 'Зарегистрируйтесь на событие' %}</div> <div class="label">1. {% trans 'Зарегистрируйтесь на событие' %}</div>
<a class="step" href="{% if filter %}/{{ filter|generate_url:'event' }}/service/visit/{% else %}{{ event.get_permanent_url }}/service/visit/{%endif%}" target="_blank"> <a class="step"
href="{% if event.registration_link %}{{ registration_link }}{% else %}{% if filter %}/{{ filter|generate_url:'event' }}/service/visit/{% else %}{{ event.get_permanent_url }}/service/visit/{%endif%}{% endif %}"
target="_blank">
{% trans 'Билеты на выставку' %} {% trans 'Билеты на выставку' %}
</a> </a>
</li> </li>

@ -56,7 +56,7 @@
</div> </div>
{% if obj.country %} {% if obj.country %}
<div class="cli-place"> <div class="cli-place">
<a href="#">{{ obj.country }}</a>, <a href="#">{{ obj.city }}</a>, <a href="{{ obj.country.get_permanent_url }}">{{ obj.country }}</a>, <a href="{{ obj.city.get_permanent_url }}">{{ obj.city }}</a>,
{% if obj.place %} {% if obj.place %}
<a href="/places/{{ obj.place.url }}">{{ obj.place }}</a> <a href="/places/{{ obj.place.url }}">{{ obj.place }}</a>

@ -0,0 +1,15 @@
<table class="parnters_about_block_table">
<tr>
{% for organiser in object_list %}
<td>
<a href="#">
<span class="imp-pict">
{% include 'client/includes/show_logo.html' with obj=organiser %}
</span>
{{ organiser.name }}
</a>
</td>
<td class="delimiter">&nbsp;</td>
{% endfor %}
</tr>
</table>

@ -32,7 +32,7 @@
{% if object.total_area %} {% if object.total_area %}
<div class="cli-dim">{{ object.total_area }} м2</div> <div class="cli-dim">{{ object.total_area }} м2</div>
{% endif %} {% endif %}
<div class="cli-place"><a href="#">{{ object.country }}</a>, <a href="#">{{ object.city }}</a>, <a href="{{ object.get_permanent_url }}">{{ object.adress }}</a></div> <div class="cli-place"><a href="{{ object.country.get_permanent_url }}">{{ object.country }}</a>, <a href="{{ object.city.get_permanent_url }}">{{ object.city }}</a>, <a href="{{ object.get_permanent_url }}">{{ object.adress }}</a></div>
</div> </div>
</div> </div>

@ -13,11 +13,11 @@
{% if object_list %} {% if object_list %}
{% if single_page %} {% if single_page %}
{% with place=object_list.0 %} {% with place=object_list.0 %}
{% include 'includes/place_object.html' %} {% include 'includes/place/place_object.html' %}
{% endwith %} {% endwith %}
{% else %} {% else %}
{% with object_list=object_list %} {% with object_list=object_list %}
{% include 'includes/place_list.html' %} {% include 'includes/place/place_list.html' %}
{% endwith %} {% endwith %}
{% endif %} {% endif %}

Loading…
Cancel
Save