galerie | clone view, template + uprava pro M&M
This commit is contained in:
		
							parent
							
								
									ae93b7074d
								
							
						
					
					
						commit
						626e4f21a5
					
				
					 5 changed files with 177 additions and 2 deletions
				
			
		|  | @ -5,4 +5,7 @@ | |||
| * zvolit velikosti velke a male fotky | ||||
| * vycteni EXIFu | ||||
| * razeni podle casu | ||||
| * uprava templatu | ||||
| * uprava templatu (detail) | ||||
| * hromadne nahravani fotek | ||||
| * psani komentaru | ||||
| * do CSS | ||||
|  |  | |||
|  | @ -30,7 +30,7 @@ class Obrazek(models.Model): | |||
|   nazev = models.CharField('Název', max_length=50, blank = True, null = True) | ||||
|   popis = models.TextField('Popis', blank = True, null = True) | ||||
|   datum_vlozeni = models.DateTimeField('Datum vložení', auto_now_add = True) | ||||
|   datum = models.DateTimeField('Datum pořízení fotografie', blank = False) # TODO zjistit z EXIFU | ||||
|   datum = models.DateTimeField('Datum pořízení fotografie', blank = True, null = True) # TODO zjistit z EXIFU | ||||
|   galerie = models.ForeignKey('Galerie') | ||||
|   poradi = models.IntegerField('Pořadí', blank = True, null = True) | ||||
|   def __unicode__(self): | ||||
|  |  | |||
							
								
								
									
										2
									
								
								galerie/static/galerie/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								galerie/static/galerie/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| images | ||||
| lightbox | ||||
							
								
								
									
										72
									
								
								galerie/templates/galerie/GalerieNahled.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								galerie/templates/galerie/GalerieNahled.html
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,72 @@ | |||
| {% extends "base.html" %} | ||||
| 
 | ||||
| {% block title %}{% block nadpis1a %} | ||||
| {{galerie.nazev}} | Galerie TODO title | ||||
| {% endblock %}{% endblock %} | ||||
| 
 | ||||
| {# TODO predelat pres context processor #} | ||||
| {% block header %}soustredeni{% endblock %} | ||||
| {% block menu_soustredeni %}selected{% endblock %} | ||||
| {% block submenu %}{% include 'seminar/soustredeni/submenu.html' %}{% endblock %} | ||||
| 
 | ||||
| {% block content %} | ||||
|   <h2>{{galerie.nazev}}</h2> | ||||
| 
 | ||||
|   {# podgalerie #} | ||||
|   {% if galerie.galerie_set.all or galerie.galerie_up %} | ||||
|     <h3> PODGALERIE </h3> | ||||
|     <ul> | ||||
|     {% if galerie.galerie_up %} | ||||
|       <li><a href="../{{galerie.galerie_up.pk}}">..</a> | ||||
|     {% endif %} | ||||
|     {% for galerie in galerie.galerie_set.all %} | ||||
|       {% if galerie.zobrazit < 1 or user.is_staff %} | ||||
|       <li><a href="../{{galerie.pk}}">{{galerie}}</a> | ||||
|       {% endif %} | ||||
|     {% endfor %} | ||||
|     </ul> | ||||
|   {% endif %} | ||||
| 
 | ||||
|   {# obrazky v galerii #} | ||||
|   {% if galerie.obrazek_set.all %} | ||||
|   <table class="galerie_nahled"> | ||||
|     {% for obrazek in galerie.obrazek_set.all %} | ||||
|       {% if forloop.counter|add:-1|divisibleby:3 %} | ||||
|         <tr> | ||||
|       {% endif %} | ||||
|         <td class="vystredeno"> | ||||
|           <a title="Zobrazit tuto fotografii" href="./{{obrazek.pk}}#obsah" | ||||
|             class="jednoducha-galerie"> | ||||
|           <img | ||||
|             src="{{obrazek.obrazek_maly.url}}" | ||||
|             width={% widthratio obrazek.obrazek_maly.width 200 167 %} | ||||
|             height={% widthratio obrazek.obrazek_maly.height 200 167 %} /> | ||||
|           </a> | ||||
|           <!--<a href="{{obrazek.obrazek_velky.url}}" | ||||
|             class="javascript-galerie" data-lightbox="galerie" data-title="{{obrazek.popis}}" | ||||
|             style="display: none;"> | ||||
|           <img | ||||
|             src="{{obrazek.obrazek_maly.url}}" | ||||
|             width={% widthratio obrazek.obrazek_maly.width 200 167 %} | ||||
|             height={% widthratio obrazek.obrazek_maly.height 200 167 %} /> | ||||
|           </a>--> | ||||
| 	</td> | ||||
|       {% if forloop.last %} | ||||
|         {% if not forloop.counter|divisibleby:3 %} | ||||
|           <td></td> | ||||
|         {% endif %} | ||||
|         {% if not forloop.counter|divisibleby:2 %} | ||||
|           <td></td> | ||||
|         {% endif %} | ||||
|       {% endif %} | ||||
|       {% if forloop.counter|divisibleby:3 or forloop.last %} | ||||
|         </tr> | ||||
|       {% endif %} | ||||
|     {% endfor %} | ||||
|   </table> | ||||
|   {% else %} | ||||
|     <div class="zadne-vysledky"> | ||||
|       V galerii nejsou žádné fotky. | ||||
|     </div> | ||||
|   {% endif %} | ||||
| {% endblock content %} | ||||
							
								
								
									
										98
									
								
								galerie/views.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								galerie/views.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,98 @@ | |||
| # coding: utf-8 | ||||
| 
 | ||||
| import random | ||||
| 
 | ||||
| from django.http import HttpResponse, Http404 | ||||
| from django.shortcuts import render, HttpResponseRedirect, get_object_or_404 | ||||
| from django.template import RequestContext | ||||
| from galerie.models import Obrazek, Galerie | ||||
| from seminar.models import Soustredeni | ||||
| 
 | ||||
| 
 | ||||
| #def index(request, stitek=None): | ||||
|   #if stitek == None: | ||||
|     #return HttpResponseRedirect('./0/')    | ||||
| # | ||||
|   #galerie = Galerie.publikovane_galerie() | ||||
|   #if int(stitek) != 0: | ||||
|     #galerie = galerie.filter(stitek = stitek) | ||||
|     #if not galerie: | ||||
|       #raise Http404 | ||||
|   #galerie = galerie.order_by("-datum_zmeny") | ||||
| # | ||||
|   #return render(request, 'Galerie/GalerieIndex.html', | ||||
|         #{'galerie' : galerie, | ||||
|          #'stitky' : Stitek.stitky_u_galerii(), | ||||
|          #'umisteni_stitek' : stitek, | ||||
|          #'umisteni_Fotogalerie' : True, | ||||
|         #}) | ||||
| 
 | ||||
| def nahled(request, pk, soustredeni): | ||||
|   """Zobrazeni nahledu vsech fotek ve skupine.""" | ||||
|   galerie = get_object_or_404(Galerie, pk=pk) | ||||
|   preview = False | ||||
|   if galerie.zobrazit >= 1: | ||||
|     if request.user.is_staff: | ||||
|       preview = True; | ||||
|     else: | ||||
|       raise Http404 | ||||
|   return render(request, 'galerie/GalerieNahled.html', | ||||
|       {'galerie' : galerie, | ||||
|        'preview' : preview, | ||||
|       }) | ||||
| 
 | ||||
| def detail(request, pk, fotka): | ||||
|   """Zobrazeni nahledu fotky s id 'fotka'.""" | ||||
|   MAX_VYSKA = 600 | ||||
|   MAX_SIRKA = 600 | ||||
|   MAX_VYSKA_MALA = 100 | ||||
|   MAX_SIRKA_MALA = 200 | ||||
|   NAHLEDU = 3 | ||||
| 
 | ||||
|   galerie = get_object_or_404(Galerie, pk=pk) | ||||
|   preview = False | ||||
|   if not galerie.je_publikovano(): | ||||
|     if request.user.is_authenticated(): | ||||
|       preview = True; | ||||
|     else: | ||||
|       raise Http404 | ||||
|   obrazek = get_object_or_404(Obrazek, pk=fotka) | ||||
|   obrazky = galerie.obrazky.all() | ||||
| 
 | ||||
|   # Poradi aktualniho obrazku v galerii/stitku. | ||||
|   for i in range(len(obrazky)): | ||||
|     if obrazky[i] == obrazek: | ||||
|       znacka = i | ||||
|       break | ||||
|   else: | ||||
|     # Obrazek neni v galerii/stitku. | ||||
|     raise Http404 | ||||
| 
 | ||||
|   # Nacteni okolnich obrazku. | ||||
|   obrazky_dalsi = obrazky[znacka+1:znacka+NAHLEDU+1] | ||||
|   if znacka > NAHLEDU: | ||||
|     obrazky_predchozi = obrazky[znacka-NAHLEDU:znacka] | ||||
|   else: | ||||
|     obrazky_predchozi = obrazky[0:znacka] | ||||
|    | ||||
|   # Preskalovani obrazku do vybraneho prostoru. | ||||
|   vyska = obrazek.obrazek_stredni.height | ||||
|   sirka = obrazek.obrazek_stredni.width | ||||
|   if vyska > MAX_VYSKA: | ||||
|     sirka = sirka * MAX_VYSKA / vyska   | ||||
|     vyska = MAX_VYSKA | ||||
|   if sirka > MAX_SIRKA: | ||||
|     vyska = vyska * MAX_SIRKA / sirka | ||||
|     sirka = MAX_SIRKA | ||||
| 
 | ||||
|   return render(request, 'Galerie/Galerie.html', | ||||
|       {'galerie' : galerie, | ||||
|        'obrazek' : obrazek, | ||||
|        'vyska' : vyska, | ||||
|        'sirka' : sirka, | ||||
|        'obrazky_predchozi' : obrazky_predchozi, | ||||
|        'obrazky_dalsi' : obrazky_dalsi, | ||||
|        'preview' : preview, | ||||
|        'umisteni_Fotogalerie' : True, | ||||
|       }) | ||||
| 
 | ||||
		Loading…
	
		Reference in a new issue
	
	 Bc. Petr Pecha
						Bc. Petr Pecha