Example #1
0
 def post(self, request, username):
     message = {}
     password = request.POST.get('password','')
     user = request.user
     student = Student.objects.get(user=user)
     
     if password:
         authentication = DionysosAuthentication(username=user.username, password=password, registration_number=student.am, first_name=user.first_name, last_name=user.last_name)
         if authentication.is_valid():
             user.set_password(password)
             user.save()
         else:
             message = {'status':2, 'msg':u'Ο νέος κωδικός δεν αντιστοιχεί σε αυτόν που χρησιμοποιείτε στον Διόνυσο, η αλλαγή ακυρώθηκε'}
     else:
         message = {'status':2, 'msg':u'Ο κωδικός σας δεν μπορεί να είναι κενός'}
     
     if not message:    
         message = {'status':1, 'msg':u'Η αλλαγή κωδικού στον Διογένη ολοκληρώθηκε'}
     context =   {
                 'message':message,
                 }
     return render(request, 'students/settings.html', context)
Example #2
0
def signup(request):
    '''
    Signup form for students.
    
    Uses DionysosAuthentication for retrieving student's data from dionysos.teilar.gr
    '''
    if request.method == 'POST' and request.is_ajax():
        json_data = simplejson.loads(request.raw_post_data)
        data = {}
        
        try:
            action = json_data['action']
        except KeyError:
            msg = u"Παρουσιάστηκε σφάλμα κατά την αποστολή των δεδομένων"
            data = {'status':2, 'msg':msg}
        
        if action == 'authenticate':
            try:
                username = json_data['username'].strip()
                password = json_data['password'].strip()
                registration_number = json_data.get('registration-number', '')
                first_name = json_data.get('first-name', '')
                last_name = json_data.get('last-name', '')
            except KeyError:
                msg = u"Παρουσιάστηκε σφάλμα κατά την αποστολή των δεδομένων"
                data = {'status':2, 'msg':msg}
            
            form = StudentSignupForm({'username':username,'password':password})
            if form.is_valid():
                if registration_number:
                    authentication = DionysosAuthentication(username=username, password=password, registration_number=registration_number, first_name=first_name, last_name=last_name)
                else:
                    authentication = DionysosAuthentication(username=username, password=password)
                if authentication.is_valid():
                    credentials = authentication.valid_credentials
                    try:
                        user = User.objects.get(username=credentials['username'])
                    except:
                        user = User(
                            username = credentials['username'],
                            first_name = credentials['first_name'],
                            last_name = credentials['last_name'],
                            email = credentials['username'] + '@emptymail.com'
                        )
                        user.set_password(credentials['password'])
                        user.save()
                        
                    schools = School.objects.order_by('title')
                    schools = map(school_info, schools)
                    data = {'status':1, 'action':action, 'credentials':credentials, 'schools':schools}
                else:
                    msg = u"Λάθος στοιχεία, θυμηθείτε αν αλλάξατε τον κωδικό σας"
                    data = {'action':action, 'status':2, 'msg':msg}
            else:
                msg = u"Συμπληρώστε σωστά τα στοιχεία σας"
                data = {'action':action, 'status':2, 'msg':msg}
        
        if action == 'signup':
            #import ipdb; ipdb.set_trace();
            try:
                student = json_data['student']
                school_id = json_data['school_id']
            except KeyError:
                msg = u"Παρουσιάστηκε σφάλμα κατά την αποστολή των δεδομένων"
                data = {'status':2, 'msg':msg}
            
            school = School.objects.get(hash_id=school_id)
            user = User.objects.get(username=student['username'], last_name=student['last_name'], first_name=student['first_name'])
            try:
                student = Student(
                    user = user,
                    am = student['registration_number'],
                    introduction_year = student['introduction_year'],
                    semester = student['semester']
                )
                student.save()
                student.schools.add(school)
                student.save()
                
                subscriptions = Subscription.objects.filter(student=student)
                subscriptions.delete()
                
                if student.user is not None and student.user.is_active:
                    msg = u"H εγγραφή ολοκληρώθηκε, μπορείτε να κάνετε login με τα στοιχεία σας από τον Διόνυσο"
                    data = {"status": 1, "msg": msg}
            except IntegrityError:
                msg = u"Έχετε κάνει ήδη εγγραφή, δοκιμάστε να κάνετε login"
                data = {"status": 1, "msg": msg}
                    
        if not data:
            error_msg = u"Παρουσιάστηκε σφάλμα κατά την αποστολή των δεδομένων"
            data = {'status':2, 'msg':error_msg}
        data = simplejson.dumps(data)
        return HttpResponse(data, mimetype='application/javascript')
    else:
        context = {}
        return render(request, 'authentication/signup.html', context)