def user_submit(request): if not request.user.is_authenticated: raise Http404 try: if request.POST.get('id'): profile=UserProfile.objects.get(user_id=request.POST['id']) user=User.objects.get(id=request.POST['id']) else: profile=UserProfile() user=User() if request.POST['subscription_status']=='Registered': user.is_active=True else: user.is_active=False user.email=request.POST['email'] user.save() profile.user_id=user.id profile.school_id=request.POST['school_id'] profile.cohort_id=request.POST['cohort_id'] profile.district_id=request.POST['district_id'] profile.subscription_status=request.POST['subscription_status'] profile.save() except Exception as e: db.transaction.rollback() return HttpResponse(json.dumps({'success': False,'error':'%s' % e})) return HttpResponse(json.dumps({'success': True}))
def import_user_submit(request): # http://www.cnblogs.com/yijun-boxing/archive/2011/04/18/2020155.html CONTRACT_CVS_COL_CONTRACT_ID=0 CONTRACT_CVS_COL_DISTRICT_ID=1 CONTRACT_CVS_COL_EMAIL=2 CONTRACT_CVS_COL_USERNAME=3 CONTRACT_CVS_COUNT_COL=4 message={} n=0 if request.method == 'POST': f=request.FILES['file'] dialect = csv.Sniffer().sniff(f.read(1024), delimiters=";,") f.seek(0) r=csv.reader(f,dialect) try: for i,line in enumerate(r): n=n+1 contract_id=line[CONTRACT_CVS_COL_CONTRACT_ID] district_id=line[CONTRACT_CVS_COL_DISTRICT_ID] email=line[CONTRACT_CVS_COL_EMAIL] username=line[CONTRACT_CVS_COL_USERNAME] for value in line: if len(value.strip())==0: raise Exception("Catch csv line with empty fields line") if len(line) != CONTRACT_CVS_COUNT_COL: raise Exception("Catch csv line of wrong fields count") user = User(username=username, email=email, is_active=True) user.set_password(username) registration = Registration() try: user.save() except IntegrityError: if len(User.objects.filter(username=username)) > 0: raise Exception("An account with the Public Username '{username}' already exists.".format(username=username)) if len(User.objects.filter(email=email)) > 0: raise Exception("An account with the Email '{email}' already exists.".format(email=email)) registration.register(user) profile=UserProfile(user=user) profile.contract_id=contract_id profile.district_id=district_id profile.email=email profile.username=username profile.save() reg = Registration.objects.get(user=user) d = {'name': profile.name, 'key': reg.activation_key} subject = render_to_string('emails/activation_email_subject.txt', d) subject = ''.join(subject.splitlines()) message = render_to_string('emails/activation_email.txt', d) try: _res = user.email_user(subject, message, settings.DEFAULT_FROM_EMAIL) except: log.warning('Unable to send reactivation email', exc_info=True) return HttpResponse(json.dumps({'success': False, 'error': _('Unable to send reactivation email')})) message={'success': True, "message":"Success! %s users imported." % (n)} except Exception as e: transaction.rollback() message={'success': False,'message':'Import error: %s, At cvs line: %s' % (e,n)} # title = forms.CharField(max_length=50) # file = forms.FileField() return HttpResponse(json.dumps(message))