Commit ec2af959 by Waheed Ahmed

Create only course object from new course page, removed run and seat related code.

ECOM-7760
parent 5e8c9f42
......@@ -157,6 +157,8 @@ class CustomCourseForm(CourseForm):
validators=[validate_text_count(max_length=2500)]
)
add_new_run = forms.BooleanField(required=False)
class Meta(CourseForm.Meta):
model = Course
widgets = {
......
......@@ -53,16 +53,12 @@ class CreateCourseViewTests(TestCase):
self.group = self.organization_extension.group
self.user.groups.add(self.group)
# create base course objects
# create base course object
self.course = factories.CourseFactory()
self.course_run = factories.CourseRunFactory(course=self.course)
self.seat = factories.SeatFactory(course_run=self.course_run, type=Seat.VERIFIED, price=2)
self.course.organizations.add(self.organization_extension.organization)
self.site = Site.objects.get(pk=settings.SITE_ID)
self.client.login(username=self.user.username, password=USER_PASSWORD)
self.start_date_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
self.end_date_time = (datetime.now() + timedelta(days=60)).strftime('%Y-%m-%d %H:%M:%S')
# creating default organizations roles
factories.OrganizationUserRoleFactory(
......@@ -98,50 +94,36 @@ class CreateCourseViewTests(TestCase):
response, "Must be Publisher user to perform this action.", status_code=403
)
def test_create_course_and_course_run_and_seat_with_errors(self):
def test_create_course_with_errors(self):
"""
Verify that without providing required data course and other objects cannot be created.
Verify that without providing required data course cannot be created.
"""
course_dict = model_to_dict(self.course)
course_dict['number'] = 'test course'
course_dict['number'] = ''
course_dict['image'] = ''
course_dict['lms_course_id'] = ''
response = self.client.post(reverse('publisher:publisher_courses_new'), course_dict)
self.assertEqual(response.status_code, 400)
def test_create_course_and_course_run_without_seat(self):
def test_create_course(self):
"""
Verify that course and course run objects create successfully if seat type is not provided.
Verify that user can create course successfully.
"""
data = {'number': 'course_without_seat', 'image': ''}
course_dict = self._post_data(data, self.course, self.course_run, None)
course_dict['image'] = ''
self.client.post(reverse('publisher:publisher_courses_new'), course_dict)
data = {'number': 'testX453', 'image': make_image_file('test_banner.jpg')}
course_dict = self._post_data(data, self.course)
response = self.client.post(reverse('publisher:publisher_courses_new'), course_dict)
course = Course.objects.get(number=course_dict['number'])
course_run = course.publisher_course_runs.first()
# verify no seat object created with course run.
self.assertFalse(course_run.seats.all())
@ddt.data(
{'number': 'course_1', 'image': ''},
{'number': 'course_2', 'image': make_image_file('test_banner.jpg')},
{'number': 'course_3', 'image': make_image_file('test_banner1.jpg')}
)
def test_create_course_and_course_run_and_seat(self, data):
"""
Verify that new course, course run and seat can be created with different data sets.
"""
self.user.groups.add(Group.objects.get(name=ADMIN_GROUP_NAME))
self._assert_records(1)
course_dict = self._post_data(data, self.course, self.course_run, self.seat)
response = self.client.post(reverse('publisher:publisher_courses_new'), course_dict, files=data['image'])
course = Course.objects.get(number=data['number'])
if data['image']:
self._assert_image(course)
self.assertRedirects(
response,
expected_url=reverse('publisher:publisher_course_detail', kwargs={'pk': course.id}),
status_code=302,
target_status_code=200
)
self._assert_test_data(response, course, self.seat.type, self.seat.price)
self.assertEqual(course.number, data['number'])
self._assert_image(course)
@ddt.data(
make_image_file('test_banner00.jpg', width=2120, height=1191),
......@@ -159,7 +141,7 @@ class CreateCourseViewTests(TestCase):
]
self.user.groups.add(Group.objects.get(name=ADMIN_GROUP_NAME))
self._assert_records(1)
course_dict = self._post_data({'image': image}, self.course, self.course_run, self.seat)
course_dict = self._post_data({'image': image}, self.course)
response = self.client.post(reverse('publisher:publisher_courses_new'), course_dict, files=image)
self.assertEqual(response.context['course_form'].errors['image'], image_error)
self._assert_records(1)
......@@ -170,7 +152,7 @@ class CreateCourseViewTests(TestCase):
"""
self._assert_records(1)
data = {'number': 'course_2', 'image': make_image_file('test_banner.jpg')}
course_dict = self._post_data(data, self.course, self.course_run, self.seat)
course_dict = self._post_data(data, self.course)
with patch.object(Course, "save") as mock_method:
mock_method.side_effect = IntegrityError
response = self.client.post(reverse('publisher:publisher_courses_new'), course_dict, files=data['image'])
......@@ -178,40 +160,6 @@ class CreateCourseViewTests(TestCase):
self.assertEqual(response.status_code, 400)
self._assert_records(1)
@ddt.data(Seat.VERIFIED, Seat.PROFESSIONAL)
def test_create_course_without_price_with_error(self, seat_type):
""" Verify that error is thrown if seat type is not honor/audit and no price is input.
"""
self._assert_records(1)
data = {'number': 'course_1', 'image': ''}
course_dict = self._post_data(data, self.course, self.course_run, self.seat)
course_dict['price'] = 0
course_dict['type'] = seat_type
response = self.client.post(reverse('publisher:publisher_courses_new'), course_dict, files=data['image'])
self.assertEqual(response.status_code, 400)
self.assertEqual(
response.context['seat_form'].errors['price'][0], 'Only audit seat can be without price.'
)
self._assert_records(1)
def test_create_course_without_price_with_success(self):
""" Verify that if seat type is audit then price is not required. """
self.user.groups.add(Group.objects.get(name=ADMIN_GROUP_NAME))
self._assert_records(1)
data = {'number': 'course_1', 'image': ''}
course_dict = self._post_data(data, self.course, self.course_run, self.seat)
course_dict['price'] = 0
course_dict['type'] = Seat.AUDIT
response = self.client.post(
reverse('publisher:publisher_courses_new'), course_dict, files=data['image'], follow=True
)
course = Course.objects.get(number=data['number'])
self._assert_test_data(response, course, Seat.AUDIT, 0)
self.assertIn(
'You have successfully created a course. You can edit the course information',
response.content.decode('UTF-8')
)
def test_create_form_with_single_organization(self):
"""Verify that if there is only one organization then that organization will be shown as text. """
response = self.client.get(reverse('publisher:publisher_courses_new'))
......@@ -257,13 +205,12 @@ class CreateCourseViewTests(TestCase):
)
)
def test_create_without_selecting_radio_buttons(self):
def test_create_course_without_course_number(self):
"""
Verify that without selecting pacing type course cannot be created.
Verify that without course number course cannot be created.
"""
data = {'number': 'course_1', 'image': ''}
course_dict = self._post_data(data, self.course, self.course_run, self.seat)
course_dict.pop('pacing_type')
course_dict = self._post_data({'image': ''}, self.course)
course_dict.pop('number')
response = self.client.post(reverse('publisher:publisher_courses_new'), course_dict)
self.assertEqual(response.status_code, 400)
......@@ -274,26 +221,14 @@ class CreateCourseViewTests(TestCase):
'<div id="about-page" class="layout-full publisher-layout layout', response.content.decode('UTF-8')
)
def _post_data(self, data, course, course_run, seat):
def _post_data(self, data, course):
""" Returns dict of data to posts to a course endpoint. """
course_dict = model_to_dict(course)
course_dict.update(**data)
course_dict['team_admin'] = self.user.id
if course_run:
course_dict.update(**model_to_dict(course_run))
course_dict.pop('video_language')
course_dict.pop('end')
course_dict.pop('priority')
course_dict.pop('contacted_partner_manager')
course_dict['start'] = self.start_date_time
course_dict['end'] = self.end_date_time
course_dict['organization'] = self.organization_extension.organization.id
course_dict['lms_course_id'] = ''
if seat:
course_dict.update(**model_to_dict(seat))
course_dict.pop('verification_deadline')
course_dict['organization'] = self.organization_extension.organization.id
course_dict.pop('id')
return course_dict
def _assert_image(self, course):
......@@ -308,41 +243,26 @@ class CreateCourseViewTests(TestCase):
self.assertIn(image_url_prefix, sized_file.url)
def _assert_records(self, count):
""" Asserts expected counts for Course, CourseRun, and Seat objects """
""" Asserts expected counts for Course"""
self.assertEqual(Course.objects.all().count(), count)
self.assertEqual(CourseRun.objects.all().count(), count)
self.assertEqual(Seat.objects.all().count(), count)
def _assert_test_data(self, response, course, expected_type, expected_price):
""" Asserts expected data present on create. """
course_run = course.publisher_course_runs.get()
course_detail_path = reverse('publisher:publisher_course_detail', kwargs={'pk': course.id})
def test_create_course_with_add_run(self):
"""
Verify that if add_new_run is checked user is redirected to
create course run page instead course detail page.
"""
data = {'number': 'testX234', 'image': '', 'add_new_run': True}
course_dict = self._post_data(data, self.course)
response = self.client.post(reverse('publisher:publisher_courses_new'), course_dict)
course = Course.objects.get(number=course_dict['number'])
self.assertRedirects(
response,
expected_url=course_detail_path,
expected_url=reverse('publisher:publisher_course_runs_new', kwargs={'parent_course_id': course.id}),
status_code=302,
target_status_code=200
)
self.assertEqual(course.organizations.first(), self.organization_extension.organization)
self.assertEqual(len(course.course_user_roles.all()), 3)
self.assertEqual(course.course_user_roles.filter(role=PublisherUserRole.CourseTeam).count(), 1)
self.assertEqual(self.course_run.language, course_run.language)
self.assertFalse(course_run.contacted_partner_manager)
self.assertEqual(self.course_run.pacing_type, course_run.pacing_type)
self.assertEqual(course_run.start.strftime("%Y-%m-%d %H:%M:%S"), self.start_date_time)
self.assertEqual(course_run.end.strftime("%Y-%m-%d %H:%M:%S"), self.end_date_time)
seat = course_run.seats.first()
self.assertEqual(seat.type, expected_type)
self.assertEqual(seat.price, expected_price)
self._assert_records(2)
self.assertEqual(len(mail.outbox), 1)
self.assertEqual([course.project_coordinator.email], mail.outbox[0].to)
expected_subject = 'New Studio instance request for {title}'.format(title=course.title)
self.assertEqual(str(mail.outbox[0].subject), expected_subject)
class CreateCourseRunViewTests(TestCase):
......@@ -490,6 +410,51 @@ class CreateCourseRunViewTests(TestCase):
expected_subject = 'New Studio instance request for {title}'.format(title=self.course.title)
self.assertEqual(str(mail.outbox[0].subject), expected_subject)
def test_seat_without_price(self):
""" Verify that user cannot create a new course run without seat price. """
new_user = factories.UserFactory()
new_user.groups.add(self.organization_extension.group)
factories.CourseUserRoleFactory.create(
course=self.course, role=PublisherUserRole.ProjectCoordinator, user=factories.UserFactory()
)
self.assertEqual(self.course.course_team_admin, self.user)
post_data = self.course_run_dict
seat = factories.SeatFactory(course_run=self.course_run, type=Seat.HONOR, price=0)
post_data.update(**model_to_dict(seat))
post_data.update(
{
'type': Seat.VERIFIED,
'price': 0
}
)
self._pop_valuse_from_dict(post_data, ['id', 'course', 'course_run', 'lms_course_id'])
assign_perm(
OrganizationExtension.VIEW_COURSE_RUN, self.organization_extension.group, self.organization_extension
)
response = self.client.post(
reverse('publisher:publisher_course_runs_new', kwargs={'parent_course_id': self.course.id}),
post_data
)
self.assertContains(response, 'Only audit seat can be without price.', status_code=400)
post_data['price'] = 450
response = self.client.post(
reverse('publisher:publisher_course_runs_new', kwargs={'parent_course_id': self.course.id}),
post_data
)
new_seat = Seat.objects.get(type=post_data['type'], price=post_data['price'])
self.assertRedirects(
response,
expected_url=reverse('publisher:publisher_course_run_detail', kwargs={'pk': new_seat.course_run.id}),
status_code=302,
target_status_code=200
)
def test_existing_run_and_seat_data_auto_populated(self):
"""
Verify that existing course run and seat data auto populated on new course run form.
......@@ -2313,12 +2278,13 @@ class CourseRunEditViewTests(TestCase):
# in other tables also
data = {'number': 'course_update_1', 'image': '', 'title': 'test course'}
self.user.groups.add(Group.objects.get(name=ADMIN_GROUP_NAME))
course_dict = self._post_data(data, self.course, self.course_run, None)
course_dict = self._post_data(data, self.course, self.course_run)
self.client.post(reverse('publisher:publisher_courses_new'), course_dict, files=data['image'])
# newly created course from the page.
self.new_course = Course.objects.get(number=data['number'])
self.new_course_run = self.new_course.course_runs.first()
self.new_course_run = factories.CourseRunFactory(course=self.new_course)
factories.CourseRunStateFactory(course_run=self.new_course_run, owner_role=PublisherUserRole.CourseTeam)
assign_perm(OrganizationExtension.EDIT_COURSE_RUN, self.group, self.organization_extension)
assign_perm(OrganizationExtension.VIEW_COURSE_RUN, self.group, self.organization_extension)
......@@ -2330,7 +2296,7 @@ class CourseRunEditViewTests(TestCase):
# Update the data for course
data = {'full_description': 'This is testing description.', 'image': ''}
self.updated_dict = self._post_data(data, self.new_course, self.new_course_run, None)
self.updated_dict = self._post_data(data, self.new_course, self.new_course_run)
# Update the data for course-run
self.updated_dict['is_xseries'] = True
......@@ -2338,14 +2304,7 @@ class CourseRunEditViewTests(TestCase):
toggle_switch('enable_publisher_email_notifications', True)
# 1st email is due to course-creation.
self.assertEqual(len(mail.outbox), 1)
def _pop_valuse_from_dict(self, data_dict, key_list):
for key in key_list:
data_dict.pop(key)
def _post_data(self, data, course, course_run, seat):
def _post_data(self, data, course, course_run):
course_dict = model_to_dict(course)
course_dict.update(**data)
course_dict['team_admin'] = self.user.id
......@@ -2358,9 +2317,6 @@ class CourseRunEditViewTests(TestCase):
course_dict['start'] = self.start_date_time
course_dict['end'] = self.end_date_time
course_dict['organization'] = self.organization_extension.organization.id
if seat:
course_dict.update(**model_to_dict(seat))
course_dict.pop('verification_deadline')
course_dict.pop('id')
return course_dict
......@@ -2441,7 +2397,7 @@ class CourseRunEditViewTests(TestCase):
# post data without seat
data = {'image': ''}
updated_dict = self._post_data(data, self.new_course, self.new_course_run, None)
updated_dict = self._post_data(data, self.new_course, self.new_course_run)
updated_dict['type'] = Seat.PROFESSIONAL
updated_dict['price'] = 10.00
......@@ -2581,10 +2537,10 @@ class CourseRunEditViewTests(TestCase):
"""
DRY method to assert sent email data.
"""
self.assertEqual(len(mail.outbox), 2)
self.assertEqual(str(mail.outbox[1].subject), subject)
self.assertEqual(len(mail.outbox), 1)
self.assertEqual(str(mail.outbox[0].subject), subject)
body = mail.outbox[1].body.strip()
body = mail.outbox[0].body.strip()
self.assertIn(expected_body, body)
page_url = 'https://{host}{path}'.format(host=Site.objects.get_current().domain.strip('/'), path=object_path)
self.assertIn(page_url, body)
......@@ -2640,7 +2596,7 @@ class CourseRunEditViewTests(TestCase):
self.assertNotContains(response, '<a class="studio-link"')
data = {'full_description': 'This is testing description.', 'image': ''}
updated_dict = self._post_data(data, self.new_course, None, None)
updated_dict = self._post_data(data, self.new_course, None)
self.client.post(self.edit_page_url, updated_dict)
response = self.client.get(self.edit_page_url)
......@@ -2661,7 +2617,7 @@ class CourseRunEditViewTests(TestCase):
"""
self.user.groups.add(Group.objects.get(name=INTERNAL_USER_GROUP_NAME))
data = {'full_description': 'This is testing description.', 'image': ''}
updated_dict = self._post_data(data, self.new_course, self.new_course_run, None)
updated_dict = self._post_data(data, self.new_course, self.new_course_run)
updated_dict['type'] = seat_type
updated_dict['price'] = 10.00
......@@ -2736,7 +2692,7 @@ class CourseRunEditViewTests(TestCase):
user = self.new_course.course_team_admin
self.client.login(username=user.username, password=USER_PASSWORD)
post_data = self._post_data({'image': ''}, self.new_course, self.new_course_run, None)
post_data = self._post_data({'image': ''}, self.new_course, self.new_course_run)
lms_course_id = 'course-v1:edX+DemoX+Demo_Course'
self.new_course_run.lms_course_id = lms_course_id
self.new_course_run.save()
......
......@@ -214,19 +214,18 @@ class CreateCourseView(mixins.LoginRequiredMixin, mixins.PublisherUserRequiredMi
""" Create Course View."""
model = Course
course_form = CustomCourseForm
run_form = CustomCourseRunForm
seat_form = CustomSeatForm
template_name = 'publisher/add_course_form.html'
success_url = 'publisher:publisher_course_detail'
def get_success_url(self, course_id): # pylint: disable=arguments-differ
return reverse(self.success_url, kwargs={'pk': course_id})
def get_success_url(self, course_id, add_new_run=None): # pylint: disable=arguments-differ
success_url = reverse(self.success_url, kwargs={'pk': course_id})
if add_new_run:
success_url = reverse('publisher:publisher_course_runs_new', kwargs={'parent_course_id': course_id})
return success_url
def get_context_data(self):
return {
'course_form': self.course_form(user=self.request.user),
'run_form': self.run_form,
'seat_form': self.seat_form,
'publisher_hide_features_for_pilot': waffle.switch_is_active('publisher_hide_features_for_pilot'),
'publisher_add_instructor_feature': waffle.switch_is_active('publisher_add_instructor_feature'),
}
......@@ -236,46 +235,25 @@ class CreateCourseView(mixins.LoginRequiredMixin, mixins.PublisherUserRequiredMi
def post(self, request, *args, **kwargs):
ctx = self.get_context_data()
add_new_run = request.POST.get('add_new_run')
# pass selected organization to CustomCourseForm to populate related
# choices into institution admin field
user = self.request.user
organization = self.request.POST.get('organization')
self.request.POST['start'] = parse_datetime_field(self.request.POST.get('start'))
self.request.POST['end'] = parse_datetime_field(self.request.POST.get('end'))
course_form = self.course_form(
request.POST, request.FILES, user=user, organization=organization
)
run_form = self.run_form(request.POST)
seat_form = self.seat_form(request.POST)
if course_form.is_valid() and run_form.is_valid() and seat_form.is_valid():
if course_form.is_valid():
try:
with transaction.atomic():
seat = None
if request.POST.get('type'):
seat = seat_form.save(commit=False)
run_course = run_form.save(commit=False)
course = course_form.save(commit=False)
course.changed_by = user
course.save()
# commit false does not save m2m object. Keyword field is m2m.
course_form.save_m2m()
run_course.course = course
run_course.changed_by = user
run_course.save()
# commit false does not save m2m object.
run_form.save_m2m()
if seat:
seat.course_run = run_course
seat.changed_by = user
seat.save()
organization_extension = get_object_or_404(
OrganizationExtension, organization=course_form.data['organization']
)
......@@ -291,24 +269,19 @@ class CreateCourseView(mixins.LoginRequiredMixin, mixins.PublisherUserRequiredMi
# Initialize workflow for Course.
CourseState.objects.create(course=course, owner_role=PublisherUserRole.CourseTeam)
# Initialize workflow for Course-run.
CourseRunState.objects.create(course_run=run_course, owner_role=PublisherUserRole.CourseTeam)
# pylint: disable=no-member
messages.success(
request, _(
"You have successfully created a course. You can edit the course information or enter "
"information for the course About page at any time. "
"An edX project coordinator will create a Studio instance for this course. When you "
"receive an email notification that the Studio instance is ready, you can enter course "
"content in Studio."
if not add_new_run:
# pylint: disable=no-member
messages.success(
request, _(
"You have successfully created a course. You can edit the course information or enter "
"information for the course About page at any time. "
"An edX project coordinator will create a Studio instance for this course. When you "
"receive an email notification that the Studio instance is ready, you can enter course "
"content in Studio."
)
)
)
# sending email for notifying new course is created.
emails.send_email_for_course_creation(course, run_course)
return HttpResponseRedirect(self.get_success_url(course.id))
return HttpResponseRedirect(self.get_success_url(course.id, add_new_run=add_new_run))
except Exception as e: # pylint: disable=broad-except
# pylint: disable=no-member
error_message = _('An error occurred while saving your changes. {error}').format(error=str(e))
......@@ -323,8 +296,6 @@ class CreateCourseView(mixins.LoginRequiredMixin, mixins.PublisherUserRequiredMi
ctx.update(
{
'course_form': course_form,
'run_form': run_form,
'seat_form': seat_form
}
)
return render(request, self.template_name, ctx, status=400)
......@@ -484,36 +455,44 @@ class CreateCourseRunView(mixins.LoginRequiredMixin, CreateView):
def get_last_run(self):
if not self.last_run:
parent_course = self.get_parent_course()
self.last_run = parent_course.course_runs.latest('created')
try:
self.last_run = parent_course.course_runs.latest('created')
except CourseRun.DoesNotExist:
self.last_run = None
return self.last_run
def set_last_run_data(self, new_run):
last_run = self.get_last_run()
last_run_data = model_to_dict(last_run)
# Delete all those fields which cannot be copied from previous run
del (last_run_data['id'], last_run_data['start'], last_run_data['end'], last_run_data['pacing_type'],
last_run_data['preview_url'], last_run_data['lms_course_id'], last_run_data['changed_by'],
last_run_data['course'], last_run_data['sponsor'])
staff = Person.objects.filter(id__in=last_run_data.pop('staff'))
transcript_languages = LanguageTag.objects.filter(code__in=last_run_data.pop('transcript_languages'))
language_code = last_run_data.pop('language')
if language_code:
last_run_data['language'] = LanguageTag.objects.get(code=language_code)
video_language_code = last_run_data.pop('video_language')
if video_language_code:
last_run_data['video_language'] = LanguageTag.objects.get(code=video_language_code)
for attr, value in last_run_data.items():
setattr(new_run, attr, value)
new_run.save()
new_run.staff.add(*staff)
new_run.transcript_languages.add(*transcript_languages)
if last_run:
last_run_data = model_to_dict(last_run)
# Delete all those fields which cannot be copied from previous run
del (last_run_data['id'], last_run_data['start'], last_run_data['end'], last_run_data['pacing_type'],
last_run_data['preview_url'], last_run_data['lms_course_id'], last_run_data['changed_by'],
last_run_data['course'], last_run_data['sponsor'])
staff = Person.objects.filter(id__in=last_run_data.pop('staff'))
transcript_languages = LanguageTag.objects.filter(code__in=last_run_data.pop('transcript_languages'))
language_code = last_run_data.pop('language')
if language_code:
last_run_data['language'] = LanguageTag.objects.get(code=language_code)
video_language_code = last_run_data.pop('video_language')
if video_language_code:
last_run_data['video_language'] = LanguageTag.objects.get(code=video_language_code)
for attr, value in last_run_data.items():
setattr(new_run, attr, value)
new_run.save()
new_run.staff.add(*staff)
new_run.transcript_languages.add(*transcript_languages)
def get_seat_initial_data(self):
initial_seat_data = {}
last_run = self.get_last_run()
if not last_run:
return initial_seat_data
try:
latest_seat = last_run.seats.latest('created')
initial_seat_data = model_to_dict(latest_seat)
......@@ -526,9 +505,13 @@ class CreateCourseRunView(mixins.LoginRequiredMixin, CreateView):
def get_context_data(self, **kwargs):
parent_course = self.get_parent_course()
last_run = self.get_last_run()
run_initial_data = {}
if last_run:
run_initial_data = {'pacing_type': last_run.pacing_type}
context = {
'parent_course': parent_course,
'run_form': self.run_form(initial={'pacing_type': last_run.pacing_type}),
'run_form': self.run_form(initial=run_initial_data),
'seat_form': self.seat_form(initial=self.get_seat_initial_data())
}
return context
......
......@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-04 15:16+0500\n"
"POT-Creation-Date: 2017-05-05 13:13+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: \n"
#: apps/api/filters.py
#, python-brace-format
......@@ -1332,70 +1332,6 @@ msgid "Statistics: Probability"
msgstr ""
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "COURSE START DATE"
msgstr ""
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "Start on a Tuesday, Wednesday, or Thursday."
msgstr ""
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "Avoid major U.S. holidays."
msgstr ""
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Specify a month, day, and year. If you are unsure of the exact date, specify"
" a day that is close to the estimated start date. For example, if your "
"course will start near the end of March, specify March 31."
msgstr ""
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "COURSE END DATE"
msgstr ""
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Specify a month, day, and year. If you are unsure of the exact date, specify"
" a day that is close to the estimated end date. For example, if your course "
"will end near the end of March, specify March 31."
msgstr ""
#: templates/publisher/add_course_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "COURSE PACING"
msgstr ""
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Instructor-paced courses include individual assignments that have specific "
"due dates before the course end date."
msgstr ""
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Self-paced courses do not have individual assignments that have specific due"
" dates before the course end date. All assignments are due on the course end"
" date."
msgstr ""
#: templates/publisher/add_course_form.html
#: templates/publisher/course_edit_form.html
msgid "COURSE NUMBER"
msgstr ""
......@@ -1436,6 +1372,10 @@ msgid ""
" to Studio and enter content for the course."
msgstr ""
#: templates/publisher/add_course_form.html
msgid "I want to add a run to this course at this time"
msgstr ""
#: templates/publisher/add_courserun_form.html
msgid "New Course Run"
msgstr ""
......@@ -1455,11 +1395,62 @@ msgid ""
msgstr ""
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "COURSE START DATE"
msgstr ""
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "Start on a Tuesday, Wednesday, or Thursday."
msgstr ""
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "Avoid major U.S. holidays."
msgstr ""
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Specify a month, day, and year. If you are unsure of the exact date, specify"
" a day that is close to the estimated start date. For example, if your "
"course will start near the end of March, specify March 31."
msgstr ""
#: templates/publisher/add_courserun_form.html
msgid "PACING TYPE"
msgstr ""
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Instructor-paced courses include individual assignments that have specific "
"due dates before the course end date."
msgstr ""
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Self-paced courses do not have individual assignments that have specific due"
" dates before the course end date. All assignments are due on the course end"
" date."
msgstr ""
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "COURSE END DATE"
msgstr ""
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Specify a month, day, and year. If you are unsure of the exact date, specify"
" a day that is close to the estimated end date. For example, if your course "
"will end near the end of March, specify March 31."
msgstr ""
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "CERTIFICATE TYPE AND PRICE"
msgstr ""
......@@ -2023,6 +2014,10 @@ msgid ""
msgstr ""
#: templates/publisher/course_run/edit_run_form.html
msgid "COURSE PACING"
msgstr ""
#: templates/publisher/course_run/edit_run_form.html
msgid "The Studio URL for this course run."
msgstr ""
......
......@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-04 15:16+0500\n"
"POT-Creation-Date: 2017-05-05 13:13+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: \n"
#: static/js/catalogs-change-form.js
msgid "Preview"
......
......@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-04 15:16+0500\n"
"POT-Creation-Date: 2017-05-05 13:13+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps/api/filters.py
......@@ -1516,98 +1516,6 @@ msgid "Statistics: Probability"
msgstr "Stätïstïçs: Prößäßïlïtý Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σ#"
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "COURSE START DATE"
msgstr "ÇÖÛRSÉ STÀRT DÀTÉ Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмє#"
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "Start on a Tuesday, Wednesday, or Thursday."
msgstr ""
"Stärt ön ä Tüésdäý, Wédnésdäý, ör Thürsdäý. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, "
"¢σηѕє¢тєтυя #"
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "Avoid major U.S. holidays."
msgstr "Àvöïd mäjör Û.S. hölïdäýs. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕ#"
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Specify a month, day, and year. If you are unsure of the exact date, specify"
" a day that is close to the estimated start date. For example, if your "
"course will start near the end of March, specify March 31."
msgstr ""
"Spéçïfý ä mönth, däý, änd ýéär. Ìf ýöü äré ünsüré öf thé éxäçt däté, spéçïfý"
" ä däý thät ïs çlösé tö thé éstïmätéd stärt däté. För éxämplé, ïf ýöür "
"çöürsé wïll stärt néär thé énd öf Märçh, spéçïfý Märçh 31. Ⱡ'σяєм ιρѕυм "
"∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυя α∂ιριѕι¢ιηg єłιт, ѕє∂ ∂σ єιυѕмσ∂ тємρσя "
"ιη¢ι∂ι∂υηт υт łαвσяє єт ∂σłσяє мαgηα αłιqυα. υт єηιм α∂ мιηιм νєηιαм, qυιѕ "
"ησѕтяυ∂ єχєя¢ιтαтιση υłłαм¢σ łαвσяιѕ ηιѕι υт αłιqυιρ єχ єα ¢σммσ∂σ "
"¢σηѕєqυαт. ∂υιѕ αυтє ιяυяє ∂σłσя ιη яєρяєнєη∂єяιт ιη νσłυρтαтє νєłιт єѕѕє "
"¢ιłłυм ∂σłσяє єυ ƒυgιαт ηυłłα ραяιαтυя. єχ¢єρтєυя ѕιηт #"
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "COURSE END DATE"
msgstr "ÇÖÛRSÉ ÉND DÀTÉ Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт α#"
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Specify a month, day, and year. If you are unsure of the exact date, specify"
" a day that is close to the estimated end date. For example, if your course "
"will end near the end of March, specify March 31."
msgstr ""
"Spéçïfý ä mönth, däý, änd ýéär. Ìf ýöü äré ünsüré öf thé éxäçt däté, spéçïfý"
" ä däý thät ïs çlösé tö thé éstïmätéd énd däté. För éxämplé, ïf ýöür çöürsé "
"wïll énd néär thé énd öf Märçh, spéçïfý Märçh 31. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт "
"αмєт, ¢σηѕє¢тєтυя α∂ιριѕι¢ιηg єłιт, ѕє∂ ∂σ єιυѕмσ∂ тємρσя ιη¢ι∂ι∂υηт υт "
"łαвσяє єт ∂σłσяє мαgηα αłιqυα. υт єηιм α∂ мιηιм νєηιαм, qυιѕ ησѕтяυ∂ "
"єχєя¢ιтαтιση υłłαм¢σ łαвσяιѕ ηιѕι υт αłιqυιρ єχ єα ¢σммσ∂σ ¢σηѕєqυαт. ∂υιѕ "
"αυтє ιяυяє ∂σłσя ιη яєρяєнєη∂єяιт ιη νσłυρтαтє νєłιт єѕѕє ¢ιłłυм ∂σłσяє єυ "
"ƒυgιαт ηυłłα ραяιαтυя. єχ¢єρтєυя ѕιηт σ¢¢αє¢α#"
#: templates/publisher/add_course_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "COURSE PACING"
msgstr "ÇÖÛRSÉ PÀÇÌNG Ⱡ'σяєм ιρѕυм ∂σłσя ѕι#"
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Instructor-paced courses include individual assignments that have specific "
"due dates before the course end date."
msgstr ""
"Ìnstrüçtör-päçéd çöürsés ïnçlüdé ïndïvïdüäl ässïgnménts thät hävé spéçïfïç "
"düé dätés ßéföré thé çöürsé énd däté. Ⱡ'σяєм ιρѕυм ∂σłσя#"
#: templates/publisher/add_course_form.html
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Self-paced courses do not have individual assignments that have specific due"
" dates before the course end date. All assignments are due on the course end"
" date."
msgstr ""
"Sélf-päçéd çöürsés dö nöt hävé ïndïvïdüäl ässïgnménts thät hävé spéçïfïç düé"
" dätés ßéföré thé çöürsé énd däté. Àll ässïgnménts äré düé ön thé çöürsé énd"
" däté. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυя α∂ιριѕι¢ιηg єłιт, ѕє∂ ∂σ "
"єιυѕмσ∂ тємρσя ιη¢ι∂ι∂υηт υт łαвσяє єт ∂σłσяє мαgηα αłιqυα. υт єηιм α∂ мιηιм"
" νєηιαм, qυιѕ ησѕтяυ∂ єχєя¢ιтαтιση υłłαм¢σ łαвσяιѕ ηιѕι υт αłιqυιρ єχ єα "
"¢σммσ∂σ ¢σηѕєqυαт. ∂υιѕ αυтє ιяυяє ∂σłσя ιη яєρяєнєη∂єяιт ιη νσłυρтαтє νєłιт"
" єѕѕє ¢ιłłυм ∂σłσяє єυ ƒυgιαт ηυłłα ραяιαтυя. єχ¢єρтєυя ѕιηт σ¢¢αє¢αт "
"¢υρι∂αтαт ηση ρяσι∂єηт, ѕυηт ιη ¢υłρα qυι σƒƒι¢ια ∂єѕєяυηт#"
#: templates/publisher/add_course_form.html
#: templates/publisher/course_edit_form.html
msgid "COURSE NUMBER"
msgstr "ÇÖÛRSÉ NÛMBÉR Ⱡ'σяєм ιρѕυм ∂σłσя ѕι#"
......@@ -1668,6 +1576,12 @@ msgstr ""
"∂σłσя ιη яєρяєнєη∂єяιт ιη νσłυρтαтє νєłιт єѕѕє ¢ιłłυм ∂σłσяє єυ ƒυgιαт ηυłłα"
" ραяιαтυя. єχ¢єρтєυя ѕιηт σ¢¢αє¢αт ¢υρι∂αтαт ηση#"
#: templates/publisher/add_course_form.html
msgid "I want to add a run to this course at this time"
msgstr ""
"Ì wänt tö ädd ä rün tö thïs çöürsé ät thïs tïmé Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт,"
" ¢σηѕє¢тєтυя α#"
#: templates/publisher/add_courserun_form.html
msgid "New Course Run"
msgstr "Néw Çöürsé Rün Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт#"
......@@ -1693,11 +1607,90 @@ msgstr ""
" Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυя α∂ιριѕι¢ιηg єłιт, ѕє∂ ∂σ єιυѕмσ∂ тємρσя ιη¢ι∂ι∂υηт υт łαвσяє єт ∂σłσяє мαgηα αłιqυα. υт єηιм α∂ мιηιм νєηιαм, qυιѕ ησѕтяυ∂ єχєя¢ιтαтιση υłłαм¢σ łαвσяιѕ ηιѕι υт αłιqυιρ єχ єα ¢σммσ∂σ ¢σηѕєqυαт. ∂υιѕ αυтє#"
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "COURSE START DATE"
msgstr "ÇÖÛRSÉ STÀRT DÀTÉ Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмє#"
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "Start on a Tuesday, Wednesday, or Thursday."
msgstr ""
"Stärt ön ä Tüésdäý, Wédnésdäý, ör Thürsdäý. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, "
"¢σηѕє¢тєтυя #"
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "Avoid major U.S. holidays."
msgstr "Àvöïd mäjör Û.S. hölïdäýs. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕ#"
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Specify a month, day, and year. If you are unsure of the exact date, specify"
" a day that is close to the estimated start date. For example, if your "
"course will start near the end of March, specify March 31."
msgstr ""
"Spéçïfý ä mönth, däý, änd ýéär. Ìf ýöü äré ünsüré öf thé éxäçt däté, spéçïfý"
" ä däý thät ïs çlösé tö thé éstïmätéd stärt däté. För éxämplé, ïf ýöür "
"çöürsé wïll stärt néär thé énd öf Märçh, spéçïfý Märçh 31. Ⱡ'σяєм ιρѕυм "
"∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυя α∂ιριѕι¢ιηg єłιт, ѕє∂ ∂σ єιυѕмσ∂ тємρσя "
"ιη¢ι∂ι∂υηт υт łαвσяє єт ∂σłσяє мαgηα αłιqυα. υт єηιм α∂ мιηιм νєηιαм, qυιѕ "
"ησѕтяυ∂ єχєя¢ιтαтιση υłłαм¢σ łαвσяιѕ ηιѕι υт αłιqυιρ єχ єα ¢σммσ∂σ "
"¢σηѕєqυαт. ∂υιѕ αυтє ιяυяє ∂σłσя ιη яєρяєнєη∂єяιт ιη νσłυρтαтє νєłιт єѕѕє "
"¢ιłłυм ∂σłσяє єυ ƒυgιαт ηυłłα ραяιαтυя. єχ¢єρтєυя ѕιηт #"
#: templates/publisher/add_courserun_form.html
msgid "PACING TYPE"
msgstr "PÀÇÌNG TÝPÉ Ⱡ'σяєм ιρѕυм ∂σłσя #"
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Instructor-paced courses include individual assignments that have specific "
"due dates before the course end date."
msgstr ""
"Ìnstrüçtör-päçéd çöürsés ïnçlüdé ïndïvïdüäl ässïgnménts thät hävé spéçïfïç "
"düé dätés ßéföré thé çöürsé énd däté. Ⱡ'σяєм ιρѕυм ∂σłσя#"
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Self-paced courses do not have individual assignments that have specific due"
" dates before the course end date. All assignments are due on the course end"
" date."
msgstr ""
"Sélf-päçéd çöürsés dö nöt hävé ïndïvïdüäl ässïgnménts thät hävé spéçïfïç düé"
" dätés ßéföré thé çöürsé énd däté. Àll ässïgnménts äré düé ön thé çöürsé énd"
" däté. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυя α∂ιριѕι¢ιηg єłιт, ѕє∂ ∂σ "
"єιυѕмσ∂ тємρσя ιη¢ι∂ι∂υηт υт łαвσяє єт ∂σłσяє мαgηα αłιqυα. υт єηιм α∂ мιηιм"
" νєηιαм, qυιѕ ησѕтяυ∂ єχєя¢ιтαтιση υłłαм¢σ łαвσяιѕ ηιѕι υт αłιqυιρ єχ єα "
"¢σммσ∂σ ¢σηѕєqυαт. ∂υιѕ αυтє ιяυяє ∂σłσя ιη яєρяєнєη∂єяιт ιη νσłυρтαтє νєłιт"
" єѕѕє ¢ιłłυм ∂σłσяє єυ ƒυgιαт ηυłłα ραяιαтυя. єχ¢єρтєυя ѕιηт σ¢¢αє¢αт "
"¢υρι∂αтαт ηση ρяσι∂єηт, ѕυηт ιη ¢υłρα qυι σƒƒι¢ια ∂єѕєяυηт#"
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "COURSE END DATE"
msgstr "ÇÖÛRSÉ ÉND DÀTÉ Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт α#"
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid ""
"Specify a month, day, and year. If you are unsure of the exact date, specify"
" a day that is close to the estimated end date. For example, if your course "
"will end near the end of March, specify March 31."
msgstr ""
"Spéçïfý ä mönth, däý, änd ýéär. Ìf ýöü äré ünsüré öf thé éxäçt däté, spéçïfý"
" ä däý thät ïs çlösé tö thé éstïmätéd énd däté. För éxämplé, ïf ýöür çöürsé "
"wïll énd néär thé énd öf Märçh, spéçïfý Märçh 31. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт "
"αмєт, ¢σηѕє¢тєтυя α∂ιριѕι¢ιηg єłιт, ѕє∂ ∂σ єιυѕмσ∂ тємρσя ιη¢ι∂ι∂υηт υт "
"łαвσяє єт ∂σłσяє мαgηα αłιqυα. υт єηιм α∂ мιηιм νєηιαм, qυιѕ ησѕтяυ∂ "
"єχєя¢ιтαтιση υłłαм¢σ łαвσяιѕ ηιѕι υт αłιqυιρ єχ єα ¢σммσ∂σ ¢σηѕєqυαт. ∂υιѕ "
"αυтє ιяυяє ∂σłσя ιη яєρяєнєη∂єяιт ιη νσłυρтαтє νєłιт єѕѕє ¢ιłłυм ∂σłσяє єυ "
"ƒυgιαт ηυłłα ραяιαтυя. єχ¢єρтєυя ѕιηт σ¢¢αє¢α#"
#: templates/publisher/add_courserun_form.html
#: templates/publisher/course_run/edit_run_form.html
msgid "CERTIFICATE TYPE AND PRICE"
msgstr "ÇÉRTÌFÌÇÀTÉ TÝPÉ ÀND PRÌÇÉ Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕ#"
......@@ -2426,6 +2419,10 @@ msgstr ""
"σƒƒι¢ια ∂єѕєяυηт мσłłιт αη#"
#: templates/publisher/course_run/edit_run_form.html
msgid "COURSE PACING"
msgstr "ÇÖÛRSÉ PÀÇÌNG Ⱡ'σяєм ιρѕυм ∂σłσя ѕι#"
#: templates/publisher/course_run/edit_run_form.html
msgid "The Studio URL for this course run."
msgstr ""
"Thé Stüdïö ÛRL för thïs çöürsé rün. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєт#"
......
......@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-04 15:16+0500\n"
"POT-Creation-Date: 2017-05-05 13:13+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: static/js/catalogs-change-form.js
......
......@@ -87,51 +87,6 @@
</div>
</div>
<div class="field-title">{% trans "COURSE START DATE" %}</div>
<div class="row">
<div class="col col-6 help-text">
<ul>
<li>
{% trans "Start on a Tuesday, Wednesday, or Thursday." %}
</li>
<li>
{% trans "Avoid major U.S. holidays." %}
</li>
<li>
{% trans "Specify a month, day, and year. If you are unsure of the exact date, specify a day that is close to the estimated start date. For example, if your course will start near the end of March, specify March 31." %}
</li>
</ul>
</div>
<div class="col col-6">
<label class="field-label ">{{ run_form.start.label_tag }} <span class="required">*</span></label>
{{ run_form.start }}
</div>
</div>
<div class="field-title">{% trans "COURSE END DATE" %}</div>
<div class="row">
<div class="col col-6 help-text">
{% trans "Specify a month, day, and year. If you are unsure of the exact date, specify a day that is close to the estimated end date. For example, if your course will end near the end of March, specify March 31." %}
</div>
<div class="col col-6">
<label class="field-label ">{{ run_form.end.label_tag }} <span class="required">*</span></label>
{{ run_form.end }}
</div>
</div>
<div class="field-title">{% trans "COURSE PACING" %}</div>
<div class="row">
<div class="col col-6 help-text">
<p>{% trans "Instructor-paced courses include individual assignments that have specific due dates before the course end date." %} </p>
<p>{% trans "Self-paced courses do not have individual assignments that have specific due dates before the course end date. All assignments are due on the course end date." %}</p>
</div>
<div class="col col-6">
<label class="field-label">{{ run_form.pacing_type.label_tag }} <span class="required">*</span></label>
<div class="checkbox-inline">{{ run_form.pacing_type }}</div>
</div>
</div>
<div class="field-title">{% trans "COURSE NUMBER" %}</div>
<div class="row">
<div class="col col-6 help-text">
......@@ -177,10 +132,20 @@
</div>
<div class="course-form">
<div class="course-information action-buttons">
<a href="{% url 'publisher:publisher_courses' %}">{% trans "Cancel" %}</a>
<button class="btn-brand btn-base btn-save" type="submit">
{% trans "Create New Course" %}
</button>
<div class="field">
<label class="field-label label-inline">
{{ course_form.add_new_run }}
<span class="field-input-label">
{% trans "I want to add a run to this course at this time" %}
</span>
</label>
</div>
<div class="action-buttons">
<a href="{% url 'publisher:publisher_courses' %}">{% trans "Cancel" %}</a>
<button class="btn-brand btn-base btn-save" type="submit">
{% trans "Create New Course" %}
</button>
</div>
</div>
</div>
......@@ -199,7 +164,3 @@
<script src="{% static 'js/publisher/modal-screen.js' %}"></script>
<script src="{% static 'js/publisher/course-image.js' %}"></script>
{% endblock %}
{% block js_without_compress %}
{{ run_form.media }}
{% endblock %}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment