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
c63b32fc
Commit
c63b32fc
authored
Jun 03, 2018
by
David Haynes
🙆
Browse files
Support for emoji + string URLs
- also drop target in favor of destination Closes
#149
parent
0e510eb0
Pipeline
#2493
passed with stage
in 1 minute and 26 seconds
Changes
7
Pipelines
1
Show whitespace changes
Inline
Side-by-side
go/go/forms.py
View file @
c63b32fc
...
...
@@ -30,8 +30,8 @@ class URLForm(ModelForm):
Define custom fields and then render them onto the template.
"""
#
target
------------------------------------------------------------------
target
=
URLField
(
#
destination
------------------------------------------------------------------
destination
=
URLField
(
required
=
True
,
label
=
'Long URL (Required)'
,
max_length
=
1000
,
...
...
@@ -55,7 +55,7 @@ class URLForm(ModelForm):
# then raise a ValidationError
raise
ValidationError
(
'Short url already exists.'
)
short
=
Slug
Field
(
short
=
Char
Field
(
required
=
False
,
label
=
'Short URL (Optional)'
,
widget
=
TextInput
(),
...
...
@@ -134,7 +134,7 @@ class URLForm(ModelForm):
HTML
(
"""
<h4>Paste the URL you would like to shorten:</h4>
<br />"""
),
'
target
'
,
'
destination
'
,
style
=
"background: rgb(#F6F6F6);"
),
active
=
True
,
template
=
'crispy/accordian-group.html'
),
...
...
@@ -177,7 +177,7 @@ class URLForm(ModelForm):
# what model this form is for
model
=
URL
# what attributes are included
fields
=
[
'
target
'
]
fields
=
[
'
destination
'
]
class
EditForm
(
URLForm
):
...
...
@@ -215,7 +215,7 @@ class EditForm(URLForm):
HTML
(
"""
<h4>Modify the URL you would like to shorten:</h4>
<br />"""
),
'
target
'
,
'
destination
'
,
style
=
"background: rgb(#F6F6F6);"
),
active
=
True
,
template
=
'crispy/accordian-group.html'
),
...
...
go/go/models.py
View file @
c63b32fc
...
...
@@ -166,7 +166,7 @@ class URL(models.Model):
socialclicks
=
models
.
IntegerField
(
default
=
0
,
help_text
=
""
)
def
__str__
(
self
):
return
'<Owner: %s -
Target
URL: %s>'
%
(
return
'<Owner: %s -
destination
URL: %s>'
%
(
self
.
owner
.
user
,
self
.
destination
)
...
...
go/go/test_forms.py
View file @
c63b32fc
...
...
@@ -34,7 +34,7 @@ class URLFormTest(TestCase):
Test that form fields are validated correctly given valid data.
"""
form_data
=
{
'
target
'
:
'https://srct.gmu.edu'
,
'
destination
'
:
'https://srct.gmu.edu'
,
'short'
:
'pls'
,
'expires'
:
'1 Day'
,
'expires_custom'
:
''
...
...
@@ -49,7 +49,7 @@ class URLFormTest(TestCase):
Test that form fields are validated correctly given valid data.
"""
form_data
=
{
'
target
'
:
'https://srct.gmu.edu'
,
'
destination
'
:
'https://srct.gmu.edu'
,
'short'
:
'pls'
,
'expires'
:
'Custom Date'
,
'expires_custom'
:
datetime
.
now
()
+
timedelta
(
days
=
1
)
...
...
@@ -59,12 +59,12 @@ class URLFormTest(TestCase):
print
(
form
.
errors
)
self
.
assertTrue
(
form
.
is_valid
())
def
test_invalid_
target
(
self
):
def
test_invalid_
destination
(
self
):
"""
Test that form fields are validated correctly given valid data.
"""
form_data
=
{
'
target
'
:
'.gmu.edu'
,
'
destination
'
:
'.gmu.edu'
,
'short'
:
'pls'
,
'expires'
:
'1 Day'
,
'expires_custom'
:
''
...
...
@@ -79,7 +79,7 @@ class URLFormTest(TestCase):
Test that form fields are validated correctly given valid data.
"""
form_data
=
{
'
target
'
:
'https://srct.gmu.edu'
,
'
destination
'
:
'https://srct.gmu.edu'
,
'short'
:
'test'
,
'expires'
:
'1 Day'
,
'expires_custom'
:
''
...
...
@@ -94,7 +94,7 @@ class URLFormTest(TestCase):
Test that form fields are validated correctly given valid data.
"""
form_data
=
{
'
target
'
:
'https://srct.gmu.edu'
,
'
destination
'
:
'https://srct.gmu.edu'
,
'short'
:
'pls'
,
'expires'
:
'None'
,
'expires_custom'
:
''
...
...
@@ -109,7 +109,7 @@ class URLFormTest(TestCase):
Test that form fields are validated correctly given valid data.
"""
form_data
=
{
'
target
'
:
'https://srct.gmu.edu'
,
'
destination
'
:
'https://srct.gmu.edu'
,
'short'
:
'pls'
,
'expires'
:
'Custom Date'
,
'expires_custom'
:
datetime
.
now
()
-
timedelta
(
days
=
1
)
...
...
go/go/test_models.py
View file @
c63b32fc
...
...
@@ -243,10 +243,10 @@ class URLTest(TestCase):
self
.
assertEqual
(
current_url
.
date_created
,
now
)
#
target
------------------------------------------------------------------
def
test_
target
(
self
):
#
destination
------------------------------------------------------------------
def
test_
destination
(
self
):
"""
Test that the
target
field properly accepts a URL
Test that the
destination
field properly accepts a URL
"""
# Get a URL
test_url
=
"https://dhaynes.xyz"
...
...
@@ -257,12 +257,12 @@ class URLTest(TestCase):
current_url
=
URL
.
objects
.
get
(
owner
=
get_registered_user
)
# Apply the URL
current_url
.
target
=
test_url
current_url
.
destination
=
test_url
current_url
.
save
()
self
.
assertEqual
(
current_url
.
target
,
test_url
)
self
.
assertEqual
(
current_url
.
destination
,
test_url
)
def
test_
target
_length
(
self
):
def
test_
destination
_length
(
self
):
"""
Test that we can't input a URL longer than 1000 chars
"""
...
...
@@ -275,7 +275,7 @@ class URLTest(TestCase):
current_url
=
URL
.
objects
.
get
(
owner
=
get_registered_user
)
# Apply the URL
current_url
.
target
=
test_url
current_url
.
destination
=
test_url
try
:
current_url
.
save
()
...
...
@@ -420,9 +420,9 @@ class URLTest(TestCase):
# get_registered_user = RegisteredUser.objects.get(user=get_user)
# current_url = URL.objects.get(owner=get_registered_user)
# current_url.
target
= "https://dhaynes.xyz"
# current_url.
destination
= "https://dhaynes.xyz"
# current_url.save()
# expected = '<Owner: dhaynes -
Target
URL: https://dhaynes.xyz>'
# expected = '<Owner: dhaynes -
destination
URL: https://dhaynes.xyz>'
# actual = str(current_url)
# self.assertEqual(expected, actual) TODO
go/go/test_views.py
View file @
c63b32fc
...
...
@@ -135,7 +135,7 @@ class RedirectionTest(TestCase):
User
.
objects
.
create
(
username
=
'dhaynes'
,
password
=
'password'
)
get_user
=
User
.
objects
.
get
(
username
=
'dhaynes'
)
get_registered_user
=
RegisteredUser
.
objects
.
get
(
user
=
get_user
)
URL
.
objects
.
create
(
owner
=
get_registered_user
,
short
=
'test'
,
target
=
'https://srct.gmu.edu'
)
URL
.
objects
.
create
(
owner
=
get_registered_user
,
short
=
'test'
,
destination
=
'https://srct.gmu.edu'
)
# def test_redirect_get_anon(self):
# """
...
...
go/go/views.py
View file @
c63b32fc
...
...
@@ -275,9 +275,9 @@ def edit(request, short):
# The short was not edited and thus, we can directly edit the url
else
:
if
url_form
.
cleaned_data
.
get
(
'
target
'
).
strip
()
!=
copy
.
target
:
copy
.
target
=
url_form
.
cleaned_data
.
get
(
'
target
'
).
strip
()
if
url_form
.
cleaned_data
.
get
(
'
destination
'
).
strip
()
!=
copy
.
destination
:
copy
.
destination
=
url_form
.
cleaned_data
.
get
(
'
destination
'
).
strip
()
copy
.
save
()
# Grab the expiration field value. It's currently an unsable
...
...
@@ -316,7 +316,7 @@ def edit(request, short):
if
url
.
expires
!=
None
:
# Initialize a URL form with an expire date
url_form
=
EditForm
(
host
=
request
.
META
.
get
(
'HTTP_HOST'
),
initial
=
{
'
target'
:
url
.
target
,
'
destination'
:
url
.
destination
,
'short'
:
url
.
short
,
'expires'
:
'Custom Date'
,
'expires_custom'
:
url
.
expires
...
...
@@ -324,7 +324,7 @@ def edit(request, short):
else
:
# Initialize a URL form without an expire date
url_form
=
EditForm
(
host
=
request
.
META
.
get
(
'HTTP_HOST'
),
initial
=
{
'
target'
:
url
.
target
,
'
destination'
:
url
.
destination
,
'short'
:
url
.
short
,
'expires'
:
'Never'
,
})
# unbound form
...
...
go/settings/urls.py
View file @
c63b32fc
...
...
@@ -23,7 +23,10 @@ urlpatterns = [
path
(
''
,
cache_page
(
1
)(
go
.
views
.
index
),
name
=
'index'
),
# /view/<short> - View URL data. Cached for 15 minutes
path
(
'view/<slug:short>'
,
cache_page
(
60
*
15
)(
go
.
views
.
view
),
name
=
'view'
),
re_path
(
r
'^view/(?P<short>([\U00010000-\U0010ffff][\U0000200D]?)+)$'
,
cache_page
(
60
*
15
)(
go
.
views
.
view
),
name
=
'view'
),
re_path
(
r
'^view/(?P<short>[-\w]+)$'
,
cache_page
(
60
*
15
)(
go
.
views
.
view
),
name
=
'view'
),
# /about - About page. Cached for 15 minutes
path
(
'about'
,
cache_page
(
60
*
15
)
...
...
@@ -62,4 +65,6 @@ urlpatterns = [
# Redirection regex.
re_path
(
r
'^(?P<short>([\U00010000-\U0010ffff][\U0000200D]?)+)$'
,
go
.
views
.
redirection
,
name
=
'redirection'
),
re_path
(
r
'^(?P<short>[-\w]+)$'
,
go
.
views
.
redirection
,
name
=
'redirection'
),
]
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