Skip to content

Commit

Permalink
Merge pull request #24813 from code-dot-org/dtp_candidate_c3e96ba4
Browse files Browse the repository at this point in the history
DTP (Test > Production: c3e96ba)
  • Loading branch information
islemaster committed Sep 14, 2018
2 parents 1f57077 + 02dc1d7 commit 2449af9
Show file tree
Hide file tree
Showing 18 changed files with 135 additions and 82 deletions.
5 changes: 4 additions & 1 deletion Gemfile
Expand Up @@ -131,7 +131,10 @@ gem 'open_uri_redirections', require: false, group: [:development, :staging, :te

# Ref: https://github.com/tmm1/gctools/pull/17
gem 'gctools', github: 'wjordan/gctools', ref: 'ruby-2.5'
gem 'puma'
# Optimizes copy-on-write memory usage with GC before web-application fork.
gem 'nakayoshi_fork'
# Ref: https://github.com/puma/puma/pull/1646
gem 'puma', github: 'wjordan/puma', ref: 'out_of_band'
gem 'unicorn', '~> 5.1.0'

gem 'chronic', '~> 0.10.2'
Expand Down
12 changes: 10 additions & 2 deletions Gemfile.lock
Expand Up @@ -164,6 +164,13 @@ GIT
multi_json (>= 1.0.3)
omniauth-oauth2 (~> 1.4)

GIT
remote: https://github.com/wjordan/puma.git
revision: 2ab96d67341a0ae1a4baf6bf80790389abc159ac
ref: out_of_band
specs:
puma (3.12.0)

GIT
remote: https://github.com/wjordan/sass-rails.git
revision: 06e833d92d083fbcb137364ffebc597b2577db23
Expand Down Expand Up @@ -553,6 +560,7 @@ GEM
multipart-post (2.0.0)
mustermann (1.0.1)
mysql2 (0.3.21)
nakayoshi_fork (0.0.4)
naturally (2.1.0)
net-http-persistent (2.9.4)
net-scp (1.2.1)
Expand Down Expand Up @@ -623,7 +631,6 @@ GEM
powerpack (0.1.1)
progress (3.3.1)
public_suffix (3.0.3)
puma (3.12.0)
pusher (1.3.1)
httpclient (~> 2.7)
multi_json (~> 1.0)
Expand Down Expand Up @@ -953,6 +960,7 @@ DEPENDENCIES
minitest-reporters (~> 1.2.0.beta3)
mocha
mysql2 (~> 0.3.13)
nakayoshi_fork
naturally
net-http-persistent
net-scp
Expand All @@ -977,7 +985,7 @@ DEPENDENCIES
petit!
pg
phantomjs (~> 1.9.7.1)
puma
puma!
pusher (~> 1.3.1)
rack-cache
rack-mini-profiler
Expand Down
10 changes: 10 additions & 0 deletions apps/src/templates/teacherDashboard/SectionActionDropdown.jsx
Expand Up @@ -17,6 +17,8 @@ import BaseDialog from '../BaseDialog';
import Button from '../Button';
import DialogFooter from "./DialogFooter";
import QuickActionsCell from "@cdo/apps/templates/tables/QuickActionsCell";
import {getStore} from "@cdo/apps/redux";
import {setRosterProvider} from "@cdo/apps/templates/teacherDashboard/teacherSectionsRedux";

const styles = {
xIcon: {
Expand Down Expand Up @@ -45,12 +47,19 @@ class SectionActionDropdown extends Component {
sectionCode: PropTypes.string,
sectionName: PropTypes.string,
updateRoster: PropTypes.func.isRequired,
setRosterProvider: PropTypes.func
};

state = {
deleting: false,
};

componentDidMount() {
if (this.props.sectionData.loginType === "google_classroom" || this.props.sectionData.loginType === "clever") {
getStore().dispatch(this.props.setRosterProvider(this.props.sectionData.loginType));
}
}

onConfirmDelete = () => {
const {removeSection } = this.props;
const section = this.props.sectionData;
Expand Down Expand Up @@ -192,4 +201,5 @@ export default connect((state, props) => ({
removeSection,
toggleSectionHidden,
updateRoster: importOrUpdateRoster,
setRosterProvider,
})(SectionActionDropdown);
2 changes: 1 addition & 1 deletion cookbooks/Berksfile.lock
Expand Up @@ -113,7 +113,7 @@ GRAPH
cdo-java-7 (>= 0.0.0)
cdo-java-7 (0.1.1)
build-essential (>= 0.0.0)
cdo-jemalloc (0.1.1)
cdo-jemalloc (0.1.2)
ark (>= 0.0.0)
cdo-mysql (0.1.11)
apt (~> 2.6.0)
Expand Down
12 changes: 6 additions & 6 deletions cookbooks/cdo-jemalloc/attributes/default.rb
Expand Up @@ -2,15 +2,15 @@
default['cdo-jemalloc']['checksum'] = '5396e61cc6103ac393136c309fae09e44d74743c86f90e266948c50f3dbb7268'
default['cdo-jemalloc']['lib'] = '/usr/local/lib/libjemalloc.so.2'

# See: https://github.com/jemalloc/jemalloc/blob/dev/TUNING.md
# See:
# https://github.com/jemalloc/jemalloc/blob/dev/TUNING.md
# http://jemalloc.net/jemalloc.3.html
# To convert this attributes hash to a malloc_conf string, run:
# node['cdo-jemalloc']['malloc_conf'].map {|x| x.join(':')}.join(',')
default['cdo-jemalloc']['malloc_conf'] = {
# Enable dynamic thread to arena association based on running CPU.
# This has the potential to improve locality, e.g. when thread to CPU affinity is present.
#
# Suggested: try percpu_arena:percpu or percpu_arena:phycpu if thread migration between processors is expected to be infrequent.
percpu_arena: 'percpu',
# Maximum number of arenas to use for automatic multiplexing of threads and arenas.
# The default is four times the number of CPUs, or one if there is a single CPU.
narenas: 2,

# Enabling jemalloc background threads generally improves the tail latency for application threads,
# since unused memory purging is shifted to the dedicated background threads.
Expand Down
2 changes: 1 addition & 1 deletion cookbooks/cdo-jemalloc/metadata.rb
Expand Up @@ -4,6 +4,6 @@
license 'All rights reserved'
description 'Installs/Configures cdo-jemalloc'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version '0.1.1'
version '0.1.2'

depends 'ark'
20 changes: 9 additions & 11 deletions dashboard/app/views/home/_privacy_notice.md
Expand Up @@ -3,7 +3,7 @@ Date of Last Revision: August 24, 2016

Code.org® is a non-profit dedicated to expanding participation in computer science by making it available in more schools, and increasing participation by women and underrepresented students of color.

Code.org is committed to protecting the privacy of children who use our sites and applications. This notice describes our practices of collecting, using, and disclosing personal information from children under 13. Please review our general [Privacy Policy](<%= CDO.code_org_url('/privacy') %>) and [Terms of Use Agreement](<%= CDO.code_org_url('/tos') %>) for additional information. These policies are in accordance with the U.S. Children’s Online Privacy Protection Act (COPPA). If you have any questions about these policies, you may write us at [http://code.org/contact](<%= CDO.code_org_url('/contact') %>) or at 1501 4th Avenue, Suite 900, Seattle, WA 98101.
Code.org is committed to protecting the privacy of children who use our sites and applications. This notice describes our practices of collecting, using, and disclosing personal information from children under 13. Please review our general [Privacy Policy](<%= CDO.code_org_url('/privacy') %>) and [Terms of Use Agreement](<%= CDO.code_org_url('/tos') %>) for additional information. These policies are in accordance with the U.S. Children’s Online Privacy Protection Act (COPPA). If you have any questions about these policies, you may write us at [http://code.org/contact](<%= CDO.code_org_url('/contact') %>) or at 1501 4th Avenue, Suite 900, Seattle, WA 98101.

## 1. Authorization from the School

Expand All @@ -15,7 +15,7 @@ Providing access to students under the age of 13 means that they can create and

We will not collect or store any such information until we have received your consent. If you are an existing Code Studio teacher, your students will continue to have access to Code Studio, but they won’t have access to App Lab or Game Lab if they are under 13 until you explicitly agree to our updated [Privacy Policy](<%= CDO.code_org_url('/privacy') %>) and [Terms of Use Agreement](<%= CDO.code_org_url('/tos') %>).



## 2. Information We Collect and Use
Code.org only collects information from students for the use and benefit of the school, and for no commercial purpose. Code.org does not create marketing profiles and online behavioral advertising campaigns using information collected from or created by students.
Expand All @@ -39,7 +39,7 @@ Display Name (eg “Cool Coder” or “John”) | Mandatory | To provide studen
Age (*Not* birthdate) | Mandatory | To understand the developmental stage of students to offer an age-appropriate experience for each student. We use this field to ensure we don’t allow students under age 13 to access age-inappropriate features (such as sharing their coding projects on social media). We collect ages (e.g. 16), as opposed to birthdates (e.g. Feb 13, 1998).
1-way hash of email address (NOT the actual email addresses, which are collected in the web browser but never transmitted to Code.org and thus never stored by us) | Optional if account created by teacher or parent; Mandatory if student signs up directly| If a student creates an account directly, an email address is required. If the account is created by a teacher or parent, it is optional.<br><br>Even if provided, student email addresses are NOT stored by Code.org in a retrievable format. To protect student privacy, we only store a 1-way hash of the email address. We do not have any way of sending email to these students or retrieving their actual email address. It is used only for purposes of login. See the [“Student Email Addresses”](<%= CDO.code_org_url('/privacy/#studentemails') %>) section of our general [Privacy Policy](<%= CDO.code_org_url('/privacy') %>) for more details.
Login time, IP address, and other technical data | Mandatory (automatic) | This data helps Code.org troubleshoot any problems users experience. It also helps Code.org understand usage patterns, to guide the build out of servers to support all users, and to enable updating the site while minimizing service disruption. See the [“technical information”](<%= CDO.code_org_url('/privacy/#techinfo') %>) section of our general [Privacy Policy](<%= CDO.code_org_url('/privacy') %>) for additional details.
Gender | Optional | This information is only used in aggregate, to measure the percentage of students that are male or female or to measure how males or females react to different computer science challenges, to track our progress towards reducing the gender gap in computer science.
Gender | Optional | This information is only used in aggregate, to measure the percentage of students that are male or female or to measure how male students or female students react to different computer science challenges, to track our progress towards reducing the gender gap in computer science.
Race | Optional | Students ages 13 and over have an option to indicate their race. For students under age 13 we do not ask individual race, but we ask the teacher to optionally estimate the racial distribution of the entire classroom. <br><br>This information is only used in aggregate, to measure the percentage of students from underrepresented minorities and their aggregate reaction to computer science challenges, in order to track our progress toward improving diversity in computer science.
Progress in the course <br>1- Date/Time each stage is tried<br>2- Number of tries to solve a puzzle, and whether it was solved successfully or optimally<br>3- Information on how the student solved the puzzle including time to completion and whether they used hints<br>4- The code that the student submitted<br>5- Student-provided answers to simple assessments (e.g. multiple-choice questions) | Mandatory (automatic) | This information is displayed to students and their teachers to see their progress in a course, to see the code they’ve created, and to identify topics they need help with. It also lets students pick up where they left off if they log out and login later. See [example progress report](http://code.org/files/student-progress.pdf), and see the [“technical information”](<%= CDO.code_org_url('/privacy/#techinfo') %>) section of our general [Privacy Policy](<%= CDO.code_org_url('/privacy') %>) for additional details.<br><br>This data also helps Code.org improve the course effectiveness. For example, if a puzzle is too hard, Code.org may take action (like [providing better hints](http://code.org/hints)) to improve the learning process.
Student Projects - apps, animations, stories, or code-art | Automatic (for students who create such projects)<br>Creating apps and projects is part of our course progressions.|The code and underlying assets for these apps are stored by Code.org, so that students can retrieve their projects each time they log in.<br><br>When students work in the context of a classroom, their teacher also has access to view the projects created by any students in the classroom.<br><br>Student projects and code creations each have a custom URL that students can use to share with friends or their teacher, or post to the Code.org public gallery. On the public gallery, projects are displayed with only the first letter of the student’s name to protect student privacy.<br><br>Students may “remix” (and change or improve upon) projects made by themselves or by other students.<br>Students over age 13 can also, at their discretion, post their projects to social media.<br><br>In our elementary school courses, students create stories, games or art using tools, such as Play Lab, which are limited to using artwork and sounds provided by Code.org. Students can write dialogues for these projects. Text provided by students in these tools will be automatically analyzed to prevent sharing any personal email addresses, phone numbers, or street addresses.<br><br>Our middle school and high school courses teach students to make more mature apps and games. These tools allow the students to upload custom photos, sounds and/or videos. (see below)
Expand All @@ -54,20 +54,20 @@ In addition to the information that your students may give us directly, we may c

To track information about use of our Sites, we use various technological tools. For example, like most websites, whether or not the user is a registered member, we may send one or more cookies – small text files containing a string of alphanumeric characters – to the user’s computer. Cookies remember information about the user’s activities on a website and enable us to provide the user with a more personalized learning experience. Code.org may use both session cookies and persistent cookies. A session cookie disappears automatically after the browser is closed. A persistent cookie remains after the browser is closed and may be used by the browser on subsequent visits to the Website. Please note that without cookies, the students will not have access to certain services and features on the Website.

A pixel tag (also known as a “clear GIF” or “web beacon”) is a tiny image – typically just one-pixel – that can be placed on a Web page or in an email to tell us when the user has displayed that page or opened that email.
A pixel tag (also known as a “clear GIF” or “web beacon”) is a tiny image – typically just one-pixel – that can be placed on a Web page or in an email to tell us when the user has displayed that page or opened that email.

The list of third-party operators whose technology we’ve used to build Code Studio, and who may collect persistent identifiers as part of the implementation our sites and applications is available in the [“Third Parties”](<%= CDO.code_org_url('/privacy/#thirdparties') %>) section of our general [Privacy Policy](<%= CDO.code_org_url('/privacy') %>).


### Geolocation

We may collect and store information about the school or classroom location to provide educational experiences or email updates that are tailored for your region. The location information we have access to may include: (1) a ZIP or postal code, if you (as the teacher) provide one to us in order to allow us to display the classroom location on a map or in search results for parents looking for schools that teach computer science; and (2) the approximate geographic region the computers or mobile devices are located in, as determined from the IP addresses (although you change the settings on the computers or mobile devices to prevent them from providing us with such IP information). Code.org does not request or collect exact GPS locations, and your billing and shipping addresses are not used for these purposes.
We may collect and store information about the school or classroom location to provide educational experiences or email updates that are tailored for your region. The location information we have access to may include: (1) a ZIP or postal code, if you (as the teacher) provide one to us in order to allow us to display the classroom location on a map or in search results for parents looking for schools that teach computer science; and (2) the approximate geographic region the computers or mobile devices are located in, as determined from the IP addresses (although you change the settings on the computers or mobile devices to prevent them from providing us with such IP information). Code.org does not request or collect exact GPS locations, and your billing and shipping addresses are not used for these purposes.

## 3. Disclosure of Information

Code.org does not rent or sell personal information that we collect from the students, or exploit it for financial gain in any way. Code.org will never share or grant rights to personal information with other third-party organizations to use without your express prior authorization, except as part of a specific program or feature for which you will have the explicit ability and choice to opt-in. In particular, we do not share any Personal Information you provide with our donors or sponsors.

However, Code.org may disclose anonymous or aggregate data to learn more about our users. In certain occasions, Code.org may work with third parties (such as educational researchers and universities) to improve our services or offerings. We may disclose automatically collected and other aggregate non-personal information to authorized partners to conduct research on online education or assist in understanding the usage, viewing, and demographic patterns for certain programs, content, services, promotions, and/or functionality on the Website. We may also publish anonymized information about student performance on our tutorials and Websites; however, we will never publicly disclose personal information in these reports. Data about student performance will remain anonymized, but aggregated, anonymized data over large populations of students may be reported by demographic criteria such as age, general location, gender, ethnicity, and socioeconomic status.
However, Code.org may disclose anonymous or aggregate data to learn more about our users. In certain occasions, Code.org may work with third parties (such as educational researchers and universities) to improve our services or offerings. We may disclose automatically collected and other aggregate non-personal information to authorized partners to conduct research on online education or assist in understanding the usage, viewing, and demographic patterns for certain programs, content, services, promotions, and/or functionality on the Website. We may also publish anonymized information about student performance on our tutorials and Websites; however, we will never publicly disclose personal information in these reports. Data about student performance will remain anonymized, but aggregated, anonymized data over large populations of students may be reported by demographic criteria such as age, general location, gender, ethnicity, and socioeconomic status.

For a more detailed explanation of how we share and transfer data, please read the [“How We Share or Transfer Data”](<%= CDO.code_org_url('/privacy/#sharedata') %>) section of our general [Privacy Policy](<%= CDO.code_org_url('/privacy') %>).

Expand All @@ -77,9 +77,7 @@ At any time, you (as the teacher) can refuse to permit us to collect further per

You may write us at [http://code.org/contact](<%= CDO.code_org_url('/contact') %>) or at 1501 4th Avenue, Suite 900, Seattle, WA 98101, to request access to review, change, or delete a student’s personal information.

## 5. Revoking and Deleting Your Consent
At any time, you may revoke your consent, refuse to allow us to further use or collect your students’ personal information, and direct us to delete the information. If you revoke your consent, we will no longer permit your students to participate in certain activities on Code.org. Your students will continue to have access to other activities on Code.org which do not require your students’ personal information.

To revoke your consent, write us at [http://code.org/contact](<%= CDO.code_org_url('/contact') %>) or at 1501 4th Avenue, Suite 900, Seattle, WA 98101.

## 5. Revoking and Deleting Your Consent
At any time, you may revoke your consent, refuse to allow us to further use or collect your students’ personal information, and direct us to delete the information. If you revoke your consent, we will no longer permit your students to participate in certain activities on Code.org. Your students will continue to have access to other activities on Code.org which do not require your students’ personal information.

To revoke your consent, write us at [http://code.org/contact](<%= CDO.code_org_url('/contact') %>) or at 1501 4th Avenue, Suite 900, Seattle, WA 98101.

0 comments on commit 2449af9

Please sign in to comment.