Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
go
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
21
Issues
21
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
SRCT
go
Commits
c63b32fc
Commit
c63b32fc
authored
Jun 03, 2018
by
David Haynes
🙆
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
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
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
35 additions
and
30 deletions
+35
-30
go/go/forms.py
go/go/forms.py
+6
-6
go/go/models.py
go/go/models.py
+1
-1
go/go/test_forms.py
go/go/test_forms.py
+7
-7
go/go/test_models.py
go/go/test_models.py
+9
-9
go/go/test_views.py
go/go/test_views.py
+1
-1
go/go/views.py
go/go/views.py
+5
-5
go/settings/urls.py
go/settings/urls.py
+6
-1
No files found.
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