parent
1cd024f6a9
commit
befbbd4459
24 changed files with 1319 additions and 104 deletions
@ -1,12 +1,18 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
from django.conf.urls import patterns, include, url |
from django.conf.urls import patterns, include, url |
||||||
from admin import ExpositionListView |
from admin import ExpositionListView, ExpositionView |
||||||
|
|
||||||
urlpatterns = patterns('exposition.admin', |
urlpatterns = patterns('exposition.admin', |
||||||
|
url(r'^upload-photo/(?P<expo_id>.*)/$', 'upload_exposition_photo'), |
||||||
|
|
||||||
url(r'^add.*/$', 'exposition_add'), |
url(r'^add.*/$', 'exposition_add'), |
||||||
url(r'^delete/(?P<url>.*)/$', 'exposition_delete'), |
url(r'^delete/(?P<url>.*)/$', 'exposition_delete'), |
||||||
url(r'^change/(?P<url>.*)/$', 'exposition_change'), |
url(r'^change/(?P<url>.*)/$', 'exposition_change'), |
||||||
url(r'^all/$', ExpositionListView.as_view()), |
url(r'^all/$', ExpositionListView.as_view()), |
||||||
url(r'^switch/(?P<url>.*)/(?P<action>.*)$', 'exposition_switch'), |
url(r'^switch/(?P<url>.*)/(?P<action>.*)$', 'exposition_switch'), |
||||||
url(r'^copy/(?P<url>.*)$', 'exposition_copy'), |
url(r'^copy/(?P<url>.*)$', 'exposition_copy'), |
||||||
|
|
||||||
|
url(r'^$', ExpositionView.as_view()), |
||||||
|
url(r'^(?P<url>.*)/$', ExpositionView.as_view()), |
||||||
|
|
||||||
) |
) |
||||||
|
|||||||
@ -0,0 +1,48 @@ |
|||||||
|
from django.core.management.base import BaseCommand, CommandError |
||||||
|
from exposition.models import Exposition |
||||||
|
from django.contrib.sites.models import Site |
||||||
|
from photologue.models import Gallery, Photo |
||||||
|
from file.models import FileModel |
||||||
|
from django.core.files import File |
||||||
|
from django.core.files.temp import NamedTemporaryFile |
||||||
|
import urllib2 |
||||||
|
from django.conf import settings |
||||||
|
from django.utils import translation |
||||||
|
|
||||||
|
def handle_expo(item): |
||||||
|
logo = item.get_logo() |
||||||
|
translation.activate('en') |
||||||
|
|
||||||
|
domain = 'http://hit.expomap.ru' |
||||||
|
url = domain+logo.file_path.url |
||||||
|
file_name = url.split('/')[-1] |
||||||
|
download_to = settings.MEDIA_ROOT+'exposition/logo/'+file_name |
||||||
|
try: |
||||||
|
response = urllib2.urlopen(url, timeout=5) |
||||||
|
except: |
||||||
|
print('download error') |
||||||
|
return None |
||||||
|
|
||||||
|
with open(download_to,'wb') as f: |
||||||
|
f.write(response.read()) |
||||||
|
f.close() |
||||||
|
file_name = 'exposition/logo/'+file_name |
||||||
|
item.logo = file_name |
||||||
|
item.save() |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand): |
||||||
|
def handle(self, *args, **options): |
||||||
|
for exposition in Exposition.objects.all('en'): |
||||||
|
|
||||||
|
|
||||||
|
if exposition.files.filter(purpose='logo').exists(): |
||||||
|
handle_expo(exposition) |
||||||
|
|
||||||
|
print(exposition) |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,679 @@ |
|||||||
|
{% extends 'base.html' %} |
||||||
|
{% load static %} |
||||||
|
{% load thumbnail %} |
||||||
|
|
||||||
|
{% block styles %} |
||||||
|
.hover{ |
||||||
|
display:none; |
||||||
|
margin-bottom:10px; |
||||||
|
|
||||||
|
} |
||||||
|
.photo:hover .hover { |
||||||
|
display: block; |
||||||
|
} |
||||||
|
{% 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 |
||||||
|
}); |
||||||
|
|
||||||
|
}); |
||||||
|
</script> |
||||||
|
|
||||||
|
{% endblock %} |
||||||
|
|
||||||
|
{% block body %} |
||||||
|
|
||||||
|
{# Uses multilang.html template for translated fields #} |
||||||
|
|
||||||
|
<form method="post" class="form-horizontal" enctype="multipart/form-data" name="form1" id="form1"> {% csrf_token %} |
||||||
|
<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"> |
||||||
|
{# Hidden inputs uses for comparing with TmpFile objects #} |
||||||
|
{{ form.key }} |
||||||
|
{# Hidden input uses in clean method for checking url #} |
||||||
|
{{ form.exposition_id }} |
||||||
|
|
||||||
|
{# name #} |
||||||
|
{% with field='name' form=form languages=languages %} |
||||||
|
{% include 'admin/forms/multilang.html' %} |
||||||
|
{% endwith %} |
||||||
|
{# main_title #} |
||||||
|
{% with field='main_title' form=form languages=languages %} |
||||||
|
{% include 'admin/forms/multilang.html' %} |
||||||
|
{% endwith %} |
||||||
|
{# data_begin #} |
||||||
|
<div class="control-group {% if form.data_begin.errors %}error{% endif %}"> |
||||||
|
<label class="control-label"><b>{{ form.data_begin.label }}:</b></label> |
||||||
|
<div class="controls"> |
||||||
|
|
||||||
|
{{ form.data_begin }} |
||||||
|
<span class="add-on"> |
||||||
|
<i data-time-icon="icon-time" data-date-icon="icon-calendar"></i> |
||||||
|
</span> |
||||||
|
|
||||||
|
<span class="help-inline">{{ form.data_begin.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# data_end #} |
||||||
|
<div class="control-group {% if form.data_end.errors %}error{% endif %}"> |
||||||
|
<label class="control-label"><b>{{ form.data_end.label }}:</b></label> |
||||||
|
<div class="controls">{{ form.data_end }} |
||||||
|
<span class="help-inline">{{ form.data_end.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
{# country #} |
||||||
|
<div class="control-group {% if form.country.errors %}error{% endif %}"> |
||||||
|
<label class="control-label"><b>{{ form.country.label }}:</b></label> |
||||||
|
<div class="controls">{{ form.country }} |
||||||
|
<span class="help-inline">{{ form.country.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# city #} |
||||||
|
<div class="control-group {% if form.city.errors %}error{% endif %}"> |
||||||
|
<label class="control-label"><b>{{ form.city.label }}:</b></label> |
||||||
|
<div class="controls">{{ form.city }} |
||||||
|
<span class="help-inline">{{ form.city.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# place #} |
||||||
|
<div class="control-group {% if form.place.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.place.label }}:</label> |
||||||
|
<div class="controls">{{ form.place }} |
||||||
|
<span class="help-inline">{{ form.place.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# theme #} |
||||||
|
<div class="control-group {% if form.theme.errors %}error{% endif %}"> |
||||||
|
<label class="control-label"><b>{{ form.theme.label }}:</b></label> |
||||||
|
<div class="controls">{{ form.theme }} |
||||||
|
<span class="help-inline">{{ form.theme.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# tag #} |
||||||
|
<div class="control-group {% if form.tag.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.tag.label }}:</label> |
||||||
|
<div class="controls">{{ form.tag }} |
||||||
|
<span class="help-inline">{{ form.tag.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# logo #} |
||||||
|
<div class="control-group {% if form.logo.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.logo.label }}:</label> |
||||||
|
<div class="controls">{{ form.logo }} |
||||||
|
<span class="help-inline">{{ form.logo.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
{# quality_label #} |
||||||
|
<div class="control-group {% if form.quality_label.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.quality_label.label }}:</label> |
||||||
|
<div class="controls">{{ form.quality_label }} |
||||||
|
<span class="help-inline">{{ form.quality_label.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# canceled #} |
||||||
|
<div class="control-group {% if form.canceled.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.canceled.label }}:</label> |
||||||
|
<div class="controls">{{ form.canceled }} |
||||||
|
<span class="help-inline">{{ form.canceled.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# moved #} |
||||||
|
<div class="control-group {% if form.moved.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.moved.label }}:</label> |
||||||
|
<div class="controls">{{ form.moved }} |
||||||
|
<span class="help-inline">{{ form.moved.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# expohit #} |
||||||
|
<div class="control-group {% if form.expohit.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.expohit.label }}:</label> |
||||||
|
<div class="controls">{{ form.expohit }} |
||||||
|
<span class="help-inline">{{ form.expohit.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="box span8" > |
||||||
|
<div class="box-header well"> |
||||||
|
<h2><i class="icon-pencil"></i> Дополнительная информация</h2> |
||||||
|
</div> |
||||||
|
<div class="box-content"> |
||||||
|
{# description #} |
||||||
|
{% with field='description' form=form languages=languages %} |
||||||
|
{% include 'admin/forms/multilang.html' %} |
||||||
|
{% endwith %} |
||||||
|
{# periodic #} |
||||||
|
<div class="control-group {% if form.periodic.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.periodic.label }}:</label> |
||||||
|
<div class="controls">{{ form.periodic }} |
||||||
|
<span class="help-inline">{{ form.periodic.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# audience #} |
||||||
|
<div class="control-group {% if form.audience.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.audience.label }}:</label> |
||||||
|
<div class="controls">{{ form.audience }} |
||||||
|
<span class="help-inline">{{ form.audience.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# web_page #} |
||||||
|
<div class="control-group {% if form.web_page.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.web_page.label }}:</label> |
||||||
|
<div class="controls">{{ form.web_page }} |
||||||
|
<span class="help-inline">{{ form.web_page.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# products #} |
||||||
|
{% with field='products' form=form languages=languages %} |
||||||
|
{% include 'admin/forms/multilang.html' %} |
||||||
|
{% endwith %} |
||||||
|
{# time #} |
||||||
|
{% with field='time' form=form languages=languages %} |
||||||
|
{% include 'admin/forms/multilang.html' %} |
||||||
|
{% endwith %} |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="box span8"> |
||||||
|
<div class="box-header well"> |
||||||
|
<h2><i class="icon-pencil"></i>Условия участия</h2> |
||||||
|
</div> |
||||||
|
<div class="box-content"> |
||||||
|
{# currency #} |
||||||
|
<div class="control-group {% if form.currency.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.currency.label }}:</label> |
||||||
|
<div class="controls">{{ form.currency }} |
||||||
|
<span class="help-inline">{{ form.currency.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# application_deadline #} |
||||||
|
<div class="control-group {% if form.application_deadline.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.application_deadline.label }}:</label> |
||||||
|
<div class="controls">{{ form.application_deadline }} |
||||||
|
<span class="help-inline">{{ form.application_deadline.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
{# min_stand_size #} |
||||||
|
<div class="control-group {% if form.min_stand_size.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.min_stand_size.label }}:</label> |
||||||
|
<div class="controls">{{ form.min_stand_size }} |
||||||
|
<span class="help-inline">{{ form.min_stand_size.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# price_day #} |
||||||
|
<div class="control-group {% if form.price_day.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.price_day.label }}:</label> |
||||||
|
<div class="controls">{{ form.price_day }} |
||||||
|
<span class="help-inline">{{ form.price_day.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# price_all #} |
||||||
|
<div class="control-group {% if form.price_all.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.price_all.label }}:</label> |
||||||
|
<div class="controls">{{ form.price_all }} |
||||||
|
<span class="help-inline">{{ form.price_all.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% include 'admin/forms/multilang.html' with field='pre_condition' form=form languages=languages %} |
||||||
|
{# price_day_bar #} |
||||||
|
<div class="control-group {% if form.price_day_bar.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.price_day_bar.label }}:</label> |
||||||
|
<div class="controls">{{ form.price_day_bar }} |
||||||
|
<span class="help-inline">{{ form.price_day_bar.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# price_all_bar #} |
||||||
|
<div class="control-group {% if form.price_all_bar.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.price_all_bar.label }}:</label> |
||||||
|
<div class="controls">{{ form.price_all_bar }} |
||||||
|
<span class="help-inline">{{ form.price_all_bar.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
{% include 'admin/forms/multilang.html' with field='stand_condition' form=form languages=languages %} |
||||||
|
{# price_catalog #} |
||||||
|
<div class="control-group {% if form.price_catalog.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.price_catalog.label }}:</label> |
||||||
|
<div class="controls">{{ form.price_catalog }} |
||||||
|
<span class="help-inline">{{ form.price_catalog.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# tax #} |
||||||
|
<div class="control-group {% if form.tax.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.tax.label }}:</label> |
||||||
|
<div class="controls">{{ form.tax }} |
||||||
|
<span class="help-inline">{{ form.tax.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% include 'admin/forms/multilang.html' with field='visit_note' form=form languages=languages %} |
||||||
|
{# min_closed_area #} |
||||||
|
<div class="control-group {% if form.min_closed_area.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.min_closed_area.label }}:</label> |
||||||
|
<div class="controls">{{ form.min_closed_area }} |
||||||
|
<span class="help-inline">{{ form.min_closed_area.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# max_closed_area #} |
||||||
|
<div class="control-group {% if form.max_closed_area.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.max_closed_area.label }}:</label> |
||||||
|
<div class="controls">{{ form.max_closed_area }} |
||||||
|
<span class="help-inline">{{ form.max_closed_area.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# min_closed_equipped_area #} |
||||||
|
<div class="control-group {% if form.min_closed_equipped_area.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.min_closed_equipped_area.label }}:</label> |
||||||
|
<div class="controls">{{ form.min_closed_equipped_area }} |
||||||
|
<span class="help-inline">{{ form.min_closed_equipped_area.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# max_closed_equipped_area #} |
||||||
|
<div class="control-group {% if form.max_closed_equipped_area.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.max_closed_equipped_area.label }}:</label> |
||||||
|
<div class="controls">{{ form.max_closed_equipped_area }} |
||||||
|
<span class="help-inline">{{ form.max_closed_equipped_area.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# min_open_area #} |
||||||
|
<div class="control-group {% if form.min_open_area.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.min_open_area.label }}:</label> |
||||||
|
<div class="controls">{{ form.min_open_area }} |
||||||
|
<span class="help-inline">{{ form.min_open_area.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# max_open_area #} |
||||||
|
<div class="control-group {% if form.max_open_area.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.max_open_area.label }}:</label> |
||||||
|
<div class="controls">{{ form.max_open_area }} |
||||||
|
<span class="help-inline">{{ form.max_open_area.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# min_area #} |
||||||
|
<div class="control-group {% if form.min_area.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.min_area.label }}:</label> |
||||||
|
<div class="controls">{{ form.min_area }} |
||||||
|
<span class="help-inline">{{ form.min_area.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# registration_payment #} |
||||||
|
<div class="control-group {% if form.registration_payment.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.registration_payment.label }}:</label> |
||||||
|
<div class="controls">{{ form.registration_payment }} |
||||||
|
<span class="help-inline">{{ form.registration_payment.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% include 'admin/forms/multilang.html' with field='participation_note' form=form languages=languages %} |
||||||
|
{# discount #} |
||||||
|
<div class="control-group {% if form.discount.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.discount.label }}:</label> |
||||||
|
<div class="controls">{{ form.discount }} |
||||||
|
<span class="help-inline">{{ form.discount.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# discount_description #} |
||||||
|
{% with field='discount_description' form=form languages=languages %} |
||||||
|
{% include 'admin/forms/multilang.html' %} |
||||||
|
{% endwith %} |
||||||
|
{% include 'admin/forms/multilang.html' with field='stat_countries' form=form languages=languages %} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="box span8"> |
||||||
|
<div class="box-header well"> |
||||||
|
<h2><i class="icon-pencil"></i>Участники</h2> |
||||||
|
</div> |
||||||
|
<div class="box-content"> |
||||||
|
{# organiser #} |
||||||
|
<div class="control-group {% if form.organiser.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.organiser.label }}:</label> |
||||||
|
<div class="controls">{{ form.organiser }} |
||||||
|
<span class="help-inline">{{ form.organiser.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# company #} |
||||||
|
<div class="control-group {% if form.company.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.company.label }}:</label> |
||||||
|
<div class="controls">{{ form.company }} |
||||||
|
<span class="help-inline">{{ form.company.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="box span8"> |
||||||
|
<div class="box-header well"> |
||||||
|
<h2><i class="icon-pencil"></i>Деловая программа</h2> |
||||||
|
</div> |
||||||
|
<div class="box-content"> |
||||||
|
{% if object %} |
||||||
|
<div id="timetable_wrap"> |
||||||
|
<table class="table"> |
||||||
|
<colgroup> |
||||||
|
<col span="1" style="width: 35%;"> |
||||||
|
<col span="1" style="width: 10%;"> |
||||||
|
<col span="1" style="width: 10%;"> |
||||||
|
<col span="1" style="width: 25%;"> |
||||||
|
<col span="1" style="width: 10%;"> |
||||||
|
<col span="1" style="width: 10%;"> |
||||||
|
</colgroup> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<th>Программа</th> |
||||||
|
<th>Начало</th> |
||||||
|
<th>Конец</th> |
||||||
|
<th>Спикеры</th> |
||||||
|
<th>Организатор</th> |
||||||
|
<th> </th> |
||||||
|
</tr> |
||||||
|
|
||||||
|
</thead> |
||||||
|
<tbody> |
||||||
|
{% for timetable in timetables %} |
||||||
|
<tr> |
||||||
|
<td>{{ timetable.programe|safe }}</td> |
||||||
|
<td>{{ timetable.begin|date:"o-m-d H:i" }}</td> |
||||||
|
<td>{{ timetable.end|date:"o-m-d H:i" }}</td> |
||||||
|
<td>{{ timetable.speaker }}</td> |
||||||
|
<td> |
||||||
|
{{ timetable.timetable_organiser }} |
||||||
|
</td> |
||||||
|
<td> |
||||||
|
<button class="btn btn-danger remove_timetable" value="{{ timetable.id }}"> |
||||||
|
Удалить |
||||||
|
</button> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
{% endfor %} |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
</div> |
||||||
|
|
||||||
|
<a href="#timetableModal" id="timetable_add" role="btn btn-success" class="btn btn-success" data-toggle="modal"><i class="icon-plus-sign icon-white"></i> Добавить program</a> |
||||||
|
{% else %} |
||||||
|
<p>Фото можна добавлять только после введения основных даных</p> |
||||||
|
{% endif %} |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="box span8"> |
||||||
|
<div class="box-header well"> |
||||||
|
<h2><i class="icon-pencil"></i>Статистика</h2> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="box-content"> |
||||||
|
{# foundation_year #} |
||||||
|
<div class="control-group {% if form.foundation_year.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.foundation_year.label }}:</label> |
||||||
|
<div class="controls">{{ form.foundation_year }} |
||||||
|
<span class="help-inline">{{ form.foundation_year.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# members #} |
||||||
|
<div class="control-group {% if form.members.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.members.label }}:</label> |
||||||
|
<div class="controls">{{ form.members }} |
||||||
|
<span class="help-inline">{{ form.members.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{# visitors #} |
||||||
|
<div class="control-group {% if form.visitors.errors %}error{% endif %}"> |
||||||
|
<label class="control-label">{{ form.visitors.label }}:</label> |
||||||
|
<div class="controls">{{ form.visitors }} |
||||||
|
<span class="help-inline">{{ form.visitors.errors }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
{% if formset_statistic.errors %} |
||||||
|
<div class="alert alert-error"> |
||||||
|
{% for form in formset_statistic.forms %} |
||||||
|
|
||||||
|
{% for key, value in form.errors.items %} |
||||||
|
<p>{{ value }}</p> |
||||||
|
{% endfor %} |
||||||
|
|
||||||
|
{% endfor %} |
||||||
|
</div> |
||||||
|
{% endif %} |
||||||
|
|
||||||
|
{# formset of stat #} |
||||||
|
{{ formset_statistic.management_form }} |
||||||
|
|
||||||
|
<div id="halls" style="padding-left: 160px;{% if object %} {% else %}display: none;{% endif %}"> |
||||||
|
|
||||||
|
<table class="table table-hover" style=" width: 100%;"> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<td>Год</td> |
||||||
|
<td>Посетители</td> |
||||||
|
<td>Участники</td> |
||||||
|
<td></td> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tbody> |
||||||
|
{% for form in formset_statistic.forms %} |
||||||
|
<tr class="item" {% if object %}{% else %}style="display: NONE"{% endif %}> |
||||||
|
<td>{{ form.year }}</td> |
||||||
|
<td>{{ form.visitors }}</td> |
||||||
|
<td>{{ form.members }}</td> |
||||||
|
<td><a class="delete btn btn-danger" href="#"><i class="icon-trash icon-white"></i> Удалить</a></td> |
||||||
|
</tr> |
||||||
|
{% endfor %} |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
</div> |
||||||
|
<p style=" padding-left: 20px"><a id="add" class="btn btn-success" href="#"><i class="icon-plus-sign icon-white"></i> Добавить год</a></p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% include 'admin/includes/photogallery.html' with object=object %} |
||||||
|
|
||||||
|
|
||||||
|
<div class="box span8"> |
||||||
|
<div class="box-header well"> |
||||||
|
<h2><i class="icon-pencil"></i>Мета данные</h2> |
||||||
|
</div> |
||||||
|
<div class="box-content"> |
||||||
|
{# keywords #} |
||||||
|
{% with field='keywords' form=form languages=languages %} |
||||||
|
{% include 'admin/forms/multilang.html' %} |
||||||
|
{% endwith %} |
||||||
|
{# title #} |
||||||
|
{% with field='title' form=form languages=languages %} |
||||||
|
{% include 'admin/forms/multilang.html' %} |
||||||
|
{% endwith %} |
||||||
|
{# descriptions #} |
||||||
|
{% with field='descriptions' form=form languages=languages %} |
||||||
|
{% include 'admin/forms/multilang.html' %} |
||||||
|
{% endwith %} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="controls"> |
||||||
|
<input class="btn btn-large btn-primary" type="submit" value="Добавить"> |
||||||
|
<input class="btn btn-large" type="reset" value="Отмена"> |
||||||
|
</div> |
||||||
|
|
||||||
|
</fieldset> |
||||||
|
</form> |
||||||
|
|
||||||
|
{# modal window #} |
||||||
|
<div id="popup_wrap"> |
||||||
|
<div class="modal hide fade" id="myModal" > |
||||||
|
<div class="modal-header"> |
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true" id="close">×</button> |
||||||
|
<h3>Добавить файл</h3> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="modal-body"> |
||||||
|
<form method="post" class="form-horizontal" enctype="multipart/form-data" name="file_form" id="file_form" > {% csrf_token %} |
||||||
|
|
||||||
|
{# hidden inputs uses for comparing with Exposition form key#} |
||||||
|
{{ file_form.key }} |
||||||
|
{{ 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 'admin/forms/multilang.html' %} |
||||||
|
{% endwith %} |
||||||
|
{# file_description #} |
||||||
|
{% with field='description' form=file_form languages=languages %} |
||||||
|
{% include '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"> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="modal hide fade" id="timetableModal" style="width: 800px;"> |
||||||
|
<div class="modal-header"> |
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true" id="close_timetable">×</button> |
||||||
|
<h3>Добавить Программу</h3> |
||||||
|
</div> |
||||||
|
<form method="get" class="form-horizontal" name="timetable_form" id="timetable_form" > {% csrf_token %} |
||||||
|
{# hidden inputs uses for comparing with Exposition form key#} |
||||||
|
{{ timetable_form.key }} |
||||||
|
<input type="hidden" id="obj_id" value="{{ object.id }}"> |
||||||
|
<div class="modal-body"> |
||||||
|
|
||||||
|
|
||||||
|
<div class="control-group"> |
||||||
|
<label class="control-label"><strong>Время:</strong></label> |
||||||
|
<div class="controls"> |
||||||
|
{{ timetable_form.begin }} {{ timetable_form.end }} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% with field='name' form=timetable_form languages=languages %} |
||||||
|
{% include 'admin/forms/multilang.html' %} |
||||||
|
{% endwith %} |
||||||
|
|
||||||
|
{% with field='programe' form=timetable_form languages=languages %} |
||||||
|
{% include 'admin/forms/multilang.html' %} |
||||||
|
{% endwith %} |
||||||
|
<div> |
||||||
|
{% with field='speaker' form=timetable_form languages=languages %} |
||||||
|
{% include 'admin/forms/multilang.html' %} |
||||||
|
{% endwith %} |
||||||
|
{% with field='place' form=timetable_form languages=languages %} |
||||||
|
{% include 'admin/forms/multilang.html' %} |
||||||
|
{% endwith %} |
||||||
|
<!-- |
||||||
|
<div class="control-group"> |
||||||
|
<label class="control-label">Организатор:</label> |
||||||
|
<div class="controls"> |
||||||
|
{{ timetable_form.timetable_organiser }} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
--> |
||||||
|
</div> |
||||||
|
|
||||||
|
</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> |
||||||
|
{% include 'admin/includes/photo_form.html' with form=photo_form object=object %} |
||||||
|
{% endblock %} |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
<div class="box span8"> |
||||||
|
<div class="box-header well"> |
||||||
|
<h2><i class="icon-pencil"></i>Фотогалерея</h2> |
||||||
|
</div> |
||||||
|
<div class="box-content"> |
||||||
|
{% if object %} |
||||||
|
<a class="btn btn-success" href="#photopopup" data-toggle="modal"><i class="icon-plus-sign icon-white"></i> Фото</a> |
||||||
|
<a href="{{ object.photogallery.admin_url }}" role="button" class="btn btn-info" data-toggle="modal">Просмотреть галерею</a><br><br> |
||||||
|
{% else %} |
||||||
|
<p>Фото можна добавлять только после введения основных даных</p> |
||||||
|
{% endif %} |
||||||
|
|
||||||
|
{% with photos=object.photogallery.photos.all %} |
||||||
|
{% for photo in photos %} |
||||||
|
|
||||||
|
<div class="photo" style="float: left;margin-right: 15px;"> |
||||||
|
<div class="hover"> |
||||||
|
<a href="{{ photo.get_delete_url }}" class="btn-small btn-danger delete-photo">удалить</a> |
||||||
|
</div> |
||||||
|
<div> |
||||||
|
<a href="/admin/photogallery/photo/{{ photo.slug }}/"> |
||||||
|
<img src="{{ photo.get_admin_thumbnail_url }}" class="thumbnail" alt="{{ photo.title }}"> |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
{% endfor %} |
||||||
|
{% endwith %} |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
Loading…
Reference in new issue