Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 0.12.0 #692

Merged
merged 72 commits into from
Jul 6, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
6d95aaa
Bumped django version
Jun 16, 2016
e2c089d
Merge pull request #562 from mitodl/gdm_new_django
giocalitri Jun 20, 2016
86249fc
Fixed spinner positioning (#563)
Jun 20, 2016
f44313b
Upgraded to wagtail 1.5.2
Jun 21, 2016
3fa9dc2
Swapped courses and faq in program page
Jun 21, 2016
073eb49
Added babel-polyfill to support IE11 (#611)
Jun 21, 2016
e879608
Fixed bug with preferred name not updating on Jumbotron
alicewriteswrongs Jun 21, 2016
b7ea2a0
Updated to redux-asserts 0.0.8 and fixed related test failures (#616)
Jun 22, 2016
7cd7483
Removed apostrophe from MicroMaster's (#560)
Jun 22, 2016
3d8ae15
First working version
Jun 17, 2016
c9d359f
Merge pull request #567 from mitodl/gdm_404_error
giocalitri Jun 22, 2016
e3f9bc0
Updated documentation to reflect edX changes
gsidebo Jun 22, 2016
ca84e3f
Merge pull request #570 from mitodl/450_update_edx_documentation
gsidebo Jun 22, 2016
cc2f2c9
Merge pull request #606 from mitodl/gdm_upgrade_wagtail_605
giocalitri Jun 22, 2016
6829f32
Merge pull request #608 from mitodl/gdm_switched_tabs_528
giocalitri Jun 22, 2016
c4cba46
Sorted employment entries in resume order
alicewriteswrongs Jun 21, 2016
75732f1
Added 'confirm delete all entries' when closing switches
alicewriteswrongs Jun 16, 2016
7366bd2
Added custom 500 page
Jun 22, 2016
886e3cb
Added possibility to link external program pages
Jun 22, 2016
7055f1c
Link opens in the same page
Jun 23, 2016
ea42af3
Fixed style regression (#624)
Jun 23, 2016
37cc733
Merge pull request #623 from mitodl/gdm_link_to_external_site_598
giocalitri Jun 23, 2016
3014fb9
Added react-virtualized to AutoComplete (#568)
Jun 23, 2016
8ce32bb
Merge pull request #622 from mitodl/gdm_500_page_487
giocalitri Jun 23, 2016
3edaa72
Added new types for Course, CourseRun, added flow to many files
alicewriteswrongs Jun 16, 2016
c2a6cd3
Made FieldsOfStudySelectField wider
alicewriteswrongs Jun 22, 2016
3d0cf3a
Fixed filtering text to remain if textbox clicked (#628)
Jun 23, 2016
21f7135
Raised 404 exception when user wants to access someones profile whose…
amir-qayyum-khan Jun 15, 2016
fc56dd1
Merge pull request #546 from mitodl/enhance/aq/response_of_private_us…
amir-qayyum-khan Jun 24, 2016
cdb2635
Removed UI validators from PrivacyTab validator callback
alicewriteswrongs Jun 22, 2016
0e4e9c3
Removed padding from date field (#631)
Jun 24, 2016
e74fedb
Updated edx-api-client requirement
Jun 24, 2016
11299d2
Merge pull request #639 from mitodl/gdm_requirements
giocalitri Jun 27, 2016
1e4646a
Added resumeOrder to education entries
alicewriteswrongs Jun 23, 2016
821a51f
Updated validation text (#643)
Jun 27, 2016
f1034ed
Added text to JumboTron for terms of service (#644)
Jun 27, 2016
8b1e8e2
Added link to home page on program page logo (#645)
Jun 27, 2016
75c0fd8
Added settings page
amir-qayyum-khan Jun 10, 2016
c7ac8bf
Merge pull request #519 from mitodl/feature/aq/add_settings_page
amir-qayyum-khan Jun 28, 2016
2fb0aea
Changed the label of settings button
amir-qayyum-khan Jun 28, 2016
1e647e5
Merge pull request #651 from mitodl/fix/aq/settings_btn_label
amir-qayyum-khan Jun 28, 2016
75d6f86
Removed upgrade logic from the frontend
Jun 28, 2016
c7d1c3a
Tests fixed
Jun 28, 2016
3e75a87
Removed x's from text fields (#642)
Jun 29, 2016
cb7a5c0
Added spinner for dashboard (#646)
Jun 29, 2016
076f789
Redirected to 404 if user goes to a missing user page (#629)
Jun 29, 2016
080fdeb
Added thumbnail to wagtail CMS (#625)
Jun 29, 2016
42e285f
Added user page link to dropdown
gsidebo Jun 28, 2016
5506153
changed base_error.html to match tab/space style, which is apparently…
gsidebo Jun 28, 2016
bf02157
nevermind. tabs changed to spaces in base_error.html
gsidebo Jun 28, 2016
8709bf7
refactored error page code and fixed unit tests
gsidebo Jun 29, 2016
f0cf3a2
fixed js test
gsidebo Jun 29, 2016
f9013e5
fixed MORE unit tests
gsidebo Jun 29, 2016
b83d223
added docstring
gsidebo Jun 29, 2016
e4b9c2c
Removed routing from profile flow
alicewriteswrongs Jun 27, 2016
2d2a39c
Merge pull request #649 from mitodl/571_add_user_page_link
gsidebo Jun 30, 2016
c3fb135
Changed field of study select to match anywhere in string w/ highligh…
gsidebo Jun 30, 2016
a62a0b3
Added user page link to dropdown
gsidebo Jun 30, 2016
03003e9
Added spinner and error message for profile page (#661)
Jun 30, 2016
3ecef00
FAQ collapsed by default
Jun 30, 2016
a350943
Merge pull request #632 from mitodl/578_FoS_match_anywhere_in_string
gsidebo Jun 30, 2016
30fa96b
Merge pull request #664 from mitodl/gdm_collapsed_faq_604
giocalitri Jun 30, 2016
3fefe49
Modified FAQ field to have rich text
Jun 29, 2016
85589d7
Removed some (now) useless cases in constants
Jul 1, 2016
72e6ec5
Added deadline for upgrade
Jun 28, 2016
917b5b3
Changed dateFields to disallow non-numerical input (#641)
alicewriteswrongs Jul 1, 2016
ed19858
Added ErrorMessage to UserPage
alicewriteswrongs Jun 29, 2016
6fda299
Merge pull request #659 from mitodl/gdm_honor_upgrade_654
giocalitri Jul 5, 2016
23dbe58
Merge pull request #655 from mitodl/gdm_frontend_upgrade_648
giocalitri Jul 5, 2016
9566776
Merge branch 'release'
annagav Jul 5, 2016
4542581
Merge pull request #660 from mitodl/gdm_html_cms_603
giocalitri Jul 5, 2016
bf259cb
Release 0.12.0
annagav Jul 5, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .flowconfig
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@

[libs]
./static/js/flow/declarations.js
node_modules/iflow-lodash/index.js.flow
node_modules/iflow-moment/index.js.flow
node_modules/iflow-react-router/index.js.flow
node_modules/iflow-redux/index.js.flow

[options]
esproposal.class_static_fields=enable
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -88,3 +88,4 @@ codekit-config.json
staticfiles/

.venv
release-notes-checklist
29 changes: 16 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# MicroMaster’s
Portal for learners and course teams to access MITx MicroMaster’s programs
# MicroMasters
Portal for learners and course teams to access MITx MicroMasters programs

## Major Dependencies
- Docker
Expand All @@ -26,7 +26,7 @@ with the edX instance.

## Running edX devstack locally _(optional, but recommended)_

MicroMaster’s can work with a live instance of edX, but it's recommended that
MicroMasters can work with a live instance of edX, but it's recommended that
you get it running locally. It's obviously more configurable that way, and you'll
likely need to run it locally for other projects in the future.

Expand Down Expand Up @@ -93,17 +93,18 @@ new Application. Fill in the values as follows:

- **User**: Use the lookup (magnifying glass) to find your superuser
- **Redirect uris**: The URL where MicroMaster’s will be running, followed by "/complete/edxorg/".
If you're running it via Docker, run ``docker-machine ip`` from the host machine to get the
container IP. MicroMaster’s runs on port ``8079`` by default, so this value should be something
like ``http://192.168.99.100:8079/complete/edxorg/``
**Linux users:** the MicroMaster’s URL will be `http://localhost:8079`. **OSX users:** The MicroMaster's
IP can be found by running ``docker-machine ip <machine_name>`` from the host machine. MicroMaster’s runs on port
``8079`` by default, so the full URL should be something like
``http://192.168.99.100:8079/complete/edxorg/``
- **Client type**: Set to '_Confidential_'.
- **Authorization grant type**: Set to '_Authorization Code_'.
- **Name**: Anything you want. Something like 'mm-local' would do fine here.

#### 5) Copy relevant values to use in the MicroMaster’s .env file
#### 5) Copy relevant values to use in the MicroMasters .env file

The MicroMaster’s codebase contains a ``.env.sample`` file which will be used as
a template to create your ``.env`` file. For MicroMaster’s to work, it needs 3 values:
The MicroMasters codebase contains a ``.env.sample`` file which will be used as
a template to create your ``.env`` file. For MicroMasters to work, it needs 3 values:

- ``EDXORG_BASE_URL``

Expand Down Expand Up @@ -174,7 +175,7 @@ For first-time container start-up, start it with a full build:

docker-compose up --build

In another terminal tab, navigate the the MicroMaster’s directory
In another terminal tab, navigate the the MicroMasters directory
and add a superuser in the now-running Docker container:

docker-compose run web python3 manage.py createsuperuser
Expand All @@ -184,16 +185,16 @@ param: ``docker-compose up``

You should now be able to do the following:

1. Visit MicroMaster’s in your browser on port `8079`. _(OSX Only)_ Docker auto-assigns
the container IP. Run ``docker-machine ip`` to see it. Your MicroMaster’s URL will
1. Visit MicroMasters in your browser on port `8079`. _(OSX Only)_ Docker auto-assigns
the container IP. Run ``docker-machine ip`` to see it. Your MicroMasters URL will
be something like this: ``192.168.99.100:8079``.
1. Click "Sign in with edX.org" and sign in by authorizing an edX client. If you're
running edX locally, this will be the client you created in the steps above.

## Running Commands and Testing

As shown above, manage commands can be executed on the Docker-contained
MicroMaster’s app. For example, you can run a Python shell with the following command:
MicroMasters app. For example, you can run a Python shell with the following command:

docker-compose run web python3 manage.py shell

Expand All @@ -211,3 +212,5 @@ Tests should be run in the Docker container, not the host machine. They can be r
docker-compose run watch npm test /path/to/test.js
# Run the JS linter
docker-compose run watch npm run-script lint
# Run JS type-checking
docker-compose run watch npm run-script flow
57 changes: 57 additions & 0 deletions RELEASE.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,63 @@
Release Notes
=============

Version 0.12.0
--------------

- Added ErrorMessage to UserPage
- Changed dateFields to disallow non-numerical input (#641)
- Added deadline for upgrade
- Removed some (now) useless cases in constants
- Modified FAQ field to have rich text
- FAQ collapsed by default
- Added spinner and error message for profile page (#661)
- Added user page link to dropdown
- Changed field of study select to match anywhere in string w/ highlighted text
- Removed routing from profile flow
- added docstring
- fixed MORE unit tests
- fixed js test
- refactored error page code and fixed unit tests
- nevermind. tabs changed to spaces in base_error.html
- changed base_error.html to match tab/space style, which is apparently mixed
- Added user page link to dropdown
- Added thumbnail to wagtail CMS (#625)
- Redirected to 404 if user goes to a missing user page (#629)
- Added spinner for dashboard (#646)
- Removed x&#39;s from text fields (#642)
- Tests fixed
- Removed upgrade logic from the frontend
- Changed the label of settings button
- Added settings page
- Added link to home page on program page logo (#645)
- Added text to JumboTron for terms of service (#644)
- Updated validation text (#643)
- Added resumeOrder to education entries
- Updated edx-api-client requirement
- Removed padding from date field (#631)
- Removed UI validators from PrivacyTab validator callback
- Raised 404 exception when user wants to access someones profile whose privacy mode is set tp private
- Fixed filtering text to remain if textbox clicked (#628)
- Made FieldsOfStudySelectField wider
- Added new types for Course, CourseRun, added flow to many files
- Added react-virtualized to AutoComplete (#568)
- Fixed style regression (#624)
- Link opens in the same page
- Added possibility to link external program pages
- Added custom 500 page
- Added &#39;confirm delete all entries&#39; when closing switches
- Sorted employment entries in resume order
- Updated documentation to reflect edX changes
- First working version
- Removed apostrophe from MicroMaster&#39;s (#560)
- Updated to redux-asserts 0.0.8 and fixed related test failures (#616)
- Fixed bug with preferred name not updating on Jumbotron
- Added babel-polyfill to support IE11 (#611)
- Swapped courses and faq in program page
- Upgraded to wagtail 1.5.2
- Fixed spinner positioning (#563)
- Bumped django version

Version 0.11.0
--------------

Expand Down
20 changes: 20 additions & 0 deletions cms/migrations/0012_programpage_external_program_page_url.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-06-22 20:59
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('cms', '0011_programpage_title_over_image'),
]

operations = [
migrations.AddField(
model_name='programpage',
name='external_program_page_url',
field=models.URLField(blank=True, help_text='Use this field to directly link an external web page for this program.', null=True),
),
]
22 changes: 22 additions & 0 deletions cms/migrations/0013_programpage_thumbnail_image.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-06-22 15:41
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('wagtailimages', '0012_copy_image_permissions_to_collections'),
('cms', '0012_programpage_external_program_page_url'),
]

operations = [
migrations.AddField(
model_name='programpage',
name='thumbnail_image',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.Image'),
),
]
21 changes: 21 additions & 0 deletions cms/migrations/0014_html_in_faq_answers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-06-29 16:12
from __future__ import unicode_literals

from django.db import migrations
import wagtail.wagtailcore.fields


class Migration(migrations.Migration):

dependencies = [
('cms', '0013_programpage_thumbnail_image'),
]

operations = [
migrations.AlterField(
model_name='frequentlyaskedquestion',
name='answer',
field=wagtail.wagtailcore.fields.RichTextField(),
),
]
19 changes: 17 additions & 2 deletions cms/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,11 @@ class ProgramPage(Page):
"""
description = RichTextField(blank=True)
program = models.OneToOneField('courses.Program', null=True, on_delete=models.SET_NULL)
external_program_page_url = models.URLField(
blank=True,
null=True,
help_text="Use this field to directly link an external web page for this program."
)
background_image = models.ForeignKey(
Image,
null=True,
Expand All @@ -73,14 +78,24 @@ class ProgramPage(Page):
contact_us = RichTextField(blank=True)
title_over_image = RichTextField(blank=True)

thumbnail_image = models.ForeignKey(
Image,
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+'
)

content_panels = Page.content_panels + [
FieldPanel('description', classname="full"),
FieldPanel('program'),
FieldPanel('thumbnail_image'),
FieldPanel('external_program_page_url'),
FieldPanel('background_image'),
FieldPanel('contact_us'),
FieldPanel('title_over_image'),
InlinePanel('courses', label='Program Courses'),
InlinePanel('faqs', label='Frequently Asked Questions'),
InlinePanel('courses', label='Program Courses')
]

def get_context(self, request):
Expand Down Expand Up @@ -128,7 +143,7 @@ class FrequentlyAskedQuestion(Orderable):
"""
program_page = ParentalKey(ProgramPage, related_name='faqs')
question = models.TextField()
answer = models.TextField()
answer = RichTextField()

content_panels = [
MultiFieldPanel(
Expand Down
47 changes: 28 additions & 19 deletions cms/templates/cms/home_page.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
{% wagtailuserbar %}
{% block body_class %}template-programpage{% endblock %}

{% block title %}{% trans "MIT MicroMaster’s" %}{% endblock %}
{% block title %}{% trans "MIT MicroMasters" %}{% endblock %}

{% block content %}

Expand All @@ -15,7 +15,7 @@
<nav class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="javascript:void(0)"><img src="/static/images/logo-micromasters@2x.png" width="215" height="40" alt="MIT MicroMaster’s" /></a>
<a class="navbar-brand" href="javascript:void(0)"><img src="{% static 'images/logo-micromasters.png' %}" width="215" height="40" alt="MIT MicroMasters" /></a>
<div class="nav-utility pull-right">
{% if authenticated %}
<a class="btn btn-danger" href="/logout">
Expand Down Expand Up @@ -46,7 +46,7 @@
<div class="banner-wrapper-content">
<h1>
<div class="banner-image">
<img src="static/images/[email protected]" alt="MIT" />
<img src="{% static 'images/[email protected]' %}" alt="MIT" />
</div>
{{ title }}
</h1>
Expand All @@ -56,26 +56,36 @@ <h1>
<div class="row sub-banner">
<div class="col-md-12">
<div class="sub-banner-content">
MIT has created a new credential for online learners: the MicroMaster’s, which will be granted by <a href="https://www.edx.org/school/mitx" target="_blank">MITx</a> to students who do exceptionally well in a given set of graduate-level online courses and do well in a subsequent exam. <a href="javascript:void()" data-target="#modal-about" data-toggle="modal">Learn more</a>.
MIT has created a new credential for online learners: the MicroMasters, which will be granted by <a href="https://www.edx.org/school/mitx" target="_blank">MITx</a> to students who do exceptionally well in a given set of graduate-level online courses and do well in a subsequent exam. <a href="javascript:void()" data-target="#modal-about" data-toggle="modal">Learn more</a>.
</div>
</div>
</div>

<div class="panel panel-main-content">
<div class="panel-body">
<h3>MicroMaster’s</h3>
<h3>MicroMasters</h3>
<div class="media-list is-grid padding-bottom-50">
<ul class="blocks list-unstyled" data-plugin="animateList" data-child=">li">

{% for program in programs %}
<li class="col-sm-6">
{% if program.programpage %}
<a href="{{ program.programpage.url }}" class="program-link">
{% if program.programpage.external_program_page_url %}
<a href="{{ program.programpage.external_program_page_url }}" class="program-link">
{% else %}
<a href="{{ program.programpage.url }}" class="program-link">
{% endif %}
{% endif %}
<div class="media-item">
<div class="media-top">
<div class="image-wrap">
<img class="image" src="static/images/course-1.png" alt="course image for {{program}}">
{% if program.programpage and program.programpage.thumbnail_image %}
{% image program.programpage.thumbnail_image fill-378x225 as thumbnail_image %}
<img class="image" src="{{ thumbnail_image.url }}" alt="course image for {{program}}"
width="{{ thumbnail_image.width }}" height="{{ thumbnail_image.height }}" />
{% else %}
<img class="image" src="{% static 'images/course-thumbnail.png' %}" alt="course image for {{program}}" width="378" height="225" />
{% endif %}
</div>
</div>
<div class="info-wrap">
Expand Down Expand Up @@ -106,16 +116,16 @@ <h3>MicroMaster’s</h3>
<br/><br/><br/>
<div class="container">
<div class="col-sm-12 title-coming-soon text-center">
MIT has plans to bring more MicroMaster’s programs to motivated learners like you.
MIT has plans to bring more MicroMasters programs to motivated learners like you.
Please sign up for our <a href="#" data-toggle="modal"
data-target="#subscribeAlert">mailing list</a>
to hear about new MicroMaster’s programs.
Also, don't hesitate to let us know about what MicroMaster’s you’d like to see.
to hear about new MicroMasters programs.
Also, don't hesitate to let us know about what MicroMasters you’d like to see.
</div>
<div class="row">
<div class="col-sm-12">
<button class="btn btn-danger button-subscribe-alerts center-block" data-toggle="modal"
data-target="#subscribeAlert">Yes, tell me when MicroMaster’s are available</button>
data-target="#subscribeAlert">Yes, tell me when MicroMasters are available</button>
</div>
</div>
</div>
Expand All @@ -128,7 +138,7 @@ <h3>MicroMaster’s</h3>
</section>
</div>

{% include "cms/footer.html" %}
{% include "footer.html" %}

<div class="modal fade modal-fade-in-scale-up" id="modal-about" aria-hidden="true" aria-labelledby="modal-about"
role="dialog" tabindex="-1">
Expand All @@ -138,20 +148,19 @@ <h3>MicroMaster’s</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<!-- <h4 class="modal-title">About MicroMaster’s</h4> -->
</div>
<div class="modal-body">
<h2>MicroMaster’s is a new credential</h2>
<h2>MicroMasters is a new credential</h2>
<p>
MIT has created a new credential for online learners: the “MicroMaster’s,” which will be granted by MITx (MIT’s online learning initiative) to students who do exceptionally well in a given set of graduate-level online courses and do well in a subsequent exam. The credential will first be available to students who register for the SCM program’s online courses.
MIT has created a new credential for online learners: the “MicroMasters,” which will be granted by MITx (MIT’s online learning initiative) to students who do exceptionally well in a given set of graduate-level online courses and do well in a subsequent exam. The credential will first be available to students who register for the SCM program’s online courses.
</p>
<h3>Join the MIT MicroMaster’s community</h3>
<h3>Join the MIT MicroMasters community</h3>
<p>
MicroMaster’s aren't just about courseware. Part of the the MIT experience is interacting with other exceptional students like yourself. Fill out your profile on this site and build professional relationships with like-minded learners.
MicroMasters aren't just about courseware. Part of the the MIT experience is interacting with other exceptional students like yourself. Fill out your profile on this site and build professional relationships with like-minded learners.
</p>
<h3>MicroMaster’s courses are delivered through edX.org</h3>
<h3>MicroMasters courses are delivered through edX.org</h3>
<p>
Use your edX.org account to enroll in a MicroMaster’s program and share your grades and progress with MIT. When you complete all the requirements and earn a MicroMaster’s credential, you can use it to apply for a Masters degree at MIT.
Use your edX.org account to enroll in a MicroMasters program and share your grades and progress with MIT. When you complete all the requirements and earn a MicroMasters credential, you can use it to apply for a Master’s degree at MIT.
</p>
</div>
</div>
Expand Down
Loading