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. 8
      functions/model_mixin.py
  17. 1
      place_exposition/models.py
  18. 33
      proj/settings.py
  19. 2
      proj/urls.py
  20. 7
      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 -*-
from datetime import date
from django.db import models
from django.db.models.signals import post_save, pre_save
from hvad.models import TranslatableModel, TranslatedFields, TranslationManager
@ -7,6 +8,9 @@ from sorl.thumbnail import ImageField
# models
from directories.models import Iata
from service.models import Service
from exposition.models import Exposition
from place_exposition.models import PlaceExposition
from organiser.models import Organiser
# custom functions
from functions.db import db_table_exists
from functions.signal_handlers import post_save_handler
@ -24,6 +28,8 @@ class City(TranslatableModel):
"""
objects = ExpoManager()
catalog = '/city/'
services = BitField(flags=flags)
url = models.SlugField(unique=True)
@ -54,9 +60,30 @@ class City(TranslatableModel):
return self.lazy_translation_getter('name', self.pk)
def get_hotels(self):
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):
url = models.URLField(max_length=255)
@ -71,7 +98,6 @@ class Hotel(TranslatableModel):
translations = TranslatedFields(
name = models.CharField(max_length=255, blank=True),
address = models.CharField(max_length=255, blank=True)
)
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 -*-
from datetime import date
from django.db import models
from django.utils.translation import ugettext as _
from django.contrib.contenttypes import generic
@ -9,6 +10,9 @@ from bitfield import BitField
from directories.models import Language, Currency
from city.models import City
from service.models import Service
from exposition.models import Exposition
from place_exposition.models import PlaceExposition
from organiser.models import Organiser
# func
from functions.custom_fields import EnumField
from functions.db import db_table_exists
@ -40,6 +44,7 @@ class Area(TranslatableModel):
def __unicode__(self):
return self.lazy_translation_getter('name', unicode(self.pk))
class Country(TranslatableModel):
"""
Create Country model
@ -49,6 +54,8 @@ class Country(TranslatableModel):
"""
objects = CountryManager()
catalog = '/country/'
services = BitField(flags=flags)
url = models.SlugField(unique=True)
# relations
@ -64,6 +71,8 @@ class Country(TranslatableModel):
phone_code = models.PositiveIntegerField(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
created = models.DateTimeField(auto_now_add=True)
@ -93,4 +102,25 @@ class Country(TranslatableModel):
def __unicode__(self):
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)

@ -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 -*-
from django.db import models
from hvad.models import TranslatableModel, TranslatedFields, TranslationManager
class Language(models.Model):
class Language(TranslatableModel):
"""
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):
return self.language
class Currency(models.Model):
class Currency(TranslatableModel):
"""
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):
return self.currency
return self.code
class Iata (models.Model):
"""
Creates Iata model
"""
airport = models.CharField(max_length=50)
code = models.CharField(max_length=5)
airport = models.CharField(max_length=255)
code = models.CharField(max_length=4)
def __unicode__(self):
return self.code

@ -71,6 +71,7 @@ class Exposition(TranslatableModel, EventMixin, ExpoMixin):
periodic = models.FloatField(verbose_name='Переодичность', blank=True, null=True)
#audience = EnumField(values=AUDIENCE, 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)
#
currency = EnumField(values=CURRENCY, default='USD')

@ -1,5 +1,6 @@
from service.models import Service
import calendar as python_calendar
from service.models import Service
class ExpoMixin(object):
@ -85,7 +86,4 @@ class EventMixin(object):
if self.data_end.month == month:
return self.data_end.day
return 0
return 0

@ -32,6 +32,7 @@ class PlaceExposition(TranslatableModel, ExpoMixin):
"""
#set manager of this model
objects = ExpoManager()
catalog = '/places/'
url = models.SlugField(unique=True, max_length=255)
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_DEFAULT_CONFIG = {
'plugins': "table,spellchecker,paste,searchreplace",
'theme': "advanced",
'cleanup_on_startup': True,
'custom_undo_redo_levels': 10,
'width' : 565,
'height' : 100
}
TINYMCE_SPELLCHECKER = True
TINYMCE_COMPRESSOR = True
#TINYMCE_JS_URL = os.path.join(MEDIA_ROOT, "js/tiny_mce/tiny_mce.js")
#TINYMCE_DEFAULT_CONFIG = {
# 'plugins': "table,spellchecker,paste,searchreplace",
# 'theme': "advanced",
# 'cleanup_on_startup': True,
# 'custom_undo_redo_levels': 10,
# 'width' : 565,
# 'height' : 100
#}
#TINYMCE_SPELLCHECKER = True
#TINYMCE_COMPRESSOR = True
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
@ -122,12 +122,6 @@ STATIC_ROOT = os.path.join(SITE_ROOT, 'static')
STATIC_URL = '/static/'
# 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
# various locations.
@ -174,8 +168,9 @@ MIDDLEWARE_CLASSES = (
'social.apps.django_app.middleware.SocialAuthExceptionMiddleware',
# 'django.middleware.cache.FetchFromCacheMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
#'debug_toolbar.middleware.DebugToolbarMiddleware',#должно быть последним полем
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',#должно быть последним полем
)
ROOT_URLCONF = 'proj.urls'

@ -15,6 +15,8 @@ urlpatterns = patterns('',
url(r'^', include('webinar.urls')),
url(r'^', include('company.urls')),
url(r'^', include('photoreport.urls')),
url(r'^country/', include('country.urls')),
url(r'^city/', include('city.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))
class Test(ExpoListView):
model = Exposition
@ -74,5 +70,4 @@ class AdvertisingView(TemplateView):
template_name = 'simple_pages/advertising.html'
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>
{% if obj.country %}
<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 %}
<a href="/places/{{ obj.place.url }}">{{ obj.place }}</a>
, <a href="/places/{{ obj.place.url }}">{{ obj.place }}</a>
{% endif %}
</div>
{% endif %}
@ -86,7 +86,7 @@
</div>
<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>

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

@ -7,7 +7,9 @@
<ul>
<li class="s1">
<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 'Билеты на выставку' %}
</a>
</li>

@ -56,7 +56,7 @@
</div>
{% if obj.country %}
<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 %}
<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 %}
<div class="cli-dim">{{ object.total_area }} м2</div>
{% 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>

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

Loading…
Cancel
Save