Skip to content

Commit

Permalink
Added log.info in all locations where sga.py is chaning state
Browse files Browse the repository at this point in the history
of StudentModule
  • Loading branch information
Amir Qayyum khan committed Apr 7, 2015
1 parent 6c600a9 commit 2de749a
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 11 deletions.
28 changes: 27 additions & 1 deletion edx_sga/sga.py
Original file line number Diff line number Diff line change
Expand Up @@ -243,14 +243,22 @@ def get_student_data():
if not submission:
continue
user = user_by_anonymous_id(student.student_id)
module, _ = StudentModule.objects.get_or_create(
module, created = StudentModule.objects.get_or_create(
course_id=self.course_id,
module_state_key=self.location,
student=user,
defaults={
'state': '{}',
'module_type': self.category,
})
if created:
log.info(
"Init for course:%s module:%s student:%s ",
module.course_id,
module.module_state_key,
module.student.username
)

state = json.loads(module.state)
score = self.get_score(student.student_id)
approved = score is not None
Expand Down Expand Up @@ -380,6 +388,12 @@ def staff_upload_annotated(self, request, suffix=''):
default_storage.save(path, File(upload.file))
module.state = json.dumps(state)
module.save()
log.info(
"staff_upload_annotated for course:%s module:%s student:%s ",
module.course_id,
module.module_state_key,
module.student.username
)
return Response(json_body=self.staff_grading_data())

@XBlock.handler
Expand Down Expand Up @@ -451,6 +465,12 @@ def enter_grade(self, request, suffix=''):
state['comment'] = request.params.get('comment', '')
module.state = json.dumps(state)
module.save()
log.info(
"enter_grade for course:%s module:%s student:%s",
module.course_id,
module.module_state_key,
module.student.username
)

return Response(json_body=self.staff_grading_data())

Expand All @@ -469,6 +489,12 @@ def remove_grade(self, request, suffix=''):
state['annotated_timestamp'] = None
module.state = json.dumps(state)
module.save()
log.info(
"remove_grade for course:%s module:%s student:%s",
module.course_id,
module.module_state_key,
module.student.username
)
return Response(json_body=self.staff_grading_data())

def is_course_staff(self):
Expand Down
48 changes: 38 additions & 10 deletions edx_sga/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,9 @@ def make_one(self, display_name=None, **kw):
block.start = datetime.datetime(2010, 5, 12, 2, 42, tzinfo=pytz.utc)
return block

def make_student(self, block, name, **state):
def make_student(self, block, name, make_state=True, **state):
answer = {}
module = None
for key in ('sha1', 'mimetype', 'filename'):
if key in state:
answer[key] = state.pop(key)
Expand All @@ -85,12 +86,13 @@ def make_student(self, block, name, **state):
user.save()
profile = UserProfile(user=user, name=name)
profile.save()
module = StudentModule(
module_state_key=block.location,
student=user,
course_id=self.course_id,
state=json.dumps(state))
module.save()
if make_state:
module = StudentModule(
module_state_key=block.location,
student=user,
course_id=self.course_id,
state=json.dumps(state))
module.save()

anonymous_id = anonymous_id_for_user(user, self.course_id)
item = StudentItem(
Expand All @@ -111,13 +113,19 @@ def make_student(self, block, name, **state):

self.addCleanup(item.delete)
self.addCleanup(profile.delete)
self.addCleanup(module.delete)
self.addCleanup(user.delete)

if make_state:
self.addCleanup(module.delete)
return {
'module': module,
'item': item,
'submission': submission
}

return {
'module': module,
'item': item,
'submission': submission,
'submission': submission
}

def personalize(self, block, module, item, submission):
Expand Down Expand Up @@ -389,6 +397,26 @@ def test_get_staff_grading_data(self):
self.assertEqual(assignments[1]['annotated'], None)
self.assertEqual(assignments[1]['comment'], u'')

@mock.patch('edx_sga.sga.log')
def test_assert_logging_when_student_module_created(self, mocked_log):
block = self.make_one()
self.make_student(
block,
"tester",
make_state=False,
filename="foo.txt",
score=10,
annotated_filename="foo_corrected.txt",
comment="Good work!"
)
block.staff_grading_data()
mocked_log.info.assert_called_with(
"Init for course:%s module:%s student:%s ",
block.course_id,
block.location,
'tester'
)

def test_enter_grade_instructor(self):
block = self.make_one()
block.is_instructor = lambda: True
Expand Down

0 comments on commit 2de749a

Please sign in to comment.