Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
AE
Sith
Commits
b19ec084
Commit
b19ec084
authored
Nov 26, 2015
by
Skia
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Basic group view and permissions management on the pages
parent
48e3f88b
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
119 additions
and
4 deletions
+119
-4
core/admin.py
core/admin.py
+2
-1
core/fixtures/groups.json
core/fixtures/groups.json
+1
-1
core/migrations/0007_auto_20151126_1613.py
core/migrations/0007_auto_20151126_1613.py
+37
-0
core/models.py
core/models.py
+8
-1
core/templates/core/group_edit.html
core/templates/core/group_edit.html
+16
-0
core/templates/core/group_list.html
core/templates/core/group_list.html
+15
-0
core/urls.py
core/urls.py
+3
-0
core/views/__init__.py
core/views/__init__.py
+1
-0
core/views/forms.py
core/views/forms.py
+11
-1
core/views/group.py
core/views/group.py
+19
-0
core/views/page.py
core/views/page.py
+6
-0
No files found.
core/admin.py
View file @
b19ec084
from
django.contrib
import
admin
from
.models
import
User
,
Page
from
.models
import
User
,
Page
,
Group
admin
.
site
.
register
(
User
)
admin
.
site
.
register
(
Group
)
admin
.
site
.
register
(
Page
)
core/fixtures/groups.json
View file @
b19ec084
[{
"pk"
:
1
,
"model"
:
"auth.group"
,
"fields"
:
{
"name"
:
"root"
,
"permissions"
:
[
1
,
2
,
3
,
7
,
8
,
9
,
4
,
5
,
6
,
10
,
11
,
12
,
19
,
20
,
21
,
16
,
17
,
18
,
13
,
14
,
15
]}}]
\ No newline at end of file
[{
"fields"
:
{
"permissions"
:
[
1
,
2
,
3
,
7
,
8
,
9
,
4
,
5
,
6
,
10
,
11
,
12
,
19
,
20
,
21
,
22
,
25
,
23
,
24
,
16
,
17
,
18
,
13
,
14
,
15
]},
"pk"
:
1
,
"model"
:
"core.group"
}]
\ No newline at end of file
core/migrations/0007_auto_20151126_1613.py
0 → 100644
View file @
b19ec084
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'auth'
,
'0006_require_contenttypes_0002'
),
(
'core'
,
'0006_auto_20151125_0855'
),
]
operations
=
[
migrations
.
CreateModel
(
name
=
'Group'
,
fields
=
[
(
'group_ptr'
,
models
.
OneToOneField
(
auto_created
=
True
,
to
=
'auth.Group'
,
primary_key
=
True
,
serialize
=
False
,
parent_link
=
True
)),
],
bases
=
(
'auth.group'
,),
),
migrations
.
AlterField
(
model_name
=
'page'
,
name
=
'edit_group'
,
field
=
models
.
ForeignKey
(
default
=
1
,
to
=
'core.Group'
,
related_name
=
'editable_pages'
),
),
migrations
.
AlterField
(
model_name
=
'page'
,
name
=
'owner_group'
,
field
=
models
.
ForeignKey
(
default
=
1
,
to
=
'core.Group'
,
related_name
=
'owned_pages'
),
),
migrations
.
AlterField
(
model_name
=
'page'
,
name
=
'view_group'
,
field
=
models
.
ForeignKey
(
default
=
1
,
to
=
'core.Group'
,
related_name
=
'viewable_pages'
),
),
]
core/models.py
View file @
b19ec084
from
django.db
import
models
from
django.contrib.auth.models
import
AbstractBaseUser
,
PermissionsMixin
,
UserManager
,
Group
from
django.contrib.auth.models
import
AbstractBaseUser
,
PermissionsMixin
,
UserManager
,
Group
as
AuthGroup
from
django.utils.translation
import
ugettext_lazy
as
_
from
django.utils
import
timezone
from
django.core
import
validators
...
...
@@ -125,6 +125,12 @@ class User(AbstractBaseUser, PermissionsMixin):
self
.
username
=
user_name
return
user_name
class
Group
(
AuthGroup
):
def
get_absolute_url
(
self
):
"""
This is needed for black magic powered UpdateView's children
"""
return
reverse
(
'core:group_edit'
,
kwargs
=
{
'group_id'
:
self
.
pk
})
class
Page
(
models
.
Model
):
"""
...
...
@@ -227,3 +233,4 @@ class Page(models.Model):
def
get_display_name
(
self
):
return
self
.
get_full_name
()
core/templates/core/group_edit.html
0 → 100644
View file @
b19ec084
{% extends "core/base.html" %}
{% block content %}
<p><a
href=
"{% url 'core:group_list' %}"
>
Back to list
</a></p>
<h2>
Edit group
</h2>
<form
action=
""
method=
"post"
>
{% csrf_token %}
{{ form.as_p }}
<p><input
type=
"submit"
value=
"Update"
/></p>
</form>
{% endblock %}
core/templates/core/group_list.html
0 → 100644
View file @
b19ec084
{% extends "core/base.html" %}
{% block title %}
Group list
{% endblock %}
{% block content %}
<h3>
Group list
</h3>
<ul>
{% for g in group_list %}
<li><a
href=
"{% url 'core:group_edit' g.id %}"
>
{{ g.name }}
</a></li>
{% endfor %}
</ul>
{% endblock %}
core/urls.py
View file @
b19ec084
...
...
@@ -17,6 +17,9 @@ urlpatterns = [
url
(
r
'^reset/done/$'
,
password_reset_complete
,
name
=
'password_reset_complete'
),
url
(
r
'^register$'
,
register
,
name
=
'register'
),
url
(
r
'^group/$'
,
GroupListView
.
as_view
(),
name
=
'group_list'
),
url
(
r
'^group/(?P<group_id>[0-9]+)/$'
,
GroupEditView
.
as_view
(),
name
=
'group_edit'
),
url
(
r
'^user/$'
,
UserListView
.
as_view
(),
name
=
'user_list'
),
url
(
r
'^user/(?P<user_id>[0-9]+)/$'
,
UserView
.
as_view
(),
name
=
'user_profile'
),
url
(
r
'^user/(?P<user_id>[0-9]+)/edit$'
,
UserUpdateProfileView
.
as_view
(),
name
=
'user_edit'
),
...
...
core/views/__init__.py
View file @
b19ec084
from
.user
import
*
from
.page
import
*
from
.site
import
*
from
.group
import
*
core/views/forms.py
View file @
b19ec084
...
...
@@ -4,7 +4,7 @@ from django.contrib.auth import logout, login, authenticate
from
django.forms
import
CheckboxSelectMultiple
import
logging
from
core.models
import
User
,
Page
from
core.models
import
User
,
Page
,
Group
class
RegisteringForm
(
UserCreationForm
):
error_css_class
=
'error'
...
...
@@ -33,3 +33,13 @@ class UserGroupsForm(forms.ModelForm):
'user_permissions'
:
CheckboxSelectMultiple
,
}
class
GroupEditForm
(
forms
.
ModelForm
):
error_css_class
=
'error'
required_css_class
=
'required'
class
Meta
:
model
=
Group
fields
=
[
'name'
,
'permissions'
,]
widgets
=
{
'permissions'
:
CheckboxSelectMultiple
,
}
core/views/group.py
0 → 100644
View file @
b19ec084
from
django.views.generic.edit
import
UpdateView
from
django.views.generic
import
ListView
from
core.models
import
Group
from
core.views.forms
import
GroupEditForm
class
GroupListView
(
ListView
):
"""
Displays the group list
"""
model
=
Group
template_name
=
"core/group_list.html"
class
GroupEditView
(
UpdateView
):
model
=
Group
pk_url_kwarg
=
"group_id"
template_name
=
"core/group_edit.html"
form_class
=
GroupEditForm
core/views/page.py
View file @
b19ec084
...
...
@@ -2,6 +2,8 @@
from
django.shortcuts
import
render
,
redirect
,
get_object_or_404
from
django.views.generic
import
ListView
,
DetailView
from
django.views.generic.edit
import
UpdateView
from
django.contrib.auth.decorators
import
login_required
,
permission_required
from
django.utils.decorators
import
method_decorator
from
core.models
import
Page
...
...
@@ -15,6 +17,10 @@ class PageListView(ListView):
class
PageView
(
DetailView
):
model
=
Page
@
method_decorator
(
permission_required
(
'core.can_view'
))
def
dispatch
(
self
,
*
args
,
**
kwargs
):
return
super
(
PageView
,
self
).
dispatch
(
*
args
,
**
kwargs
)
def
get_object
(
self
):
self
.
page
=
Page
.
get_page_by_full_name
(
self
.
kwargs
[
'page_name'
])
return
self
.
page
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment