мультизагрузка файлов в админ панели

remotes/origin/tests
Slava Kyrachevsky 9 years ago
parent 257dd6e2de
commit a330b278af
  1. 12
      apps/article/admin.py
  2. 6
      apps/conference/admin.py
  3. 5
      apps/exposition/admin.py
  4. 75
      apps/file/admin.py
  5. 29
      apps/file/admin_urls.py
  6. 34
      apps/file/forms.py
  7. 620
      apps/file/migrations/0001_initial.py
  8. 0
      apps/file/migrations/__init__.py
  9. 29
      apps/file/models.py
  10. 2
      apps/photologue/admin.py
  11. 12
      apps/place_conference/admin.py
  12. 12
      apps/place_exposition/admin.py
  13. 98
      proj/admin.py
  14. 4
      proj/admin_urls.py
  15. 26
      static/jQuery-filer/js/init.js
  16. 6
      static/jQuery-filer/js/jquery.filer.js
  17. 92
      templates/c_admin/article/blog_form.html
  18. 204
      templates/c_admin/conference/conference.html
  19. 133
      templates/c_admin/exposition/exposition.html
  20. 26
      templates/c_admin/file/file_update.html
  21. 25
      templates/c_admin/file_list.html
  22. 49
      templates/c_admin/includes/file_form.html
  23. 19
      templates/c_admin/includes/filegallery.html
  24. 6
      templates/c_admin/includes/photogallery.html
  25. 40
      templates/c_admin/place_conference/place_conference.html
  26. 41
      templates/c_admin/place_exposition/place_exposition.html

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from django.shortcuts import render_to_response, get_object_or_404
from django.http import HttpResponseRedirect, HttpResponse
from django.http import HttpResponseRedirect
from django.db import models
from django.core.context_processors import csrf
from django.conf import settings
@ -8,7 +8,6 @@ from django.contrib import admin
from django.contrib.auth.decorators import login_required
from django.contrib.contenttypes.models import ContentType
from django.views.generic import DeleteView
from django.utils.translation import ugettext_lazy as _
from modeltranslation.admin import TabbedTranslationAdmin
from ckeditor.widgets import CKEditorWidget
@ -19,8 +18,8 @@ from .forms import ArticleForm, ArticleDeleteForm, NewsForm
from .models import Article, Author
from theme.models import Tag
from file.models import FileModel, TmpFile
from file.forms import FileModelForm, FileForm
from file.models import FileModel
from file.forms import FileModelForm
#custom views
from functions.custom_views import objects_list, add_object_with_file, delete_object
@ -224,12 +223,7 @@ class BlogView(FormView):
def get_context_data(self, **kwargs):
context = super(BlogView, self).get_context_data(**kwargs)
self.set_obj()
context['article'] = self.obj
if context['article']:
context['file_form'] = FileForm(initial={'model': 'article.Article'})
context['files'] = FileModel.objects.filter(content_type=ContentType.objects.get_for_model(context['article']),
object_id=getattr(context['article'], 'id'))
context['languages'] = settings.LANGUAGES
return context

@ -23,7 +23,7 @@ from sorl.thumbnail.admin.current import AdminImageWidget
from exposition.admin import get_by_lang
from city.models import City
from file.forms import FileForm, FileModelForm
from file.forms import FileModelForm
from file.models import FileModel, TmpFile
from forms import (
ConferenceChangeForm,
@ -329,11 +329,7 @@ class ConferenceView(AdminView):
context = super(ConferenceView, self).get_context_data(**kwargs)
obj = self.set_obj()
if obj:
context['stat_form'] = StatisticForm()
context['file_form'] = FileForm(initial={'model': 'conference.Conference'})
files = FileModel.objects.filter(content_type=ContentType.objects.get_for_model(obj),object_id=getattr(obj, 'id'))
context['files'] = files
context['timetable_form'] = TimeTableForm()
context['timetables'] = TimeTable.objects.filter(conference=obj)

@ -14,7 +14,7 @@ from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response
from django.utils import translation
from django.views.decorators.csrf import csrf_exempt
from file.forms import FileForm, FileModelForm
from file.forms import FileModelForm
from file.models import FileModel, TmpFile
from forms import (
ExpositionCreateForm,
@ -331,9 +331,6 @@ class ExpositionView(AdminView):
obj = self.set_obj()
if obj:
context['stat_form'] = StatisticForm()
context['file_form'] = FileForm(initial={'model': 'exposition.Exposition'})
files = FileModel.objects.filter(content_type=ContentType.objects.get_for_model(obj),object_id=getattr(obj, 'id'))
context['files'] = files
context['timetable_form'] = TimeTableForm()
context['timetables'] = TimeTable.objects.filter(exposition=obj)

@ -0,0 +1,75 @@
# -*- coding: utf-8 -*-
from django.core.urlresolvers import reverse
from django.views.decorators.csrf import csrf_exempt
from django.db.models.loading import get_model
from django.contrib.contenttypes.models import ContentType
from django.http import HttpResponse
from django.views.generic import UpdateView
from .models import FileModel
from .forms import FileForm, FileUpdateForm
import json
@csrf_exempt
def ajax_post_file(request, obj_id):
"""
Takes file and file data and save it
"""
data = {'success': False}
# takes data from hidden input "model" and initial Model
Model = get_model(request.GET['model'].split('.')[0],
request.GET['model'].split('.')[1])
# initial model object
obj = Model.objects.get(id=obj_id)
if request.is_ajax() and request.method == 'POST':
file_form = FileForm(request.POST, request.FILES)
if file_form.is_valid():
file_form.save(request.FILES, obj)
data['success'] = True
else:
data['errors'] = file_form.errors
if request.is_ajax() and request.method == 'GET':
files = FileModel.objects.filter(
content_type=ContentType.objects.get_for_model(obj),
object_id=obj_id
)
files_data = []
for f in files:
files_data.append({
'name': f.file_name or f.file_path.name,
'size': f.file_path.size,
'file': f.file_path.url,
'type': 'file',
'remove_url': reverse('ajax_delete_file', args=[f.pk]),
'detail_link': reverse('file_update', args=[f.pk])
})
data['success'] = True
data['files'] = files_data
return HttpResponse(json.dumps(data), content_type='application/json')
def ajax_delete_file(request, id):
"""
delete file
"""
if request.is_ajax():
f = FileModel.objects.get(id=id)
f.delete()
data = {'success': True}
else:
data = {'success': False}
return HttpResponse(json.dumps(data), content_type='application/json')
class FileUpdateView(UpdateView):
"""
Представление обновления файла
"""
template_name = 'c_admin/file/file_update.html'
form_class = FileUpdateForm
model = FileModel

@ -0,0 +1,29 @@
# -*- coding: utf-8 -*-
from django.conf.urls import patterns, url
from django.contrib.admin.views.decorators import staff_member_required
from .admin import FileUpdateView
from functions import required
urlpatterns = required(
staff_member_required,
patterns(
'',
url(
r'^ajax_post_file/(?P<obj_id>\d+)/$',
'file.admin.ajax_post_file',
name='ajax_post_file'
),
url(
r'^ajax_delete_file/(?P<id>\d+)/',
'file.admin.ajax_delete_file',
name='ajax_delete_file'
),
url(
r'^update/(?P<pk>\d+)/',
FileUpdateView.as_view(),
name='file_update'
),
)
)

@ -5,7 +5,7 @@ from django.contrib.contenttypes.models import ContentType
from ckeditor.widgets import CKEditorWidget
#models
from country.models import Country
from models import FileModel, TmpFile, IMG_TYPES, PURPOSES, Photo
from .models import FileModel, TmpFile, IMG_TYPES, PURPOSES, Photo
#functions
from functions.translate import populate, fill_trans_fields_all
#python
@ -17,8 +17,11 @@ from django.utils.translation import ugettext as _
class FileForm(forms.Form):
file_path = forms.FileField(label=_(u'Выберите файл'))
model = forms.CharField(required=False, widget=forms.HiddenInput())
purposes = [('scheme teritory',_(u'Схема территории')),('preview',_(u'Превью')), ('preview2',_(u'Превью2'))]
purpose = forms.ChoiceField(label=_(u'Назначение'), choices=purposes)
purpose = forms.ChoiceField(
label=_(u'Назначение'),
choices=PURPOSES,
required=False
)
def __init__(self, *args, **kwargs):
"""
@ -30,10 +33,8 @@ class FileForm(forms.Form):
if len(settings.LANGUAGES) in range(10):
for lid, (code, name) in enumerate(settings.LANGUAGES):
# using enumerate for detect iteration number
# first iteration is a default lang so it required fields
required = True if lid == 0 else False
self.fields['file_name_%s'%code] = forms.CharField(label=_(u'Имя файла'),required=False, widget=forms.TextInput(attrs={'placeholder': 'Имя'}))
self.fields['description_%s'%code] = forms.CharField(label=_(u'Описание'), required=False, widget=forms.Textarea())
self.fields['file_name_%s' % code] = forms.CharField(label=_(u'Имя файла'), required=False, widget=forms.TextInput(attrs={'placeholder': 'Имя'}))
self.fields['description_%s' % code] = forms.CharField(label=_(u'Описание'), required=False, widget=forms.Textarea())
def save(self, request, obj=None):
"""
@ -59,7 +60,10 @@ class FileForm(forms.Form):
#-------
file_obj.file_path = request['file_path']
file_obj.purpose = data['purpose']
if data.get('purpose'):
file_obj.purpose = data.get('purpose')
else:
file_obj.purpose = 'preview'
#type of file
type = str(data['file_path']).split('.')[-1]
#if type is image save fields with image size
@ -79,6 +83,16 @@ class FileForm(forms.Form):
return file_obj
class FileUpdateForm(forms.ModelForm):
"""
Форма обновления файла в админ панели
"""
class Meta:
model = FileModel
fields = ('file_path',)
class FileModelForm(forms.Form):
"""
Create FileModel form
@ -92,8 +106,7 @@ class FileModelForm(forms.Form):
key = forms.CharField(required=False, widget=forms.HiddenInput())
model = forms.CharField(required=False, widget=forms.HiddenInput())
purposes = [(item1, item2) for item1, item2 in PURPOSES]
purpose = forms.ChoiceField(label=_(u'Назаначение'), choices=purposes)
purpose = forms.ChoiceField(label=_(u'Назаначение'), choices=PURPOSES)
def __init__(self, *args, **kwargs):
"""
@ -167,6 +180,7 @@ class FileModelForm(forms.Form):
return file_obj
class PhotoForm(forms.Form):
file_path = forms.FileField(label=_(u'Выберите файл'))
# uses for comparing with TmpFile key

@ -0,0 +1,620 @@
# -*- coding: utf-8 -*-
from south.utils import datetime_utils as 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 'FileModelTranslation'
db.create_table(u'file_filemodel_translation', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('file_name', self.gf('django.db.models.fields.CharField')(max_length=50, blank=True)),
('description', self.gf('django.db.models.fields.TextField')(blank=True)),
('language_code', self.gf('django.db.models.fields.CharField')(max_length=15, db_index=True)),
('master', self.gf('django.db.models.fields.related.ForeignKey')(related_name='translations', null=True, to=orm['file.FileModel'])),
))
db.send_create_signal(u'file', ['FileModelTranslation'])
# Adding unique constraint on 'FileModelTranslation', fields ['language_code', 'master']
db.create_unique(u'file_filemodel_translation', ['language_code', 'master_id'])
# Adding model 'FileModel'
db.create_table(u'file_filemodel', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('content_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True)),
('object_id', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True)),
('file_path', self.gf('django.db.models.fields.files.FileField')(max_length=100)),
('file_type', self.gf('functions.custom_fields.EnumField')(default='PDF', values=('PDF', 'DOC', 'TXT', 'OTHER', 'JPG', 'BMP', 'PNG', 'GIF'), blank=True)),
('purpose', self.gf('functions.custom_fields.EnumField')(default='photo', values=['photo', 'flat', 'logo', 'map', 'scheme teritory', 'diplom', 'preview', 'preview2'])),
('img_width', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True)),
('img_height', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True)),
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
('modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
))
db.send_create_signal(u'file', ['FileModel'])
# Adding model 'TmpFileTranslation'
db.create_table(u'file_tmpfile_translation', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('file_name', self.gf('django.db.models.fields.CharField')(max_length=50, blank=True)),
('description', self.gf('django.db.models.fields.TextField')(blank=True)),
('language_code', self.gf('django.db.models.fields.CharField')(max_length=15, db_index=True)),
('master', self.gf('django.db.models.fields.related.ForeignKey')(related_name='translations', null=True, to=orm['file.TmpFile'])),
))
db.send_create_signal(u'file', ['TmpFileTranslation'])
# Adding unique constraint on 'TmpFileTranslation', fields ['language_code', 'master']
db.create_unique(u'file_tmpfile_translation', ['language_code', 'master_id'])
# Adding model 'TmpFile'
db.create_table(u'file_tmpfile', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('file_path', self.gf('django.db.models.fields.files.FileField')(max_length=100)),
('file_type', self.gf('functions.custom_fields.EnumField')(default='PDF', values=('PDF', 'DOC', 'TXT', 'OTHER', 'JPG', 'BMP', 'PNG', 'GIF'), blank=True)),
('purpose', self.gf('functions.custom_fields.EnumField')(default='photo', values=['photo', 'flat', 'logo', 'map', 'scheme teritory', 'diplom', 'preview', 'preview2'])),
('img_width', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True)),
('img_height', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True)),
('key', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
('modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
))
db.send_create_signal(u'file', ['TmpFile'])
# Adding model 'UserMark'
db.create_table(u'file_usermark', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['accounts.User'])),
('top', self.gf('django.db.models.fields.PositiveSmallIntegerField')()),
('left', self.gf('django.db.models.fields.PositiveSmallIntegerField')()),
('height', self.gf('django.db.models.fields.PositiveSmallIntegerField')()),
('width', self.gf('django.db.models.fields.PositiveSmallIntegerField')()),
))
db.send_create_signal(u'file', ['UserMark'])
# Adding model 'PhotoTranslation'
db.create_table(u'file_photo_translation', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
('description', self.gf('django.db.models.fields.TextField')(blank=True)),
('language_code', self.gf('django.db.models.fields.CharField')(max_length=15, db_index=True)),
('master', self.gf('django.db.models.fields.related.ForeignKey')(related_name='translations', null=True, to=orm['file.Photo'])),
))
db.send_create_signal(u'file', ['PhotoTranslation'])
# Adding unique constraint on 'PhotoTranslation', fields ['language_code', 'master']
db.create_unique(u'file_photo_translation', ['language_code', 'master_id'])
# Adding model 'Photo'
db.create_table(u'file_photo', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('content_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True)),
('object_id', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True)),
('file_path', self.gf('django.db.models.fields.files.ImageField')(max_length=100)),
('width', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True)),
('height', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True)),
('order', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=0)),
('view_count', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
('file_type', self.gf('functions.custom_fields.EnumField')(default='PDF', values=('PDF', 'DOC', 'TXT', 'OTHER', 'JPG', 'BMP', 'PNG', 'GIF'), blank=True)),
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
('modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
))
db.send_create_signal(u'file', ['Photo'])
# Adding M2M table for field users on 'Photo'
m2m_table_name = db.shorten_name(u'file_photo_users')
db.create_table(m2m_table_name, (
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
('photo', models.ForeignKey(orm[u'file.photo'], null=False)),
('usermark', models.ForeignKey(orm[u'file.usermark'], null=False))
))
db.create_unique(m2m_table_name, ['photo_id', 'usermark_id'])
def backwards(self, orm):
# Removing unique constraint on 'PhotoTranslation', fields ['language_code', 'master']
db.delete_unique(u'file_photo_translation', ['language_code', 'master_id'])
# Removing unique constraint on 'TmpFileTranslation', fields ['language_code', 'master']
db.delete_unique(u'file_tmpfile_translation', ['language_code', 'master_id'])
# Removing unique constraint on 'FileModelTranslation', fields ['language_code', 'master']
db.delete_unique(u'file_filemodel_translation', ['language_code', 'master_id'])
# Deleting model 'FileModelTranslation'
db.delete_table(u'file_filemodel_translation')
# Deleting model 'FileModel'
db.delete_table(u'file_filemodel')
# Deleting model 'TmpFileTranslation'
db.delete_table(u'file_tmpfile_translation')
# Deleting model 'TmpFile'
db.delete_table(u'file_tmpfile')
# Deleting model 'UserMark'
db.delete_table(u'file_usermark')
# Deleting model 'PhotoTranslation'
db.delete_table(u'file_photo_translation')
# Deleting model 'Photo'
db.delete_table(u'file_photo')
# Removing M2M table for field users on 'Photo'
db.delete_table(db.shorten_name(u'file_photo_users'))
models = {
u'accounts.user': {
'Meta': {'ordering': "['-rating']", 'object_name': 'User'},
'blocked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'company': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'users'", 'null': 'True', 'to': u"orm['company.Company']"}),
'date_joined': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'date_registered': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '255', 'db_index': 'True'}),
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_admin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'organiser': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['organiser.Organiser']", 'unique': 'True', 'null': 'True', 'on_delete': 'models.PROTECT', 'blank': 'True'}),
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
'position': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'rating': ('django.db.models.fields.IntegerField', [], {'default': '100'}),
'readonly': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'translator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['translator.Translator']", 'blank': 'True', 'unique': 'True'}),
'url': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'blank': 'True'}),
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255', 'db_index': 'True'})
},
u'auth.group': {
'Meta': {'object_name': 'Group'},
u'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': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
},
u'auth.permission': {
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
u'city.city': {
'Meta': {'unique_together': '()', 'object_name': 'City', 'index_together': '()'},
'code_IATA': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['directories.Iata']", 'null': 'True', 'blank': 'True'}),
'country': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'cities'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['country.Country']"}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'inflect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'old_url': ('django.db.models.fields.CharField', [], {'max_length': '55'}),
'phone_code': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'population': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'services': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
},
u'company.company': {
'Meta': {'ordering': "['-rating', 'id']", 'unique_together': '()', 'object_name': 'Company', 'index_together': '()'},
'address': ('functions.custom_fields.LocationField', [], {'blank': 'True'}),
'blocked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'city': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'companies'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['city.City']"}),
'country': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'companies'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['country.Country']"}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'created_company'", 'null': 'True', 'to': u"orm['accounts.User']"}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'facebook': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'fax': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'foundation': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'linkedin': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'phone': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'rating': ('django.db.models.fields.IntegerField', [], {'default': '100'}),
'staff_number': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
'tag': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'companies'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['theme.Tag']"}),
'theme': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'companies'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['theme.Theme']"}),
'twitter': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'url': ('django.db.models.fields.SlugField', [], {'max_length': '255'}),
'vk': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'web_page': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
},
u'contenttypes.contenttype': {
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
u'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'})
},
u'country.area': {
'Meta': {'ordering': "['translations__name']", 'unique_together': '()', 'object_name': 'Area', 'index_together': '()'},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
},
u'country.country': {
'Meta': {'ordering': "['translations__name']", 'unique_together': '()', 'object_name': 'Country', 'index_together': '()'},
'area': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['country.Area']"}),
'big_cities': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'cities'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['city.City']"}),
'capital': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'capital'", 'null': 'True', 'on_delete': 'models.PROTECT', 'to': u"orm['city.City']"}),
'country_code': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'currency': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['directories.Currency']", 'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'inflect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'language': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['directories.Language']", 'null': 'True', 'blank': 'True'}),
'latitude': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'blank': 'True'}),
'longitude': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'old_url': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '55'}),
'phone_code': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'population': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'services': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
'teritory': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'time_delivery': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
'timezone': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
},
u'directories.currency': {
'Meta': {'unique_together': '()', 'object_name': 'Currency', 'index_together': '()'},
'code': ('django.db.models.fields.CharField', [], {'max_length': '3'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
},
u'directories.iata': {
'Meta': {'object_name': 'Iata'},
'airport': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'code': ('django.db.models.fields.CharField', [], {'max_length': '4'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
},
u'directories.language': {
'Meta': {'unique_together': '()', 'object_name': 'Language', 'index_together': '()'},
'code': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'language': ('django.db.models.fields.CharField', [], {'max_length': '255'})
},
u'expobanner.banner': {
'Meta': {'ordering': "['sort']", 'object_name': 'Banner'},
'alt': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'cookie': ('django.db.models.fields.CharField', [], {'default': "'expo_b_default_popup'", 'max_length': '30', 'null': 'True', 'blank': 'True'}),
'country': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['country.Country']", 'null': 'True', 'blank': 'True'}),
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'customer': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Customer']", 'null': 'True', 'blank': 'True'}),
'flash': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'fr': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2017, 1, 25, 0, 0)'}),
'group': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'banners'", 'null': 'True', 'to': u"orm['expobanner.BannerGroup']"}),
'html': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'img': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
'link': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'often': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1', 'null': 'True', 'blank': 'True'}),
'paid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'popup': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'sort': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '500'}),
'stat_pswd': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
'text': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
'theme': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['theme.Theme']", 'null': 'True', 'blank': 'True'}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'to': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'url': ('django.db.models.fields.CharField', [], {'max_length': '1024'}),
'urls': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'url_banners'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['expobanner.URL']"})
},
u'expobanner.bannergroup': {
'Meta': {'ordering': "['name']", 'object_name': 'BannerGroup'},
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'height': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}),
'speed': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '2000'}),
'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'})
},
u'expobanner.customer': {
'Meta': {'ordering': "['name']", 'object_name': 'Customer'},
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
},
u'expobanner.top': {
'Meta': {'ordering': "['position']", 'object_name': 'Top'},
'base_catalog': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'catalog': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
'cities': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'top_in_set'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['city.City']"}),
'country': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['country.Country']", 'null': 'True', 'blank': 'True'}),
'excluded_cities': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['city.City']", 'null': 'True', 'blank': 'True'}),
'excluded_tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['theme.Tag']", 'null': 'True', 'blank': 'True'}),
'fr': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2017, 1, 25, 0, 0)'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'link': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Banner']"}),
'months': ('functions.custom_fields.MonthMultiSelectField', [], {'default': 'None', 'max_length': '255', 'null': 'True', 'blank': 'True'}),
'position': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2', 'null': 'True', 'blank': 'True'}),
'stat_pswd': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
'theme': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['theme.Theme']", 'null': 'True', 'blank': 'True'}),
'to': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
'years': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'})
},
u'expobanner.url': {
'Meta': {'ordering': "['-created_at']", 'object_name': 'URL'},
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'regex': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'sites': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'site_urls'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['sites.Site']"}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'url': ('django.db.models.fields.CharField', [], {'max_length': '2048'})
},
u'file.filemodel': {
'Meta': {'unique_together': '()', 'object_name': 'FileModel', 'index_together': '()'},
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']", 'null': 'True'}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'file_path': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
'file_type': ('functions.custom_fields.EnumField', [], {'default': "'PDF'", 'values': "('PDF', 'DOC', 'TXT', 'OTHER', 'JPG', 'BMP', 'PNG', 'GIF')", 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'img_height': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'img_width': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'purpose': ('functions.custom_fields.EnumField', [], {'default': "'photo'", 'values': "['photo', 'flat', 'logo', 'map', 'scheme teritory', 'diplom', 'preview', 'preview2']"})
},
u'file.filemodeltranslation': {
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'FileModelTranslation', 'db_table': "u'file_filemodel_translation'", 'index_together': '()'},
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'file_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['file.FileModel']"})
},
u'file.photo': {
'Meta': {'unique_together': '()', 'object_name': 'Photo', 'index_together': '()'},
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']", 'null': 'True'}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'file_path': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
'file_type': ('functions.custom_fields.EnumField', [], {'default': "'PDF'", 'values': "('PDF', 'DOC', 'TXT', 'OTHER', 'JPG', 'BMP', 'PNG', 'GIF')", 'blank': 'True'}),
'height': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'order': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['file.UserMark']", 'null': 'True', 'symmetrical': 'False'}),
'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
'width': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
},
u'file.phototranslation': {
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PhotoTranslation', 'db_table': "u'file_photo_translation'", 'index_together': '()'},
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['file.Photo']"}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
},
u'file.tmpfile': {
'Meta': {'unique_together': '()', 'object_name': 'TmpFile', 'index_together': '()'},
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'file_path': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
'file_type': ('functions.custom_fields.EnumField', [], {'default': "'PDF'", 'values': "('PDF', 'DOC', 'TXT', 'OTHER', 'JPG', 'BMP', 'PNG', 'GIF')", 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'img_height': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'img_width': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'purpose': ('functions.custom_fields.EnumField', [], {'default': "'photo'", 'values': "['photo', 'flat', 'logo', 'map', 'scheme teritory', 'diplom', 'preview', 'preview2']"})
},
u'file.tmpfiletranslation': {
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'TmpFileTranslation', 'db_table': "u'file_tmpfile_translation'", 'index_together': '()'},
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'file_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['file.TmpFile']"})
},
u'file.usermark': {
'Meta': {'object_name': 'UserMark'},
'height': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'left': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
'top': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.User']"}),
'width': ('django.db.models.fields.PositiveSmallIntegerField', [], {})
},
u'organiser.organiser': {
'Meta': {'unique_together': '()', 'object_name': 'Organiser', 'index_together': '()'},
'active': ('django.db.models.fields.NullBooleanField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
'address': ('functions.custom_fields.LocationField', [], {'null': 'True', 'blank': 'True'}),
'city': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['city.City']", 'null': 'True', 'on_delete': 'models.PROTECT', 'blank': 'True'}),
'country': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['country.Country']", 'null': 'True', 'on_delete': 'models.PROTECT', 'blank': 'True'}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'events_number': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'facebook': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'fax': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'foundation': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'linkedin': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'phone': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'place_conference': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'organiser_place_conference'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['place_conference.PlaceConference']"}),
'place_exposition': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'organiser_place_exposition'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['place_exposition.PlaceExposition']"}),
'rating': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'staff_number': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'tag': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['theme.Tag']", 'null': 'True', 'blank': 'True'}),
'theme': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['theme.Theme']", 'null': 'True', 'blank': 'True'}),
'twitter': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'url': ('django.db.models.fields.SlugField', [], {'max_length': '255', 'blank': 'True'}),
'vk': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'web_page': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
},
u'photologue.gallery': {
'Meta': {'ordering': "['-date_added']", 'unique_together': '()', 'object_name': 'Gallery', 'index_together': '()'},
'date_added': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'photos': ('sortedm2m.fields.SortedManyToManyField', [], {'blank': 'True', 'related_name': "'galleries'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['photologue.Photo']"}),
'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['sites.Site']", 'null': 'True', 'blank': 'True'}),
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '200'}),
'tags': ('photologue.models.TagField', [], {'max_length': '255', 'blank': 'True'})
},
u'photologue.photo': {
'Meta': {'ordering': "['sort']", 'unique_together': '()', 'object_name': 'Photo', 'index_together': '()'},
'crop_from': ('django.db.models.fields.CharField', [], {'default': "'center'", 'max_length': '10', 'blank': 'True'}),
'date_added': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'effect': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'photo_related'", 'null': 'True', 'to': u"orm['photologue.PhotoEffect']"}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['sites.Site']", 'null': 'True', 'blank': 'True'}),
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '200'}),
'sort': ('django.db.models.fields.PositiveIntegerField', [], {'default': '10', 'null': 'True', 'db_index': 'True'}),
'tags': ('photologue.models.TagField', [], {'max_length': '255', 'blank': 'True'}),
'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['photologue.UserMark']", 'null': 'True', 'symmetrical': 'False'}),
'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
},
u'photologue.photoeffect': {
'Meta': {'object_name': 'PhotoEffect'},
'background_color': ('django.db.models.fields.CharField', [], {'default': "'#FFFFFF'", 'max_length': '7'}),
'brightness': ('django.db.models.fields.FloatField', [], {'default': '1.0'}),
'color': ('django.db.models.fields.FloatField', [], {'default': '1.0'}),
'contrast': ('django.db.models.fields.FloatField', [], {'default': '1.0'}),
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'filters': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
'reflection_size': ('django.db.models.fields.FloatField', [], {'default': '0'}),
'reflection_strength': ('django.db.models.fields.FloatField', [], {'default': '0.6'}),
'sharpness': ('django.db.models.fields.FloatField', [], {'default': '1.0'}),
'transpose_method': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
},
u'photologue.usermark': {
'Meta': {'object_name': 'UserMark'},
'height': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'left': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
'top': ('django.db.models.fields.PositiveSmallIntegerField', [], {}),
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'marks'", 'to': u"orm['accounts.User']"}),
'width': ('django.db.models.fields.PositiveSmallIntegerField', [], {})
},
u'place_conference.placeconference': {
'Meta': {'unique_together': '()', 'object_name': 'PlaceConference', 'index_together': '()'},
'address': ('functions.custom_fields.LocationField', [], {}),
'amount_halls': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'banquet_hall': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'catering': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'city': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'place_conferences'", 'on_delete': 'models.PROTECT', 'to': u"orm['city.City']"}),
'conference_call': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'country': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['country.Country']", 'on_delete': 'models.PROTECT'}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'exp_hall_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'exposition_hall': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'fax': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'foundation_year': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'hotel': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'multimedia_equipment': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'phone': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'top': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Top']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
'total_capacity': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'translate_equipment': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'type': ('functions.custom_fields.EnumField', [], {'default': "'Convention centre'", 'values': "['Convention centre', 'Exposition centre']"}),
'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}),
'video_link': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'views': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
'virtual_tour': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'web_page': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'wifi': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
},
u'place_exposition.placeexposition': {
'Meta': {'ordering': "['-rating', 'id']", 'unique_together': '()', 'object_name': 'PlaceExposition', 'index_together': '()'},
'address': ('functions.custom_fields.LocationField', [], {}),
'bank': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'business_centre': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'cafe': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'children_room': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'city': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'place_expositions'", 'on_delete': 'models.PROTECT', 'to': u"orm['city.City']"}),
'closed_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'conference_centre': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'country': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['country.Country']", 'on_delete': 'models.PROTECT'}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'disabled_service': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'event_in_year': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'fax': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'foundation_year': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_published': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'logo': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'blank': 'True'}),
'mobile_application': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'online_registration': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'open_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'parking': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'partner': ('django.db.models.fields.NullBooleanField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
'phone': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
'photogallery': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['photologue.Gallery']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
'press_centre': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'rating': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'terminals': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
'top': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['expobanner.Top']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
'total_area': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'total_halls': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'total_pavilions': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
'type': ('functions.custom_fields.EnumField', [], {'default': "'Exposition complex'", 'values': "['Exposition complex', 'Convention centre', 'Exposition centre']"}),
'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
'views': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
'virtual_tour': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'web_page': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'wifi': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
},
u'sites.site': {
'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
u'theme.tag': {
'Meta': {'unique_together': '()', 'object_name': 'Tag', 'index_together': '()'},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'inflect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'old_url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
'theme': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tags'", 'on_delete': 'models.PROTECT', 'to': u"orm['theme.Theme']"}),
'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'})
},
u'theme.theme': {
'Meta': {'unique_together': '()', 'object_name': 'Theme', 'index_together': '()'},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'inflect': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'main_page_conf': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'db_index': 'True'}),
'main_page_expo': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'db_index': 'True'}),
'old_url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'}),
'types': ('django.db.models.fields.BigIntegerField', [], {'default': 'None'}),
'url': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '255'})
},
u'translator.translator': {
'Meta': {'unique_together': '()', 'object_name': 'Translator', 'index_together': '()'},
'birth': ('django.db.models.fields.DateField', [], {}),
'car': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'gender': ('functions.custom_fields.EnumField', [], {'default': "'male'", 'values': "('male', 'female')"}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
}
}
complete_apps = ['file']

@ -14,15 +14,16 @@ import os
FILE_TYPES = ('PDF', 'DOC', 'TXT', 'OTHER')
IMG_TYPES = ('JPG', 'BMP', 'PNG', 'GIF',)
PURPOSES = (('photo', _(u'Фото')),
('flat', _(u'Флаг')),
('logo',_(u'Лого')),
('map',_(u'Карта')),
('scheme teritory',_(u'Схема територии')),
('diplom',_(u'Дипломы')),
('preview',_(u'Превью')),
('preview2',_(u'Превью')),
)
PURPOSES = (
('photo', _(u'Фото')),
('flat', _(u'Флаг')),
('logo', _(u'Лого')),
('map', _(u'Карта')),
('scheme teritory', _(u'Схема територии')),
('diplom', _(u'Дипломы')),
('preview', _(u'Превью')),
('preview2', _(u'Превью')),
)
class FileModel(TranslatableModel):
@ -52,10 +53,12 @@ class FileModel(TranslatableModel):
object_id = models.PositiveIntegerField(blank=True, null=True)
object = generic.GenericForeignKey(content_type, object_id)
file_path = models.FileField(upload_to=get_upload_path)
file_path = models.FileField(u'Файл', upload_to=get_upload_path)
# file_type and purposes uses EnumField for creating Enum type field in Mysql database
file_type = EnumField(values=FILE_TYPES+IMG_TYPES, blank=True)
purpose = EnumField(values=[item1 for item1, item2 in PURPOSES])
purpose = EnumField(
values=[item1 for item1, item2 in PURPOSES]
)
img_width = models.PositiveIntegerField(blank=True, null=True)
img_height = models.PositiveIntegerField(blank=True, null=True)
@ -64,8 +67,8 @@ class FileModel(TranslatableModel):
modified = models.DateTimeField(auto_now=True)
# translations is translated fields
translations = TranslatedFields(
file_name = models.CharField(max_length=50, blank=True),
description = models.TextField(blank=True),
file_name=models.CharField(max_length=50, blank=True),
description=models.TextField(blank=True),
)

@ -157,7 +157,7 @@ def upload_photo(request, id, Model):
elif request.is_ajax() and request.method == 'GET':
data['success'] = True
data['images'] = get_images_list(obj)
data['files'] = get_images_list(obj)
return HttpResponse(json.dumps(data), content_type='application/json')

@ -21,6 +21,7 @@ import random
from functions.custom_views import objects_list, delete_object
from functions.views_help import get_referer
from functions.admin_views import AdminListView
from functions.admin_views import AdminView
def conference_all(request):
@ -189,8 +190,6 @@ def conference_change(request, url):
return render_to_response('place_conference_add.html', args)
from functions.admin_views import AdminView
from file.forms import FileModelForm, FileForm
class PlaceConferenceView(AdminView):
form_class = ConferenceForm
model = PlaceConference
@ -233,15 +232,6 @@ class PlaceConferenceView(AdminView):
return form_class()
def get_context_data(self, **kwargs):
context = super(PlaceConferenceView, self).get_context_data(**kwargs)
obj = self.set_obj()
if obj:
context['file_form'] = FileForm(initial={'model': 'place_conference.PlaceConference'})
files = FileModel.objects.filter(content_type=ContentType.objects.get_for_model(obj),object_id=getattr(obj, 'id'))
context['files'] = files
return context
class PlaceConferenceListView(AdminListView):
template_name = 'c_admin/place_conference/place_conference_list.html'
form_class = PlaceConferenceFilterForm

@ -21,10 +21,10 @@ from functions.http import JsonResponse
from exposition.admin import get_by_lang
from forms import ExpositionForm, PlaceExpositionFormDelete, HallForm, PlaceExpositionFilter
from models import PlaceExposition, Hall
from models import Hall
from city.models import City
from file.models import FileModel, TmpFile
from file.forms import FileModelForm, FileForm
from file.forms import FileModelForm
from photologue.admin import upload_photo
from place_conference.models import PlaceConference
from place_exposition.models import PlaceExposition
@ -245,19 +245,13 @@ class PlaceExpositionView(AdminView):
else:
return form_class()
def get_context_data(self, **kwargs):
context = super(PlaceExpositionView, self).get_context_data(**kwargs)
obj = self.set_obj()
if obj:
context['file_form'] = FileForm(initial={'model': 'place_exposition.PlaceExposition'})
files = FileModel.objects.filter(content_type=ContentType.objects.get_for_model(obj),object_id=getattr(obj, 'id'))
context['files'] = files
context['halls'] = list(Hall.objects.language().filter(place_exposition=self.obj))
context['hall_form'] = HallForm()
return context
def add_hall(request, place_id):
place = get_object_or_404(PlaceExposition, pk=place_id)
form = HallForm(request.POST)

@ -1,22 +1,19 @@
# -*- coding: utf-8 -*-
import datetime
import json
from article.models import Article
from city.models import City
from django.conf import settings
from django.contrib.contenttypes.models import ContentType
from django.core.context_processors import csrf
from django.db.models.loading import get_model
from django.http import Http404, HttpResponse, HttpResponseRedirect
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response
from django.views.generic import DeleteView, TemplateView
from django.views.generic import TemplateView
from exposition.forms import StatisticForm, TimeTableForm
from exposition.models import Exposition, Statistic, TimeTable, TmpTimeTable
from file.forms import FileForm, FileModelForm, PhotoForm
from file.models import FileModel, Photo, TmpFile
from functions import datetime_handler
from file.forms import PhotoForm
from file.models import Photo, TmpFile
from theme.models import Tag
@ -66,81 +63,6 @@ def get_news(request):
return HttpResponse(json.dumps(result), content_type='application/json')
'''
def ajax_post_file(request, obj_id=None):
"""
Takes file and file data and save it
If obj_id = None creates TmpFile
Returns 'file_list.html' template with existing files if id != None.
N/A file_list.html' template with Tmp files filtered by key
"""
if request.POST:
file_form = FileModelForm(request.POST, request.FILES)
if file_form.is_valid():
#if obj_id is not exist create TMPfile objects else FileModel objects
if obj_id != None:
#takes data from hidden input "model" and initial Model
Model = get_model(request.POST['model'].split('.')[0], request.POST['model'].split('.')[1])
#initial model object
obj = Model.objects.get(id=obj_id)
file = file_form.save(request.FILES, obj)
files = FileModel.objects.filter(content_type=ContentType.objects.get_for_model(obj),object_id=getattr(obj, 'id'))
else:
file_form.save(request.FILES)
files = TmpFile.objects.filter(key=request.POST['key'])
return render_to_response('file_list.html', {'files' : files})
args = {}
args['languages'] = settings.LANGUAGES
args['file_form'] = file_form
return render_to_response('ajax_error_form.html', args)
'''
def ajax_post_file(request, obj_id=None):
"""
Takes file and file data and save it
Returns 'file_list.html' template with existing files if id != None.
"""
if request.method == 'POST':
if not obj_id:
raise Http404
file_form = FileForm(request.POST, request.FILES)
if file_form.is_valid():
# takes data from hidden input "model" and initial Model
Model = get_model(request.POST['model'].split('.')[0],
request.POST['model'].split('.')[1])
# initial model object
obj = Model.objects.get(id=obj_id)
file_form.save(request.FILES, obj)
files = FileModel.objects.filter(
content_type=ContentType.objects.get_for_model(obj),
object_id=getattr(obj, 'id')
)
return render_to_response(
'c_admin/file_list.html', {'files': files}
)
else:
args = {
'languages': settings.LANGUAGES,
'file_form': file_form,
'obj_id': obj_id
}
args.update(csrf(request))
return render_to_response('c_admin/ajax_error_form.html', args)
else:
raise Http404
def ajax_post_photo(request, obj_id=None):
if request.POST:
photo_form = PhotoForm(request.POST, request.FILES)
@ -226,15 +148,3 @@ def ajax_delete_timetable(request):
else:
return HttpResponse('error')
def ajax_delete_file(request):
"""
delete file
"""
if request.GET:
file = FileModel.objects.get(id = request.GET['id'])
file.delete()
return HttpResponse('success')
else:
return HttpResponse('error')

@ -42,12 +42,11 @@ urlpatterns = required(
url(r'^rosetta/', include('rosetta.urls')),
url(r'^redirects/', include('redirects.admin_urls')),
url(r'^events/', include('events.admin_urls')),
url(r'^file/', include('file.admin_urls')),
url(r'^language/add/', 'directories.admin.language_add'),
url(r'^currency/add/', 'directories.admin.currency_add'),
# ajax requests
url(r'^ajax_post_file/(?P<obj_id>\d+)/$', 'proj.admin.ajax_post_file'),#must be before /ajax_post_file/
url(r'^ajax_post_file/', 'proj.admin.ajax_post_file'),
url(r'^ajax_post_photo/(?P<obj_id>\d+)/$', 'proj.admin.ajax_post_photo'),#must be before /ajax_post_photo/
url(r'^ajax_post_photo/', 'proj.admin.ajax_post_photo'),
url(r'^ajax_post_stat/(?P<obj_id>\d+)/$', 'proj.admin.ajax_post_stat'),
@ -56,7 +55,6 @@ urlpatterns = required(
url(r'^ajax_post_timetable/', 'proj.admin.ajax_post_timetable'),
url(r'^ajax_delete_timetable/', 'proj.admin.ajax_delete_timetable'),
url(r'^ajax_delete_file/', 'proj.admin.ajax_delete_file'),
url(r'^ajax_city/', 'proj.admin.ajax_city'),
url(r'^ajax_tag/', 'proj.admin.ajax_tag'),
url(r'^ajax/get-news/', 'proj.admin.get_news'),

@ -3,7 +3,7 @@ function init_filer($target) {
$.get($target.data('upload-url'), function(response){
var files = [];
if (response['success']) {
files = response['images'];
files = response['files'];
}
$target.find('.file_uploader').filer({
@ -95,11 +95,19 @@ function init_filer($target) {
synchron: true,
beforeSend: function() {},
success: function(data, itemEl, listEl, boxEl, newInputEl, inputEl, id){
var parent = itemEl.find(".jFiler-jProgressBar").parent();
if (data['success']){
var parent = itemEl.find(".jFiler-jProgressBar").parent();
itemEl.find(".jFiler-jProgressBar").fadeOut("slow", function(){
$("<div class=\"jFiler-item-others text-success\"><i class=\"icon-jfi-check-circle\"></i> Success</div>").hide().appendTo(parent).fadeIn("slow");
});
} else {
var parent = itemEl.find(".jFiler-jProgressBar").parent();
itemEl.find(".jFiler-jProgressBar").fadeOut("slow", function(){
$("<div class=\"jFiler-item-others text-error\"><i class=\"icon-jfi-minus-circle\"></i> Error</div>").hide().appendTo(parent).fadeIn("slow");
});
}
itemEl.find(".jFiler-jProgressBar").fadeOut("slow", function(){
$("<div class=\"jFiler-item-others text-success\"><i class=\"icon-jfi-check-circle\"></i> Success</div>").hide().appendTo(parent).fadeIn("slow");
});
},
error: function(el){
var parent = el.find(".jFiler-jProgressBar").parent();
@ -154,9 +162,11 @@ function init_filer($target) {
});
}
$(function(){
var $uploaders = $('.file_upload_container');
var $uploaders = $('.file_upload_container');
$uploaders.each(function (i, uploader) {
init_filer($(uploader));
});
$uploaders.each(function (i, uploader) {
init_filer($(uploader));
});

@ -404,10 +404,6 @@
return f._assets.textParse((opts._appended ? n.templates.itemAppend : n.templates.item), opts);
},
renderFile: function(file, html, opts) {
console.log(file);
console.log(html.find('.jFiler-item-trash-action').length);
console.log(opts);
console.log('-------------');
if (file.remove_url){
html.find('.jFiler-item-trash-action').attr('href', file.remove_url)
}
@ -440,7 +436,6 @@
return true;
}
if (window.File && window.FileList && window.FileReader && opts.type == "image" && opts.size < 1e+7) {
console.log('renderFile third if');
var y = new FileReader;
y.onload = function(e) {
var m = html.find('.jFiler-item-thumb-image.fi-loading');
@ -492,7 +487,6 @@
};
y.readAsDataURL(file);
} else {
console.log('renderFile else');
var g = f._thumbCreator.generateIcon(opts),
m = html.find('.jFiler-item-thumb-image.fi-loading');
html.addClass('jFiler-no-thumbnail');

@ -1,34 +1,34 @@
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{# Displays article form #}
{% block scripts %}
<script src="{% static 'ckeditor/ckeditor/ckeditor.js' %}"></script>
{# selects #}
<link href="{% static 'js/select/select2.css' %}" rel="stylesheet"/>
<script src="{% static 'js/select/select2.js' %}"></script>
{# ajax #}
<script src="{% static 'custom_js/file_post_ajax.js' %}"></script>
<script src="{% static 'custom_js/select_tag.js' %}"></script>
<link href="{% static 'js/datetimepicker/css/datetimepicker.css' %}" rel="stylesheet"/>
<script src="{% static 'js/datetimepicker/js/bootstrap-datetimepicker.js' %}"></script>
<script>
$(document).ready(function(){
$('#id_publish_date').datetimepicker({
todayHighlight: true,
format : 'yyyy-mm-dd',
minView:2
});
});
</script>
{% endblock %}
{% load static i18n %}
{% block scripts %}
<script src="{% static 'ckeditor/ckeditor/ckeditor.js' %}"></script>
{# selects #}
<link href="{% static 'js/select/select2.css' %}" rel="stylesheet"/>
<script src="{% static 'js/select/select2.js' %}"></script>
{# ajax #}
<script src="{% static 'custom_js/file_post_ajax.js' %}"></script>
<script src="{% static 'custom_js/select_tag.js' %}"></script>
<link href="{% static 'js/datetimepicker/css/datetimepicker.css' %}" rel="stylesheet"/>
<script src="{% static 'js/datetimepicker/js/bootstrap-datetimepicker.js' %}"></script>
<script>
$(document).ready(function(){
$('#id_publish_date').datetimepicker({
todayHighlight: true,
format : 'yyyy-mm-dd',
minView:2
});
});
</script>
<link rel="stylesheet" href="{% static 'jQuery-filer/css/jquery.filer.css' %}">
<link rel="stylesheet" href="{% static 'jQuery-filer/css/jquery.filer-dragdropbox-theme.css' %}">
<script src="{% static 'jQuery-filer/js/jquery.filer.js' %}"></script>
<script src="{% static 'jQuery-filer/js/init.js' %}"></script>
{% endblock %}
{% block body %}
{{ form.errors }}
@ -132,38 +132,9 @@
</div>
</div>
<div class="box span8" id="file">
<div class="box-header well">
<h2><i class="icon-pencil"></i> {% trans "Файлы" %}</h2>
</div>
<div class="box-content">
{% if article %}
{# button that shows modal window with file form #}
<a href="#myModal" id="file_add" role="button" class="btn btn-info" data-toggle="modal">{% trans "Добавить файл" %}</a>
{% else %}
<p>{% trans "Файлы можно добавлять только после введения основных данных" %}</p>
{% endif %}
{# this div shows list of files and refreshes when new file added #}
<div id="file_list">
<table class="table table-hover">
<thead>
<tr>
<td>{% trans "id" %}</td>
<td>{% trans "Файл" %}</td>
<td>{% trans "Имя" %}</td>
<td>{% trans "Назначение" %}</td>
<td></td>
</tr>
</thead>
<tbody>
{% include 'file_list.html' with files=files %}
</tbody>
</table>
</div>
{% include 'c_admin/includes/filegallery.html' with object=article model='article.Article' %}
</div>
</div>
{% if form.draft %}
<div class="box span8">
<div class="control-group {% if form.draft.errors %}error{% endif %}">
@ -183,7 +154,6 @@
</fieldset>
</form>
{% include 'c_admin/includes/file_form.html' with file_form=file_form object=article %}
{% endblock %}

@ -24,102 +24,90 @@
}
{% endblock %}
{# Displays exposition form and file form in modal window #}
{% block scripts %}
<script src="{% static 'ckeditor/ckeditor/ckeditor.js' %}"></script>
<script src="{% static 'tiny_mce/tiny_mce.js' %}"></script>
{# selects #}
<link href="{% static 'js/select/select2.css' %}" rel="stylesheet"/>
<script src="{% static 'js/select/select2.js' %}"></script>
{# datepicker #}
<link href="{% static 'js/datepicker/css/datepicker.css' %}" rel="stylesheet"/>
<script src="{% static 'js/datepicker/js/bootstrap-datepicker.js' %}"></script>
<script src="{% static 'custom_js/formset_add.js' %}"></script>
<!--
{# ajax #}
<script src="{% static 'custom_js/timetable_post.js' %}"></script>
<script src="{% static 'custom_js/place_city_ajax.js' %}"></script>
<script src="{% static 'custom_js/select_tag.js' %}"></script>
-->
{# datetimepicker #}
<link href="{% static 'js/datetimepicker/css/datetimepicker.css' %}" rel="stylesheet"/>
<script src="{% static 'js/datetimepicker/js/bootstrap-datetimepicker.js' %}"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#id_data_begin').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
$('#id_data_end').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
$('#id_end').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy hh:ii'
});
$('#id_begin').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy hh:ii'
});
$('#id_application_deadline').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
$('#id_audience').select4({
tags: false,
multiple: true,
ajax: {
url: '{% url 'admin:events_targetaudience_searchajax' %}',
width: '550px',
dataType: "json",
quietMillis: 200,
data: function(params){
return {term: params.term,
page: params.page};
},
processResults: function (data) {
return {results: $.map(data, function(obj) {
obj.text = obj.label;
return obj
})};
},
{% block scripts %}
<script src="{% static 'ckeditor/ckeditor/ckeditor.js' %}"></script>
<script src="{% static 'tiny_mce/tiny_mce.js' %}"></script>
{# selects #}
<link href="{% static 'js/select/select2.css' %}" rel="stylesheet"/>
<script src="{% static 'js/select/select2.js' %}"></script>
{# datepicker #}
<link href="{% static 'js/datepicker/css/datepicker.css' %}" rel="stylesheet"/>
<script src="{% static 'js/datepicker/js/bootstrap-datepicker.js' %}"></script>
<script src="{% static 'custom_js/formset_add.js' %}"></script>
<!--
{# ajax #}
<script src="{% static 'custom_js/timetable_post.js' %}"></script>
<script src="{% static 'custom_js/place_city_ajax.js' %}"></script>
<script src="{% static 'custom_js/select_tag.js' %}"></script>
-->
{# datetimepicker #}
<link href="{% static 'js/datetimepicker/css/datetimepicker.css' %}" rel="stylesheet"/>
<script src="{% static 'js/datetimepicker/js/bootstrap-datetimepicker.js' %}"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#id_data_begin').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
$('#id_data_end').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
$('#id_end').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy hh:ii'
});
$('#id_begin').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy hh:ii'
});
$('#id_application_deadline').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
$('#id_audience').select4({
tags: false,
multiple: true,
ajax: {
url: '{% url 'admin:events_targetaudience_searchajax' %}',
width: '550px',
dataType: "json",
quietMillis: 200,
data: function(params){
return {term: params.term,
page: params.page};
},
{# createTag: function(params) {#}
{# return undefined;#}
{# },#}
});
{##}
{# $('#id_tag, #id_theme, #id_city, #id_country, #id_place_conference').on('select2-open', function () {#}
{# $('#id_audience').prop("disabled", true);#}
{# });#}
{# $('#id_tag, #id_theme, #id_city, #id_country, #id_place_conference').on('select2-close', function () {#}
{# $('#id_audience').prop("disabled", false);#}
{# });#}
processResults: function (data) {
return {results: $.map(data, function(obj) {
obj.text = obj.label;
return obj
})};
},
},
});
</script>
});
</script>
{% endblock %}
<link rel="stylesheet" href="{% static 'jQuery-filer/css/jquery.filer.css' %}">
<link rel="stylesheet" href="{% static 'jQuery-filer/css/jquery.filer-dragdropbox-theme.css' %}">
<script src="{% static 'jQuery-filer/js/jquery.filer.js' %}"></script>
<script src="{% static 'jQuery-filer/js/init.js' %}"></script>
{% endblock %}
{% block body %}
<form method="post" class="form-horizontal" enctype="multipart/form-data" name="form1" id="form1"> {% csrf_token %}
@ -509,39 +497,8 @@
{% endif %}
</div>
<div class="box span8" id="file">
<div class="box-header well">
<h2><i class="icon-pencil"></i> Файлы</h2>
</div>
<div class="box-content">
{% if object %}
{# button that shows modal window with file form #}
<a href="#myModal" id="file_add" role="button" class="btn btn-info" data-toggle="modal">Добавить файл</a>
{% else %}
<p>Файлы можно добавлять только после введения основных данных</p>
{% endif %}
{# this div shows list of files and refreshes when new file added #}
<div id="file_list">
<table class="table table-hover">
<thead>
<tr>
<td>id</td>
<td>Файл</td>
<td>Имя</td>
<td>Назначение</td>
<td></td>
</tr>
</thead>
<tbody>
{% include 'file_list.html' with files=files %}
</tbody>
</table>
</div>
</div>
</div>
{% include 'c_admin/includes/filegallery.html' with object=object model='conference.Conference' %}
{% include 'c_admin/includes/photogallery.html' with object=object %}
<div class="box span8">
@ -574,6 +531,5 @@
</form>
{% include 'c_admin/includes/file_form.html' with file_form=file_form object=object %}
{% include 'c_admin/includes/stat_form.html' with form=stat_form object=object %}
{% endblock %}

@ -1,4 +1,4 @@
{% extends 'base.html' %}
{% extends 'c_admin/base.html' %}
{% load static %}
{% load thumbnail %}
@ -13,52 +13,51 @@
}
{% endblock %}
{# Displays exposition form and file form in modal window #}
{% block scripts %}
<script src="{% static 'ckeditor/ckeditor/ckeditor.js' %}"></script>
<script src="{% static 'tiny_mce/tiny_mce.js' %}"></script>
{# selects #}
<link href="{% static 'js/select/select2.css' %}" rel="stylesheet"/>
<script src="{% static 'js/select/select2.js' %}"></script>
<script src="{% static 'custom_js/formset_add.js' %}"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#id_data_begin').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
$('#id_data_end').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
$('#id_end').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy hh:ii'
});
$('#id_begin').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy hh:ii'
{% block scripts %}
<script src="{% static 'ckeditor/ckeditor/ckeditor.js' %}"></script>
<script src="{% static 'tiny_mce/tiny_mce.js' %}"></script>
{# selects #}
<link href="{% static 'js/select/select2.css' %}" rel="stylesheet"/>
<script src="{% static 'js/select/select2.js' %}"></script>
<script src="{% static 'custom_js/formset_add.js' %}"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#id_data_begin').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
$('#id_data_end').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
$('#id_end').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy hh:ii'
});
});
$('#id_begin').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy hh:ii'
$('#id_application_deadline').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
});
$('#id_application_deadline').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
</script>
{% endblock %}
});
</script>
<link rel="stylesheet" href="{% static 'jQuery-filer/css/jquery.filer.css' %}">
<link rel="stylesheet" href="{% static 'jQuery-filer/css/jquery.filer-dragdropbox-theme.css' %}">
<script src="{% static 'jQuery-filer/js/jquery.filer.js' %}"></script>
<script src="{% static 'jQuery-filer/js/init.js' %}"></script>
{% endblock %}
{% block body %}
@ -494,42 +493,10 @@
</div>
{% endif %}
</div>
<div class="box span8" id="file">
<div class="box-header well">
<h2><i class="icon-pencil"></i> Файлы</h2>
</div>
<div class="box-content">
{% if object %}
{# button that shows modal window with file form #}
<a href="#myModal" id="file_add" role="button" class="btn btn-info" data-toggle="modal">Добавить файл</a>
{% else %}
<p>Файлы можно добавлять только после введения основных данных</p>
{% endif %}
{# this div shows list of files and refreshes when new file added #}
<div id="file_list">
<table class="table table-hover">
<thead>
<tr>
<td>id</td>
<td>Файл</td>
<td>Имя</td>
<td>Назначение</td>
<td></td>
</tr>
</thead>
<tbody>
{% include 'file_list.html' with files=files %}
</tbody>
</table>
</div>
</div>
</div>
{% include 'c_admin/includes/filegallery.html' with object=object model='exposition.Exposition' %}
{% include 'c_admin/includes/photogallery.html' with object=object %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-pencil"></i>Мета данные</h2>
@ -590,14 +557,13 @@
{% with field='place' form=timetable_form languages=languages %}
{% include 'c_admin/forms/multilang.html' %}
{% endwith %}
<!--
<div class="control-group">
<label class="control-label">Организатор:</label>
<div class="controls">
{{ timetable_form.timetable_organiser }}
</div>
</div>
-->
{# <div class="control-group">#}
{# <label class="control-label">Организатор:</label>#}
{# <div class="controls">#}
{# {{ timetable_form.timetable_organiser }}#}
{# </div>#}
{# </div>#}
</div>
</div>
@ -614,6 +580,5 @@
</div>
</div>
{% include 'c_admin/includes/file_form.html' with file_form=file_form object=object %}
{% include 'c_admin/includes/stat_form.html' with form=stat_form object=object %}
{% endblock %}

@ -0,0 +1,26 @@
{% extends 'c_admin/base.html' %}
{% block body %}
<form action="." method="post" enctype="multipart/form-data" class="form-horizontal">
<fieldset>
<legend><i class="icon-edit"></i>{% if object %} Изменить {% else %} Добавить {% endif %} файл</legend>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-pencil"></i> Основная информация</h2>
</div>
<div class="box-content">
{{ form.as_p }}
</div>
<div class="modal-footer">
<div class="controls">
<input class="btn btn-primary" type="submit" value="{% if object %}Изменить{% else %}Добавить{% endif %}">
<input type="reset" class="btn" value="Отменить" data-dismiss="modal">
</div>
</div>
</div>
</fieldset>
</form>
{% endblock %}

@ -1,25 +0,0 @@
{% load thumbnail %}
{% comment %}
Uses in ajax call
Returns table with files properties
{% endcomment %}
{% for file in files %}
<tr>
<td>{{ file.id }}</td>
<td>
{% thumbnail file.file_path "100x100" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
</td>
<td>{{ file.file_name }}</td>
<td>{{ file.purpose }}</td>
<td>
<button class="btn btn-danger delete_file" value="{{ file.id }}">
<i class="icon-trash icon-white"></i> Удалить
</button>
</td>
</tr>
{% endfor %}

@ -1,49 +0,0 @@
<div class="modal hide fade" id="myModal" >
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true" id="close">&times;</button>
<h3>Добавить файл</h3>
</div>
<div id="form_body">
<form method="post" class="form-horizontal" enctype="multipart/form-data" name="file_form" id="file_form" > {% csrf_token %}
<div class="modal-body">
{{ file_form.model }}
<input type="hidden" id="obj_id" value="{{ object.id }}">
{# file_path #}
<div class="control-group{% if file_form.file_path.errors %}error{% endif %}">
<label class="control-label">{{ file_form.file_path.label }}:</label>
<div class="controls">{{ file_form.file_path }}
<span class="help-inline">{{ file_form.file_path.errors }}</span>
</div>
</div>
{# file purpose #}
<div class="control-group{% if file_form.purpose.errors %}error{% endif %}">
<label class="control-label">{{ file_form.purpose.label }}:</label>
<div class="controls">{{ file_form.purpose }}
<span class="help-inline">{{ file_form.purpose.errors }}</span>
</div>
</div>
{# file_name #}
{% with field='file_name' form=file_form languages=languages %}
{% include 'c_admin/forms/multilang.html' %}
{% endwith %}
{# file_description #}
{% with field='description' form=file_form languages=languages %}
{% include 'c_admin/forms/multilang.html' %}
{% endwith %}
</div>
<div class="modal-footer">
<div class="controls">
<input class="btn btn-primary" type="submit" value="Добавить">
<input type="reset" class="btn" value="Отменить" data-dismiss="modal">
</div>
</div>
</form>
</div>
</div>

@ -0,0 +1,19 @@
{% load static %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-pencil"></i>Файлы</h2>
</div>
<div class="box-content">
{% if object %}
<div class="file_upload_container"
data-upload-url="{% url 'ajax_post_file' object.pk %}?model={{ model }}">
<input type="file" name="file_path" class="file_uploader">
</div>
{% else %}
<p>Файлы можно добавлять только после введения основных данных</p>
{% endif %}
</div>
</div>

@ -11,12 +11,6 @@
<input type="file" name="image" class="file_uploader">
</div>
<link rel="stylesheet" href="{% static 'jQuery-filer/css/jquery.filer.css' %}">
<link rel="stylesheet" href="{% static 'jQuery-filer/css/jquery.filer-dragdropbox-theme.css' %}">
<script src="{% static 'jQuery-filer/js/jquery.filer.js' %}"></script>
<script src="{% static 'jQuery-filer/js/init.js' %}"></script>
{% else %}
<p>Изображения можно добавлять только после введения основных данных</p>
{% endif %}

@ -12,7 +12,6 @@
{% endblock %}
{% block scripts %}
<script src="{% static 'ckeditor/ckeditor/ckeditor.js' %}"></script>
{# google map не забыть скачать скрипты на локал #}
<link href='http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/themes/redmond/jquery-ui.css' rel="stylesheet"/>
@ -28,6 +27,10 @@
<!-- <script src="{% static 'custom_js/file_post_ajax.js' %}"></script>-->
<script src="{% static 'custom_js/place_city_ajax.js' %}"></script>
<link rel="stylesheet" href="{% static 'jQuery-filer/css/jquery.filer.css' %}">
<link rel="stylesheet" href="{% static 'jQuery-filer/css/jquery.filer-dragdropbox-theme.css' %}">
<script src="{% static 'jQuery-filer/js/jquery.filer.js' %}"></script>
<script src="{% static 'jQuery-filer/js/init.js' %}"></script>
{% endblock %}
{% block body %}
@ -263,39 +266,7 @@
</div>
</div>
<div class="box span8" id="file">
<div class="box-header well">
<h2><i class="icon-pencil"></i> Файлы</h2>
</div>
<div class="box-content">
{% if object %}
{# button that shows modal window with file form #}
<a href="#myModal" id="file_add" role="button" class="btn btn-info" data-toggle="modal">Добавить файл</a>
{% else %}
<p>Файлы можно добавлять только после введения основных данных</p>
{% endif %}
{# this div shows list of files and refreshes when new file added #}
<div id="file_list">
<table class="table table-hover">
<thead>
<tr>
<td>id</td>
<td>Файл</td>
<td>Имя</td>
<td>Назначение</td>
<td></td>
</tr>
</thead>
<tbody>
{% include 'file_list.html' with files=files %}
</tbody>
</table>
</div>
</div>
</div>
{% include 'c_admin/includes/filegallery.html' with object=object model='place_conference.PlaceConference' %}
{% include 'c_admin/includes/photogallery.html' with object=object %}
<div class="box span8">
@ -333,6 +304,5 @@
{% include 'c_admin/includes/hall_form.html' with form=hall_form object=object %}
{% include 'c_admin/includes/file_form.html' with file_form=file_form object=object %}
{% endblock %}

@ -1,5 +1,6 @@
{% extends 'base.html' %}
{% load static %}
{% block styles %}
.hover{
display:none;
@ -12,7 +13,6 @@
{% endblock %}
{% block scripts %}
<script src="{% static 'ckeditor/ckeditor/ckeditor.js' %}"></script>
{# google map не забыть скачать скрипты на локал #}
<link href='https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/themes/redmond/jquery-ui.css' rel="stylesheet"/>
@ -28,6 +28,10 @@
<!-- <script src="{% static 'custom_js/file_post_ajax.js' %}"></script>-->
<script src="{% static 'custom_js/place_city_ajax.js' %}"></script>
<link rel="stylesheet" href="{% static 'jQuery-filer/css/jquery.filer.css' %}">
<link rel="stylesheet" href="{% static 'jQuery-filer/css/jquery.filer-dragdropbox-theme.css' %}">
<script src="{% static 'jQuery-filer/js/jquery.filer.js' %}"></script>
<script src="{% static 'jQuery-filer/js/init.js' %}"></script>
{% endblock %}
{% block body %}
@ -323,39 +327,7 @@
</div>
</div>
<div class="box span8" id="file">
<div class="box-header well">
<h2><i class="icon-pencil"></i> Файлы</h2>
</div>
<div class="box-content">
{% if object %}
{# button that shows modal window with file form #}
<a href="#myModal" id="file_add" role="button" class="btn btn-info" data-toggle="modal">Добавить файл</a>
{% else %}
<p>Файлы можно добавлять только после введения основных данных</p>
{% endif %}
{# this div shows list of files and refreshes when new file added #}
<div id="file_list">
<table class="table table-hover">
<thead>
<tr>
<td>id</td>
<td>Файл</td>
<td>Имя</td>
<td>Назначение</td>
<td></td>
</tr>
</thead>
<tbody>
{% include 'file_list.html' with files=files %}
</tbody>
</table>
</div>
</div>
</div>
{% include 'c_admin/includes/filegallery.html' with object=object model='place_exposition.PlaceExposition' %}
{% include 'c_admin/includes/photogallery.html' with object=object %}
<div class="box span8">
@ -393,6 +365,5 @@
{% include 'c_admin/includes/hall_form.html' with form=hall_form object=object %}
{% include 'c_admin/includes/file_form.html' with file_form=file_form object=object %}
{% endblock %}

Loading…
Cancel
Save