Skip to content

Commit

Permalink
Rozwijanie i poprawki scenariusza rozszerzonego Czat
Browse files Browse the repository at this point in the history
  • Loading branch information
xinulsw committed Apr 21, 2015
1 parent 59d345a commit c6783e6
Show file tree
Hide file tree
Showing 18 changed files with 517 additions and 138 deletions.
Binary file added docs/python/czat/czat_pr.zip
Binary file not shown.
11 changes: 11 additions & 0 deletions docs/python/czat/forms_z8.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# -*- coding: utf-8 -*-

from django.forms import ModelForm, TextInput
from czat.models import Wiadomosc

class AktualizujWiadomoscForm(ModelForm):
class Meta:
model = Wiadomosc
fields = ['tekst', 'data_pub']
exclude = ['autor']
widgets = {'tekst': TextInput(attrs={'size': 80})}
280 changes: 212 additions & 68 deletions docs/python/czat/index.rst

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/python/czat/urls_z6.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.core.urlresolvers import reverse_lazy
from django.contrib.auth.decorators import login_required
from django.views.generic.list import ListView
from django.views.generic import ListView, DeleteView
from czat.models import Wiadomosc

urlpatterns = patterns('',
Expand Down
4 changes: 2 additions & 2 deletions docs/python/czat/urls_z7.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.core.urlresolvers import reverse_lazy
from django.contrib.auth.decorators import login_required
from django.views.generic.list import ListView
from django.views.generic import ListView, DeleteView
from czat.models import Wiadomosc

urlpatterns = patterns('',
Expand All @@ -38,7 +38,7 @@
name='wiadomosci'),
url(r'^wiadomosc/$', login_required(
views.UtworzWiadomosc.as_view(),
login_url='/login'), name='wiadomosc'),
login_url='/loguj'), name='wiadomosc'),

url(r'^admin/', include(admin.site.urls)),
)
53 changes: 53 additions & 0 deletions docs/python/czat/urls_z8.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# -*- coding: utf-8 -*-
# czat/czat/urls.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
from czat import views # importujemy zdefiniowane w pliku views.py widoki

admin.autodiscover() # potrzebne tylko w Django 1.6

from django.views.generic.edit import CreateView
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.core.urlresolvers import reverse_lazy
from django.contrib.auth.decorators import login_required
from django.views.generic import ListView, DeleteView
from czat.models import Wiadomosc

urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
#url(r'^rejestruj/', views.rejestruj, name='rejestruj'),
#url(r'^loguj/', views.loguj, name='loguj'),
#url(r'^wyloguj/', views.wyloguj, name='wyloguj'),
url(r'^rejestruj/', CreateView.as_view(
template_name='czat/rejestruj.html',
form_class=UserCreationForm,
success_url='/'), name='rejestruj'),
url(r'^loguj/', 'django.contrib.auth.views.login',
{'template_name': 'czat/loguj.html'},
name='loguj'),
url(r'^wyloguj/', 'django.contrib.auth.views.logout',
{'next_page': reverse_lazy('index')},
name='wyloguj'),
url(r'^wiadomosci/', login_required(
ListView.as_view(
model=Wiadomosc,
context_object_name='wiadomosci',
paginate_by=10),
login_url='/loguj'),
name='wiadomosci'),
url(r'^wiadomosc/$', login_required(
views.UtworzWiadomosc.as_view(),
login_url='/loguj'), name='wiadomosc'),
url(r'^aktualizuj/(?P<pk>\d+)/', login_required(
views.AktualizujWiadomosc.as_view(),
login_url='/loguj'), name='aktualizuj'),
url(r'^usun/(?P<pk>\d+)/', login_required(
DeleteView.as_view(
model=Wiadomosc,
template_name='wiadomosc_usun.html',
success_url='/lista'),
login_url='/login'), name='usun'),

url(r'^admin/', include(admin.site.urls)),
)
54 changes: 54 additions & 0 deletions docs/python/czat/urls_z9.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
# czat/czat/urls.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
from czat import views # importujemy zdefiniowane w pliku views.py widoki

admin.autodiscover() # potrzebne tylko w Django 1.6

from django.views.generic.edit import CreateView
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.core.urlresolvers import reverse_lazy
from django.contrib.auth.decorators import login_required
from django.views.generic import ListView, DeleteView
from czat.models import Wiadomosc

urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
#url(r'^rejestruj/', views.rejestruj, name='rejestruj'),
#url(r'^loguj/', views.loguj, name='loguj'),
#url(r'^wyloguj/', views.wyloguj, name='wyloguj'),
url(r'^wiadomosci/', views.wiadomosci, name='wiadomosci'),
url(r'^rejestruj/', CreateView.as_view(
template_name='czat/rejestruj.html',
form_class=UserCreationForm,
success_url='/'), name='rejestruj'),
url(r'^loguj/', 'django.contrib.auth.views.login',
{'template_name': 'czat/loguj.html'},
name='loguj'),
url(r'^wyloguj/', 'django.contrib.auth.views.logout',
{'next_page': reverse_lazy('index')},
name='wyloguj'),
url(r'^wiadomosci/', login_required(
ListView.as_view(
model=Wiadomosc,
context_object_name='wiadomosci',
paginate_by=10),
login_url='/loguj'),
name='wiadomosci'),
url(r'^wiadomosc/$', login_required(
views.UtworzWiadomosc.as_view(),
login_url='/loguj'), name='wiadomosc'),
url(r'^aktualizuj/(?P<pk>\d+)/', login_required(
views.AktualizujWiadomosc.as_view(),
login_url='/loguj'), name='aktualizuj'),
url(r'^usun/(?P<pk>\d+)/', login_required(
DeleteView.as_view(
model=Wiadomosc,
template_name='wiadomosc_usun.html',
success_url='/lista'),
login_url='/login'), name='usun'),

url(r'^admin/', include(admin.site.urls)),
)
48 changes: 26 additions & 22 deletions docs/python/czat/views_z8.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,23 @@ def wyloguj(request):
return redirect(reverse('index'))


from czat.models import Wiadomosc
from django.views.generic.edit import CreateView
from czat.models import Wiadomosc
from django.utils import timezone

class UtworzWiadomosc(CreateView):
model = Wiadomosc
fields = ['tekst', 'data_pub']
context_object_name = 'wiadomosci'
success_url = '/wiadomosc'

def get_initial(self):
initial = super(UtworzWiadomosc, self).get_initial()
initial['data_pub'] = timezone.now()
return initial

def get_context_data(self, **kwargs):
kwargs['object_list'] = Wiadomosc.objects.filter(
kwargs['wiadomosci'] = Wiadomosc.objects.filter(
autor=self.request.user)
return super(UtworzWiadomosc, self).get_context_data(**kwargs)

Expand All @@ -74,25 +81,22 @@ def form_valid(self, form):
wiadomosc.save()
return super(UtworzWiadomosc, self).form_valid(form)

from django.utils import timezone
from django.contrib.auth.decorators import login_required

@login_required(login_url='/loguj')
def wiadomosci(request):
"""Dodawanie i wyświetlanie wiadomości"""
from django.views.generic.edit import UpdateView

if request.method == 'POST':
tekst = request.POST.get('tekst', '')
if not 0 < len(tekst) <= 250:
messages.error(request,
"Wiadomość nie może być pusta, może mieć maks. 250 znaków!")
else:
wiadomosc = Wiadomosc(tekst=tekst,
data_pub=timezone.now(),
autor=request.user)
wiadomosc.save()
return redirect(reverse('wiadomosci'))

wiadomosci = Wiadomosc.objects.all()
kontekst = {'user': request.user, 'wiadomosci': wiadomosci}
return render(request, 'czat/wiadomosci.html', kontekst)
class AktualizujWiadomosc(UpdateView):
model = Wiadomosc
from czat.forms import AktualizujWiadomoscForm
form_class = AktualizujWiadomoscForm
context_object_name = 'wiadomosci'
template_name = 'czat/wiadomosc_form.html'
success_url = '/wiadomosci'

def get_context_data(self, **kwargs):
kwargs['wiadomosci'] = Wiadomosc.objects.filter(
autor=self.request.user)
return super(AktualizujWiadomosc, self).get_context_data(**kwargs)

def get_object(self, queryset=None):
wiadomosc = Wiadomosc.objects.get(id=self.kwargs['pk'])
return wiadomosc
125 changes: 125 additions & 0 deletions docs/python/czat/views_z9.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# -*- coding: utf-8 -*-
# czat/czat/views.py

#from django.http import HttpResponse
from django.shortcuts import render

def index(request):
"""Strona główna aplikacji."""
#return HttpResponse("Witaj w aplikacji Czat!")
kontekst = {'user': request.user}
return render(request, 'czat/index.html', kontekst)

from django.shortcuts import redirect
from django.core.urlresolvers import reverse
from django.contrib.auth import authenticate, login, logout
from django.contrib import messages

def rejestruj(request):
"""Rejestracja nowego użytkownika."""
from django.contrib.auth.forms import UserCreationForm

if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, "Zostałeś zarejestrowany.")
user = authenticate(
username=form.data['username'],
password=form.data['password1'])
login(request, user)
messages.success(request, "Zostałeś zalogowany.")
return redirect(reverse('index'))

kontekst = {'form': UserCreationForm()}
return render(request, 'czat/rejestruj.html', kontekst)

def loguj(request):
"""Logowanie użytkownika"""
from django.contrib.auth.forms import AuthenticationForm

if request.method == 'POST':
form = AuthenticationForm(request, request.POST)
if form.is_valid():
login(request, form.get_user())
messages.success(request, "Zostałeś zalogowany!")
return redirect(reverse('index'))

kontekst = {'form': AuthenticationForm()}
return render(request, 'czat/loguj.html', kontekst)

def wyloguj(request):
"""Wylogowanie użytkownika"""
logout(request)
messages.info(request, "Zostałeś wylogowany!")
return redirect(reverse('index'))


from django.views.generic.edit import CreateView
from czat.models import Wiadomosc
from django.utils import timezone

class UtworzWiadomosc(CreateView):
model = Wiadomosc
fields = ['tekst', 'data_pub']
context_object_name = 'wiadomosci'
success_url = '/wiadomosc'

def get_initial(self):
initial = super(UtworzWiadomosc, self).get_initial()
initial['data_pub'] = timezone.now()
return initial

def get_context_data(self, **kwargs):
kwargs['wiadomosci'] = Wiadomosc.objects.filter(
autor=self.request.user)
return super(UtworzWiadomosc, self).get_context_data(**kwargs)

def form_valid(self, form):
wiadomosc = form.save(commit=False)
wiadomosc.autor = self.request.user
wiadomosc.save()
return super(UtworzWiadomosc, self).form_valid(form)


from django.views.generic.edit import UpdateView

class AktualizujWiadomosc(UpdateView):
model = Wiadomosc
from czat.forms import AktualizujWiadomoscForm
form_class = AktualizujWiadomoscForm
context_object_name = 'wiadomosci'
template_name = 'czat/wiadomosc_form.html'
success_url = '/wiadomosci'

def get_context_data(self, **kwargs):
kwargs['wiadomosci'] = Wiadomosc.objects.filter(
autor=self.request.user)
return super(AktualizujWiadomosc, self).get_context_data(**kwargs)

def get_object(self, queryset=None):
wiadomosc = Wiadomosc.objects.get(id=self.kwargs['pk'])
return wiadomosc


from django.contrib.auth.decorators import login_required

@login_required(login_url='/loguj')
def wiadomosci(request):
"""Dodawanie i wyświetlanie wiadomości"""

if request.method == 'POST':
tekst = request.POST.get('tekst', '')
if not 0 < len(tekst) <= 250:
messages.error(request,
"Wiadomość nie może być pusta, może mieć maks. 250 znaków!")
else:
wiadomosc = Wiadomosc(tekst=tekst,
data_pub=timezone.now(),
autor=request.user)
wiadomosc.save()
return redirect(reverse('wiadomosci'))

wiadomosci = Wiadomosc.objects.all()
kontekst = {'user': request.user, 'wiadomosci': wiadomosci}
return render(request, 'czat/wiadomosci.html', kontekst)
2 changes: 1 addition & 1 deletion docs/python/czat/wiadomosc_form_z7.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ <h2>Dodaj wiadomość</h2>
<button type="submit">Zapisz</button>
</form>

<h2>Lista wiadomości:</h2>
<h2>Dodane wiadomości:</h2>
<ol>
{% for wiadomosc in wiadomosci %}
<li>
Expand Down
1 change: 0 additions & 1 deletion docs/python/czat/wiadomosc_list_z6.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,5 @@ <h2>Lista wiadomości:</h2>
{% endfor %}
</ol>

<p><a href="{% url 'index' %}">Strona główna</a></p>
</body>
</html>
31 changes: 0 additions & 31 deletions docs/python/czat/wiadomosci_z7.html

This file was deleted.

File renamed without changes.

0 comments on commit c6783e6

Please sign in to comment.