Skip to content

Commit

Permalink
#476 - fix line length issues
Browse files Browse the repository at this point in the history
  • Loading branch information
alexlittle committed Nov 14, 2019
1 parent afdf939 commit 8e36525
Show file tree
Hide file tree
Showing 16 changed files with 223 additions and 83 deletions.
13 changes: 10 additions & 3 deletions content/views.py
Expand Up @@ -15,7 +15,8 @@
from content.forms import MediaEmbedHelperForm

'''
Processes the media file found at the given URL and provides the embed code and sample images for embedding into Moodle.
Processes the media file found at the given URL and provides the embed code
and sample images for embedding into Moodle.
NOTE: for this to run you will need to have ffmpeg and avprobe installed
Expand All @@ -31,7 +32,9 @@ def media_embed_helper(request):
if form.is_valid():
media_url = form.cleaned_data.get("media_url")
media_guid = str(uuid.uuid4())
media_local_file = os.path.join(settings.COURSE_UPLOAD_DIR, 'temp', media_guid)
media_local_file = os.path.join(settings.COURSE_UPLOAD_DIR,
'temp',
media_guid)
download_error = None
processed_media = {}

Expand All @@ -40,7 +43,11 @@ def media_embed_helper(request):
media_url, media_local_file, download_error, processed_media)

download_error, processed_media = process_media_file(
media_guid, media_url, media_local_file, download_error, processed_media)
media_guid,
media_url,
media_local_file,
download_error,
processed_media)

# try to delete the temp media file
try:
Expand Down
12 changes: 9 additions & 3 deletions gamification/urls.py
Expand Up @@ -3,9 +3,15 @@
from gamification import views as oppia_gamification_views

urlpatterns = [
url(r'^leaderboard/export/server$', oppia_gamification_views.leaderboard_export, name="oppia_gamification_leaderboard_export_server"),
url(r'^leaderboard/export/(?P<course_id>\d+)/$', oppia_gamification_views.leaderboard_export, name="oppia_gamification_leaderboard_export_course"),
url(r'^leaderboard/export/server$',
oppia_gamification_views.leaderboard_export,
name="oppia_gamification_leaderboard_export_server"),
url(r'^leaderboard/export/(?P<course_id>\d+)/$',
oppia_gamification_views.leaderboard_export,
name="oppia_gamification_leaderboard_export_course"),

url(r'^points/course/(?P<course_id>\d+)/$', oppia_gamification_views.edit_course_gamification, name="oppia_gamification_edit_course"),
url(r'^points/course/(?P<course_id>\d+)/$',
oppia_gamification_views.edit_course_gamification,
name="oppia_gamification_edit_course"),

]
2 changes: 1 addition & 1 deletion gamification/xml_writer.py
Expand Up @@ -105,7 +105,7 @@ def add_events_or_remove_node(self, node, events):
node.appendChild(event_node)

else:
# if there are no events set, we can remove the empty gamification
# if there are no events set, we can remove the empty gamification
# node
self.remove_node(node)

Expand Down
8 changes: 6 additions & 2 deletions integrations/dhis/urls.py
Expand Up @@ -5,6 +5,10 @@

urlpatterns = [
url(r'^$', oppia_dhis_views.home, name="oppia_integrations_dhis_home"),
url(r'^export/latest/$', oppia_dhis_views.export_latest, name="oppia_integrations_dhis_export_latest"),
url(r'^export/(?P<year>\d+)/(?P<month>\d+)$', oppia_dhis_views.export_month, name="oppia_integrations_dhis_export_month")
url(r'^export/latest/$',
oppia_dhis_views.export_latest,
name="oppia_integrations_dhis_export_latest"),
url(r'^export/(?P<year>\d+)/(?P<month>\d+)$',
oppia_dhis_views.export_month,
name="oppia_integrations_dhis_export_month")
]
22 changes: 17 additions & 5 deletions integrations/dhis/views.py
Expand Up @@ -18,7 +18,9 @@
@staff_member_required
def home(request):
# get all the months/years that trackers exist for
monthly_exports = Tracker.objects.all().datetimes('submitted_date', 'month', 'DESC')
monthly_exports = Tracker.objects.all().datetimes('submitted_date',
'month',
'DESC')
return render(request, 'integrations/dhis/index.html',
{'monthly_exports': monthly_exports})

Expand Down Expand Up @@ -54,12 +56,22 @@ def create_csv(year, month):
data = tablib.Dataset(*data, headers=headers)

# get all the usernames for users who've had trackers or quizzes submitted
users = Tracker.objects.filter(submitted_date__month=month, submitted_date__year=year).values('user').distinct()
users = Tracker.objects.filter(submitted_date__month=month,
submitted_date__year=year).values('user').distinct()

for user in users:
activities_completed = Tracker.objects.filter(submitted_date__month=month, submitted_date__year=year, user__id=user['user'], completed=True).count()
points_earned = Tracker.objects.filter(submitted_date__month=month, submitted_date__year=year, user__id=user['user']).aggregate(Sum('points'))['points__sum']
quizzes_passed = Tracker.objects.filter(submitted_date__month=month, submitted_date__year=year, user__id=user['user'], completed=True, type='quiz').count()
activities_completed = Tracker.objects.filter(submitted_date__month=month,
submitted_date__year=year,
user__id=user['user'],
completed=True).count()
points_earned = Tracker.objects.filter(submitted_date__month=month,
submitted_date__year=year,
user__id=user['user']).aggregate(Sum('points'))['points__sum']
quizzes_passed = Tracker.objects.filter(submitted_date__month=month,
submitted_date__year=year,
user__id=user['user'],
completed=True,
type='quiz').count()
data.append(
(
User.objects.get(pk=user['user']).username,
Expand Down
11 changes: 6 additions & 5 deletions oppia/views.py
Expand Up @@ -167,8 +167,8 @@ def render_courses_list(request, courses, params=None):
except ValueError:
page = 1

course_stats = list(UserCourseSummary.objects.filter(course__in=courses) \
.values('course') \
course_stats = list(UserCourseSummary.objects.filter(course__in=courses)
.values('course')
.annotate(distinct=Count('user'),
total=Sum('total_downloads')))

Expand All @@ -187,7 +187,7 @@ def render_courses_list(request, courses, params=None):
course.distinct_downloads = stats['distinct']
course.total_downloads = stats['total']
# remove the element to optimize next searches
course_stats.remove(stats)
course_stats.remove(stats)
continue

params['page'] = courses
Expand Down Expand Up @@ -330,7 +330,7 @@ def generate_graph_data(dates_types_stats, is_monthly=False):

for date in dates_types_stats:
if is_monthly:
# depending if it is monthly or daily, we parse differently the
# depending if it is monthly or daily, we parse differently the
# day "tag"
day = datetime.date(month=date['month'], year=date['year'], day=1)
else:
Expand Down Expand Up @@ -431,7 +431,8 @@ def recent_activity_detail(request, course_id):
end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d")
trackers = Tracker.objects.filter(course=course,
tracker_date__gte=start_date,
tracker_date__lte=end_date).order_by('-tracker_date')
tracker_date__lte=end_date) \
.order_by('-tracker_date')
else:
trackers = Tracker.objects.filter(course=course).order_by('-tracker_date')
else:
Expand Down
15 changes: 10 additions & 5 deletions profile/forms/profile.py
Expand Up @@ -13,12 +13,17 @@


class ProfileForm(forms.Form):
api_key = forms.CharField(widget=forms.TextInput(attrs={'readonly': 'readonly'}),
required=False, help_text=_(u'You cannot edit your API Key.'))
username = forms.CharField(widget=forms.TextInput(attrs={'readonly': 'readonly'}),
required=False, help_text=_(u'You cannot edit your username.'))
api_key = forms.CharField(widget=forms.TextInput(attrs={'readonly':
'readonly'}),
required=False,
help_text=_(u'You cannot edit your API Key.'))
username = forms.CharField(widget=forms.TextInput(attrs={'readonly':
'readonly'}),
required=False,
help_text=_(u'You cannot edit your username.'))
email = forms.CharField(validators=[validate_email],
error_messages={'invalid': _(u'Please enter a valid e-mail address.')},
error_messages={'invalid':
_(u'Please enter a valid e-mail address.')},
required=False)
password = forms.CharField(widget=forms.PasswordInput,
required=False,
Expand Down
67 changes: 50 additions & 17 deletions profile/views.py
Expand Up @@ -26,9 +26,17 @@

from oppia import emailer
from oppia.models import Points, Award, Tracker, Activity
from oppia.permissions import get_user, get_user_courses, can_view_course, can_edit_user
from profile.forms import LoginForm, RegisterForm, ResetForm, ProfileForm, UploadProfileForm, \
UserSearchForm, DeleteAccountForm
from oppia.permissions import get_user, \
get_user_courses, \
can_view_course, \
can_edit_user
from profile.forms import LoginForm, \
RegisterForm, \
ResetForm, \
ProfileForm, \
UploadProfileForm, \
UserSearchForm, \
DeleteAccountForm
from profile.models import UserProfile
from quiz.models import Quiz, QuizAttempt, QuizAttemptResponse
from reports.signals import dashboard_accessed
Expand Down Expand Up @@ -93,7 +101,8 @@ def login_view(request):


def register(request):
self_register = SettingProperties.get_int(constants.OPPIA_ALLOW_SELF_REGISTRATION, settings.OPPIA_ALLOW_SELF_REGISTRATION)
self_register = SettingProperties.get_int(constants.OPPIA_ALLOW_SELF_REGISTRATION,
settings.OPPIA_ALLOW_SELF_REGISTRATION)
if not self_register:
raise Http404

Expand Down Expand Up @@ -274,11 +283,13 @@ def user_activity(request, user_id):

dashboard_accessed.send(sender=None, request=request, data=None)

cohort_courses, other_courses, all_courses = get_user_courses(request, view_user)
cohort_courses, other_courses, all_courses = get_user_courses(request,
view_user)

courses = []
for course in all_courses:
course_stats = UserCourseSummary.objects.filter(user=view_user, course=course)
course_stats = UserCourseSummary.objects.filter(user=view_user,
course=course)
if course_stats:
course_stats = course_stats[0]
data = {'course': course,
Expand All @@ -301,8 +312,13 @@ def user_activity(request, user_id):

courses.append(data)

order_options = ['course_display', 'no_quizzes_completed', 'pretest_score',
'no_activities_completed', 'no_points', 'no_badges', 'no_media_viewed']
order_options = ['course_display',
'no_quizzes_completed',
'pretest_score',
'no_activities_completed',
'no_points',
'no_badges',
'no_media_viewed']
default_order = 'course_display'

ordering = request.GET.get('order_by', default_order)
Expand All @@ -320,7 +336,10 @@ def user_activity(request, user_id):
end_date = timezone.now()

course_ids = list(chain(cohort_courses.values_list('id', flat=True), other_courses.values_list('id', flat=True)))
activity = get_tracker_activities(start_date, end_date, view_user, course_ids=course_ids)
activity = get_tracker_activities(start_date,
end_date,
view_user,
course_ids=course_ids)

return render(request, 'profile/user-scorecard.html',
{'view_user': view_user,
Expand All @@ -338,7 +357,8 @@ def user_course_activity_view(request, user_id, course_id):
dashboard_accessed.send(sender=None, request=request, data=None)
course = can_view_course(request, course_id)

act_quizzes = Activity.objects.filter(section__course=course, type=Activity.QUIZ).order_by('section__order', 'order')
act_quizzes = Activity.objects.filter(section__course=course,
type=Activity.QUIZ).order_by('section__order', 'order')

quizzes_attempted = 0
quizzes_passed = 0
Expand All @@ -347,7 +367,8 @@ def user_course_activity_view(request, user_id, course_id):
quizzes = []
for aq in act_quizzes:
try:
quizobjs = Quiz.objects.filter(quizprops__value=aq.digest, quizprops__name="digest")
quizobjs = Quiz.objects.filter(quizprops__value=aq.digest,
quizprops__name="digest")
if quizobjs.count() <= 0:
continue
else:
Expand Down Expand Up @@ -404,10 +425,18 @@ def user_course_activity_view(request, user_id, course_id):
start_date = timezone.now() - datetime.timedelta(days=31)
end_date = timezone.now()

activity = get_tracker_activities(start_date, end_date, view_user, course=course)

order_options = ['quiz_order', 'no_attempts', 'max_score', 'min_score',
'first_score', 'latest_score', 'avg_score']
activity = get_tracker_activities(start_date,
end_date,
view_user,
course=course)

order_options = ['quiz_order',
'no_attempts',
'max_score',
'min_score',
'first_score',
'latest_score',
'avg_score']
default_order = 'quiz_order'
ordering = request.GET.get('order_by', default_order)
inverse_order = ordering.startswith('-')
Expand Down Expand Up @@ -512,7 +541,8 @@ def upload_view(request):

def get_query(query_string, search_fields):
''' Returns a query, that is a combination of Q objects. That combination
aims to search keywords within a model by testing the given search fields.
aims to search keywords within a model by testing the given search
fields.
'''
query = None # Query to search in every field
Expand Down Expand Up @@ -557,7 +587,10 @@ def search_users(request):
query_string = None
if ('q' in request.GET) and request.GET['q'].strip():
query_string = request.GET['q']
filter_query = get_query(query_string, ['username', 'first_name', 'last_name', 'email', ])
filter_query = get_query(query_string, ['username',
'first_name',
'last_name',
'email', ])
users = users.filter(filter_query)

ordering = request.GET.get('order_by', None)
Expand Down
8 changes: 4 additions & 4 deletions quiz/api/resources.py
Expand Up @@ -28,12 +28,12 @@

class QuizResource(ModelResource):
questions = fields.ToManyField('quiz.api.resources.QuizQuestionResource',
'quizquestion_set',
related_name='quiz',
'quizquestion_set',
related_name='quiz',
full=True)
props = fields.ToManyField('quiz.api.resources.QuizPropsResource',
'quizprops_set',
related_name='quiz',
'quizprops_set',
related_name='quiz',
full=True)
owner = fields.ForeignKey(UserResource, 'owner')

Expand Down
5 changes: 4 additions & 1 deletion quiz/migrations/0002_auto_20150524_0025.py
Expand Up @@ -15,7 +15,10 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='quizattempt',
name='quiz',
field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, default=None, to='quiz.Quiz', null=True),
field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL,
default=None,
to='quiz.Quiz',
null=True),
preserve_default=True,
),
]
12 changes: 9 additions & 3 deletions quiz/migrations/0006_auto_20180518_1803.py
Expand Up @@ -17,16 +17,22 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='question',
name='owner',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL),
field=models.ForeignKey(null=True,
on_delete=django.db.models.deletion.SET_NULL,
to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='quiz',
name='owner',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL),
field=models.ForeignKey(null=True,
on_delete=django.db.models.deletion.SET_NULL,
to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='response',
name='owner',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL),
field=models.ForeignKey(null=True,
on_delete=django.db.models.deletion.SET_NULL,
to=settings.AUTH_USER_MODEL),
),
]
6 changes: 4 additions & 2 deletions tests/api/test_course_publish.py
Expand Up @@ -17,8 +17,10 @@ class CoursePublishResourceTest(TestCase):
def setUp(self):
self.client = Client()
self.url = '/api/publish/'
self.course_file_path = './oppia/fixtures/reference_files/ncd1_test_course.zip'
self.video_file_path = './oppia/fixtures/reference_files/sample_video.m4v'
self.course_file_path = \
'./oppia/fixtures/reference_files/ncd1_test_course.zip'
self.video_file_path = \
'./oppia/fixtures/reference_files/sample_video.m4v'

# test only POST is available
def test_no_get(self):
Expand Down

0 comments on commit 8e36525

Please sign in to comment.