Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
course-discovery
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
course-discovery
Commits
c6bd30f0
Commit
c6bd30f0
authored
Aug 09, 2016
by
Clinton Blackburn
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated Subject model
ECOM-5189
parent
c9ea3ef5
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
134 additions
and
4 deletions
+134
-4
course_discovery/apps/course_metadata/admin.py
+9
-1
course_discovery/apps/course_metadata/migrations/0013_auto_20160809_1259.py
+98
-0
course_discovery/apps/course_metadata/models.py
+20
-2
course_discovery/apps/course_metadata/tests/factories.py
+7
-1
No files found.
course_discovery/apps/course_metadata/admin.py
View file @
c6bd30f0
...
@@ -74,6 +74,14 @@ class OrganizationAdmin(admin.ModelAdmin):
...
@@ -74,6 +74,14 @@ class OrganizationAdmin(admin.ModelAdmin):
list_filter
=
(
'partner'
,)
list_filter
=
(
'partner'
,)
@admin.register
(
Subject
)
class
SubjectAdmin
(
admin
.
ModelAdmin
):
list_display
=
(
'uuid'
,
'name'
,
'slug'
,)
list_filter
=
(
'partner'
,)
readonly_fields
=
(
'uuid'
,)
search_fields
=
(
'uuid'
,
'name'
,
'slug'
,)
class
KeyNameAdmin
(
admin
.
ModelAdmin
):
class
KeyNameAdmin
(
admin
.
ModelAdmin
):
list_display
=
(
'key'
,
'name'
,)
list_display
=
(
'key'
,
'name'
,)
ordering
=
(
'key'
,
'name'
,)
ordering
=
(
'key'
,
'name'
,)
...
@@ -91,7 +99,7 @@ for model in (Person,):
...
@@ -91,7 +99,7 @@ for model in (Person,):
admin
.
site
.
register
(
model
,
KeyNameAdmin
)
admin
.
site
.
register
(
model
,
KeyNameAdmin
)
# Register children of AbstractNamedModel
# Register children of AbstractNamedModel
for
model
in
(
LevelType
,
Subject
,
Prerequisite
,
Expertise
,
MajorWork
):
for
model
in
(
LevelType
,
Prerequisite
,
Expertise
,
MajorWork
):
admin
.
site
.
register
(
model
,
NamedModelAdmin
)
admin
.
site
.
register
(
model
,
NamedModelAdmin
)
# Register remaining models using basic ModelAdmin classes
# Register remaining models using basic ModelAdmin classes
...
...
course_discovery/apps/course_metadata/migrations/0013_auto_20160809_1259.py
0 → 100644
View file @
c6bd30f0
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
import
uuid
import
django_extensions.db.fields
from
django.conf
import
settings
from
django.core.exceptions
import
ImproperlyConfigured
from
django.db
import
migrations
,
models
def
update_subjects
(
apps
,
schema_editor
):
Subject
=
apps
.
get_model
(
'course_metadata'
,
'Subject'
)
subjects
=
Subject
.
objects
.
filter
(
partner__isnull
=
True
)
if
subjects
.
count
()
>
0
:
# We perform this check here to avoid issues with migrations for empty databases
# (e.g. when running unit tests) that don't yet have a defined Partner.
if
not
settings
.
DEFAULT_PARTNER_ID
:
raise
ImproperlyConfigured
(
'DEFAULT_PARTNER_ID must be defined!'
)
Partner
=
apps
.
get_model
(
'core'
,
'Partner'
)
partner
=
Partner
.
objects
.
get
(
id
=
settings
.
DEFAULT_PARTNER_ID
)
# We iterate over all subjects, instead of calling .update(), to trigger slug generation
for
subject
in
subjects
:
subject
.
partner
=
partner
subject
.
uuid
=
uuid
.
uuid4
()
subject
.
save
()
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'core'
,
'0010_auto_20160731_0023'
),
(
'course_metadata'
,
'0012_create_seat_types'
),
]
operations
=
[
migrations
.
AddField
(
model_name
=
'subject'
,
name
=
'uuid'
,
field
=
models
.
UUIDField
(
verbose_name
=
'UUID'
,
editable
=
False
,
default
=
uuid
.
uuid4
),
),
migrations
.
AddField
(
model_name
=
'subject'
,
name
=
'banner_image_url'
,
field
=
models
.
URLField
(
blank
=
True
,
null
=
True
),
),
migrations
.
AddField
(
model_name
=
'subject'
,
name
=
'card_image_url'
,
field
=
models
.
URLField
(
blank
=
True
,
null
=
True
),
),
migrations
.
AddField
(
model_name
=
'subject'
,
name
=
'description'
,
field
=
models
.
TextField
(
blank
=
True
,
null
=
True
),
),
migrations
.
AddField
(
model_name
=
'subject'
,
name
=
'partner'
,
field
=
models
.
ForeignKey
(
to
=
'core.Partner'
,
null
=
True
),
),
migrations
.
AddField
(
model_name
=
'subject'
,
name
=
'slug'
,
field
=
django_extensions
.
db
.
fields
.
AutoSlugField
(
overwrite
=
True
,
editable
=
False
,
blank
=
True
,
populate_from
=
'name'
),
),
migrations
.
AddField
(
model_name
=
'subject'
,
name
=
'subtitle'
,
field
=
models
.
CharField
(
blank
=
True
,
max_length
=
255
,
null
=
True
),
),
migrations
.
AlterField
(
model_name
=
'subject'
,
name
=
'name'
,
field
=
models
.
CharField
(
max_length
=
255
),
),
migrations
.
AlterUniqueTogether
(
name
=
'subject'
,
unique_together
=
set
([(
'partner'
,
'name'
),
(
'partner'
,
'slug'
),
(
'partner'
,
'uuid'
)]),
),
migrations
.
RunPython
(
update_subjects
,
lambda
*
args
:
None
),
migrations
.
AlterField
(
model_name
=
'subject'
,
name
=
'slug'
,
field
=
django_extensions
.
db
.
fields
.
AutoSlugField
(
populate_from
=
'name'
,
editable
=
False
,
help_text
=
'Leave this field blank to have the value generated automatically.'
,
blank
=
True
),
),
migrations
.
AlterField
(
model_name
=
'subject'
,
name
=
'partner'
,
field
=
models
.
ForeignKey
(
to
=
'core.Partner'
),
),
]
course_discovery/apps/course_metadata/models.py
View file @
c6bd30f0
...
@@ -97,9 +97,27 @@ class LevelType(AbstractNamedModel):
...
@@ -97,9 +97,27 @@ class LevelType(AbstractNamedModel):
pass
pass
class
Subject
(
AbstractNam
edModel
):
class
Subject
(
TimeStamp
edModel
):
""" Subject model. """
""" Subject model. """
pass
uuid
=
models
.
UUIDField
(
blank
=
False
,
null
=
False
,
default
=
uuid4
,
editable
=
False
,
verbose_name
=
_
(
'UUID'
))
name
=
models
.
CharField
(
max_length
=
255
,
blank
=
False
,
null
=
False
)
subtitle
=
models
.
CharField
(
max_length
=
255
,
blank
=
True
,
null
=
True
)
description
=
models
.
TextField
(
blank
=
True
,
null
=
True
)
banner_image_url
=
models
.
URLField
(
blank
=
True
,
null
=
True
)
card_image_url
=
models
.
URLField
(
blank
=
True
,
null
=
True
)
slug
=
AutoSlugField
(
populate_from
=
'name'
,
editable
=
True
,
blank
=
True
,
help_text
=
_
(
'Leave this field blank to have the value generated automatically.'
))
partner
=
models
.
ForeignKey
(
Partner
)
def
__str__
(
self
):
return
self
.
name
class
Meta
:
unique_together
=
(
(
'partner'
,
'name'
),
(
'partner'
,
'slug'
),
(
'partner'
,
'uuid'
),
)
class
Prerequisite
(
AbstractNamedModel
):
class
Prerequisite
(
AbstractNamedModel
):
...
...
course_discovery/apps/course_metadata/tests/factories.py
View file @
c6bd30f0
...
@@ -43,10 +43,16 @@ class VideoFactory(AbstractMediaModelFactory):
...
@@ -43,10 +43,16 @@ class VideoFactory(AbstractMediaModelFactory):
model
=
Video
model
=
Video
class
SubjectFactory
(
AbstractNamed
ModelFactory
):
class
SubjectFactory
(
factory
.
Django
ModelFactory
):
class
Meta
:
class
Meta
:
model
=
Subject
model
=
Subject
name
=
FuzzyText
()
description
=
FuzzyText
()
banner_image_url
=
FuzzyURL
()
card_image_url
=
FuzzyURL
()
partner
=
factory
.
SubFactory
(
PartnerFactory
)
class
LevelTypeFactory
(
AbstractNamedModelFactory
):
class
LevelTypeFactory
(
AbstractNamedModelFactory
):
class
Meta
:
class
Meta
:
...
...
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