Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Gelencsér Szabolcs
/
circlestack
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
cd848582
authored
7 years ago
by
Czémán Arnold
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
common: add CreateLimitedResourceMixin
parent
f7d27476
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
1 deletions
+30
-1
circle/common/views.py
+30
-1
No files found.
circle/common/views.py
View file @
cd848582
...
@@ -19,8 +19,11 @@ from sys import exc_info
...
@@ -19,8 +19,11 @@ from sys import exc_info
import
logging
import
logging
from
django.shortcuts
import
render_to_response
from
django.shortcuts
import
render_to_response
,
redirect
from
django.contrib
import
messages
from
django.template
import
RequestContext
from
django.template
import
RequestContext
from
django.http
import
JsonResponse
from
django.utils.translation
import
ugettext_lazy
as
_
from
.models
import
HumanReadableException
from
.models
import
HumanReadableException
...
@@ -59,3 +62,29 @@ def handler403(request):
...
@@ -59,3 +62,29 @@ def handler403(request):
resp
=
render_to_response
(
"403.html"
,
ctx
)
resp
=
render_to_response
(
"403.html"
,
ctx
)
resp
.
status_code
=
403
resp
.
status_code
=
403
return
resp
return
resp
class
CreateLimitedResourceMixin
(
object
):
resource_name
=
None
model
=
None
profile_attribute
=
None
def
post
(
self
,
*
args
,
**
kwargs
):
user
=
self
.
request
.
user
try
:
limit
=
getattr
(
user
.
profile
,
self
.
profile_attribute
)
except
Exception
as
e
:
logger
.
debug
(
'No profile or
%
s:
%
s'
,
self
.
profile_attribute
,
e
)
else
:
current
=
self
.
model
.
objects
.
filter
(
owner
=
user
)
.
count
()
logger
.
debug
(
'
%
s current use:
%
d, limit:
%
d'
,
self
.
resource_name
,
current
,
limit
)
if
current
>
limit
:
messages
.
error
(
self
.
request
,
_
(
'
%
s limit (
%
d) exceeded.'
)
%
(
self
.
resource_name
,
limit
))
if
self
.
request
.
is_ajax
():
return
JsonResponse
({
'redirect'
:
'/'
})
else
:
return
redirect
(
'/'
)
return
super
(
CreateLimitedResourceMixin
,
self
)
.
post
(
*
args
,
**
kwargs
)
This diff is collapsed.
Click to expand it.
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