Esempio n. 1
0
def get_user_profile(user):
    ''' Returns user profile. Creates one if needed '''
    if not (user and user.is_authenticated()):
        return None
    pr = cache.get('users_profile:auth_user=%s' % user.id, None)
    if pr:
        return pr
    pr = get_profile_by_email_or_phone(user.username)
    if not pr:
        pr = Profile.objects.filter(user=user).order_by('id')[:2]
        if len(pr) > 1:
            fb_log.info('Multiple profiles for user: %s' % user.username)
        if pr:
            pr = pr[0]
        if not pr:
            pr = Profile(user=user)
            pr.created_on = datetime.now()
            pr.save()
            if is_valid_email(user.username):
                try:
                    email = Email(email=user.username, user=pr, type='primary')
                    email.save()
                except:
                    pass
            if is_valid_mobile(user.username):
                try:
                    phone = Phone(phone - user.username,
                                  user=pr,
                                  type='primary')
                    phone.save()
                except:
                    pass
    cache.set('users_profile:auth_user=%s' % user.id, pr)
    return pr
Esempio n. 2
0
def get_user_profile(user):
    """ Returns user profile. Creates one if needed """
    if not (user and user.is_authenticated()):
        return None
    pr = cache.get("users_profile:auth_user=%s" % user.id, None)
    if pr:
        return pr
    pr = get_profile_by_email_or_phone(user.username)
    if not pr:
        pr = Profile.objects.filter(user=user).order_by("id")[:2]
        if len(pr) > 1:
            fb_log.info("Multiple profiles for user: %s" % user.username)
        if pr:
            pr = pr[0]
        if not pr:
            pr = Profile(user=user)
            pr.created_on = datetime.now()
            pr.save()
            if is_valid_email(user.username):
                try:
                    email = Email(email=user.username, user=pr, type="primary")
                    email.save()
                except:
                    pass
            if is_valid_mobile(user.username):
                try:
                    phone = Phone(phone - user.username, user=pr, type="primary")
                    phone.save()
                except:
                    pass
    cache.set("users_profile:auth_user=%s" % user.id, pr)
    return pr
Esempio n. 3
0
def attach_fb(request):
    if request.method == "POST":
        data = request.POST
        facebookid = data["id"]
        email = data["email"]
        first_name = data["first_name"]
        last_name = data["last_name"]

        user, profile = None, None
        u_email = None
        try:
            u_email = UserEmail.objects.get(email=email)
            profile = u_email.user
            user = profile.user
        except UserEmail.DoesNotExist:
            try:
                user = User.objects.get(Q(email=email) | Q(username=email))
            except User.DoesNotExist:
                user = User.objects.create_user(email, email, None)
                user.first_name = first_name
                user.last_name = last_name
                user.save()
        if not user.first_name:
            user.first_name = first_name
            user.save()
        if not user.last_name:
            user.last_name = last_name
            user.save()

        try:
            profile = Profile.objects.get(user=user)
        except Profile.DoesNotExist:
            profile = Profile(user=user, full_name="%s %s" % (first_name, last_name))
        # if not profile.full_name: overwrite facebook name
        profile.full_name = "%s %s" % (first_name, last_name)
        profile.facebook = facebookid
        profile.save()
        if not u_email:
            u_email = UserEmail(email=email, user=profile, type="subscription")
            u_email.save()
        if request.user:
            auth.logout(request)
            request.session.flush()
        user = auth.authenticate(facebook_user=user, **dict(request=request))
        request.session["logged_through_facebook"] = True
        if user:
            request.session["atg_username"] = user.username
            set_logged_in_user(request, user)
            log.info("FACEBOOK USER LOGGED IN: %s" % user)
            return HttpResponse("OK")
    else:
        return HttpResponse("OK")
    return HttpResponse("FAILED")
Esempio n. 4
0
File: fb.py Progetto: daasara/riba
def attach_fb(request):
    if request.method=="POST":
        data = request.POST
        facebookid = data['id']
        email = data['email']
        first_name = data['first_name']
        last_name = data['last_name']
        
        user, profile = None, None
        u_email = None
        try:
            u_email = UserEmail.objects.get(email=email)
            profile = u_email.user
            user = profile.user
        except UserEmail.DoesNotExist:
            try:
                user = User.objects.get(Q(email=email) | Q(username=email))
            except User.DoesNotExist:
                user = User.objects.create_user(email,email,None)
                user.first_name = first_name
                user.last_name = last_name
                user.save()
        if not user.first_name:
            user.first_name = first_name
            user.save()
        if not user.last_name:
            user.last_name = last_name
            user.save()

        try:
            profile = Profile.objects.get(user=user)
        except Profile.DoesNotExist:
            profile = Profile(user=user, full_name='%s %s' % (first_name, last_name))
        #if not profile.full_name: overwrite facebook name
        profile.full_name='%s %s' % (first_name, last_name)
        profile.facebook=facebookid
        profile.save()
        if not u_email:
            u_email = UserEmail(email=email,user=profile,type='subscription')
            u_email.save()
        if request.user:
            auth.logout(request)
            request.session.flush()
        user = auth.authenticate(facebook_user=user,**dict(request=request))
        request.session['logged_through_facebook'] = True
        if user:
            request.session['atg_username'] = user.username
            set_logged_in_user(request, user)
            log.info("FACEBOOK USER LOGGED IN: %s" % user)
            return HttpResponse("OK") 
    else:
        return HttpResponse("OK") 
    return HttpResponse("FAILED") 
Esempio n. 5
0
def test_search_user_by_email(user_factory, db, test_client):
    expected_data = {
        'id': 1,
        'username': '******',
        'first_name': 'Peter',
        'surname': 'Parker',
        'emails': [
            {
                'id': 1,
                'email': 'email_1',
            }
        ]
    }

    user = user_factory(username='******', first_name='Peter', surname='Parker')
    _email = Email(email='email_1', user=user)
    db.session.add(user)
    db.session.commit()

    response = test_client.get(f'/user/search', query_string={'email': 'email_1'})

    assert response.status_code == 200
    data = response.json
    data.pop('created_at')
    assert data == expected_data
Esempio n. 6
0
def test_delete_user(user_factory, db, test_client):
    user = user_factory(username='******', first_name='Peter', surname='Parker')
    _email = Email(email='email_1', user=user)
    db.session.add(user)
    db.session.commit()

    response = test_client.delete(f'/user/{user.id}')

    assert response.status_code == 204
    assert len(User.query.all()) == 0
Esempio n. 7
0
def test_update_user_update_username(user_factory, db, test_client):
    user = user_factory(username='******', first_name='Peter', surname='Parker')
    _email = Email(email='email_1', user=user)

    db.session.add(user)
    db.session.commit()

    data = {'username': '******'}
    response = test_client.put(f'/user/{user.id}', json=data)

    assert response.status_code == 200

    user = User.query.all()[0]
    assert user.username == 'Superhero'
Esempio n. 8
0
def test_update_user_add_emails(user_factory, db, test_client):
    user = user_factory(username='******', first_name='Peter', surname='Parker')
    _email = Email(email='email_1', user=user)

    db.session.add(user)
    db.session.commit()

    data = {'emails': [{'email': 'email_2'}, {'email': 'email_1'}]}
    response = test_client.put(f'/user/{user.id}', json=data)

    assert response.status_code == 200

    user = User.query.all()[0]

    assert len(user.emails) == 2
Esempio n. 9
0
def test_update_user(user_factory, db, test_client):
    first_name = 'Miles'
    surname = 'Morales'
    user = user_factory(username='******', first_name='Peter', surname='Parker')
    _email = Email(email='email_1', user=user)

    db.session.add(user)
    db.session.commit()

    data = {'first_name': first_name, 'surname': surname}
    response = test_client.put(f'/user/{user.id}', json=data)

    assert response.status_code == 200

    assert response.json['first_name'] == first_name
    assert response.json['surname'] == surname

    user = User.query.all()[0]

    assert user.first_name == first_name
    assert user.surname == surname
Esempio n. 10
0
def daily_deals_registration(request):
    form = FBRegisterForm()
    valid = False
    if request.method == "POST":
        form = FBRegisterForm(request.POST)
        error = ""
        if form.is_valid():
            valid = True
            f = form.cleaned_data
            email_id = f["email"]
            mobile_no = f["mobile"]

            user_info = get_user_by_email_or_mobile(email_id, mobile_no)
            email_user, phone_user, email_alert_on, sms_alert_on = user_info

            if not email_user and not phone_user:
                # new user
                user = User.objects.create_user(email_id, email_id, None)
                user.first_name = f["name"]
                user.save()

                profile = Profile(user=user, full_name=user.first_name)
                profile.save()

                email = UserEmail(user=profile, type="primary", email=email_id)
                email.save()
                email_alert_on = email
                phone = Phone(user=profile, type="primary", phone=mobile_no)
                phone.save()
                sms_alert_on = phone

            if not email_user and phone_user:
                # user with phone number already exist, update his email address only
                email = UserEmail(user=phone_user, type="primary", email=email_id)
                email.save()
                email_alert_on = email

            if not phone_user and email_user:
                # user with email already exist, update his phone number only
                phone = Phone(user=email_user, type="primary", phone=mobile_no)
                phone.save()
                sms_alert_on = phone
            if f["name"]:
                u_name = f["name"][0].upper() + f["name"][1:]
            else:
                u_name = None
            utils.subscribe_send_email(request, email_id, u_name)
            utils.subscribe_send_sms(mobile_no)
            try:
                newsletter = NewsLetter.objects.get(newsletter="DailyDeals", client=request.client.client)
                existing_subscription = DailySubscription.objects.filter(
                    newsletter=newsletter, sms_alert_on=sms_alert_on, email_alert_on=email_alert_on
                )
                if existing_subscription:
                    return render_to_response(
                        "fb/subscription_thankyou.html",
                        {"form": form, "valid": valid},
                        context_instance=RequestContext(request),
                    )
                else:
                    subscribe = DailySubscription()
                    subscribe.newsletter = newsletter
                    subscribe.sms_alert_on = sms_alert_on
                    subscribe.email_alert_on = email_alert_on
                    subscribe.save()
                    return render_to_response(
                        "fb/subscription_thankyou.html",
                        {"form": form, "valid": valid},
                        context_instance=RequestContext(request),
                    )
            except NewsLetter.DoesNotExist:
                return render_to_response(
                    "fb/subscription_thankyou.html",
                    {"form": form, "valid": valid},
                    context_instance=RequestContext(request),
                )

        else:
            valid = False
            return render_to_response(
                "fb/dailydeals_popup.html", {"form": form, "valid": valid}, context_instance=RequestContext(request)
            )

    return render_to_response(
        "fb/dailydeals_popup.html", {"form": form, "valid": valid}, context_instance=RequestContext(request)
    )
Esempio n. 11
0
def migrate_subscriptions():
    start = datetime(day=1, month=4, year=2011)
    subscripions_qs = FtbDealsLogin.objects.filter(registration_time__gte=start)
    newsletter = NewsLetter.objects.get(pk=2)
    for subscription in subscripions_qs:
        if SubscriptionSync.objects.filter(ext_id=subscription.id):
            #print 'Skipping %s: Already synced' % subscription.id
            continue
        email = subscription.email_address or ''
        mobile = subscription.mobile_number or ''
        name = subscription.register_name or ''
        if len(email) > 50 or len(name) > 100:
            #print 'Skipping %s: Long data' % subscription.id
            continue

        source = 'atg'
        if subscription.facebook_user == 1:
            source = 'facebook-atg'

        profile = None

        is_valid_email = False
        e = None
      	if utils.is_valid_email(email):
            is_valid_email = True
            try:
                e = Email.objects.get(email=email)
                profile = e.user
            except Email.DoesNotExist:
                pass

        is_valid_mobile = False
        m = None                 
        if utils.is_valid_mobile(mobile):
            is_valid_mobile = True
            try:
                m = Phone.objects.get(phone=mobile)
                profile = m.user
            except Phone.DoesNotExist:
                pass

        if not is_valid_mobile and is_valid_email:
            #print 'Skipping %s, %s, %s: Invalid data' % (email, mobile, name)
            continue

        if not profile:
            # Create a new profile in our system
            if is_valid_email:
                usr, profile = utils.get_or_create_user(email, email,
                                   password=None, first_name=name)
            if not is_valid_email:
                usr, profile = utils.get_or_create_user(mobile, '',
                                   password=None, first_name=name)

        if not profile:
            # Still not able to create profile
            #print 'Skipping %s, %s, %s: No profile' % (email, mobile, name)
            continue

	if not e:
            try:
                e = Email.objects.get(email=email)
            except Email.DoesNotExist:
                # Create a new email
                e = Email()
                e.user = profile
                e.email = email
                e.save()

        if not m:
            try:
                m = Phone.objects.get(phone=mobile)
            except Phone.DoesNotExist:
                m = Phone()
                m.user = profile
                m.phone = mobile
                m.save()

        # Create an entry into the subscription table 
        subscr = DailySubscription()
        subscr.email_alert_on = e
        subscr.sms_alert_on = m
        subscr.source = source
        subscr.timestamp = subscription.registration_time
        subscr.newsletter = newsletter
        subscr.save()

        link = SubscriptionSync()
        link.ext_id = subscription.id
        link.account = 'futurebazaar'
        link.save() 
Esempio n. 12
0
def migrate_subscriptions():
    start = datetime(day=1, month=4, year=2011)
    subscripions_qs = FtbDealsLogin.objects.filter(
        registration_time__gte=start)
    newsletter = NewsLetter.objects.get(pk=2)
    for subscription in subscripions_qs:
        if SubscriptionSync.objects.filter(ext_id=subscription.id):
            #print 'Skipping %s: Already synced' % subscription.id
            continue
        email = subscription.email_address or ''
        mobile = subscription.mobile_number or ''
        name = subscription.register_name or ''
        if len(email) > 50 or len(name) > 100:
            #print 'Skipping %s: Long data' % subscription.id
            continue

        source = 'atg'
        if subscription.facebook_user == 1:
            source = 'facebook-atg'

        profile = None

        is_valid_email = False
        e = None
        if utils.is_valid_email(email):
            is_valid_email = True
            try:
                e = Email.objects.get(email=email)
                profile = e.user
            except Email.DoesNotExist:
                pass

        is_valid_mobile = False
        m = None
        if utils.is_valid_mobile(mobile):
            is_valid_mobile = True
            try:
                m = Phone.objects.get(phone=mobile)
                profile = m.user
            except Phone.DoesNotExist:
                pass

        if not is_valid_mobile and is_valid_email:
            #print 'Skipping %s, %s, %s: Invalid data' % (email, mobile, name)
            continue

        if not profile:
            # Create a new profile in our system
            if is_valid_email:
                usr, profile = utils.get_or_create_user(email,
                                                        email,
                                                        password=None,
                                                        first_name=name)
            if not is_valid_email:
                usr, profile = utils.get_or_create_user(mobile,
                                                        '',
                                                        password=None,
                                                        first_name=name)

        if not profile:
            # Still not able to create profile
            #print 'Skipping %s, %s, %s: No profile' % (email, mobile, name)
            continue

        if not e:
            try:
                e = Email.objects.get(email=email)
            except Email.DoesNotExist:
                # Create a new email
                e = Email()
                e.user = profile
                e.email = email
                e.save()

        if not m:
            try:
                m = Phone.objects.get(phone=mobile)
            except Phone.DoesNotExist:
                m = Phone()
                m.user = profile
                m.phone = mobile
                m.save()

        # Create an entry into the subscription table
        subscr = DailySubscription()
        subscr.email_alert_on = e
        subscr.sms_alert_on = m
        subscr.source = source
        subscr.timestamp = subscription.registration_time
        subscr.newsletter = newsletter
        subscr.save()

        link = SubscriptionSync()
        link.ext_id = subscription.id
        link.account = 'futurebazaar'
        link.save()
Esempio n. 13
0
                        usr.set_password(password)
                if first_name:
                    usr.first_name = first_name
                if last_name:
                    usr.last_name = last_name
                usr.save()
                try:
                    profile = Profile.objects.get(user=usr)
                except Profile.DoesNotExist:
                    profile = Profile(user=usr, created_on=datetime.now())
                    profile.full_name = '%s %s' % (first_name, last_name)
                if first_name and last_name:
                    profile.full_name = '%s %s' % (first_name, last_name)
                profile.save()
                email = Email(user=profile,
                              email=username,
                              type='primary',
                              cleaned_email=clean_username)
                email.save()
        except Exception, e:
            log.exception('Error get_or_create_user %s' % repr(e))
            return None, None
    log.info('get_or_create_user is_type is %s' % is_type)
    return usr, profile


def formatMoney(value):
    try:
        str_value = str(value).split('.')[0]
        dec = ''
        if len(str(value).split('.')) > 1:
            dec += '.' + str(value).split('.')[1][:2]
Esempio n. 14
0
def add_assignment(request):
    # Error signs and error messages.
    errMsg = ''
    success = 0

    # Get raw data
    data = request.POST
    name = data.get('name')
    assign_now = data.get('assign_now')
    date = data.get('date')
    researcher = request.user.id
    students = data.get('stuData')
    templates = data.get('tempData')
    labels = data.get('labelData')
    response_attempts = data.get('response_attempts')
    record_attempts = data.get('record_attempts')
    allow_typed_response = convert_boolean(data.get('allow_typed_response'))
    allow_self_rating = convert_boolean(data.get('allow_self_rating'))

    # Transfer string type list to list type
    students = decode(students)
    templates = decode(templates)
    labels = decode(labels)

    # Verify date
    datetime_now = datetime.datetime.now(get_localzone())
    if assign_now == 'true':
        sched_datetime = datetime_now
    else:
        sched_datetime = get_localzone().localize(
            datetime.datetime.strptime(date, "%m/%d/%Y %I:%M %p"))
    if sched_datetime < datetime_now:
        success = 1
        errMsg = errMsg + 'Custom assignment date needs to be in the future.\n\n'
    # Determine if students, labels, and templates are empty.
    stuIsNull = isNull(students)
    labelIsNull = isNull(labels)
    tempIsNull = isNull(templates)

    # Save the data that can be directly assigned to assignment.
    assignment = Assignment()
    assignment.name = name
    assignment.date_assigned = sched_datetime
    researcher = Researcher.objects.get(id=researcher)
    assignment.researcher = researcher
    assignment.response_attempts = response_attempts
    assignment.recording_attempts = record_attempts
    assignment.allow_typed_response = allow_typed_response
    assignment.allow_self_rating = allow_self_rating
    assignment.save()

    # Assign student information to assignment,
    # and judge whether there is an error that both students and labels are empty.
    # Also check if chosen labels have any students in them
    if stuIsNull and labelIsNull:
        success = 1
        errMsg = errMsg + 'Either students or labels must not be empty.\n\n'
    labelStudents = Student.objects.filter(labels__label_name__in=labels,
                                           labels__researcher=researcher)
    if stuIsNull and not labelIsNull:
        if stuIsNull and labelStudents.count() <= 0:
            success = 1
            errMsg = errMsg + 'The chosen label(s) does not contain any students.\n\n'
    if not stuIsNull:
        for stu in students:
            stuTmp = Student.objects.get(email=stu)
            assignment.students.add(stuTmp)
    if not labelIsNull:
        for students in labelStudents:
            stuTmp = Student.objects.get(email=students.email)
            assignment.students.add(stuTmp)
        # Assign label information to assignment
        for label in labels:
            labelTmp = SubjectLabel.objects.get(label_name=label,
                                                researcher=researcher)
            assignment.subject_labels.add(labelTmp)

    # Assign template information to assignment
    if tempIsNull:
        success = 1
        errMsg = errMsg + 'Template must not be empty.\n\n'
    else:
        for temp in templates:
            tempTmp = ConversationTemplate.objects.get(pk=temp)
            assignment.conversation_templates.add(tempTmp)

    subject = 'Simulated Conversation Assignment Update'
    msg = 'You have a new assignment. Please check your home page.'
    recipient = [i[0] for i in assignment.students.values_list('email')]
    # when an error occurs, there is no need to add this task to the schedule.
    if success == 0:
        if assign_now == 'true':
            sendMail(subject, msg, recipient, '*****@*****.**')
        else:
            email = Email(subject=subject, message=msg, assignment=assignment)
            email.save()
    else:
        assignment.delete()

    return HttpResponse(json.dumps({
        'success': success,
        'msg': errMsg,
    }))
Esempio n. 15
0
def migrate():
    # Migration plan
    # Read user, user address book from atg
    # Create one user in tinla per atg user

    #ezone_orders_users = FtbOrder.objects.select_related('order').all().values(
    #    'order__profile').distinct()
    #atg_users = DpsUser.objects.filter(dps_id__in = ezone_orders_users)
    atg_users = DpsUser.objects.all()

    count = atg_users.count()
    log.info('Found %s users in atg.' % count)
    index = 0
    exists = 0
    non_existing = 0
    newly_created = 0
    migrated = 0
    errors = 0
    attached = 0
    not_attached = 0
    atg_users = queryset_iterator(atg_users)
    for atg_user in atg_users:
        index += 1
        db.reset_queries()
        # Check if username is already taken in tinla
        # Tinla's usernames are phone numbers and email addresses
        email = None
        phone = None
        profile = None
        auth_user = None
        found = False
        username = atg_user.login
        try:
            email = Email.objects.select_related(
                'user', 'user__user').get(email=username)
            profile = email.user
            auth_user = profile.user
            found = True
        except Email.DoesNotExist:
            try:
                phone = Phone.objects.select_related(
                    'user', 'user__user').get(phone=username[:10])
                profile = phone.user
                auth_user = profile.user
                found = True
            except Phone.DoesNotExist:
                pass
        if found:
            exists += 1
            if profile.atg_login:
                migrated += 1
                if profile.atg_login != username:
                    log.info(
                        'Skipping user: %s. Check if it matches with: %s' %
                        (username, profile.atg_login))
            else:
                try:
                    profile.atg_login = username
                    profile.atg_password = atg_user.password
                    profile.save()
                    log.info(
                        'User exists. Just mapping atg_login and atg_password %s'
                        % username)
                    attached += 1
                except:
                    log.info('User exists. Duplicate atg_login %s' % username)
                    not_attached += 1
        else:
            non_existing += 1
            log.info('%s not found in tinla' % username)
            # No email and phone taken.
            if phone_re.match(username):
                phone = Phone(phone=username[:10])
            if email_re.match(username):
                email = Email(email=username)
            try:
                profile = new_profile(atg_user, phone, email)
                if profile:
                    newly_created += 1
                    log.info('Created new profile for %s. id is %s' %
                             (username, profile.id))
            except Exception, e:
                errors += 1
                log.exception('Error migrating %s. %s' % (username, repr(e)))

        if index % 10000 == 0:
            log.info('Processed %s/%s' % (index, count))
Esempio n. 16
0
                    else:
                        usr.set_password(password)
                if first_name:
                    usr.first_name = first_name
                if last_name:
                    usr.last_name = last_name
                usr.save()
                try:
                    profile = Profile.objects.get(user=usr)
                except Profile.DoesNotExist:
                    profile = Profile(user=usr, created_on=datetime.now())
                    profile.full_name = "%s %s" % (first_name, last_name)
                if first_name and last_name:
                    profile.full_name = "%s %s" % (first_name, last_name)
                profile.save()
                email = Email(user=profile, email=username, type="primary", cleaned_email=clean_username)
                email.save()
        except Exception, e:
            log.exception("Error get_or_create_user %s" % repr(e))
            return None, None
    log.info("get_or_create_user is_type is %s" % is_type)
    return usr, profile


def formatMoney(value):
    try:
        str_value = str(value).split(".")[0]
        dec = ""
        if len(str(value).split(".")) > 1:
            dec += "." + str(value).split(".")[1][:2]
        if dec == ".00" or dec == ".0":
Esempio n. 17
0
def register_for_deals(request):
    form = FBRegisterForm()
    if request.method == "POST":
        form = FBRegisterForm(request.POST)
        error = ""
        if form.is_valid():
            f = form.cleaned_data
            email_id = f["email"]
            mobile_no = f["mobile"]

            user_info = get_user_by_email_or_mobile(email_id, mobile_no)
            email_user, phone_user, email_alert_on, sms_alert_on = user_info

            if not email_user and not phone_user:
                # new user
                user = User.objects.create_user(email_id, email_id, None)
                user.first_name = f["name"]
                user.save()

                profile = Profile(user=user, full_name=user.first_name)
                profile.save()

                email = UserEmail(user=profile, type="primary", email=email_id)
                email.save()
                email_alert_on = email
                phone = Phone(user=profile, type="primary", phone=mobile_no)
                phone.save()
                sms_alert_on = phone

            if not email_user and phone_user:
                # user with phone number already exist, update his email address only
                email = UserEmail(user=phone_user, type="primary", email=email_id)
                email.save()
                email_alert_on = email

            if not phone_user and email_user:
                # user with email already exist, update his phone number only
                phone = Phone(user=email_user, type="primary", phone=mobile_no)
                phone.save()
                sms_alert_on = phone
            if f["name"]:
                u_name = f["name"][0].upper() + f["name"][1:]
            else:
                u_name = None
            utils.subscribe_send_email(request, email_id, u_name)
            utils.subscribe_send_sms(mobile_no)
            try:
                newsletter = NewsLetter.objects.get(newsletter="DailyDeals", client=request.client.client)
                existing_subscription = DailySubscription.objects.filter(
                    newsletter=newsletter, sms_alert_on=sms_alert_on, email_alert_on=email_alert_on
                )
                if existing_subscription:
                    return HttpResponse(simplejson.dumps(dict(status="ok", msg="subscribed")))
                else:
                    subscribe = DailySubscription()
                    subscribe.newsletter = newsletter
                    subscribe.sms_alert_on = sms_alert_on
                    subscribe.email_alert_on = email_alert_on
                    subscribe.save()
                    return HttpResponse(simplejson.dumps(dict(status="ok", msg="subscribed")))
            except NewsLetter.DoesNotExist:
                return HttpResponse(simplejson.dumps(dict(status="ok", msg="newsletter does not exists")))

        else:
            errors = []
            # we are restricting to on error per field.
            for e in form["email"].errors[:1]:
                errors.append(e)
            for e in form["mobile"].errors[:1]:
                errors.append(e)
            return HttpResponse(simplejson.dumps(dict(status="failed", error=errors)))

    return render_to_response("fb/popup.html", {"form": form}, context_instance=RequestContext(request))
Esempio n. 18
0
def register_for_deals(request):
    form = FBRegisterForm()
    if request.method == 'POST':
        form = FBRegisterForm(request.POST)
        error = ''
        if form.is_valid():
            f = form.cleaned_data
            email_id = f['email']
            mobile_no = f['mobile']

            user_info = get_user_by_email_or_mobile(email_id, mobile_no)
            email_user, phone_user, email_alert_on, sms_alert_on = user_info

            if not email_user and not phone_user:
                #new user
                user = User.objects.create_user(email_id, email_id, None)
                user.first_name = f['name']
                user.save()

                profile = Profile(user=user, full_name=user.first_name)
                profile.save()

                email = UserEmail(user=profile, type='primary', email=email_id)
                email.save()
                email_alert_on = email
                phone = Phone(user=profile, type='primary', phone=mobile_no)
                phone.save()
                sms_alert_on = phone

            if not email_user and phone_user:
                # user with phone number already exist, update his email address only
                email = UserEmail(user=phone_user,
                                  type='primary',
                                  email=email_id)
                email.save()
                email_alert_on = email

            if not phone_user and email_user:
                # user with email already exist, update his phone number only
                phone = Phone(user=email_user, type='primary', phone=mobile_no)
                phone.save()
                sms_alert_on = phone
            if f['name']:
                u_name = f['name'][0].upper() + f['name'][1:]
            else:
                u_name = None
            utils.subscribe_send_email(request, email_id, u_name)
            utils.subscribe_send_sms(mobile_no)
            try:
                newsletter = NewsLetter.objects.get(
                    newsletter='DailyDeals', client=request.client.client)
                existing_subscription = DailySubscription.objects.filter(
                    newsletter=newsletter,
                    sms_alert_on=sms_alert_on,
                    email_alert_on=email_alert_on)
                if existing_subscription:
                    return HttpResponse(
                        simplejson.dumps(dict(status='ok', msg='subscribed')))
                else:
                    subscribe = DailySubscription()
                    subscribe.newsletter = newsletter
                    subscribe.sms_alert_on = sms_alert_on
                    subscribe.email_alert_on = email_alert_on
                    subscribe.save()
                    return HttpResponse(
                        simplejson.dumps(dict(status='ok', msg='subscribed')))
            except NewsLetter.DoesNotExist:
                return HttpResponse(
                    simplejson.dumps(
                        dict(status='ok', msg='newsletter does not exists')))

        else:
            errors = []
            # we are restricting to on error per field.
            for e in form['email'].errors[:1]:
                errors.append(e)
            for e in form['mobile'].errors[:1]:
                errors.append(e)
            return HttpResponse(
                simplejson.dumps(dict(status='failed', error=errors)))

    return render_to_response('fb/popup.html', {'form': form},
                              context_instance=RequestContext(request))
Esempio n. 19
0
File: fb.py Progetto: daasara/riba
def daily_deals_registration(request):
    form = FBRegisterForm()
    valid=False
    if request.method == 'POST':
        form = FBRegisterForm(request.POST)
        error=''
        if form.is_valid():
            valid = True
            f=form.cleaned_data
            email_id = f['email'].strip()
            mobile_no = f['mobile'].strip()

            user_info = get_user_by_email_or_mobile(email_id, mobile_no)
            email_user, phone_user, email_alert_on, sms_alert_on = user_info

            if not email_user and not phone_user:
                #new user
                user = User.objects.create_user(email_id,email_id,None)
                user.first_name = f['name'].strip()
                user.save()

                profile = Profile(user=user,full_name=user.first_name)
                profile.save()

                email = UserEmail(user=profile,type='primary',email=email_id)
                email.save()
                email_alert_on = email
                phone = Phone(user=profile,type='primary',phone=mobile_no)
                phone.save()
                sms_alert_on = phone

            if not email_user and phone_user:
                # user with phone number already exist, update his email address only
                email = UserEmail(user=phone_user,type='primary',email=email_id)
                email.save()
                email_alert_on = email

            if not phone_user and email_user:
                # user with email already exist, update his phone number only
                phone = Phone(user=email_user,type='primary',phone=mobile_no)
                phone.save()
                sms_alert_on = phone
            if f['name']:
                u_name = f['name'][0].upper() + f['name'][1:]
            else:
                u_name = None
            utils.subscribe_send_email(request,email_id, u_name)
            utils.subscribe_send_sms(mobile_no)
            try:
                newsletter = NewsLetter.objects.get(newsletter='DailyDeals',client=request.client.client)
                existing_subscription = DailySubscription.objects.filter(newsletter=newsletter,sms_alert_on=sms_alert_on,email_alert_on=email_alert_on)
                if existing_subscription:
                    return render_to_response('fb/subscription_thankyou.html',
                            {'form':form,'valid':valid},
                            context_instance = RequestContext(request))
                else:
                    subscribe = DailySubscription()
                    subscribe.newsletter = newsletter
                    subscribe.sms_alert_on = sms_alert_on
                    subscribe.email_alert_on = email_alert_on
                    subscribe.save()
                    return render_to_response('fb/subscription_thankyou.html',
                            {'form':form,'valid':valid},
                            context_instance = RequestContext(request))
            except NewsLetter.DoesNotExist:
                return render_to_response('fb/subscription_thankyou.html',
                        {'form':form,'valid':valid},
                        context_instance = RequestContext(request))

        else:
            valid=False
            return render_to_response('fb/dailydeals_popup.html',
                    {'form':form,'valid':valid},
                    context_instance = RequestContext(request))

    return render_to_response('fb/dailydeals_popup.html',
            {'form':form,'valid':valid},
            context_instance = RequestContext(request))
Esempio n. 20
0
def subscribe_email_link(request, alliance):
    form = FBRegisterForm()
    affiliate_name = alliance
    try:
        affiliate_subscription = SubscriptionLink.objects.get(path="/" + affiliate_name)
    except SubscriptionLink.DoesNotExist:
        raise Http404
    affiliate_logo = affiliate_subscription.affiliate.logo
    affiliate_text = affiliate_subscription.affiliate.text
    newsletter = affiliate_subscription.newsletter

    if request.method == "POST":
        form = FBRegisterForm(request.POST)
        error = ""
        already_subscribed = False
        if form.is_valid():
            f = form.cleaned_data
            email_id = f["email"]
            mobile_no = f["mobile"]
            name = f["name"]
            email_user, phone_user, email_alert_on, sms_alert_on = get_user_by_email_or_mobile(
                email_id, mobile_no
            )  # User.objects.get(username = mobile_no)
            if not email_user and not phone_user:  # new user
                user = User.objects.create_user(email_id, email_id, None)
                user.first_name = f["name"]
                user.save()

                profile = Profile(user=user, full_name=user.first_name)
                profile.save()

                email = UserEmail(user=profile, type="primary", email=email_id)
                email.save()
                email_alert_on = email
                phone = Phone(user=profile, type="primary", phone=mobile_no)
                phone.save()
                sms_alert_on = phone
            if not email_user and phone_user:  # user with phone number already exist, update his email address only
                email = UserEmail(user=phone_user, type="primary", email=email_id)
                email.save()
                email_alert_on = email
            if not phone_user and email_user:  # user with email already exist, update his phone number only
                phone = Phone(user=email_user, type="primary", phone=mobile_no)
                phone.save()
                sms_alert_on = phone
            if email_user and phone_user and email_user != phone_user:  # phone user and email user are different
                pass

            existing_subscription = DailySubscription.objects.filter(
                newsletter=newsletter,
                sms_alert_on=sms_alert_on,
                email_alert_on=email_alert_on,
                source="/" + affiliate_name,
            )
            if not existing_subscription:
                subscribe = DailySubscription()
                subscribe.newsletter = newsletter
                subscribe.sms_alert_on = sms_alert_on
                subscribe.email_alert_on = email_alert_on
                subscribe.source = "/" + affiliate_name
                subscribe.save()
            else:
                already_subscribed = True
                return render_to_response(
                    "fb/subscribed.html",
                    {"affiliate_name": affiliate_name, "already_subscribed": already_subscribed},
                    context_instance=RequestContext(request),
                )

            total_coupon_codes, text = assign_coupons(affiliate_subscription.affiliate, email_alert_on, sms_alert_on)
            if alliance == "icici":
                return render_icici_products(request, total_coupon_codes)
            if email_alert_on:
                send_coupons_by_email(total_coupon_codes, affiliate_subscription.affiliate, email_alert_on)

            if sms_alert_on:
                sms_text = text
                sms = SMS()
                sms.text = sms_text
                sms.to = sms_alert_on.phone
                sms.send()

            return render_to_response(
                "fb/discount.html",
                {
                    "affiliate": affiliate_subscription.affiliate,
                    "coupon_codes": total_coupon_codes,
                    "already_subscribed": already_subscribed,
                },
                context_instance=RequestContext(request),
            )
        else:
            return render_to_response(
                "fb/register_for_deals.html",
                {"form": form, "affiliate_logo": affiliate_logo, "affiliate_text": affiliate_text},
                context_instance=RequestContext(request),
            )

    else:
        return render_to_response(
            "fb/register_for_deals.html",
            {"form": form, "affiliate_logo": affiliate_logo, "affiliate_text": affiliate_text},
            context_instance=RequestContext(request),
        )
Esempio n. 21
0
def subscribe_email_link(request, alliance):
    form = FBRegisterForm()
    affiliate_name = alliance
    try:
        affiliate_subscription = SubscriptionLink.objects.get(path='/' +
                                                              affiliate_name)
    except SubscriptionLink.DoesNotExist:
        raise Http404
    affiliate_logo = affiliate_subscription.affiliate.logo
    affiliate_text = affiliate_subscription.affiliate.text
    newsletter = affiliate_subscription.newsletter

    if request.method == 'POST':
        form = FBRegisterForm(request.POST)
        error = ''
        already_subscribed = False
        if form.is_valid():
            f = form.cleaned_data
            email_id = f['email']
            mobile_no = f['mobile']
            name = f['name']
            email_user, phone_user, email_alert_on, sms_alert_on = get_user_by_email_or_mobile(
                email_id, mobile_no)  #User.objects.get(username = mobile_no)
            if not email_user and not phone_user:  #new user
                user = User.objects.create_user(email_id, email_id, None)
                user.first_name = f['name']
                user.save()

                profile = Profile(user=user, full_name=user.first_name)
                profile.save()

                email = UserEmail(user=profile, type='primary', email=email_id)
                email.save()
                email_alert_on = email
                phone = Phone(user=profile, type='primary', phone=mobile_no)
                phone.save()
                sms_alert_on = phone
            if not email_user and phone_user:  #user with phone number already exist, update his email address only
                email = UserEmail(user=phone_user,
                                  type='primary',
                                  email=email_id)
                email.save()
                email_alert_on = email
            if not phone_user and email_user:  #user with email already exist, update his phone number only
                phone = Phone(user=email_user, type='primary', phone=mobile_no)
                phone.save()
                sms_alert_on = phone
            if email_user and phone_user and email_user != phone_user:  #phone user and email user are different
                pass

            existing_subscription = DailySubscription.objects.filter(
                newsletter=newsletter,
                sms_alert_on=sms_alert_on,
                email_alert_on=email_alert_on,
                source='/' + affiliate_name)
            if not existing_subscription:
                subscribe = DailySubscription()
                subscribe.newsletter = newsletter
                subscribe.sms_alert_on = sms_alert_on
                subscribe.email_alert_on = email_alert_on
                subscribe.source = '/' + affiliate_name
                subscribe.save()
            else:
                already_subscribed = True
                return render_to_response(
                    'fb/subscribed.html', {
                        'affiliate_name': affiliate_name,
                        'already_subscribed': already_subscribed
                    },
                    context_instance=RequestContext(request))

            total_coupon_codes, text = assign_coupons(
                affiliate_subscription.affiliate, email_alert_on, sms_alert_on)
            if alliance == 'icici':
                return render_icici_products(request, total_coupon_codes)
            if email_alert_on:
                send_coupons_by_email(total_coupon_codes,
                                      affiliate_subscription.affiliate,
                                      email_alert_on)

            if sms_alert_on:
                sms_text = text
                sms = SMS()
                sms.text = sms_text
                sms.to = sms_alert_on.phone
                sms.send()

            return render_to_response('fb/discount.html', {
                'affiliate': affiliate_subscription.affiliate,
                'coupon_codes': total_coupon_codes,
                'already_subscribed': already_subscribed
            },
                                      context_instance=RequestContext(request))
        else:
            return render_to_response('fb/register_for_deals.html', {
                'form': form,
                'affiliate_logo': affiliate_logo,
                'affiliate_text': affiliate_text
            },
                                      context_instance=RequestContext(request))

    else:
        return render_to_response('fb/register_for_deals.html', {
            'form': form,
            'affiliate_logo': affiliate_logo,
            'affiliate_text': affiliate_text
        },
                                  context_instance=RequestContext(request))