Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
AE UTBM
Sith
Commits
d51ab088
Commit
d51ab088
authored
Feb 02, 2016
by
Skia
Browse files
Add first club views, this still sucks, particularly on the right managment
parent
afc87888
Changes
13
Hide whitespace changes
Inline
Side-by-side
club/migrations/0002_auto_20160202_1345.py
0 → 100644
View file @
d51ab088
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'core'
,
'0001_initial'
),
(
'club'
,
'0001_initial'
),
]
operations
=
[
migrations
.
AddField
(
model_name
=
'club'
,
name
=
'edit_group'
,
field
=
models
.
ManyToManyField
(
to
=
'core.Group'
,
blank
=
True
,
related_name
=
'editable_club'
),
),
migrations
.
AddField
(
model_name
=
'club'
,
name
=
'view_group'
,
field
=
models
.
ManyToManyField
(
to
=
'core.Group'
,
blank
=
True
,
related_name
=
'viewable_club'
),
),
]
club/migrations/0003_club_owner_group.py
0 → 100644
View file @
d51ab088
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'core'
,
'0001_initial'
),
(
'club'
,
'0002_auto_20160202_1345'
),
]
operations
=
[
migrations
.
AddField
(
model_name
=
'club'
,
name
=
'owner_group'
,
field
=
models
.
ForeignKey
(
default
=
1
,
to
=
'core.Group'
,
related_name
=
'owned_club'
),
),
]
club/models.py
View file @
d51ab088
...
...
@@ -3,8 +3,9 @@ from django.core import validators
from
django.conf
import
settings
from
django.utils.translation
import
ugettext_lazy
as
_
from
django.core.exceptions
import
ValidationError
from
django.core.urlresolvers
import
reverse
from
core.models
import
User
from
core.models
import
User
,
Group
# Create your models here.
...
...
@@ -28,6 +29,10 @@ class Club(models.Model):
)
address
=
models
.
CharField
(
_
(
'address'
),
max_length
=
254
)
# email = models.EmailField(_('email address'), unique=True) # This should, and will be generated automatically
owner_group
=
models
.
ForeignKey
(
Group
,
related_name
=
"owned_club"
,
default
=
settings
.
AE_GROUPS
[
'root'
][
'id'
])
edit_group
=
models
.
ManyToManyField
(
Group
,
related_name
=
"editable_club"
,
blank
=
True
)
view_group
=
models
.
ManyToManyField
(
Group
,
related_name
=
"viewable_club"
,
blank
=
True
)
def
check_loop
(
self
):
"""Raise a validation error when a loop is found within the parent list"""
...
...
@@ -45,6 +50,9 @@ class Club(models.Model):
def
__str__
(
self
):
return
self
.
name
def
get_absolute_url
(
self
):
return
reverse
(
'club:club_view'
,
kwargs
=
{
'club_id'
:
self
.
id
})
class
Membership
(
models
.
Model
):
"""
The Membership class makes the connection between User and Clubs
...
...
club/templates/club/club_detail.jinja
0 → 100644
View file @
d51ab088
{%
extends
"core/base.jinja"
%}
{%
block
content
%}
<h3>
Club
</h3>
<p><a
href=
"
{{
url
(
'club:club_list'
)
}}
"
>
Back to list
</a></p>
{%
if
user.can_edit
(
club
)
%}
<p><a
href=
"
{{
url
(
'club:club_edit'
,
club_id
=
club.pk
)
}}
"
>
Edit
</a></p>
<p><a
href=
"
{{
url
(
'club:club_members'
,
club_id
=
club.pk
)
}}
"
>
Edit members
</a></p>
{%
endif
%}
{%
if
user.is_owner
(
club
)
or
user.membership.
filter
(
end_date
=
None
)
.
filter
(
club
=
club.id
)
.
first
()
is
not
none
%}
<p><a
href=
"
{{
url
(
'club:club_prop'
,
club_id
=
club.pk
)
}}
"
>
Prop
</a>
TODO FIXME: this code sucks and is just a test!
We need something really easy to manage the views rights regarding the subscribing status and the membership of
someone!
</p>
{%
endif
%}
<h3>
{{
club.name
}}
</h3>
<p>
{{
club.address
}}
</p>
<ul>
{%
for
m
in
club.members.all
()
%}
<li>
{{
m
}}
</li>
{%
endfor
%}
</ul>
{%
endblock
%}
club/templates/club/club_edit.jinja
0 → 100644
View file @
d51ab088
{%
extends
"core/base.jinja"
%}
{%
block
content
%}
<h2>
Edit club
</h2>
<form
action=
"
{{
url
(
'club:club_edit'
,
club_id
=
club.id
)
}}
"
method=
"post"
>
{%
csrf_token
%}
{{
form.as_p
()
}}
<p><input
type=
"submit"
value=
"Save!"
/></p>
</form>
{%
endblock
%}
club/templates/club/club_edit_prop.jinja
0 → 100644
View file @
d51ab088
{%
extends
"core/base.jinja"
%}
{%
block
content
%}
<h2>
Edit club properties
</h2>
<form
action=
"
{{
url
(
'club:club_prop'
,
club_id
=
club.id
)
}}
"
method=
"post"
>
{%
csrf_token
%}
{{
form.as_p
()
}}
<p><input
type=
"submit"
value=
"Save!"
/></p>
</form>
{%
endblock
%}
club/templates/club/club_list.jinja
0 → 100644
View file @
d51ab088
{%
extends
"core/base.jinja"
%}
{%
block
title
%}
Club list
{%
endblock
%}
{%
macro
display_club
(
club
)
-
%}
<li><a
href=
"
{{
url
(
'club:club_view'
,
club_id
=
club.id
)
}}
"
>
{{
club.name
}}
</a>
{%
-
if
club.children.all
()
|
length
!=
0
%}
<ul>
{%
-
for
c
in
club.children.all
()
%}
{{
display_club
(
c
)
}}
{%
-
endfor
%}
</ul>
{%
-
endif
-
%}
</li>
{%
-
endmacro
%}
{%
block
content
%}
{%
if
club_list
%}
<h3>
Club list
</h3>
<ul>
{%
-
for
c
in
club_list
if
c.parent
is
none
%}
{{
display_club
(
c
)
}}
{%
-
endfor
%}
</ul>
{%
else
%}
There is no club in this website.
{%
endif
%}
{%
endblock
%}
club/templates/club/club_members.jinja
0 → 100644
View file @
d51ab088
{%
extends
"core/base.jinja"
%}
{%
block
content
%}
<h2>
Edit club
</h2>
<form
action=
"
{{
url
(
'club:club_members'
,
club_id
=
club.id
)
}}
"
method=
"post"
>
{%
csrf_token
%}
{{
form.as_p
()
}}
<p><input
type=
"submit"
value=
"Save!"
/></p>
</form>
{%
endblock
%}
club/urls.py
0 → 100644
View file @
d51ab088
from
django.conf.urls
import
url
,
include
from
club.views
import
*
urlpatterns
=
[
url
(
r
'^$'
,
ClubListView
.
as_view
(),
name
=
'club_list'
),
url
(
r
'^(?P<club_id>[0-9]+)/$'
,
ClubView
.
as_view
(),
name
=
'club_view'
),
url
(
r
'^(?P<club_id>[0-9]+)/edit$'
,
ClubEditView
.
as_view
(),
name
=
'club_edit'
),
url
(
r
'^(?P<club_id>[0-9]+)/members$'
,
ClubEditMembersView
.
as_view
(),
name
=
'club_members'
),
url
(
r
'^(?P<club_id>[0-9]+)/prop$'
,
ClubEditPropView
.
as_view
(),
name
=
'club_prop'
),
#url(r'^(?P<club_id>[0-9]+)/tools$', ClubToolsView.as_view(), name='club_tools'),
## API
#url(r'^api/markdown$', render_markdown, name='api_markdown'),
]
club/views.py
View file @
d51ab088
from
django.shortcuts
import
render
from
django.views.generic
import
ListView
,
DetailView
from
django.views.generic.edit
import
UpdateView
from
core.views
import
CanViewMixin
,
CanEditMixin
,
CanEditPropMixin
from
club.models
import
Club
,
Membership
class
ClubListView
(
CanViewMixin
,
ListView
):
model
=
Club
template_name
=
'club/club_list.jinja'
class
ClubView
(
CanViewMixin
,
DetailView
):
model
=
Club
pk_url_kwarg
=
"club_id"
template_name
=
'club/club_detail.jinja'
class
ClubEditView
(
CanEditMixin
,
UpdateView
):
model
=
Club
pk_url_kwarg
=
"club_id"
fields
=
[
'address'
]
template_name
=
'club/club_edit.jinja'
class
ClubEditMembersView
(
CanEditMixin
,
UpdateView
):
model
=
Club
pk_url_kwarg
=
"club_id"
fields
=
[
'user'
]
template_name
=
'club/club_members.jinja'
class
ClubEditPropView
(
CanEditPropMixin
,
UpdateView
):
model
=
Club
pk_url_kwarg
=
"club_id"
fields
=
[
'name'
,
'address'
,
'parent'
]
template_name
=
'club/club_edit_prop.jinja'
# Create your views here.
core/management/commands/setup.py
View file @
d51ab088
...
...
@@ -30,8 +30,9 @@ class Command(BaseCommand):
u
.
save
()
for
g
in
settings
.
AE_GROUPS
.
values
():
Group
(
id
=
g
[
'id'
],
name
=
g
[
'name'
]).
save
()
Club
(
name
=
settings
.
AE_MAIN_CLUB
[
'name'
],
unix_name
=
settings
.
AE_MAIN_CLUB
[
'unix_name'
],
address
=
settings
.
AE_MAIN_CLUB
[
'address'
]).
save
()
ae
=
Club
(
name
=
settings
.
AE_MAIN_CLUB
[
'name'
],
unix_name
=
settings
.
AE_MAIN_CLUB
[
'unix_name'
],
address
=
settings
.
AE_MAIN_CLUB
[
'address'
])
ae
.
save
()
# Here we add a lot of test datas, that are not necessary for the Sith, but that provide a basic development environment
if
not
options
[
'prod'
]:
...
...
@@ -67,3 +68,12 @@ Cette page vise à documenter la syntaxe *Markdown* utilisée sur le site.
Subscription
(
member
=
Subscriber
.
objects
.
filter
(
pk
=
s
.
pk
).
first
(),
subscription_type
=
list
(
settings
.
AE_SUBSCRIPTIONS
.
keys
())[
0
],
payment_method
=
settings
.
AE_PAYMENT_METHOD
[
0
]).
save
()
Club
(
name
=
"Bibo'UT"
,
unix_name
=
"bibout"
,
address
=
"46 de la Boustifaille"
,
parent
=
ae
).
save
()
guyut
=
Club
(
name
=
"Guy'UT"
,
unix_name
=
"guyut"
,
address
=
"42 de la Boustifaille"
,
parent
=
ae
)
guyut
.
save
()
Club
(
name
=
"Woenzel'UT"
,
unix_name
=
"woenzel"
,
address
=
"Woenzel"
,
parent
=
guyut
).
save
()
Club
(
name
=
"BdF"
,
unix_name
=
"bdf"
,
address
=
"Guyéuéyuéyuyé"
).
save
()
core/templates/core/base.jinja
View file @
d51ab088
...
...
@@ -26,6 +26,7 @@
<li><a
href=
"
{{
url
(
'core:user_profile'
,
user_id
=
user.id
)
}}
"
>
Profile
</a></li>
<li><a
href=
"
{{
url
(
'core:user_list'
)
}}
"
>
Users
</a></li>
<li><a
href=
"
{{
url
(
'core:page_list'
)
}}
"
>
Pages
</a></li>
<li><a
href=
"
{{
url
(
'club:club_list'
)
}}
"
>
Clubs
</a></li>
</ul>
{%
endif
%}
{%
endblock
%}
...
...
sith/urls.py
View file @
d51ab088
...
...
@@ -24,5 +24,6 @@ handler404 = "core.views.not_found"
urlpatterns
=
[
url
(
r
'^'
,
include
(
'core.urls'
,
namespace
=
"core"
,
app_name
=
"core"
)),
url
(
r
'^subscription/'
,
include
(
'subscription.urls'
,
namespace
=
"subscription"
,
app_name
=
"subscription"
)),
url
(
r
'^club/'
,
include
(
'club.urls'
,
namespace
=
"club"
,
app_name
=
"club"
)),
url
(
r
'^admin/'
,
include
(
admin
.
site
.
urls
)),
]
+
static
(
settings
.
MEDIA_URL
,
document_root
=
settings
.
MEDIA_ROOT
)
# TODO: remove me for production!!!
Write
Preview
Supports
Markdown
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