コード例 #1
0
ファイル: views.py プロジェクト: fbueno/sharer
def register(request):
    if not request.method == 'POST':
        return render_to_response('people/register.html', {'emailform': EmailForm() })

    maillist=List(name=settings.MAILLIST_NAME, password=settings.MAILLIST_PASSWORD, email=settings.MAILLIST_EMAIL, main_url=settings.MAILLIST_URL, encoding='iso-8859-1')
    if models.Person.objects.filter(email__exact=request.POST.get('email')):
        ok = True
    else:
        ok = False
        for mail in maillist.get_all_members():
            if request.POST.get('email') in mail:
                ok = True
                break

    if not ok:
        return render_to_response('people/checkuser.html', {'error': True})

    user = User.objects.create_user(request.POST.get('email'), request.POST.get('email'), User.objects.make_random_password(length=8))
    user.is_active = False
    user.save()

    salt = hashlib.sha224(str(random.random())).hexdigest()[:5]
    activation_key = hashlib.sha224(salt+user.username).hexdigest()
    key_expires = datetime.datetime.today() + datetime.timedelta(2)

    profile = Profile(user = user, activation_key = activation_key, key_expires = key_expires)
    profile.save()


    email_subject = 'Confirmacao s.hal.vu'	
    email_body = 'Clica no link pra confirmar: http://s.hal.vu/confirm/'+profile.activation_key
    send_mail(email_subject, email_body,'*****@*****.**',[user.email])
    return render_to_response('people/checkuser.html')
コード例 #2
0
ファイル: views.py プロジェクト: stanremix/sx2
def new_user(request):
	if request.POST:
		lon = request.POST.get('lon')
		lat = request.POST.get('lat')
		cityname = request.POST.get('city')
		deviceid = request.POST.get('deviceid')

		time_stamp = time.mktime(datetime.datetime.now().timetuple())

		uname = '%s_%i' % (deviceid[0:8], time_stamp)
		usr = User(username=uname)
		usr.save()
		usr_profile = Profile(user=usr)
		usr_profile.deviceid = deviceid
		usr_profile.is_guest = True
		usr_profile.save()

		if lon and lat:
			User_Log.objects.create(user=usr, lon=lon, lat=lat, city=cityname, action=0)

		# add sys user
		sys_user = User.objects.get(id=settings.ADMIN_ID)

		rel1 = Relation.objects.create(fuser=usr, tuser=sys_user, is_like=True, is_mutal=True, is_view=True)
		rel2 = Relation.objects.create(fuser=sys_user, tuser=usr, is_like=True, is_mutal=True, is_view=True)

		user_dict = pack_entry_data_of_user(usr.id)

		return HttpAjaxResponse(content=dict(data=user_dict))
	else:
		return HttpResponse(''' 
			<form action='' method='post' enctype='multipart/form-data'>
			deviceid: <input type='text' name='deviceid'>
			<input type='submit'>
			</form>''')
コード例 #3
0
ファイル: views.py プロジェクト: stanremix/sx2
def new_user(request):
    if request.POST:
        lon = request.POST.get('lon')
        lat = request.POST.get('lat')
        cityname = request.POST.get('city')
        deviceid = request.POST.get('deviceid')

        time_stamp = time.mktime(datetime.datetime.now().timetuple())

        uname = '%s_%i' % (deviceid[0:8], time_stamp)
        usr = User(username=uname)
        usr.save()
        usr_profile = Profile(user=usr)
        usr_profile.deviceid = deviceid
        usr_profile.is_guest = True
        usr_profile.save()

        if lon and lat:
            User_Log.objects.create(user=usr,
                                    lon=lon,
                                    lat=lat,
                                    city=cityname,
                                    action=0)

        # add sys user
        sys_user = User.objects.get(id=settings.ADMIN_ID)

        rel1 = Relation.objects.create(fuser=usr,
                                       tuser=sys_user,
                                       is_like=True,
                                       is_mutal=True,
                                       is_view=True)
        rel2 = Relation.objects.create(fuser=sys_user,
                                       tuser=usr,
                                       is_like=True,
                                       is_mutal=True,
                                       is_view=True)

        user_dict = pack_entry_data_of_user(usr.id)

        return HttpAjaxResponse(content=dict(data=user_dict))
    else:
        return HttpResponse(''' 
			<form action='' method='post' enctype='multipart/form-data'>
			deviceid: <input type='text' name='deviceid'>
			<input type='submit'>
			</form>''')
コード例 #4
0
ファイル: views.py プロジェクト: stanremix/sx2
def old_register(request):
    if request.POST:
        deviceid = request.POST.get('deviceid')
        time_stamp = time.mktime(datetime.datetime.now().timetuple())

        uname = '%s_%i' % (deviceid[0:8], time_stamp)
        usr = User(username=uname)
        usr.save()
        usr_profile = Profile(user=usr)
        usr_profile.deviceid = deviceid
        usr_profile.is_guest = True
        usr_profile.save()

        return HttpAjaxResponse(content=dict(data=usr_profile.json()))
    else:
        return HttpResponse(''' 
			<form action='' method='post'>
			deviceid: <input type='text' name='deviceid'>
			<input type='submit'>
			</form>''')
コード例 #5
0
def callback(tree):
	kth_id = tree[0][0].text
	logging.info('KTH-ID: %s trying to login' %kth_id)
	
	user, user_created = User.objects.get_or_create(username = kth_id)
	
	ldap = lookup_user(kth_id)
	
	if ldap is not None and Profile.objects.filter(user = user, kth_synchronize = False).count() == 0:
		if ldap['first_name'] is not None:
			user.first_name = ldap['first_name']
		
		if ldap['last_name'] is not None:
			user.last_name = ldap['last_name']
		
		if ldap['email'] is not None and (user.email is None or len(user.email) == 0 or user.email.endswith('@kth.se')):
			user.email = ldap['email']
		
		user.save()
	
	profile = Profile.objects.filter(user = user).first()
	
	if profile is None: Profile(user = user, no_dietary_restrictions = False).save()
コード例 #6
0
ファイル: CAS_callback.py プロジェクト: worldyn/ais
def callback(tree):
    kth_id = tree[0][0].text
    user, user_created = User.objects.get_or_create(username=kth_id)
    if user_created:
        try:
            KTH_user = lookup_user(kth_id)
            user.first_name = KTH_user['first_name']
            user.last_name = KTH_user['last_name']
            user.email = KTH_user['email']

            # Disable password auth, we auth with CAS
            user.set_unusable_password()
            user.save()
            person = Profile(user=user)
            person.save()
        except:
            user.delete()
            person.delete()
コード例 #7
0
def callback(request, kth_id):
    logging.info('KTH-ID: %s trying to login' % kth_id)

    user, user_created = User.objects.get_or_create(username=kth_id)
    user_info = lookup_user(kth_id)

    if merge_user_info(user, user_info):
        user.clean()
        user.save()

    profile = Profile.objects.filter(user=user).first()
    if profile is None:
        profile = Profile(user=user, no_dietary_restrictions=False)
        profile.clean()
        profile.save()

    login(request, user, backend='django.contrib.auth.backends.ModelBackend')

    return HttpResponse(status=200)
コード例 #8
0
ファイル: views.py プロジェクト: stanremix/sx2
def old_register(request):
	if request.POST:
		deviceid = request.POST.get('deviceid')
		time_stamp = time.mktime(datetime.datetime.now().timetuple())

		uname = '%s_%i' % (deviceid[0:8], time_stamp)
		usr = User(username=uname)
		usr.save()
		usr_profile = Profile(user=usr)
		usr_profile.deviceid = deviceid
		usr_profile.is_guest = True
		usr_profile.save()
		
		return HttpAjaxResponse(content=dict(data=usr_profile.json()))
	else:
		return HttpResponse(''' 
			<form action='' method='post'>
			deviceid: <input type='text' name='deviceid'>
			<input type='submit'>
			</form>''')
コード例 #9
0
ファイル: views.py プロジェクト: hbogaeus/ais
def recruitment_application_new(request, year, recruitment_period_pk, pk=None,
                                template_name='recruitment/recruitment_application_new.html'):
    fair = get_object_or_404(Fair, year=year)
    recruitment_period = get_object_or_404(RecruitmentPeriod, pk=recruitment_period_pk)

    if not pk:
        recruitment_application = recruitment_period.recruitmentapplication_set.filter(user=request.user).first()

        # If the user already has an application for this period redirect to it
        if recruitment_application:
            return redirect('recruitment_application_new', fair.year, recruitment_period.pk, recruitment_application.pk)

    recruitment_application = RecruitmentApplication.objects.filter(pk=pk).first()

    user = recruitment_application.user if recruitment_application else request.user
    profile = Profile.objects.filter(user=user).first()
    if not profile:
        p = Profile(user=user)
        p.save()

    now = timezone.now()

    if recruitment_period.start_date > now:
        return render(request, 'recruitment/recruitment_application_closed.html', {
            'recruitment_period': recruitment_period,
            'message': 'Application has not opened',
            'fair': fair
        })

    if recruitment_period.end_date < now:
        return render(request, 'recruitment/recruitment_application_closed.html', {
            'recruitment_period': recruitment_period,
            'message': 'Application closed',
            'fair': fair
        })

    profile_form = ProfileForm(request.POST or None, request.FILES or None, instance=profile)

    role_form = RoleApplicationForm(request.POST or None)

    user_form = UserForm(request.POST or None, instance=user)

    for i in range(1, 4):
        key = 'role%d' % i
        role_form.fields[key].queryset = recruitment_period.recruitable_roles
        if recruitment_application:
            role_application = RoleApplication.objects.filter(
                recruitment_application=recruitment_application,
                order=i - 1
            ).first()
            if role_application:
                role_form.fields[key].initial = role_application.role.pk

    if request.POST:
        recruitment_period.application_questions.handle_answers_from_request(request, user)

        if role_form.is_valid() and profile_form.is_valid() and user_form.is_valid():

            if not recruitment_application:
                recruitment_application = RecruitmentApplication()

            recruitment_application.user = user
            recruitment_application.recruitment_period = recruitment_period
            recruitment_application.save()

            recruitment_application.roleapplication_set.all().delete()
            for i in range(1, 4):
                key = 'role%d' % i
                role = role_form.cleaned_data[key]
                if role:
                    RoleApplication.objects.create(
                        recruitment_application=recruitment_application,
                        role=role,
                        order=i - 1
                    )

            if pk == None: #Slack webhook for signup notifications

                r.post(settings.RECRUITMENT_HOOK_URL,
                        data=json.dumps({'text': ' {!s} {!s} just applied for {!s}!'.format(user.first_name, user.last_name, role_form.cleaned_data["role1"])}))

            profile_form.save()
            user_form.save()
            return redirect('recruitment_period', fair.year, recruitment_period.pk)

    return render(request, template_name, {
        'application_questions_with_answers': recruitment_period.application_questions.questions_with_answers_for_user(
            recruitment_application.user if recruitment_application else None),
        'recruitment_period': recruitment_period,
        'profile_form': profile_form,
        'user_form': user_form,
        'profile': profile,
        'role_form': role_form,
        'new_application': pk == None,
        'fair': fair,
    })
コード例 #10
0
ファイル: views.py プロジェクト: stanremix/sx2
def sina_login(request):
    if request.POST:
        wb_id = request.POST.get('id')
        access_token = request.POST.get('access_token')
        expire = request.POST.get('expire')
        deviceid = request.POST.get('deviceid')
        lon = request.POST.get('lon')
        lat = request.POST.get('lat')
        city = request.POST.get('city')

        user, usr_auth = Auth.objects.validate_auth(wb_id, 'sina')

        if not user:
            user_wb_info = sina_get_user_info(access_token, expire, wb_id)
            usr = User(username='******' % wb_id)
            usr.save()
            usr_profile = Profile(user=usr)
            usr_profile.name = user_wb_info['screen_name']
            usr_profile.avatar = user_wb_info['avatar_large']
            usr_profile.desc = user_wb_info['description']
            usr_profile.deviceid = deviceid
            usr_profile.is_guest = False
            usr_profile.city = city
            birthday = datetime.datetime.strptime('1990-01-01',
                                                  settings.DATE_FORMAT)
            usr_profile.birthday = birthday

            try:
                is_follow = sina_follow(access_token, expire,
                                        settings.WEIBO_ACCOUNT)
            except:
                print '!!!!!!! failed to follow'

            if user_wb_info['gender'] == 'f':
                usr_profile.gender = 0
                usr_profile.propose_num = 3
            else:
                usr_profile.gender = 1
                usr_profile.propose_num = 1

            usr_profile.save()

            usr_auth = Auth(user=usr)
            usr_auth.auth_id = wb_id
            usr_auth.auth_from = 'sina'
            usr_auth.access_token = access_token
            usr_auth.expire = expire

            usr_auth.save()

            transaction.commit()
            return HttpAjaxResponse(
                content=dict(data=usr_profile.json(), status=0))
        else:
            usr_auth.auth_id = wb_id
            usr_auth.auth_from = 'sina'
            usr_auth.access_token = access_token
            usr_auth.expire = expire
            usr_auth.save()

            user.deviceid = deviceid
            user.is_guest = False
            user.save()

            transaction.commit()
            return HttpAjaxResponse(content=dict(data=user.json(), status=1))

    else:
        return HttpResponse(''' 
			<form action='' method='post'>
			id: <input type='text' name='id'>
			at: <input type='text' name='access_token'>
			expire: <input type='text' name='expire'>
			deviceid: <input type='text' name='deviceid'>
			<input type='submit'>
			</form>''')

    return HttpAjaxResponse(content=dict(data='hehe'))
コード例 #11
0
ファイル: views.py プロジェクト: nicalmi/ais
def recruitment_application_new(
        request,
        year,
        recruitment_period_pk,
        pk=None,
        template_name='recruitment/recruitment_application_new.html'):
    fair = get_object_or_404(Fair, year=year)
    recruitment_period = get_object_or_404(RecruitmentPeriod,
                                           pk=recruitment_period_pk)

    if not pk:
        recruitment_application = recruitment_period.recruitmentapplication_set.filter(
            user=request.user).first()

        # If the user already has an application for this period redirect to it
        if recruitment_application:
            return redirect('recruitment_application_new', fair.year,
                            recruitment_period.pk, recruitment_application.pk)

    recruitment_application = RecruitmentApplication.objects.filter(
        pk=pk).first()

    user = recruitment_application.user if recruitment_application else request.user
    profile = Profile.objects.filter(user=user).first()
    if not profile:
        p = Profile(user=user)
        p.save()

    now = timezone.now()

    if recruitment_period.start_date > now:
        return render(
            request, 'recruitment/recruitment_application_closed.html', {
                'recruitment_period': recruitment_period,
                'message': 'Application has not opened',
                'fair': fair
            })

    if recruitment_period.end_date < now:
        return render(
            request, 'recruitment/recruitment_application_closed.html', {
                'recruitment_period': recruitment_period,
                'message': 'Application closed',
                'fair': fair
            })

    profile_form = ProfileForm(request.POST or None,
                               request.FILES or None,
                               instance=profile)

    role_form = RoleApplicationForm(request.POST or None)

    for i in range(1, 4):
        key = 'role%d' % i
        role_form.fields[key].queryset = recruitment_period.recruitable_roles
        if recruitment_application:
            role_application = RoleApplication.objects.filter(
                recruitment_application=recruitment_application,
                order=i - 1).first()
            if role_application:
                role_form.fields[key].initial = role_application.role.pk

    if recruitment_period.name == 'Developer':
        message_to_applicants = 'You can view your submitted application from the recruitment page. All applicants will be contacted to schedule an interview which will be held during week 13 or 14.'
    elif recruitment_period.name == 'Operations Team':
        message_to_applicants = 'Please note that you will not receive a confirmation email after you submit your application. You can find and view your submitted application from the recruitment page. All applicants will be contacted to schedule an interview which will be held during week 17 or 18.'
    else:
        message_to_applicants = 'Please note that you will not receive a confirmation email after you submit your application. You can find and view your submitted application from the recruitment page.'

    if request.POST:
        recruitment_period.application_questions.handle_answers_from_request(
            request, user)
        if role_form.is_valid() and profile_form.is_valid():

            if not recruitment_application:
                recruitment_application = RecruitmentApplication()

            recruitment_application.user = user
            recruitment_application.recruitment_period = recruitment_period
            recruitment_application.save()

            recruitment_application.roleapplication_set.all().delete()
            for i in range(1, 4):
                key = 'role%d' % i
                role = role_form.cleaned_data[key]
                if role:
                    RoleApplication.objects.create(
                        recruitment_application=recruitment_application,
                        role=role,
                        order=i - 1)

            if pk == None:  #Slack webhook for signup notifications

                r.post(settings.RECRUITMENT_HOOK_URL,
                       data=json.dumps({
                           'text':
                           ' {!s} {!s} just applied for {!s}!'.format(
                               user.first_name, user.last_name,
                               role_form.cleaned_data["role1"])
                       }))

            profile_form.save()
            return redirect('recruitment_period', fair.year,
                            recruitment_period.pk)

    return render(
        request, template_name, {
            'application_questions_with_answers':
            recruitment_period.application_questions.
            questions_with_answers_for_user(recruitment_application.user if
                                            recruitment_application else None),
            'recruitment_period':
            recruitment_period,
            'profile_form':
            profile_form,
            'profile':
            profile,
            'role_form':
            role_form,
            'new_application':
            pk == None,
            'fair':
            fair,
            'message_to_applicants':
            message_to_applicants
        })
コード例 #12
0
def create_profile(sender, instance, signal, created, **kwargs):
    """When user is created also create a profile."""
    from people.models import Profile
    if created:
        Profile(user=instance).save()
コード例 #13
0
ファイル: views.py プロジェクト: stanremix/sx2
def sina_login(request):
	if request.POST:
		wb_id = request.POST.get('id')
		access_token = request.POST.get('access_token')
		expire = request.POST.get('expire')
		deviceid = request.POST.get('deviceid')
		lon = request.POST.get('lon')
		lat = request.POST.get('lat')
		city = request.POST.get('city')

		user, usr_auth = Auth.objects.validate_auth(wb_id, 'sina')

		if not user:
			user_wb_info = sina_get_user_info(access_token, expire, wb_id)
			usr = User(username= '******' % wb_id)
			usr.save()
			usr_profile = Profile(user=usr)
			usr_profile.name = user_wb_info['screen_name']
			usr_profile.avatar = user_wb_info['avatar_large']
			usr_profile.desc = user_wb_info['description']
			usr_profile.deviceid = deviceid
			usr_profile.is_guest = False
			usr_profile.city = city
			birthday = datetime.datetime.strptime('1990-01-01', settings.DATE_FORMAT)
			usr_profile.birthday = birthday

			try:
				is_follow = sina_follow(access_token, expire, settings.WEIBO_ACCOUNT)
			except:
				print '!!!!!!! failed to follow'

			if user_wb_info['gender'] == 'f':
				usr_profile.gender = 0
				usr_profile.propose_num = 3
			else:
				usr_profile.gender = 1
				usr_profile.propose_num = 1

			usr_profile.save()

			usr_auth = Auth(user=usr)
			usr_auth.auth_id = wb_id
			usr_auth.auth_from = 'sina'
			usr_auth.access_token = access_token
			usr_auth.expire = expire

			usr_auth.save()

			transaction.commit()
			return HttpAjaxResponse(content=dict(data=usr_profile.json(), status=0))
		else:
			usr_auth.auth_id = wb_id
			usr_auth.auth_from = 'sina'
			usr_auth.access_token = access_token
			usr_auth.expire = expire
			usr_auth.save()

			user.deviceid = deviceid
			user.is_guest = False
			user.save()

			transaction.commit()
			return HttpAjaxResponse(content=dict(data=user.json(), status=1))
	
	else:
		return HttpResponse(''' 
			<form action='' method='post'>
			id: <input type='text' name='id'>
			at: <input type='text' name='access_token'>
			expire: <input type='text' name='expire'>
			deviceid: <input type='text' name='deviceid'>
			<input type='submit'>
			</form>''')
		
	return HttpAjaxResponse(content=dict(data='hehe'))