Commit 6253c062 authored by Skia's avatar Skia

Add very basic and not safe pages

parent c6b35071
from django.contrib import admin from django.contrib import admin
from .models import User from .models import User, Page
admin.site.register(User) admin.site.register(User)
admin.site.register(Page)
...@@ -3,7 +3,7 @@ from django import forms ...@@ -3,7 +3,7 @@ from django import forms
from django.contrib.auth import logout, login, authenticate from django.contrib.auth import logout, login, authenticate
import logging import logging
from .models import User from .models import User, Page
class RegisteringForm(UserCreationForm): class RegisteringForm(UserCreationForm):
error_css_class = 'error' error_css_class = 'error'
...@@ -42,4 +42,15 @@ class LoginForm(AuthenticationForm): ...@@ -42,4 +42,15 @@ class LoginForm(AuthenticationForm):
params={'username': self.username_field.verbose_name}, params={'username': self.username_field.verbose_name},
) )
class PageForm(forms.ModelForm):
class Meta:
model = Page
fields = ['name', 'title', 'content', ]
def save(self, commit=True):
page = super(PageForm, self).save(commit=False)
if commit:
page.save()
return page
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0003_auto_20151119_1635'),
]
operations = [
migrations.AddField(
model_name='page',
name='children',
field=models.ForeignKey(to='core.Page', related_name='parent', null=True),
),
]
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0004_page_children'),
]
operations = [
migrations.AddField(
model_name='page',
name='title',
field=models.CharField(blank=True, max_length=255, verbose_name='page title'),
),
]
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0005_page_title'),
]
operations = [
migrations.RemoveField(
model_name='page',
name='id',
),
migrations.AlterField(
model_name='page',
name='full_name',
field=models.CharField(primary_key=True, max_length=255, serialize=False, verbose_name='full name'),
),
]
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0006_auto_20151120_0958'),
]
operations = [
migrations.RemoveField(
model_name='page',
name='full_name',
),
migrations.AddField(
model_name='page',
name='id',
field=models.AutoField(default=0, auto_created=True, verbose_name='ID', primary_key=True, serialize=False),
preserve_default=False,
),
]
...@@ -106,12 +106,14 @@ class User(AbstractBaseUser, PermissionsMixin): ...@@ -106,12 +106,14 @@ class User(AbstractBaseUser, PermissionsMixin):
self.username = user_name self.username = user_name
return user_name return user_name
class Page(models.Model): class Page(models.Model):
name = models.CharField(_('page name'), max_length=30, blank=False) name = models.CharField(_('page name'), max_length=30, blank=False)
full_name = models.CharField(_("full name"), max_length=255, blank=False) title = models.CharField(_("page title"), max_length=255, blank=True)
content = models.TextField(_("page content"), blank=True) content = models.TextField(_("page content"), blank=True)
revision = models.PositiveIntegerField(_("current revision"), default=1) revision = models.PositiveIntegerField(_("current revision"), default=1)
is_locked = models.BooleanField(_("page mutex"), default=False) is_locked = models.BooleanField(_("page mutex"), default=False)
children = models.ForeignKey('self', related_name="parent", null=True)
class Meta: class Meta:
permissions = ( permissions = (
...@@ -120,5 +122,10 @@ class Page(models.Model): ...@@ -120,5 +122,10 @@ class Page(models.Model):
) )
def __str__(self): def __str__(self):
return self.full_name return self.name
def get_display_name(self):
return self.name
#def get(self, *args):
# return self.__dict__
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
<li><a href="{% url 'core:login' %}">Login</a></li> <li><a href="{% url 'core:login' %}">Login</a></li>
<li><a href="{% url 'core:logout' %}">Logout</a></li> <li><a href="{% url 'core:logout' %}">Logout</a></li>
<li><a href="{% url 'core:user_list' %}">Users</a></li> <li><a href="{% url 'core:user_list' %}">Users</a></li>
<li><a href="{% url 'core:page_list' %}">Pages</a></li>
</ul> </ul>
{% endblock %} {% endblock %}
</header> </header>
......
{% extends "core/base.html" %}
{% block title %}
{% if page %}
{{ page.get_display_name }}
{% elif page_list %}
Page list
{% else %}
{{ title }}
{% endif %}
{% endblock %}
{% block content %}
{% if page %}
<h3>Page</h3>
<p><a href="{% url 'core:page_list' %}">Back to list</a></p>
{% if user.is_superuser %}
<p><a href="{% url 'core:page_edit' page.name %}">Edit</a></p>
{% endif %}
<p>You're seeing the page <strong>{{ page.get_display_name }}</strong></p>
<h3>{{ page.title }}</h3>
<p>{{ page.content }}</p>
{% elif page_list %}
<h3>Page list</h3>
<ul>
{% for p in page_list %}
<li><a href="{% url 'core:page' p.name %}">{{ p.get_display_name }}</a></li>
{% endfor %}
</ul>
{% elif new_page %}
<h2>{{ title }}</h2>
<p><a href="{% url 'core:page_edit' new_page %}">Create it?</a></p>
{% elif page_form %}
<h2>Edit page</h2>
<form action="{% url 'core:page_edit' page_name=page_name %}" method="post">
{% csrf_token %}
{{ page_form }}
<p><input type="submit" value="Save!" /></p>
</form>
{% else %}
There is no page in this website.
{% endif %}
{% endblock %}
...@@ -10,5 +10,8 @@ urlpatterns = [ ...@@ -10,5 +10,8 @@ urlpatterns = [
url(r'^user/$', views.user, name='user_list'), url(r'^user/$', views.user, name='user_list'),
url(r'^user/(?P<user_id>[0-9]+)/$', views.user, name='user_profile'), url(r'^user/(?P<user_id>[0-9]+)/$', views.user, name='user_profile'),
url(r'^user/(?P<user_id>[0-9]+)/edit$', views.user_edit, name='user_edit'), url(r'^user/(?P<user_id>[0-9]+)/edit$', views.user_edit, name='user_edit'),
url(r'^page/$', views.page, name='page_list'),
url(r'^page/(?P<page_name>[a-z0-9]*)/$', views.page, name='page'),
url(r'^page/(?P<page_name>[a-z0-9]*)/edit$', views.page_edit, name='page_edit'),
] ]
from django.shortcuts import render, redirect, get_object_or_404 from django.shortcuts import render, redirect, get_object_or_404
from django.http import HttpResponse from django.http import HttpResponse
from django.contrib.auth import logout as auth_logout from django.contrib.auth import logout as auth_logout
from django.db import models
from .models import User from .models import User, Page
from .forms import RegisteringForm, LoginForm from .forms import RegisteringForm, LoginForm, PageForm
import logging import logging
...@@ -86,3 +87,32 @@ def user_edit(request, user_id=None): ...@@ -86,3 +87,32 @@ def user_edit(request, user_id=None):
return render(request, "core/edit_user.html", context) return render(request, "core/edit_user.html", context)
return user(request, user_id) return user(request, user_id)
def page(request, page_name=None):
context = {'title': 'View a Page'}
if page_name == None:
context['page_list'] = Page.objects.all
return render(request, "core/page.html", context)
try:
context['page'] = Page.objects.filter(name=page_name).get()
context['title'] = context['page'].title
context['test'] = "PAGE_FOUND"
except Page.DoesNotExist:
context['title'] = "This page does not exist"
context['new_page'] = page_name
context['test'] = "PAGE_NOT_FOUND"
return render(request, "core/page.html", context)
def page_edit(request, page_name=None):
context = {'title': 'Edit a page',
'page_name': page_name}
p = Page.objects.filter(name=page_name).first()
if p == None:
p = Page(name=page_name)
if request.method == 'POST':
f = PageForm(request.POST, instance=p)
if f.is_valid():
f.save()
context['test'] = "PAGE_SAVED"
context['page_form'] = PageForm(instance=p).as_p()
return render(request, 'core/page.html', context)
[{"model": "core.user", "pk": 1, "fields": {"is_staff": true, "password": "pbkdf2_sha256$20000$MDukCN5X8Bof$rYdhppKiusj+W/1Rxpy0yuYsEyWocESEjtRsopkOc5c=", "first_name": "Ro", "is_active": true, "date_of_birth": "1969-12-31T23:00:00Z", "date_joined": "2015-11-19T16:05:51.764Z", "nick_name": "", "is_superuser": true, "username": "root", "email": "bibou@git.an", "last_login": "2015-11-19T16:16:59.539Z", "last_name": "Ot", "user_permissions": [], "groups": []}}, {"model": "core.user", "pk": 2, "fields": {"is_staff": false, "password": "pbkdf2_sha256$20000$UK9a29p5bBEh$Jzv7xs0W9njJZiXfIdYXDydim/3YHs6awKwDmN7gSAc=", "first_name": "Skia", "is_active": true, "date_of_birth": "1969-12-31T23:00:00Z", "date_joined": "2015-11-19T16:06:29.556Z", "nick_name": "", "is_superuser": false, "username": "skia", "email": "plop@libskia.so", "last_login": "2015-11-19T16:16:49.606Z", "last_name": "Kia", "user_permissions": [], "groups": []}}]
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment