Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
thalia
concrexit
Commits
977e9254
Verified
Commit
977e9254
authored
Dec 17, 2018
by
Sébastiaan Versteeg
Browse files
Add admin group to NextCloud api
parent
54be451b
Changes
6
Hide whitespace changes
Inline
Side-by-side
website/activemembers/api/urls.py
View file @
977e9254
...
...
@@ -3,6 +3,8 @@ from django.urls import path
from
activemembers.api
import
views
urlpatterns
=
[
path
(
'activemembers/nextcloud/users'
,
views
.
NextCloudUsersView
.
as_view
()),
path
(
'activemembers/nextcloud/groups'
,
views
.
NextCloudGroupsView
.
as_view
()),
path
(
'activemembers/nextcloud/users/'
,
views
.
NextCloudUsersView
.
as_view
()),
path
(
'activemembers/nextcloud/groups/'
,
views
.
NextCloudGroupsView
.
as_view
()),
]
website/activemembers/api/views.py
View file @
977e9254
from
django.contrib.auth.models
import
Permission
from
django.db.models
import
Q
from
django.utils
import
timezone
from
rest_framework.generics
import
ListAPIView
from
activemembers.api.permissions
import
NextCloudPermission
...
...
@@ -11,14 +14,48 @@ from members.models import Member
class
NextCloudUsersView
(
ListAPIView
):
permission_classes
=
[
NextCloudPermission
]
queryset
=
Member
.
current_members
.
filter
(
pk__in
=
MemberGroupMembership
.
active_objects
.
values_list
(
'member_id'
,
flat
=
True
)
)
queryset
=
Member
.
current_members
.
all
()
serializer_class
=
NextCloudMemberSerializer
def
get_queryset
(
self
):
perm
=
Permission
.
objects
.
get
(
content_type__app_label
=
'auth'
,
codename
=
'nextcloud_admin'
)
return
super
().
get_queryset
().
filter
(
Q
(
pk__in
=
MemberGroupMembership
.
active_objects
.
values_list
(
'member_id'
,
flat
=
True
))
|
Q
(
is_superuser
=
True
)
|
Q
(
groups__permissions
=
perm
)
|
Q
(
user_permissions
=
perm
)
|
(
Q
(
membergroup__permissions
=
perm
)
&
(
Q
(
membergroupmembership__until
=
None
)
|
Q
(
membergroupmembership__until__gte
=
timezone
.
now
())))
).
distinct
()
class
NextCloudGroupsView
(
ListAPIView
):
permission_classes
=
[
NextCloudPermission
]
queryset
=
MemberGroup
.
objects
.
all
()
serializer_class
=
NextCloudGroupSerializer
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
response
=
super
().
list
(
request
,
*
args
,
**
kwargs
)
perm
=
Permission
.
objects
.
get
(
content_type__app_label
=
'auth'
,
codename
=
'nextcloud_admin'
)
users
=
Member
.
current_members
.
filter
(
Q
(
is_superuser
=
True
)
|
Q
(
groups__permissions
=
perm
)
|
Q
(
user_permissions
=
perm
)
|
(
Q
(
membergroup__permissions
=
perm
)
&
(
Q
(
membergroupmembership__until
=
None
)
|
Q
(
membergroupmembership__until__gte
=
timezone
.
now
())))
).
distinct
().
values_list
(
'username'
,
flat
=
True
)
if
users
.
count
()
>
0
:
response
.
data
=
list
(
response
.
data
)
+
[
{
'pk'
:
-
1
,
'name'
:
'admin'
,
'members'
:
users
}
]
return
response
website/members/locale/nl/LC_MESSAGES/django.mo
View file @
977e9254
No preview for this file type
website/members/locale/nl/LC_MESSAGES/django.po
View file @
977e9254
...
...
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-1
1
-1
4
1
9:57
+0100\n"
"PO-Revision-Date: 2018-1
1
-1
4
1
9:58
+0100\n"
"POT-Creation-Date: 2018-1
2
-1
7
1
5:31
+0100\n"
"PO-Revision-Date: 2018-1
2
-1
7
1
5:32
+0100\n"
"Last-Translator: Thom Wiggers <thom@thomwiggers.nl>\n"
"Language-Team: \n"
"Language: nl\n"
...
...
@@ -150,6 +150,10 @@ msgstr "E-mailadres"
msgid "Access the Sentry backend"
msgstr "Toegang tot the Sentry backend"
#: models.py
msgid "Access NextCloud as admin"
msgstr "Toegang tot NextCloud als admin"
#: models.py
msgid "Is this user currently active"
msgstr "Is deze user op dit moment actief"
...
...
website/members/migrations/0028_auto_20181217_1518.py
0 → 100644
View file @
977e9254
# Generated by Django 2.1.4 on 2018-12-17 14:18
from
django.db
import
migrations
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'members'
,
'0027_auto_20181024_2000'
),
]
operations
=
[
migrations
.
AlterModelOptions
(
name
=
'member'
,
options
=
{
'ordering'
:
(
'first_name'
,
'last_name'
),
'permissions'
:
((
'sentry_access'
,
'Access the Sentry backend'
),
(
'nextcloud_admin'
,
'Access NextCloud as admin'
))},
),
]
website/members/models.py
View file @
977e9254
...
...
@@ -2,8 +2,10 @@ import logging
import
operator
import
os
import
uuid
from
PIL
import
Image
from
datetime
import
timedelta
from
functools
import
reduce
from
PIL
import
Image
from
django.conf
import
settings
from
django.contrib.auth.models
import
User
,
UserManager
from
django.core
import
validators
...
...
@@ -13,7 +15,6 @@ from django.db.models import Q
from
django.urls
import
reverse
from
django.utils
import
timezone
from
django.utils.translation
import
pgettext_lazy
,
gettext_lazy
as
_
from
functools
import
reduce
from
localflavor.generic.countries.sepa
import
IBAN_SEPA_COUNTRIES
from
localflavor.generic.models
import
IBANField
...
...
@@ -97,6 +98,7 @@ class Member(User):
ordering
=
(
'first_name'
,
'last_name'
)
permissions
=
(
(
'sentry_access'
,
_
(
"Access the Sentry backend"
)),
(
'nextcloud_admin'
,
_
(
"Access NextCloud as admin"
)),
)
objects
=
MemberManager
()
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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