parent
1cd024f6a9
commit
befbbd4459
24 changed files with 1319 additions and 104 deletions
@ -1,12 +1,18 @@ |
||||
# -*- coding: utf-8 -*- |
||||
from django.conf.urls import patterns, include, url |
||||
from admin import ExpositionListView |
||||
from admin import ExpositionListView, ExpositionView |
||||
|
||||
urlpatterns = patterns('exposition.admin', |
||||
url(r'^upload-photo/(?P<expo_id>.*)/$', 'upload_exposition_photo'), |
||||
|
||||
url(r'^add.*/$', 'exposition_add'), |
||||
url(r'^delete/(?P<url>.*)/$', 'exposition_delete'), |
||||
url(r'^change/(?P<url>.*)/$', 'exposition_change'), |
||||
url(r'^all/$', ExpositionListView.as_view()), |
||||
url(r'^switch/(?P<url>.*)/(?P<action>.*)$', 'exposition_switch'), |
||||
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