Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
SRCT
go
Commits
9c45114c
Commit
9c45114c
authored
May 13, 2016
by
David Haynes
Browse files
foreign key points to registereduser now
- I remember :dbond: saying a foreignkey to User could be a bad idea
parent
80ebfb8e
Changes
3
Show whitespace changes
Inline
Side-by-side
go/go/models.py
View file @
9c45114c
...
...
@@ -12,47 +12,6 @@ from hashids import Hashids
hashids
=
Hashids
(
salt
=
"srct.gmu.edu"
,
alphabet
=
(
string
.
ascii_lowercase
+
string
.
digits
))
class
URL
(
models
.
Model
):
"""
This model represents a stored URL redirection rule. Each URL has an
owner, target url, short identifier, click counter, and expiration
date.
"""
owner
=
models
.
ForeignKey
(
User
)
date_created
=
models
.
DateTimeField
(
default
=
timezone
.
now
)
target
=
models
.
URLField
(
max_length
=
1000
)
short
=
models
.
SlugField
(
primary_key
=
True
,
max_length
=
20
)
clicks
=
models
.
IntegerField
(
default
=
0
)
qrclicks
=
models
.
IntegerField
(
default
=
0
)
socialclicks
=
models
.
IntegerField
(
default
=
0
)
expires
=
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)
def
__unicode__
(
self
):
return
'<%s : %s>'
%
(
self
.
owner
.
username
,
self
.
target
)
class
Meta
:
ordering
=
[
'short'
]
@
staticmethod
def
generate_valid_short
():
if
cache
.
get
(
"hashids_counter"
)
==
None
:
cache
.
set
(
"hashids_counter"
,
URL
.
objects
.
count
())
cache
.
incr
(
"hashids_counter"
)
short
=
hashids
.
encrypt
(
cache
.
get
(
"hashids_counter"
))
tries
=
1
while
tries
<
100
:
try
:
urls
=
URL
.
objects
.
get
(
short__iexact
=
short
)
tries
+=
1
cache
.
incr
(
"hashids_counter"
)
except
URL
.
DoesNotExist
:
return
short
return
None
class
RegisteredUser
(
models
.
Model
):
"""
This is simply a wrapper model which, if an object exists, indicates
...
...
@@ -93,3 +52,44 @@ class RegisteredUser(models.Model):
def
handle_regUser_creation
(
sender
,
instance
,
created
,
**
kwargs
):
if
created
:
RegisteredUser
.
objects
.
create
(
user
=
instance
)
class
URL
(
models
.
Model
):
"""
This model represents a stored URL redirection rule. Each URL has an
owner, target url, short identifier, click counter, and expiration
date.
"""
owner
=
models
.
ForeignKey
(
RegisteredUser
)
date_created
=
models
.
DateTimeField
(
default
=
timezone
.
now
)
target
=
models
.
URLField
(
max_length
=
1000
)
short
=
models
.
SlugField
(
primary_key
=
True
,
max_length
=
20
)
clicks
=
models
.
IntegerField
(
default
=
0
)
qrclicks
=
models
.
IntegerField
(
default
=
0
)
socialclicks
=
models
.
IntegerField
(
default
=
0
)
expires
=
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)
def
__unicode__
(
self
):
return
'<%s : %s>'
%
(
self
.
owner
.
username
,
self
.
target
)
class
Meta
:
ordering
=
[
'short'
]
@
staticmethod
def
generate_valid_short
():
if
cache
.
get
(
"hashids_counter"
)
==
None
:
cache
.
set
(
"hashids_counter"
,
URL
.
objects
.
count
())
cache
.
incr
(
"hashids_counter"
)
short
=
hashids
.
encrypt
(
cache
.
get
(
"hashids_counter"
))
tries
=
1
while
tries
<
100
:
try
:
urls
=
URL
.
objects
.
get
(
short__iexact
=
short
)
tries
+=
1
cache
.
incr
(
"hashids_counter"
)
except
URL
.
DoesNotExist
:
return
short
return
None
go/go/templates/link_box.html
View file @
9c45114c
...
...
@@ -31,7 +31,7 @@
<a
href=
"{{url.target}}"
>
{{url.target}}
</a>
<br
/>
{% if url.owner == request.user.registereduser
.user
and request.user.registereduser.approved == True %}
{% if url.owner == request.user.registereduser and request.user.registereduser.approved == True %}
<strong>
Clicks:
</strong>
{{url.clicks}}
<br
/>
...
...
go/go/views.py
View file @
9c45114c
...
...
@@ -41,7 +41,7 @@ def index(request):
# We don't commit the url object yet because we need to add its
# owner, and parse its date field.
url
=
url_form
.
save
(
commit
=
False
)
url
.
owner
=
request
.
user
.
registereduser
.
user
url
.
owner
=
request
.
user
.
registereduser
# If the user entered a short url, it's already been validated,
# so accept it. If they did not, however, then generate a
...
...
@@ -116,7 +116,7 @@ def my_links(request):
if
not
request
.
user
.
registereduser
.
approved
:
return
render
(
request
,
'not_registered.html'
)
urls
=
URL
.
objects
.
filter
(
owner
=
request
.
user
.
registereduser
.
user
)
urls
=
URL
.
objects
.
filter
(
owner
=
request
.
user
.
registereduser
)
domain
=
"%s://%s"
%
(
request
.
scheme
,
request
.
META
.
get
(
'HTTP_HOST'
))
+
"/"
...
...
@@ -138,7 +138,7 @@ def delete(request, short):
return
render
(
request
,
'not_registered.html'
)
url
=
get_object_or_404
(
URL
,
short__iexact
=
short
)
if
url
.
owner
==
request
.
user
.
registereduser
.
user
:
if
url
.
owner
==
request
.
user
.
registereduser
:
url
.
delete
()
return
redirect
(
'my_links'
)
else
:
...
...
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