Fall 2014 Spring 2015 - lyhaolmu/LMU-Digital-Learning-Sys GitHub Wiki
Work done by the week end of Sept/19/2014
- Literature review 1--the Background of ITS and Development
Work done by the week end of Sept/26/2014
- Literature review 2--Previous studies and methods for measuring students’ performance by the use of ITS
Week end by Oct/10/2014
- Create timeline for the project.
- Search the following problems:
- Where to put the start point in the codes indicating that the software is begun to be used is reasonable;
- How to know whether users go away for other issues or still learn between two recorded time;
- Any other aspects that are used by researchers to evaluate user's performance involving a digital learning environment;
- How to implement the function that codes can be modified by high-level users in a pop-up windows while they play the software;
- Write down any questions come to mind and prepare for the meet with professionals in two weeks
Week end by Oct/24/2014
- Literature review 3 and summary-- How to investigate students’ performance.
- By inserting login and register function, users’ data will be kept by the index of users’ names.
- Thus, we need to use one computer in our lab as server and need to use database. (MYSQL?)
- Once the user login, it will be regarded as the starting point for data being recorded.
- The log file can be recorded by every one\two\five minutes(s), depending on our software(How often there might be an action from the user).
- This will be adjusted after the additional contents are added to the software.
- By inserting login and register function, users’ data will be kept by the index of users’ names.
Week end by Oct/31/2014
- Complete building the login page:
- HTML code for the home page is done;
- Create a database in the MySQL
- (This database will store the username and password for every visitor to our website)
Week end by Nov/14/2014
- Complete building the float windows with explanations for the conceptual clustering simulation tool;
- Based on the current edition, float windows for explaining the software and the algorithm are inserted.
- New web pages might be added according to the contents.
Week end by Nov/21/2014
- Decide to use Django to build website. Start to learn Django from the easiest tutorial Django Book;
- Learn the Model--Viewer--Controller(MVC) architectural pattern that Django follows;
- Learn basic "views" "URLconfs" "templates" "models" and "forms";
- Complete the exercises from the tutorial about models, views and templates.
Week end by Nov/28/2014
- Learn Django Users, Sessions and Registration;
Week end by Dec/5/2014
- Set up database sqlite3;
- Learn to use django admin;
- Learn to manage static files in django, including images, css and js. I follow the Django 1.7 tutorial of managing static files. One thing should be paid attention to:
- This strategy is suitable for development only. Not suitable for production.
- Complete functions for user registration and user login;
- Complete the front-end for registrations page and login page;
- Integrate the conceptual clustering simulation tool to the website. The tool can only be accessible for authenticated users by using the django decorator "
@login_required".
Week end by Dec/12/2014
- Build models for users.
- Create "StudentFile" and "StudentLog" for users.
Weed end by Dec/19/2014
- Complete logging out function;
- Complete the front-end for logging out page and the navigation page;
- User will be directed to navigation page after logging in.
- The navigation page displays five parts--"Concept", "Class Diagram", "Sequence Diagram", "Simulation" and "Codes";
- "Concept" is planed to show basic knowledge related to COBWEB;
- "Class Diagram" is planed to show the class diagram of COBWEB;
- Plan to make it animate -- each class should be able to direct users to the corresponding codes.
- "Sequence Diagram" is planed to show the sequence diagram of COBWEB;
- Plan to make it animate -- similar to the class diagram.
- "Simulation" corresponds to the conceptual clustering simulation tool;
- "Codes" is planed to show the source codes of COBWEB;
- Plan to make it dynamic -- the codes should be able to be modified by advanced users here and this page should be able to display the changes accordingly.
- Learn basic python and css and HTML of front-end from "Codeacademy.com" as complement.
Weed end by Dec/26/2014
- Complete the framework of "Concept";
- Partly complete the contents in the "Concept" section;
- Learn basic Javascript for an interactive webpage from "Codeacademy.com".
Weed end by Jan/2/2015
-
Replace the default template path for "Log In" and "Log Out" module(the default should be in the folder named "registration") within "template" folder. This can be done by modifying two parts:
- In the "url.py", the templates for "login" and "logout" should be specified or the system will search the templates within the "registration" folder under the "templates" folder. The "template_name" is the keyword that should be added and the format is similar to:
(r'^accounts/login/$', login, {'template_name': 'login.html'}), (r'^accounts/logout/$', logout, {'template_name': 'logged_out.html'}),- In the "settings.py", make sure the searching paths for the application templates are added to the "TEMPLATE_DIRS". To be more easily maintained, relative paths are used instead of absolute paths. The format is similar to:
TEMPLATE_DIRS = ( os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'WebPage/templates'), ) -
Fix the problem of "login_required". The problem is that the page will be directed to the "log in" page after a new user successfully registers. The correct logic should direct the new user to the navigation page after he registers for the first time. The reason for this is that I failed to authorize the newly registered user in the "register" of "views.py". This is solved by adding "authenticate" function in the "register" view.
-
Fix the problem of visible password in "log in" page. In the template "login.html", replace
<input type="text">with<input type="password">will make password invisible. -
Rewrite the model for users. "StudentLog" will keep the log files associated to the build-in model "User".
-
Every time the model is changed, we should rerun the following commands,
python manage.py makemigrationsto create migrations for those changespython manage.py migrateto apply those changes to the database. Django 1.7 Tutorial
-
Associate "StudentLog" with "User" by the "Foreign Key" field.
-
Be sure to adjust these two modification to the project in order to make the rewritten model validate:
-
Import "User" model into "models.py" because my model "StudentLog" now is associated to the build-in model "User". It can be done by adding
"
from django.contrib.auth.models import User". -
Be sure to register the model in "admin.py" (in the same apps folder where the models.py is placed) if the model name is changed or new model is created. This can be done by adding
"
from UserLog.models import StudentLog admin.site.register(StudentLog)"
-
-
Weed end by Jan/9/2015
-
Extend User Creation Form. The default user creation form only displays username and password. I need the email address, first name and the last name besides username and password. I follow the tutorial video from Mike Hibbert.
- My extended form is attached here:
from django import forms from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm class MyRegistrationForm(UserCreationForm): email = forms.EmailField(required = True) first_name = forms.CharField(required=True) last_name = forms.CharField(required=True) class Meta: model = User fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2') def save(self, commit = True): user = super(MyRegistrationForm, self).save(commit = False) user.email = self.cleaned_data['email'] user.first_name = self.cleaned_data['first_name'] user.last_name = self.cleaned_data['last_name'] if commit: user.save() return user - Be sure to adjust the following two modifications to the project in order to use the new form "
MyRegistrationForm".- Import this new form into the "
views.py" where the new form is used; - Replace the "
UserCreationForm" with "MyRegistrationForm".
- Import this new form into the "
- My extended form is attached here:
-
Reorganize the project layout
- The project layout should have been set at the very beginning before building up the website. I kept working on my original layout until this week when I realized that I need to reorganize my project to be more logic(separating those codes which implement a relatively independent function. This is the idea of making apps reusable from Django). I did a bit of research about django project layout and found Frank Wiles's is helpful to me.
- Reorganize project layout in the middle is risky. I don't suggest it unless you have to.
Weed end by Jan/16/2015
- Building up the pages of "Class Diagram" and "Sequence Diagram";
- Add navigation bar for the simulation part.
Weed end by Jan/23/2015
- Add and animate explanations for the "Concept" part;
- Research the definition of "active" and "inactive" user activity.