I have been trying to cleanly write a for loop that includes conditionals to print 1. user results and 2. if user results do not exist, print pending assessments (tasks).
I'm currently taking this thing for a loop without end result (meaning I cannot figure this out). Essentially the goal is: So a user can know what they have completed and what remains to be done.
Currently all_assessments prints out a list of all the existing assessment names and text.
all_assessments = [<Assessment(name='Becoming a Leader', text='better decisions')>, <Assessment(name='Good work', text='working on these skills')>, <Assessment(name='Teaching NTS', text='Series 1.1')>]
while all_results prints out all results of every user in a list. Shown here:
all_results [<Assessment_Result(owner='<User(username ='baseball', password='...', firstname ='Jenny', lastname ='Jen', email='dance@aol.com')>', assessment='<Assessment(name='Becoming a Leader', text='better decisions')>')>, <Assessment_Result(owner='<User(username ='donald', password='...', firstname ='Drew', lastname ='James', email='cool@gmail.com')>', assessment='<Assessment(name='Good work', text='working on these skills')>')>]
and finally, user_results prints results found by username (which is based on whomever is logged in).
retrieved by username: [<Assessment_Result(owner='<User(username ='dorisday', password='..', firstname ='Doris', lastname ='Day', email='dorisday@gmail.com')>', assessment='<Assessment(name='Becoming a Leader', text='better decisions')>')>, <Assessment_Result(owner='<User(username ='dorisday', password='..', firstname ='Doris', lastname ='Day', email='dorisday@gmail.com')>', assessment='<Assessment(name='Good work', text='working on these skills')>')>]
Views.py
def view_assessments(request):
owner = authenticated_userid(request)
print 'login owner', owner
if owner is None:
raise HTTPForbidden()
all_assessments = api.retrieve_assessments()
print 'these are all the assessments:', all_assessments
print 'and type:', type(all_assessments)
all_results = api.retrieve_assessment_results() # all the assessment results in a list
user_results = api.retrieve_assessment_byusername(owner) #all completed results of user
for x in all_assessments:
print 'all assessments', x
for a in user_results:
#print 'Done ', a.assessment # seperates each result (assessment object)
done = a.assessment.name
if done is not None: #length greater than zero
print 'done', done
else:
print 'pending', x #doesn't work: supposed to print remaining assessments
return {'assessments': all_assessments, 'assessment_results': all_results, 'loggedin': owner, 'user_results': user_results}
Jinja2 Template
<div class="container">
<table class="table table-hover">
<thead class='tablename'>
<h2> Pending Assessments </h2>
<tr>
<td> </td> <!--blank on purpose-->
<td> Assessment </td>
<td> Details </td>
</tr>
</thead>
<tbody>
<tr>
{% for a in assessments|sort(attribute='id') %}
<td><a href="{{ '/assessments/%s'%a.id|urlencode }}"><button type='button' class='btn btn-primary btn-default'> Start</button></a></td>
<td>{{ a.name }}</td>
<td><i>{{ a.text }}</i></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="container">
<table class="table table-striped">
<thead class='tablename'>
<h2>Completed Assessments</h2>
<tr>
<td> Assessment </td>
<td> Details </td>
<td> Date </td>
</tr>
</thead>
<tbody>
<tr>
{% for x in assessment_results|sort(attribute='id') %}
{% if x.owner.username == loggedin %}
<td>{{ x.assessment.name }}</td>
<td><i>{{ x.assessment.text }}<i></td>
<td>{{ x.created_on }}</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
</div>
Aucun commentaire:
Enregistrer un commentaire