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
c06302e2
Commit
c06302e2
authored
Feb 24, 2015
by
Jean Michel Rouly
Browse files
Merge branch 'dev'
parents
991613d3
5bc6d4a3
Changes
56
Hide whitespace changes
Inline
Side-by-side
README.md
View file @
c06302e2
...
...
@@ -42,3 +42,11 @@ $ pip install -r requirements.txt
```
and you should be good to go.
### Cron
In order to expire links, you need to set up a cron job to run the manage.py
expirelinks command regularly. A sample cron script is available in the
repository and is named go-cleanlinks.cron. Drop this in cron.hourly and
change the paths so that they point to the virtualenv activate script and
manage.py.
go-cleanlinks.cron
0 → 100644
View file @
c06302e2
#!/bin/sh
# Cron job to automatically expire outdated links, put this in cron.hourly
ACTIVATE_PATH
=
/path/to/virtualenv/activate
MANAGE_PATH
=
/path/to/go/manage.py
source
${
ACTIVATE_PATH
}
python
${
MANAGE_PATH
}
expirelinks
go/go/forms.py
View file @
c06302e2
from
django
import
forms
from
go.models
import
URL
from
go.models
import
URL
,
RegisteredUser
from
django.core.validators
import
MinLengthValidator
,
MinValueValidator
,
RegexValidator
from
django.core.exceptions
import
ValidationError
from
captcha.fields
import
CaptchaField
class
URLForm
(
forms
.
ModelForm
):
...
...
@@ -63,11 +64,20 @@ class URLForm( forms.ModelForm ):
}
class
SignupForm
(
forms
.
Form
):
class
SignupForm
(
forms
.
ModelForm
):
def
validate_username
(
username
):
try
:
registered
=
RegisteredUser
.
objects
.
get
(
username
=
username
)
raise
ValidationError
(
'Username "%s" is already in use.'
%
username
)
except
RegisteredUser
.
DoesNotExist
:
return
username
=
forms
.
CharField
(
required
=
True
,
label
=
'
Username
'
,
label
=
'
Mason NetID
'
,
max_length
=
30
,
validators
=
[
validate_username
],
widget
=
forms
.
TextInput
(
attrs
=
{
}),
)
...
...
@@ -85,3 +95,7 @@ class SignupForm( forms.Form ):
widget
=
forms
.
Textarea
(
attrs
=
{
}),
)
captcha
=
CaptchaField
()
class
Meta
:
model
=
RegisteredUser
go/go/management/__init__.py
0 → 100644
View file @
c06302e2
go/go/management/commands/__init__.py
0 → 100644
View file @
c06302e2
go/go/management/commands/expirelinks.py
0 → 100644
View file @
c06302e2
from
django.core.management.base
import
BaseCommand
from
django.utils
import
timezone
from
go.models
import
URL
class
Command
(
BaseCommand
):
help
=
'Removes expired links from the database'
def
handle
(
self
,
*
args
,
**
options
):
for
toexpire
in
URL
.
objects
.
filter
(
expires__lte
=
timezone
.
now
()):
toexpire
.
delete
()
go/go/migrations/0001_initial.py
View file @
c06302e2
# -*- coding: utf-8 -*-
from
south.utils
import
datetime_utils
as
datetime
from
south.db
import
db
from
south.v2
import
SchemaMigration
from
django.db
import
models
class
Migration
(
SchemaMigration
):
def
forwards
(
self
,
orm
):
# Adding model 'URL'
db
.
create_table
(
u
'go_url'
,
(
(
'owner'
,
self
.
gf
(
'django.db.models.fields.related.ForeignKey'
)(
to
=
orm
[
'auth.User'
])),
(
'date_created'
,
self
.
gf
(
'django.db.models.fields.DateTimeField'
)(
default
=
datetime
.
datetime
(
2013
,
12
,
16
,
0
,
0
))),
(
'target'
,
self
.
gf
(
'django.db.models.fields.URLField'
)(
max_length
=
1000
)),
(
'short'
,
self
.
gf
(
'django.db.models.fields.CharField'
)(
max_length
=
10
,
primary_key
=
True
)),
(
'clicks'
,
self
.
gf
(
'django.db.models.fields.IntegerField'
)(
default
=
0
)),
(
'expires'
,
self
.
gf
(
'django.db.models.fields.DateTimeField'
)(
null
=
True
)),
))
db
.
send_create_signal
(
u
'go'
,
[
'URL'
])
def
backwards
(
self
,
orm
):
# Deleting model 'URL'
db
.
delete_table
(
u
'go_url'
)
models
=
{
u
'auth.group'
:
{
'Meta'
:
{
'object_name'
:
'Group'
},
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'80'
}),
'permissions'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'to'
:
u
"orm['auth.Permission']"
,
'symmetrical'
:
'False'
,
'blank'
:
'True'
})
},
u
'auth.permission'
:
{
'Meta'
:
{
'ordering'
:
"(u'content_type__app_label', u'content_type__model', u'codename')"
,
'unique_together'
:
"((u'content_type', u'codename'),)"
,
'object_name'
:
'Permission'
},
'codename'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'content_type'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
u
"orm['contenttypes.ContentType']"
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'50'
})
},
u
'auth.user'
:
{
'Meta'
:
{
'object_name'
:
'User'
},
'date_joined'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime.now'
}),
'email'
:
(
'django.db.models.fields.EmailField'
,
[],
{
'max_length'
:
'75'
,
'blank'
:
'True'
}),
'first_name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'blank'
:
'True'
}),
'groups'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'symmetrical'
:
'False'
,
'related_name'
:
"u'user_set'"
,
'blank'
:
'True'
,
'to'
:
u
"orm['auth.Group']"
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'is_active'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'True'
}),
'is_staff'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'is_superuser'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'last_login'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime.now'
}),
'last_name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'blank'
:
'True'
}),
'password'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'128'
}),
'user_permissions'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'symmetrical'
:
'False'
,
'related_name'
:
"u'user_set'"
,
'blank'
:
'True'
,
'to'
:
u
"orm['auth.Permission']"
}),
'username'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'30'
})
},
u
'contenttypes.contenttype'
:
{
'Meta'
:
{
'ordering'
:
"('name',)"
,
'unique_together'
:
"(('app_label', 'model'),)"
,
'object_name'
:
'ContentType'
,
'db_table'
:
"'django_content_type'"
},
'app_label'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'model'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
})
},
u
'go.url'
:
{
'Meta'
:
{
'ordering'
:
"['short']"
,
'object_name'
:
'URL'
},
'clicks'
:
(
'django.db.models.fields.IntegerField'
,
[],
{
'default'
:
'0'
}),
'date_created'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime(2013, 12, 16, 0, 0)'
}),
'expires'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
}),
'owner'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
u
"orm['auth.User']"
}),
'short'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'10'
,
'primary_key'
:
'True'
}),
'target'
:
(
'django.db.models.fields.URLField'
,
[],
{
'max_length'
:
'1000'
})
}
}
complete_apps
=
[
'go'
]
\ No newline at end of file
from
__future__
import
unicode_literals
from
django.db
import
models
,
migrations
import
django.utils.timezone
from
django.conf
import
settings
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
migrations
.
swappable_dependency
(
settings
.
AUTH_USER_MODEL
),
]
operations
=
[
migrations
.
CreateModel
(
name
=
'RegisteredUser'
,
fields
=
[
(
'username'
,
models
.
CharField
(
max_length
=
30
,
serialize
=
False
,
primary_key
=
True
)),
(
'full_name'
,
models
.
CharField
(
max_length
=
100
)),
(
'description'
,
models
.
TextField
(
blank
=
True
)),
(
'approved'
,
models
.
BooleanField
()),
],
options
=
{
},
bases
=
(
models
.
Model
,),
),
migrations
.
CreateModel
(
name
=
'URL'
,
fields
=
[
(
'date_created'
,
models
.
DateTimeField
(
default
=
django
.
utils
.
timezone
.
now
)),
(
'target'
,
models
.
URLField
(
max_length
=
1000
)),
(
'short'
,
models
.
CharField
(
max_length
=
20
,
serialize
=
False
,
primary_key
=
True
)),
(
'clicks'
,
models
.
IntegerField
(
default
=
0
)),
(
'expires'
,
models
.
DateTimeField
(
null
=
True
,
blank
=
True
)),
(
'owner'
,
models
.
ForeignKey
(
to
=
settings
.
AUTH_USER_MODEL
)),
],
options
=
{
'ordering'
:
[
'short'
],
},
bases
=
(
models
.
Model
,),
),
]
go/go/migrations/0002_auto_20140911_1336.py
0 → 100644
View file @
c06302e2
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
models
,
migrations
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'go'
,
'0001_initial'
),
]
operations
=
[
migrations
.
AddField
(
model_name
=
'url'
,
name
=
'qrclicks'
,
field
=
models
.
IntegerField
(
default
=
0
),
preserve_default
=
True
,
),
migrations
.
AddField
(
model_name
=
'url'
,
name
=
'socialclicks'
,
field
=
models
.
IntegerField
(
default
=
0
),
preserve_default
=
True
,
),
]
go/go/migrations/0002_auto__chg_field_url_short.py
deleted
100644 → 0
View file @
991613d3
# -*- coding: utf-8 -*-
from
south.utils
import
datetime_utils
as
datetime
from
south.db
import
db
from
south.v2
import
SchemaMigration
from
django.db
import
models
class
Migration
(
SchemaMigration
):
def
forwards
(
self
,
orm
):
# Changing field 'URL.short'
db
.
alter_column
(
u
'go_url'
,
'short'
,
self
.
gf
(
'django.db.models.fields.CharField'
)(
max_length
=
20
,
primary_key
=
True
))
def
backwards
(
self
,
orm
):
# Changing field 'URL.short'
db
.
alter_column
(
u
'go_url'
,
'short'
,
self
.
gf
(
'django.db.models.fields.CharField'
)(
max_length
=
10
,
primary_key
=
True
))
models
=
{
u
'auth.group'
:
{
'Meta'
:
{
'object_name'
:
'Group'
},
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'80'
}),
'permissions'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'to'
:
u
"orm['auth.Permission']"
,
'symmetrical'
:
'False'
,
'blank'
:
'True'
})
},
u
'auth.permission'
:
{
'Meta'
:
{
'ordering'
:
"(u'content_type__app_label', u'content_type__model', u'codename')"
,
'unique_together'
:
"((u'content_type', u'codename'),)"
,
'object_name'
:
'Permission'
},
'codename'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'content_type'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
u
"orm['contenttypes.ContentType']"
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'50'
})
},
u
'auth.user'
:
{
'Meta'
:
{
'object_name'
:
'User'
},
'date_joined'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime.now'
}),
'email'
:
(
'django.db.models.fields.EmailField'
,
[],
{
'max_length'
:
'75'
,
'blank'
:
'True'
}),
'first_name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'blank'
:
'True'
}),
'groups'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'symmetrical'
:
'False'
,
'related_name'
:
"u'user_set'"
,
'blank'
:
'True'
,
'to'
:
u
"orm['auth.Group']"
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'is_active'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'True'
}),
'is_staff'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'is_superuser'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'last_login'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime.now'
}),
'last_name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'blank'
:
'True'
}),
'password'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'128'
}),
'user_permissions'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'symmetrical'
:
'False'
,
'related_name'
:
"u'user_set'"
,
'blank'
:
'True'
,
'to'
:
u
"orm['auth.Permission']"
}),
'username'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'30'
})
},
u
'contenttypes.contenttype'
:
{
'Meta'
:
{
'ordering'
:
"('name',)"
,
'unique_together'
:
"(('app_label', 'model'),)"
,
'object_name'
:
'ContentType'
,
'db_table'
:
"'django_content_type'"
},
'app_label'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'model'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
})
},
u
'go.url'
:
{
'Meta'
:
{
'ordering'
:
"['short']"
,
'object_name'
:
'URL'
},
'clicks'
:
(
'django.db.models.fields.IntegerField'
,
[],
{
'default'
:
'0'
}),
'date_created'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime(2013, 12, 20, 0, 0)'
}),
'expires'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
,
'blank'
:
'True'
}),
'owner'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
u
"orm['auth.User']"
}),
'short'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'20'
,
'primary_key'
:
'True'
}),
'target'
:
(
'django.db.models.fields.URLField'
,
[],
{
'max_length'
:
'1000'
})
}
}
complete_apps
=
[
'go'
]
\ No newline at end of file
go/go/migrations/0003_auto__add_registereduser.py
deleted
100644 → 0
View file @
991613d3
# -*- coding: utf-8 -*-
from
south.utils
import
datetime_utils
as
datetime
from
south.db
import
db
from
south.v2
import
SchemaMigration
from
django.db
import
models
class
Migration
(
SchemaMigration
):
def
forwards
(
self
,
orm
):
# Adding model 'RegisteredUser'
db
.
create_table
(
u
'go_registereduser'
,
(
(
'user'
,
self
.
gf
(
'django.db.models.fields.related.ForeignKey'
)(
to
=
orm
[
'auth.User'
],
primary_key
=
True
)),
))
db
.
send_create_signal
(
u
'go'
,
[
'RegisteredUser'
])
def
backwards
(
self
,
orm
):
# Deleting model 'RegisteredUser'
db
.
delete_table
(
u
'go_registereduser'
)
models
=
{
u
'auth.group'
:
{
'Meta'
:
{
'object_name'
:
'Group'
},
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'80'
}),
'permissions'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'to'
:
u
"orm['auth.Permission']"
,
'symmetrical'
:
'False'
,
'blank'
:
'True'
})
},
u
'auth.permission'
:
{
'Meta'
:
{
'ordering'
:
"(u'content_type__app_label', u'content_type__model', u'codename')"
,
'unique_together'
:
"((u'content_type', u'codename'),)"
,
'object_name'
:
'Permission'
},
'codename'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'content_type'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
u
"orm['contenttypes.ContentType']"
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'50'
})
},
u
'auth.user'
:
{
'Meta'
:
{
'object_name'
:
'User'
},
'date_joined'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime.now'
}),
'email'
:
(
'django.db.models.fields.EmailField'
,
[],
{
'max_length'
:
'75'
,
'blank'
:
'True'
}),
'first_name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'blank'
:
'True'
}),
'groups'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'symmetrical'
:
'False'
,
'related_name'
:
"u'user_set'"
,
'blank'
:
'True'
,
'to'
:
u
"orm['auth.Group']"
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'is_active'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'True'
}),
'is_staff'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'is_superuser'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'last_login'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime.now'
}),
'last_name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'blank'
:
'True'
}),
'password'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'128'
}),
'user_permissions'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'symmetrical'
:
'False'
,
'related_name'
:
"u'user_set'"
,
'blank'
:
'True'
,
'to'
:
u
"orm['auth.Permission']"
}),
'username'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'30'
})
},
u
'contenttypes.contenttype'
:
{
'Meta'
:
{
'ordering'
:
"('name',)"
,
'unique_together'
:
"(('app_label', 'model'),)"
,
'object_name'
:
'ContentType'
,
'db_table'
:
"'django_content_type'"
},
'app_label'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'model'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
})
},
u
'go.registereduser'
:
{
'Meta'
:
{
'object_name'
:
'RegisteredUser'
},
'user'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
u
"orm['auth.User']"
,
'primary_key'
:
'True'
})
},
u
'go.url'
:
{
'Meta'
:
{
'ordering'
:
"['short']"
,
'object_name'
:
'URL'
},
'clicks'
:
(
'django.db.models.fields.IntegerField'
,
[],
{
'default'
:
'0'
}),
'date_created'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime(2013, 12, 24, 0, 0)'
}),
'expires'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
,
'blank'
:
'True'
}),
'owner'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
u
"orm['auth.User']"
}),
'short'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'20'
,
'primary_key'
:
'True'
}),
'target'
:
(
'django.db.models.fields.URLField'
,
[],
{
'max_length'
:
'1000'
})
}
}
complete_apps
=
[
'go'
]
\ No newline at end of file
go/go/migrations/0004_auto__add_field_registereduser_description.py
deleted
100644 → 0
View file @
991613d3
# -*- coding: utf-8 -*-
from
south.utils
import
datetime_utils
as
datetime
from
south.db
import
db
from
south.v2
import
SchemaMigration
from
django.db
import
models
class
Migration
(
SchemaMigration
):
def
forwards
(
self
,
orm
):
# Adding field 'RegisteredUser.description'
db
.
add_column
(
u
'go_registereduser'
,
'description'
,
self
.
gf
(
'django.db.models.fields.TextField'
)(
default
=
''
,
blank
=
True
),
keep_default
=
False
)
def
backwards
(
self
,
orm
):
# Deleting field 'RegisteredUser.description'
db
.
delete_column
(
u
'go_registereduser'
,
'description'
)
models
=
{
u
'auth.group'
:
{
'Meta'
:
{
'object_name'
:
'Group'
},
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'80'
}),
'permissions'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'to'
:
u
"orm['auth.Permission']"
,
'symmetrical'
:
'False'
,
'blank'
:
'True'
})
},
u
'auth.permission'
:
{
'Meta'
:
{
'ordering'
:
"(u'content_type__app_label', u'content_type__model', u'codename')"
,
'unique_together'
:
"((u'content_type', u'codename'),)"
,
'object_name'
:
'Permission'
},
'codename'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'content_type'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
u
"orm['contenttypes.ContentType']"
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'50'
})
},
u
'auth.user'
:
{
'Meta'
:
{
'object_name'
:
'User'
},
'date_joined'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime.now'
}),
'email'
:
(
'django.db.models.fields.EmailField'
,
[],
{
'max_length'
:
'75'
,
'blank'
:
'True'
}),
'first_name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'blank'
:
'True'
}),
'groups'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'symmetrical'
:
'False'
,
'related_name'
:
"u'user_set'"
,
'blank'
:
'True'
,
'to'
:
u
"orm['auth.Group']"
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'is_active'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'True'
}),
'is_staff'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'is_superuser'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'last_login'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime.now'
}),
'last_name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'blank'
:
'True'
}),
'password'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'128'
}),
'user_permissions'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'symmetrical'
:
'False'
,
'related_name'
:
"u'user_set'"
,
'blank'
:
'True'
,
'to'
:
u
"orm['auth.Permission']"
}),
'username'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'30'
})
},
u
'contenttypes.contenttype'
:
{
'Meta'
:
{
'ordering'
:
"('name',)"
,
'unique_together'
:
"(('app_label', 'model'),)"
,
'object_name'
:
'ContentType'
,
'db_table'
:
"'django_content_type'"
},
'app_label'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'model'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
})
},
u
'go.registereduser'
:
{
'Meta'
:
{
'object_name'
:
'RegisteredUser'
},
'description'
:
(
'django.db.models.fields.TextField'
,
[],
{
'blank'
:
'True'
}),
'user'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
u
"orm['auth.User']"
,
'primary_key'
:
'True'
})
},
u
'go.url'
:
{
'Meta'
:
{
'ordering'
:
"['short']"
,
'object_name'
:
'URL'
},
'clicks'
:
(
'django.db.models.fields.IntegerField'
,
[],
{
'default'
:
'0'
}),
'date_created'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime(2013, 12, 24, 0, 0)'
}),
'expires'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
,
'blank'
:
'True'
}),
'owner'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
u
"orm['auth.User']"
}),
'short'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'20'
,
'primary_key'
:
'True'
}),
'target'
:
(
'django.db.models.fields.URLField'
,
[],
{
'max_length'
:
'1000'
})
}
}
complete_apps
=
[
'go'
]
\ No newline at end of file
go/go/migrations/0005_auto__del_field_registereduser_user__add_field_registereduser_username.py
deleted
100644 → 0
View file @
991613d3
# -*- coding: utf-8 -*-
from
south.utils
import
datetime_utils
as
datetime
from
south.db
import
db
from
south.v2
import
SchemaMigration
from
django.db
import
models
class
Migration
(
SchemaMigration
):
def
forwards
(
self
,
orm
):
# Deleting field 'RegisteredUser.user'
db
.
delete_column
(
u
'go_registereduser'
,
'user_id'
)
# Adding field 'RegisteredUser.username'
db
.
add_column
(
u
'go_registereduser'
,
'username'
,
self
.
gf
(
'django.db.models.fields.CharField'
)(
default
=
'CHANGEME'
,
max_length
=
30
,
primary_key
=
True
),
keep_default
=
False
)
def
backwards
(
self
,
orm
):
# User chose to not deal with backwards NULL issues for 'RegisteredUser.user'
raise
RuntimeError
(
"Cannot reverse this migration. 'RegisteredUser.user' and its values cannot be restored."
)
# The following code is provided here to aid in writing a correct migration # Adding field 'RegisteredUser.user'
db
.
add_column
(
u
'go_registereduser'
,
'user'
,
self
.
gf
(
'django.db.models.fields.related.ForeignKey'
)(
to
=
orm
[
'auth.User'
],
primary_key
=
True
),
keep_default
=
False
)
# Deleting field 'RegisteredUser.username'
db
.
delete_column
(
u
'go_registereduser'
,
'username'
)
models
=
{
u
'auth.group'
:
{
'Meta'
:
{
'object_name'
:
'Group'
},
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'80'
}),
'permissions'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'to'
:
u
"orm['auth.Permission']"
,
'symmetrical'
:
'False'
,
'blank'
:
'True'
})
},
u
'auth.permission'
:
{
'Meta'
:
{
'ordering'
:
"(u'content_type__app_label', u'content_type__model', u'codename')"
,
'unique_together'
:
"((u'content_type', u'codename'),)"
,
'object_name'
:
'Permission'
},
'codename'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'content_type'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
u
"orm['contenttypes.ContentType']"
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'50'
})
},
u
'auth.user'
:
{
'Meta'
:
{
'object_name'
:
'User'
},
'date_joined'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime.now'
}),
'email'
:
(
'django.db.models.fields.EmailField'
,
[],
{
'max_length'
:
'75'
,
'blank'
:
'True'
}),
'first_name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'blank'
:
'True'
}),
'groups'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'symmetrical'
:
'False'
,
'related_name'
:
"u'user_set'"
,
'blank'
:
'True'
,
'to'
:
u
"orm['auth.Group']"
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'is_active'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'True'
}),
'is_staff'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'is_superuser'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'last_login'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime.now'
}),
'last_name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'blank'
:
'True'
}),
'password'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'128'
}),
'user_permissions'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'symmetrical'
:
'False'
,
'related_name'
:
"u'user_set'"
,
'blank'
:
'True'
,
'to'
:
u
"orm['auth.Permission']"
}),
'username'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'30'
})
},
u
'contenttypes.contenttype'
:
{
'Meta'
:
{
'ordering'
:
"('name',)"
,
'unique_together'
:
"(('app_label', 'model'),)"
,
'object_name'
:
'ContentType'
,
'db_table'
:
"'django_content_type'"
},
'app_label'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'model'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
})
},
u
'go.registereduser'
:
{
'Meta'
:
{
'object_name'
:
'RegisteredUser'
},
'description'
:
(
'django.db.models.fields.TextField'
,
[],
{
'blank'
:
'True'
}),
'username'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'primary_key'
:
'True'
})
},
u
'go.url'
:
{
'Meta'
:
{
'ordering'
:
"['short']"
,
'object_name'
:
'URL'
},
'clicks'
:
(
'django.db.models.fields.IntegerField'
,
[],
{
'default'
:
'0'
}),
'date_created'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime(2013, 12, 24, 0, 0)'
}),
'expires'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
,
'blank'
:
'True'
}),
'owner'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
u
"orm['auth.User']"
}),
'short'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'20'
,
'primary_key'
:
'True'
}),
'target'
:
(
'django.db.models.fields.URLField'
,
[],
{
'max_length'
:
'1000'
})
}
}
complete_apps
=
[
'go'
]
\ No newline at end of file
go/go/migrations/0006_auto__add_field_registereduser_full_name.py
deleted
100644 → 0
View file @
991613d3
# -*- coding: utf-8 -*-
from
south.utils
import
datetime_utils
as
datetime
from
south.db
import
db
from
south.v2
import
SchemaMigration
from
django.db
import
models
class
Migration
(
SchemaMigration
):
def
forwards
(
self
,
orm
):
# Adding field 'RegisteredUser.full_name'
db
.
add_column
(
u
'go_registereduser'
,
'full_name'
,
self
.
gf
(
'django.db.models.fields.CharField'
)(
default
=
'CHANGEME'
,
max_length
=
100
),
keep_default
=
False
)
def
backwards
(
self
,
orm
):
# Deleting field 'RegisteredUser.full_name'
db
.
delete_column
(
u
'go_registereduser'
,
'full_name'
)
models
=
{
u
'auth.group'
:
{
'Meta'
:
{
'object_name'
:
'Group'
},
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'80'
}),
'permissions'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'to'
:
u
"orm['auth.Permission']"
,
'symmetrical'
:
'False'
,
'blank'
:
'True'
})
},