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)
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)