First mockup pages done
This commit is contained in:
parent
af63d38236
commit
67822f39c4
|
@ -0,0 +1,500 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Business Template</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<!-- Styles -->
|
||||
<link href="css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="css/bootstrap-responsive.min.css" rel="stylesheet">
|
||||
<link href="css/bootstrap-overrides.css" rel="stylesheet">
|
||||
<link rel="stylesheet" type="text/css" href="css/theme.css">
|
||||
<link rel="stylesheet" href="css/index.css" type="text/css" media="screen" />
|
||||
|
||||
<link href='http://fonts.googleapis.com/css?family=Lato:300,400,700,900,300italic,400italic,700italic,900italic' rel='stylesheet' type='text/css'>
|
||||
<link rel="stylesheet" type="text/css" href="css/lib/animate.css" media="screen, projection">
|
||||
<link rel="stylesheet" href="css/coming-soon.css" type="text/css" media="screen" />
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body class="pull_top">
|
||||
<div class="navbar transparent navbar-inverse navbar-fixed-top">
|
||||
<div class="navbar-inner">
|
||||
<div class="container">
|
||||
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</a>
|
||||
<a class="brand" href="index.html">
|
||||
<img alt="Blechreiz" src="img/logo.png">
|
||||
</a>
|
||||
<div class="nav-collapse collapse">
|
||||
<ul class="nav pull-right">
|
||||
<li><a href="index.html" class="active">HOME</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
KONZERTE
|
||||
<b class="caret"></b>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="features.html">Nächste Konzerte</a></li>
|
||||
<li><a href="services.html">Anfrage</a></li>
|
||||
<li><a href="services.html">Unser Projekt</a></li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="index.html" class="active">MUSIKER</a></li>
|
||||
|
||||
<li><a class="btn-header" href="sign-in.html">Interner Bereich</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section id="feature_slider" class="">
|
||||
<!--
|
||||
Each slide is composed by <img> and .info
|
||||
- .info's position is customized with css in index.css
|
||||
- each <img> parallax effect is declared by the following params inside its class:
|
||||
|
||||
example: class="asset left-472 sp600 t120 z3"
|
||||
left-472 means left: -472px from the center
|
||||
sp600 is speed transition
|
||||
t120 is top to 120px
|
||||
z3 is z-index to 3
|
||||
Note: Maintain this order of params
|
||||
|
||||
For the backgrounds, you can combine from the bgs folder :D
|
||||
-->
|
||||
|
||||
<article class="slide" id="showcasing" style="background: url('img/backgrounds/silver.jpg') repeat-x top center;">
|
||||
<img class="asset left-30 sp600 t120 z1" src="img/slides/blechreiz01/gruppe.png" />
|
||||
<div class="info">
|
||||
<h2>Blechreiz</h2>
|
||||
<h3>12 Musiker für einen guten Zweck </h3>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
<article class="slide" id="tour" style="background: url('img/slides/blechreiz01/ticotico2.jpg') repeat-x top center;">
|
||||
<div class="info">
|
||||
<h2>Konzerte</h2>
|
||||
<a href="features.html">Termine</a>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="slide" id="tour" style="background: url('img/slides/blechreiz01/daempfer.jpg') repeat-x top center;">
|
||||
<div class="info">
|
||||
<h2>Konzerte</h2>
|
||||
<a href="features.html">Termine</a>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="slide" id="tour" style="background: url('img/slides/blechreiz01/andi.jpg') repeat-x top center;">
|
||||
<div class="info">
|
||||
<h2>Konzerte</h2>
|
||||
<a href="features.html">Termine</a>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="slide" id="tour" style="background: url('img/slides/blechreiz01/andi2.jpg') repeat-x top center;">
|
||||
<div class="info">
|
||||
<h2>Konzerte</h2>
|
||||
<a href="features.html">Termine</a>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="slide" id="tour" style="background: url('img/slides/blechreiz01/applaus.jpg') repeat-x top center;">
|
||||
<div class="info">
|
||||
<h2>Konzerte</h2>
|
||||
<a href="features.html">Termine</a>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="slide" id="tour" style="background: url('img/slides/blechreiz01/eindruck.jpg') repeat-x top center;">
|
||||
<div class="info">
|
||||
<h2>Konzerte</h2>
|
||||
<a href="features.html">Termine</a>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="slide" id="tour" style="background: url('img/slides/blechreiz01/publikum.jpg') repeat-x top center;">
|
||||
<div class="info">
|
||||
<h2>Konzerte</h2>
|
||||
<a href="features.html">Termine</a>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<article class="slide" id="tour" style="background: url('img/slides/blechreiz01/spielen2.jpg') repeat-x top center;">
|
||||
</article>
|
||||
|
||||
|
||||
<article class="slide" id="showcasing" style="background: url('img/backgrounds/black_red_01.jpg') repeat-x top center;">
|
||||
<img class="asset left-30 sp600 t120 z1" src="img/slides/blechreiz01/tuba.png" />
|
||||
<div class="info">
|
||||
<h2>Konzerte</h2>
|
||||
<a href="features.html">Nächste Termine</a>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
<article class="slide" id="tour" style="background: url('img/backgrounds/color-splash.jpg') repeat-x top center;">
|
||||
<img class="asset left-472 sp650 t210 z3" src="img/slides/scene3/ipad.png" />
|
||||
<img class="asset left-365 sp600 t270 z4" src="img/slides/scene3/iphone.png" />
|
||||
<img class="asset left-350 sp450 t135 z2" src="img/slides/scene3/desktop.png" />
|
||||
<img class="asset left-185 sp550 t220 z1" src="img/slides/scene3/macbook.png" />
|
||||
<div class="info">
|
||||
<h2>Über uns</h2>
|
||||
<a href="features.html">Los</a>
|
||||
</div>
|
||||
</article>
|
||||
<article class="slide" id="ideas" style="background: url('img/backgrounds/aqua.jpg') repeat-x top center;">
|
||||
<div class="info">
|
||||
<h2>Unser Projekt</h2>
|
||||
</div>
|
||||
<img class="asset left-480 sp600 t260 z1" src="img/slides/scene2/left.png" />
|
||||
<img class="asset left-210 sp600 t213 z2" src="img/slides/blechreiz01/tuba.png" />
|
||||
<img class="asset left60 sp600 t260 z1" src="img/slides/scene2/right.png" />
|
||||
</article>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<div id="coming_soon">
|
||||
<div class="head">
|
||||
<div class="container">
|
||||
<div class="span6 text">
|
||||
<h4>Unser nächstes Konzert</h4>
|
||||
<p>
|
||||
Ist in Rohr um 19:00 in der WasWeissIch Kirche <span>Bis dann</span>
|
||||
<br />
|
||||
Dorfplatz 5, Rohr
|
||||
</p>
|
||||
</div>
|
||||
<div class="span6 count" id="clock">
|
||||
<div class="box last">
|
||||
<div class="circle">
|
||||
<span id="seconds"></span>
|
||||
</div>
|
||||
<p>Sekunden</p>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="circle">
|
||||
<span id="minutes"></span>
|
||||
</div>
|
||||
<p>Minuten</p>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="circle">
|
||||
<span id="hours"></span>
|
||||
</div>
|
||||
<p>Stunden</p>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="circle">
|
||||
<span id="days"></span>
|
||||
</div>
|
||||
<p>Tage</p>
|
||||
</div>
|
||||
<!-- <div class="box">
|
||||
<div class="circle">
|
||||
<span id="weeks"></span>
|
||||
</div>
|
||||
<p>Weeks</p>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Pricing Option -->
|
||||
<div id="in_pricing">
|
||||
<div class="container">
|
||||
<div class="section_header">
|
||||
<h3>Pricing</h3>
|
||||
</div>
|
||||
|
||||
<div class="row charts_wrapp">
|
||||
<!-- Plan Box -->
|
||||
<div class="span4">
|
||||
<div class="plan">
|
||||
<div class="wrapper">
|
||||
<h3>Lite</h3>
|
||||
<div class="price">
|
||||
<span class="dollar">$</span>
|
||||
<span class="qty">35</span>
|
||||
<span class="month">/month</span>
|
||||
</div>
|
||||
<div class="features">
|
||||
<p>
|
||||
<strong>10</strong>
|
||||
Shared Projects
|
||||
</p>
|
||||
<p>
|
||||
<strong>4</strong>
|
||||
Team Members
|
||||
</p>
|
||||
<p>
|
||||
<strong>10</strong>
|
||||
Storage
|
||||
</p>
|
||||
</div>
|
||||
<a class="order" href="pricing.html">ORDER NOW</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Plan Box -->
|
||||
<div class="span4 pro">
|
||||
<div class="plan">
|
||||
<div class="wrapper">
|
||||
<img class="ribbon" src="img/badge.png">
|
||||
<h3>Pro</h3>
|
||||
<div class="price">
|
||||
<span class="dollar">$</span>
|
||||
<span class="qty">99</span>
|
||||
<span class="month">/month</span>
|
||||
</div>
|
||||
<div class="features">
|
||||
<p>
|
||||
<strong>10</strong>
|
||||
Shared Projects
|
||||
</p>
|
||||
<p>
|
||||
<strong>25</strong>
|
||||
Team Members
|
||||
</p>
|
||||
<p>
|
||||
<strong>Unlimited</strong>
|
||||
Storage
|
||||
</p>
|
||||
<p>
|
||||
<strong>Plus </strong>
|
||||
Phone Support
|
||||
</p>
|
||||
</div>
|
||||
<a class="order" href="pricing.html">ORDER NOW</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Plan Box -->
|
||||
<div class="span4 standar">
|
||||
<div class="plan">
|
||||
<div class="wrapper">
|
||||
<h3>Standard</h3>
|
||||
<div class="price">
|
||||
<span class="dollar">$</span>
|
||||
<span class="qty">65</span>
|
||||
<span class="month">/month</span>
|
||||
</div>
|
||||
<div class="features">
|
||||
<p>
|
||||
<strong>10</strong>
|
||||
Shared Projects
|
||||
</p>
|
||||
<p>
|
||||
<strong>4</strong>
|
||||
Team Members
|
||||
</p>
|
||||
<p>
|
||||
<strong>10</strong>
|
||||
Storage
|
||||
</p>
|
||||
</div>
|
||||
<a class="order" href="pricing.html">ORDER NOW</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="start">
|
||||
<p>Start your free, no-risk, 14 day trial! </p>
|
||||
<a href="pricing.html">Start Now!</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="clients">
|
||||
<div class="container">
|
||||
<div class="section_header">
|
||||
<h3>Clients</h3>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="span2 client">
|
||||
<div class="img client1"></div>
|
||||
</div>
|
||||
<div class="span2 client">
|
||||
<div class="img client2"></div>
|
||||
</div>
|
||||
<div class="span2 client">
|
||||
<div class="img client3"></div>
|
||||
</div>
|
||||
<div class="span2 client">
|
||||
<div class="img client1"></div>
|
||||
</div>
|
||||
<div class="span2 client">
|
||||
<div class="img client2"></div>
|
||||
</div>
|
||||
<div class="span2 client">
|
||||
<div class="img client3"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- starts footer -->
|
||||
<footer id="footer">
|
||||
<div class="container">
|
||||
<div class="row sections">
|
||||
<div class="span4 recent_posts">
|
||||
<h3 class="footer_header">
|
||||
Recent Posts
|
||||
</h3>
|
||||
<div class="post">
|
||||
<a href="blogpost.html">
|
||||
<img src="img/recent_post1.png" class="img-circle" />
|
||||
</a>
|
||||
<div class="date">
|
||||
Wed, 12 Dec
|
||||
</div>
|
||||
<a href="blogpost.html" class="title">
|
||||
Randomised words which don't look embarrasing hidden.
|
||||
</a>
|
||||
</div>
|
||||
<div class="post">
|
||||
<a href="blogpost.html">
|
||||
<img src="img/recent_post2.png" class="img-circle" />
|
||||
</a>
|
||||
<div class="date">
|
||||
Mon, 12 Dec
|
||||
</div>
|
||||
<a href="blogpost.html" class="title">
|
||||
Randomised words which don't look embarrasing hidden.
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span4 testimonials">
|
||||
<h3 class="footer_header">
|
||||
Testimonials
|
||||
</h3>
|
||||
<div class="wrapper">
|
||||
<div class="quote">
|
||||
<span>“</span>
|
||||
There are many variations of passages of randomised words which don't look even slightly believable. You need to be sure there isn't anything embarrassing of text.
|
||||
<span></span>
|
||||
</div>
|
||||
<div class="author">
|
||||
<img src="img/user-display.png" />
|
||||
<div class="name">Alejandra Galvan Castillo</div>
|
||||
<div class="info">
|
||||
Details Canvas
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span4 contact">
|
||||
<h3 class="footer_header">
|
||||
Contact
|
||||
</h3>
|
||||
<form action="#" method="post">
|
||||
<input type="text" placeholder="Your name" />
|
||||
<input type="text" placeholder="Your email" />
|
||||
<textarea rows="3" placeholder="Message"></textarea>
|
||||
<input type="submit" value="Send" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row credits">
|
||||
<div class="span12">
|
||||
<div class="row social">
|
||||
<div class="span12">
|
||||
<a href="#" class="facebook">
|
||||
<span class="socialicons ico1"></span>
|
||||
<span class="socialicons_h ico1h"></span>
|
||||
</a>
|
||||
<a href="#" class="twitter">
|
||||
<span class="socialicons ico2"></span>
|
||||
<span class="socialicons_h ico2h"></span>
|
||||
</a>
|
||||
<a href="#" class="gplus">
|
||||
<span class="socialicons ico3"></span>
|
||||
<span class="socialicons_h ico3h"></span>
|
||||
</a>
|
||||
<a href="#" class="flickr">
|
||||
<span class="socialicons ico4"></span>
|
||||
<span class="socialicons_h ico4h"></span>
|
||||
</a>
|
||||
<a href="#" class="pinterest">
|
||||
<span class="socialicons ico5"></span>
|
||||
<span class="socialicons_h ico5h"></span>
|
||||
</a>
|
||||
<a href="#" class="dribble">
|
||||
<span class="socialicons ico6"></span>
|
||||
<span class="socialicons_h ico6h"></span>
|
||||
</a>
|
||||
<a href="#" class="behance">
|
||||
<span class="socialicons ico7"></span>
|
||||
<span class="socialicons_h ico7h"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row copyright">
|
||||
<div class="span12">
|
||||
© 2013 Clean Canvas. All rights reserved. Theme by Detail Canvas.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="http://code.jquery.com/jquery-latest.js"></script>
|
||||
<script src="js/bootstrap.min.js"></script>
|
||||
<script src="js/jquery.countdown.min.js"></script>
|
||||
<script src="js/theme.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
var currentDate = new Date(),
|
||||
finished = false,
|
||||
availiableExamples = {
|
||||
set35daysFromNow: 35 * 24 * 60 * 60 * 1000,
|
||||
set5minFromNow : 5 * 60 * 1000,
|
||||
set1minFromNow : 1 * 60 * 1000
|
||||
};
|
||||
|
||||
function callback(event) {
|
||||
$this = $(this);
|
||||
$this.find('span#'+event.type).html(event.value);
|
||||
switch(event.type) {
|
||||
case "seconds":
|
||||
case "minutes":
|
||||
case "hours":
|
||||
case "days":
|
||||
case "weeks":
|
||||
case "daysLeft":
|
||||
case "finished":
|
||||
}
|
||||
}
|
||||
|
||||
$('div#clock').countdown(availiableExamples.set35daysFromNow + currentDate.valueOf(), callback);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Scripts -->
|
||||
|
||||
<script type="text/javascript" src="js/index-slider.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -2,7 +2,7 @@
|
|||
margin-top: -35px;
|
||||
}
|
||||
#coming_soon .head{
|
||||
background: url("../img/backgrounds/color-splash.jpg") no-repeat;
|
||||
/*background: url("../img/backgrounds/color-splash.jpg") no-repeat;*/
|
||||
display: block;
|
||||
padding-top: 160px;
|
||||
height: 288px;
|
||||
|
@ -17,15 +17,15 @@
|
|||
}
|
||||
#coming_soon .text h4{
|
||||
margin: 0 0 35px 0;
|
||||
color: #fff;
|
||||
/*color: #fff;*/
|
||||
font-size: 35px;
|
||||
font-weight: normal;
|
||||
line-height: 38px;
|
||||
text-shadow: 1px 1px 0px #2A284D;
|
||||
}
|
||||
#coming_soon .text p{
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
/*color: #fff;*/
|
||||
font-size: 18px;
|
||||
font-style: italic;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
@ -61,7 +61,7 @@
|
|||
font-weight: bold;
|
||||
}
|
||||
#coming_soon .count p{
|
||||
color: #fff;
|
||||
/*color: #fff;*/
|
||||
margin: 0;
|
||||
text-transform: uppercase;
|
||||
font-size: 13px;
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
width: 7px;
|
||||
height: 7px;
|
||||
box-shadow: 0px 0px 1px 2px #ccc;
|
||||
background: rgb(0, 0, 0);
|
||||
background: rgb(156, 156, 156);
|
||||
border-radius: 10px;
|
||||
display: block;
|
||||
/*border: 1px solid #fff;*/
|
||||
|
@ -51,7 +51,7 @@
|
|||
transition: opacity .1s linear;
|
||||
}
|
||||
#pagination li.active a {
|
||||
background: rgb(46, 92, 177);
|
||||
background: rgb(196, 16, 16);
|
||||
box-shadow: none;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
|
@ -95,12 +95,14 @@
|
|||
z-index: 10;
|
||||
}
|
||||
.slide#showcasing .info h2 {
|
||||
color: #fff;
|
||||
font-size: 50px;
|
||||
font-weight: normal;
|
||||
line-height: 56px;
|
||||
text-shadow: 1px 1px 1px rgb(49, 57, 61);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Slide 2 */
|
||||
.slide#ideas .info {
|
||||
position: relative;
|
||||
|
@ -120,7 +122,7 @@
|
|||
width: 24%;
|
||||
}
|
||||
.slide#tour .info h2 {
|
||||
color: #fff;
|
||||
color: rgb(18,18,18);
|
||||
font-size: 45px;
|
||||
font-weight: normal;
|
||||
text-shadow: 1px 1px 1px #3b3262;
|
||||
|
@ -129,7 +131,7 @@
|
|||
.slide#tour .info a {
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
background-color: #2a205d;
|
||||
background-color: rgba(18,18,18,0.6);
|
||||
padding: 13px 30px;
|
||||
font-size: 19px;
|
||||
border-radius: 5px;
|
||||
|
|
|
@ -37,8 +37,8 @@ header {
|
|||
border-bottom: 1px solid rgb(88, 88, 88);
|
||||
}
|
||||
.navbar.transparent.navbar-inverse .navbar-inner .container {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
/*margin-top: 10px;
|
||||
margin-bottom: 10px;*/
|
||||
-webkit-transition: margin .2s ease-in-out;
|
||||
-moz-transition: margin .2s ease-in-out;
|
||||
transition: margin .2s ease-in-out;
|
||||
|
@ -58,9 +58,15 @@ header {
|
|||
.navbar-inverse .brand {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.navbar .brand {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.navbar-inverse .nav > li > a {
|
||||
/*color: rgb(177, 177, 177);*/
|
||||
font-size: 13px;
|
||||
font-size: 18px;
|
||||
padding-top: 23px;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
text-shadow: 0 1px 0 rgba(0,0,0,.5);
|
||||
|
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
Binary file not shown.
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 3.1 KiB |
|
@ -362,7 +362,7 @@ $(document).ready(function () {
|
|||
});
|
||||
var f = setInterval(function () {
|
||||
i()
|
||||
}, 5000)
|
||||
}, 15000)
|
||||
}
|
||||
c();
|
||||
$(window).resize(function () {
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
from django.contrib import admin
|
||||
from eventplanner.models import Event, EventParticipation
|
||||
|
||||
|
||||
class EventParticipationInline(admin.TabularInline):
|
||||
model = EventParticipation
|
||||
extra = 1
|
||||
readonly_fields = ('musician',)
|
||||
fields = ( 'musician', 'status', 'comment', )
|
||||
has_add_permission = lambda self, req : False
|
||||
has_delete_permission = lambda self, req, obj : False
|
||||
|
||||
template = "custom_tabular.html"
|
||||
|
||||
|
||||
class EventAdmin(admin.ModelAdmin):
|
||||
inlines = ( EventParticipationInline, )
|
||||
|
||||
|
||||
admin.site.register( Event, EventAdmin )
|
|
@ -0,0 +1,55 @@
|
|||
from django.db import models
|
||||
from django.utils.translation import ugettext as _
|
||||
from locpick.field import LocationField
|
||||
|
||||
from musicians.models import Musician
|
||||
|
||||
|
||||
class Event ( models.Model ):
|
||||
|
||||
EVENT_TYPES = (
|
||||
( 'Reh', _('Rehearsal') ),
|
||||
( 'Conc', _('Concert') ),
|
||||
( 'GenReh', _('General Rehearsal') ),
|
||||
)
|
||||
|
||||
title = models.CharField( max_length=40 )
|
||||
type = models.CharField( max_length=6, choices=EVENT_TYPES, default='Reh' )
|
||||
date = models.DateField()
|
||||
time = models.TimeField( null=True, blank=True )
|
||||
participants = models.ManyToManyField( Musician, through='EventParticipation' )
|
||||
|
||||
desc = models.TextField( blank=True)
|
||||
location = LocationField()
|
||||
|
||||
|
||||
def __unicode__(self):
|
||||
return self.title + " ( " + self.get_type_display() + " ) "
|
||||
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
# Call the "real" save() method
|
||||
super(Event, self).save(*args, **kwargs)
|
||||
|
||||
# Create a "Don't Know" participation for each Musician
|
||||
for m in Musician.objects.all():
|
||||
if not m in self.participants.all():
|
||||
EventParticipation.objects.create( event=self, musician = m, status='?', comment = '' )
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class EventParticipation( models.Model ):
|
||||
OPTIONS = ( ('?' , _('?' )),
|
||||
('Yes', _('Yes')),
|
||||
('No' , _('No' ))
|
||||
)
|
||||
|
||||
event = models.ForeignKey( Event )
|
||||
musician = models.ForeignKey( Musician )
|
||||
status = models.CharField ( max_length=3, choices = OPTIONS, default='?' )
|
||||
comment = models.CharField ( max_length=64, blank=True )
|
||||
|
||||
class Meta:
|
||||
unique_together = ("event", "musician")
|
|
@ -0,0 +1,78 @@
|
|||
{% load i18n admin_static admin_modify %}
|
||||
<div class="inline-group" id="{{ inline_admin_formset.formset.prefix }}-group">
|
||||
<div class="tabular inline-related {% if forloop.last %}last-related{% endif %}">
|
||||
{{ inline_admin_formset.formset.management_form }}
|
||||
<fieldset class="module">
|
||||
<h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
|
||||
{{ inline_admin_formset.formset.non_form_errors }}
|
||||
<table>
|
||||
<thead><tr>
|
||||
{% for field in inline_admin_formset.fields %}
|
||||
{% if not field.widget.is_hidden %}
|
||||
<th{% if forloop.first %} colspan="2"{% endif %}{% if field.required %} class="required"{% endif %}>{{ field.label|capfirst }}
|
||||
{% if field.help_text %} <img src="{% static "admin/img/icon-unknown.gif" %}" class="help help-tooltip" width="10" height="10" alt="({{ field.help_text|striptags }})" title="{{ field.help_text|striptags }}" />{% endif %}
|
||||
</th>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if inline_admin_formset.formset.can_delete %}<th>{% trans "Delete?" %}</th>{% endif %}
|
||||
</tr></thead>
|
||||
|
||||
<tbody>
|
||||
{% for inline_admin_form in inline_admin_formset %}
|
||||
{% if inline_admin_form.form.non_field_errors %}
|
||||
<tr><td colspan="{{ inline_admin_form|cell_count }}">{{ inline_admin_form.form.non_field_errors }}</td></tr>
|
||||
{% endif %}
|
||||
<tr class="form-row {% cycle "row1" "row2" %} {% if forloop.last %} empty-form{% endif %}"
|
||||
id="{{ inline_admin_formset.formset.prefix }}-{% if not forloop.last %}{{ forloop.counter0 }}{% else %}empty{% endif %}">
|
||||
<td class="original">
|
||||
{% if inline_admin_form.original or inline_admin_form.show_url %}<p>
|
||||
|
||||
</p>{% endif %}
|
||||
{% if inline_admin_form.has_auto_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
|
||||
{{ inline_admin_form.fk_field.field }}
|
||||
{% spaceless %}
|
||||
{% for fieldset in inline_admin_form %}
|
||||
{% for line in fieldset %}
|
||||
{% for field in line %}
|
||||
{% if field.is_hidden %} {{ field.field }} {% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endspaceless %}
|
||||
</td>
|
||||
{% for fieldset in inline_admin_form %}
|
||||
{% for line in fieldset %}
|
||||
{% for field in line %}
|
||||
<td{% if field.field.name %} class="field-{{ field.field.name }}"{% endif %}>
|
||||
{% if field.is_readonly %}
|
||||
<p>{{ field.contents|linebreaksbr }}</p>
|
||||
{% else %}
|
||||
{{ field.field.errors.as_ul }}
|
||||
{{ field.field }}
|
||||
{% endif %}
|
||||
</td>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% if inline_admin_formset.formset.can_delete %}
|
||||
<td class="delete">{% if inline_admin_form.original %}{{ inline_admin_form.deletion_field.field }}{% endif %}</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
(function($) {
|
||||
$("#{{ inline_admin_formset.formset.prefix }}-group .tabular.inline-related tbody tr").tabularFormset({
|
||||
prefix: "{{ inline_admin_formset.formset.prefix }}",
|
||||
adminStaticPrefix: '{% static "admin/" %}',
|
||||
addText: "{% blocktrans with inline_admin_formset.opts.verbose_name|title as verbose_name %}Add another {{ verbose_name }}{% endblocktrans %}",
|
||||
deleteText: "{% trans 'Remove' %}"
|
||||
});
|
||||
})(django.jQuery);
|
||||
</script>
|
|
@ -0,0 +1,16 @@
|
|||
"""
|
||||
This file demonstrates writing tests using the unittest module. These will pass
|
||||
when you run "manage.py test".
|
||||
|
||||
Replace this with more appropriate tests for your application.
|
||||
"""
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
|
||||
class SimpleTest(TestCase):
|
||||
def test_basic_addition(self):
|
||||
"""
|
||||
Tests that 1 + 1 always equals 2.
|
||||
"""
|
||||
self.assertEqual(1 + 1, 2)
|
|
@ -0,0 +1 @@
|
|||
# Create your views here.
|
Loading…
Reference in New Issue