コード例 #1
0
ファイル: parsers.py プロジェクト: zoist/okuna-api
def parse_indiegogo_csv_and_sanitise_usernames(filepath):
    try:
        with open(filepath, newline='') as csvfile:
            backer_data_reader = csv.reader(csvfile, delimiter=',')
            header_row = next(backer_data_reader)
            name_col, email_col, username_col, badge_keyword_col = get_column_numbers_for_indiegogo(header_row)
            for row in backer_data_reader:
                name = row[name_col]
                email = row[email_col]
                username = sanitise_username(row[username_col])
                badge_keyword = row[badge_keyword_col]
                if badge_keyword:
                    badge = Badge.objects.get(keyword=badge_keyword)
                else:
                    badge = None
                UserInvite = get_user_invite_model()
                if username is None or username == '0' or username is '':
                    print('Username was empty for:', name)
                    username = get_temporary_username(email)
                    print('Using generated random username @', username)
                print(username, email)
                update_invite(name=name, email=email, username=username, badge=badge)
    except IOError as e:
        print('Unable to read file')
        raise e
コード例 #2
0
def check_can_create_invite(user, nickname):
    if user.invite_count == 0:
        raise ValidationError(_('You have no invites left'))

    UserInvite = get_user_invite_model()
    if UserInvite.objects.filter(invited_by=user, nickname=nickname).exists():
        raise ValidationError('Nickname already in use')
コード例 #3
0
ファイル: views.py プロジェクト: shiruba/openbook-api
    def on_valid_request_data(self, data):
        email = data.get('email')
        password = data.get('password')
        is_of_legal_age = data.get('is_of_legal_age')
        name = data.get('name')
        avatar = data.get('avatar')
        token = data.get('token')
        User = get_user_model()
        UserInvite = get_user_invite_model()

        user_invite = UserInvite.get_invite_for_token(token=token)

        username = user_invite.username

        if not user_invite.username:
            username = User.get_temporary_username(email)

        with transaction.atomic():
            new_user = User.create_user(username=username, email=email, password=password, name=name, avatar=avatar,
                                        is_of_legal_age=is_of_legal_age, badge=user_invite.badge)
            user_invite.created_user = new_user
            user_invite.save()

        user_auth_token = new_user.auth_token

        return Response({
            'token': user_auth_token.key,
            'username': new_user.username
        }, status=status.HTTP_201_CREATED)
コード例 #4
0
def parse_conflicts_csv(filepath):
    # Hack: Since username is unique, we populate name field with username during
    # parsing of this csv so we can import all records.
    # This is a one time operation before launch.
    try:
        with open(filepath, newline='') as csvfile:
            backer_data_reader = csv.reader(csvfile, delimiter=',')
            header_row = next(backer_data_reader)
            name_col, email_col = get_column_numbers_for_conflicts_csv(
                header_row)
            for row in backer_data_reader:
                email = row[email_col]
                username = row[name_col]
                UserInvite = get_user_invite_model()

                if username is None or username is '0' or username is '':
                    print('Username was empty for:', username)
                    continue
                invited_user = UserInvite.create_invite(name=username,
                                                        email=email,
                                                        username=None)
                invited_user.save()
    except IOError as e:
        print('Unable to read file')
        raise e
コード例 #5
0
    def post(self, request):
        serializer = RegisterTokenSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        validated_data = serializer.validated_data
        token = validated_data.get('token')

        UserInvite = get_user_invite_model()

        # raises error if invalid
        #UserInvite.check_token_is_valid(token=token)

        return ApiMessageResponse(_('Token valid'),
                                  status=status.HTTP_202_ACCEPTED)
コード例 #6
0
ファイル: parsers.py プロジェクト: zoist/okuna-api
def update_invite(email, name=None, username=None, badge=None):
    UserInvite = get_user_invite_model()
    invites = UserInvite.objects.filter(email=email)
    if len(invites) == 2:
        invite = invites.filter(username=username).first()
        if invite is None:
            invite = invites.last()
    else:
        invite = invites.first()
    invite.username = username
    invite.save()
    print('New username is: ', invite.username)
    return invite
コード例 #7
0
ファイル: models.py プロジェクト: baitcenter/okuna-api
 def create_invite(cls,
                   email=None,
                   name=None,
                   username=None,
                   badge=None,
                   nickname=None,
                   invited_by=None):
     UserInvite = get_user_invite_model()
     invite = UserInvite.objects.create(nickname=nickname,
                                        name=name,
                                        email=email,
                                        username=username,
                                        badge=badge,
                                        invited_by=invited_by)
     invite.token = invite.generate_token()
     invite.save()
     return invite
コード例 #8
0
ファイル: create_invite.py プロジェクト: zoist/okuna-api
    def handle(self, *args, **options):
        UserInvite = get_user_invite_model()

        name = options.get('name', None)
        email = options.get('email', None)
        username = options.get('username', None)
        badge_keyword = options.get('badge', None)

        badge = None

        if badge_keyword:
            Badge = get_badge_model()
            badge = Badge.objects.get(keyword=badge_keyword)

        user_invite = UserInvite.create_invite(name=name, email=email, username=username,
                                               badge=badge)

        logger.info('Invite created. Invite Token: ' + user_invite.token)
コード例 #9
0
    def on_valid_request_data(self, data):
        email = data.get('email')
        phone_number = data.get('phone_number')
        password = data.get('password')
        is_of_legal_age = data.get('is_of_legal_age')
        are_guidelines_accepted = data.get('are_guidelines_accepted')
        name = data.get('name')
        username = data.get('username')
        avatar = data.get('avatar')
        token = data.get('token')
        User = get_user_model()
        UserInvite = get_user_invite_model()

        # user_invite = UserInvite.get_invite_for_token(token=token)

        if not username:
            username = "******"  # user_invite.username

        # if not username and not user_invite.username:
        #    username = User.get_temporary_username(email)

        with transaction.atomic():
            new_user = User.create_user(
                username=username,
                email=email,
                phone_number=phone_number,
                password=password,
                name=name,
                avatar=avatar,
                is_of_legal_age=is_of_legal_age,
                are_guidelines_accepted=are_guidelines_accepted)
            # user_invite.created_user = new_user
            # user_invite.save()

        user_auth_token = new_user.auth_token

        return Response(
            {
                'token': user_auth_token.key,
                'username': new_user.username
            },
            status=status.HTTP_201_CREATED)
コード例 #10
0
def check_is_creator_of_invite_with_id(user, invite_id):
    UserInvite = get_user_invite_model()
    if not UserInvite.objects.filter(id=invite_id, invited_by=user).exists():
        raise ValidationError(_('Invite was not created by you'))
コード例 #11
0
def check_if_invite_is_not_used(user, invite_id):
    UserInvite = get_user_invite_model()
    invite = UserInvite.objects.get(id=invite_id)
    if invite.created_user:
        raise ValidationError(
            _('Invite is already used and cannot be deleted'))
コード例 #12
0
def check_can_send_email_invite_to_invite_id(user, invite_id, email):
    check_is_creator_of_invite_with_id(user=user, invite_id=invite_id)
    UserInvite = get_user_invite_model()
    invite = UserInvite.objects.get(id=invite_id)
    if invite.email == email:
        raise ValidationError(_('Invite email already sent to this address'))