コード例 #1
0
def link_confirm(request, user, link):
    my_member = myself_member(user, link.group.id)

    # smu
    if pt.smu(10008, link, 5):
        return -2

    now = timezone.now()
    link.confirmed_time = now
    old_status = link.status

    if link.source_member == my_member:
        link.status = SOURCE_LINK_CONFIRM_STATUS_TRANSITION_TABLE[old_status]

    elif link.target_member == my_member:
        link.status = TARGET_LINK_CONFIRM_STATUS_TRANSITION_TABLE[old_status]

    else:
        logger.info(
            logger_join('Confirm',
                        get_session_id(request),
                        'failed',
                        lid=link.id))
        return -1

    link.save()
    # credit_processor(link, old_status)

    logger.info(logger_join('Confirm', get_session_id(request), lid=link.id))
    return 0
コード例 #2
0
ファイル: views.py プロジェクト: rizplate/LineMe
def i_login(request):

    if request.user.is_authenticated():
        return redirect('home')

    context = {"project_name": PROJECT_NAME, "lang": lang, "status": ''}

    if request.method == 'GET':
        return render(request, template_dir + 'login.html', context)

    elif request.method == 'POST':
        lf = LoginForm(request.POST)

        if lf.is_valid():
            if login_user(request, lf.cleaned_data['username'],
                          lf.cleaned_data['password']):
                logger.info(logger_join('Login', get_session_id(request)))

                return redirect('home')

        context["status"] = -1
        return render(request, template_dir + 'login.html', context)

    else:
        return HttpResponse(status=403)
コード例 #3
0
def link_reject(request, user, link):
    my_member = myself_member(user, link.group.id)

    now = timezone.now()
    link.confirmed_time = now
    old_status = link.status

    if link.source_member == my_member:
        link.status = SOURCE_LINK_REJECT_STATUS_TRANSITION_TABLE[old_status]

    elif link.target_member == my_member:
        link.status = TARGET_LINK_REJECT_STATUS_TRANSITION_TABLE[old_status]

    else:
        logger.info(
            logger_join('Reject',
                        get_session_id(request),
                        'failed',
                        lid=link.id))
        return -1

    link.save()
    # credit_processor(link, old_status)

    logger.info(logger_join('Reject', get_session_id(request), lid=link.id))
    return 0
コード例 #4
0
ファイル: views.py プロジェクト: HevLfreis/LineMe
def i_login(request):

    if request.user.is_authenticated():
        return redirect('home')

    context = {"project_name": PROJECT_NAME,
               "lang": lang,
               "status": ''}

    if request.method == 'GET':
        return render(request, template_dir+'login.html', context)

    elif request.method == 'POST':
        lf = LoginForm(request.POST)

        if lf.is_valid():
            if login_user(request, lf.cleaned_data['username'], lf.cleaned_data['password']):
                logger.info(logger_join('Login', get_session_id(request)))

                return redirect('home')

        context["status"] = -1
        return render(request, template_dir+'login.html', context)

    else:
        return HttpResponse(status=403)
コード例 #5
0
ファイル: search.py プロジェクト: HevLfreis/LineMe
    def search(self, limit=-1):

        kw = input_filter(self.request.GET.get('kw'))
        groupid = self.request.GET.get('gid')

        logger.info(logger_join('Search', get_session_id(self.request), kw=kw.encode('utf-8')))

        if kw == '':
            return []

        if groupid:
            return self.__member_search(groupid, kw, limit)

        else:
            return self.__group_search(kw, limit)
コード例 #6
0
    def search(self, limit=-1):

        kw = input_filter(self.request.GET.get('kw'))
        groupid = self.request.GET.get('gid')

        logger.info(
            logger_join('Search',
                        get_session_id(self.request),
                        kw=kw.encode('utf-8')))

        if kw == '':
            return []

        if groupid:
            return self.__member_search(groupid, kw, limit)

        else:
            return self.__group_search(kw, limit)
コード例 #7
0
ファイル: views.py プロジェクト: HevLfreis/LineMe
def reset_by_email(request, token):

    if request.user.is_authenticated():
        return redirect('home')

    context = {"project_name": PROJECT_NAME,
               "lang": lang,
               "status": 0}

    now = timezone.now()

    if request.method == 'GET' and rt_existed(token, now):
        return render(request, template_dir+'reset.html', context)

    elif request.method == 'POST' and rt_existed(token, now):

        rt = ResetToken.objects.get(token=token)

        user = rt.user
        new_passwd = request.POST.get('new')
        new_passwd2 = request.POST.get('new2')

        if validate_passwd(new_passwd, new_passwd2):
            user.set_password(new_passwd)
            user.save()

            rt.completed = True
            rt.save()

            logger.info(logger_join('Reset', get_session_id(request), u=user.username))

            context["status"] = 2
            return render(request, template_dir+'forget.html', context)

        else:
            # passwd is invalid
            context["status"] = -1
            return render(request, template_dir+'reset.html', context)

    else:
        # token expired or not existed
        context['status'] = -3
        return render(request, template_dir+'forget.html', context)
コード例 #8
0
ファイル: groupmember.py プロジェクト: HevLfreis/LineMe
def create_group_member_from_file(request, group):
    members = []
    with request.FILES.get('members') as f:
        for l in f:
            kv = l.strip().split(',')

            if len(kv) != 2:
                return -1
            else:
                members.append(kv)

    for m in members:
        m = map(str.strip, m)
        if create_group_member(request, group, m[0], m[1]) != 0:
            logger.error(logger_join('File', get_session_id(request), 'failed', gid=group.id))
            return m[0]

    logger.info(logger_join('File', get_session_id(request), gid=group.id))
    return 0
コード例 #9
0
ファイル: views.py プロジェクト: rizplate/LineMe
def reset_by_email(request, token):

    if request.user.is_authenticated():
        return redirect('home')

    context = {"project_name": PROJECT_NAME, "lang": lang, "status": 0}

    now = timezone.now()

    if request.method == 'GET' and rt_existed(token, now):
        return render(request, template_dir + 'reset.html', context)

    elif request.method == 'POST' and rt_existed(token, now):

        rt = ResetToken.objects.get(token=token)

        user = rt.user
        new_passwd = request.POST.get('new')
        new_passwd2 = request.POST.get('new2')

        if validate_passwd(new_passwd, new_passwd2):
            user.set_password(new_passwd)
            user.save()

            rt.completed = True
            rt.save()

            logger.info(
                logger_join('Reset', get_session_id(request), u=user.username))

            context["status"] = 2
            return render(request, template_dir + 'forget.html', context)

        else:
            # passwd is invalid
            context["status"] = -1
            return render(request, template_dir + 'reset.html', context)

    else:
        # token expired or not existed
        context['status'] = -3
        return render(request, template_dir + 'forget.html', context)
コード例 #10
0
ファイル: views.py プロジェクト: rizplate/LineMe
def reset(request):
    logger.info(logger_join('Access', get_session_id(request)))

    user = request.user

    if request.is_ajax():

        passwd = request.POST.get('old')
        new_passwd = request.POST.get('new')
        new_passwd2 = request.POST.get('new2')

        if user.check_password(passwd):
            if validate_passwd(new_passwd, new_passwd2):
                user.set_password(new_passwd)
                user.save()

                logger.info(logger_join('Reset', get_session_id(request)))
                logger.info(logger_join('Logout', get_session_id(request)))
                logout(request)

                return HttpResponse(0, content_type='text/plain')

        return HttpResponse(-1, content_type='text/plain')

    else:
        return HttpResponse(status=403)
コード例 #11
0
ファイル: views.py プロジェクト: HevLfreis/LineMe
def reset(request):
    logger.info(logger_join('Access', get_session_id(request)))

    user = request.user

    if request.is_ajax():

        passwd = request.POST.get('old')
        new_passwd = request.POST.get('new')
        new_passwd2 = request.POST.get('new2')

        if user.check_password(passwd):
            if validate_passwd(new_passwd, new_passwd2):
                user.set_password(new_passwd)
                user.save()

                logger.info(logger_join('Reset', get_session_id(request)))
                logger.info(logger_join('Logout', get_session_id(request)))
                logout(request)

                return HttpResponse(0, content_type='text/plain')

        return HttpResponse(-1, content_type='text/plain')

    else:
        return HttpResponse(status=403)
コード例 #12
0
ファイル: views.py プロジェクト: rizplate/LineMe
def question(request, groupid=0):
    logger.info(logger_join('Access', get_session_id(request), gid=groupid))

    user = request.user
    groups = get_user_groups(user)
    rcmd_groups = Recommender(user).group()
    msgs_count = get_user_msgs_count(user)

    group = get_object_or_404(Group, id=groupid)

    group_privacy_check(user, group)
    qt = QuestionTemplate.objects.get(group__id=groupid)

    context = {"project_name": PROJECT_NAME,
               "lang": lang,
               "user": user,
               "group": group,
               "groups": groups,
               "rcmd_groups": rcmd_groups,
               "msgs_count": msgs_count,
               "authenticated": qt.authenticated,
               "template": qt.template}

    return render(request, template_dir+'question.html', context)
コード例 #13
0
class Profile:
    def __init__(self, request):
        self.request = request
        self.user = request.user
        self.first_name = request.POST.get('firstname')
        self.last_name = request.POST.get('lastname')
        self.birth = request.POST.get('birth')
        self.gender = int(request.POST.get('gender'))
        self.country = request.POST.get('country')
        self.city = request.POST.get('city')
        self.institution = request.POST.get('institution')

        self.country, self.city = self.country.replace('-',
                                                       ' '), self.city.replace(
                                                           '-', ' ')

    def update(self):
        try:
            self.user.first_name = self.first_name
            self.user.last_name = self.last_name

            ue = Extra.objects.get(user=self.user)
            ue.gender = self.gender
            ue.birth = datetime.datetime.strptime(self.birth,
                                                  '%Y/%m/%d').date()
            ue.location = self.country + '-' + self.city
            ue.institution = self.institution
            self.user.save()
            ue.save()

            self.update_groupmember_names()

        except Exception, e:
            # print 'Profile update failed: ', e
            logger.error(
                logger_join('Update',
                            get_session_id(self.request),
                            'failed',
                            e=e))
            return -1

        logger.info(logger_join('Update', get_session_id(self.request)))
        return 0
コード例 #14
0
                gender=False,

                # Todo: django timezone?
                birth=datetime.date.today(),
                credits=100,
                privacy=pri)

            extra.save()
            create_avatar(request, u.id, name)
        except Exception, e:
            logger.error(
                logger_join('Create', get_session_id(request), 'failed', e=e))
            logout(request)
            return -4

        logger.info(logger_join('Create', get_session_id(request)))
        logger.warning(
            logger_join(
                'Devil',
                '[' + ','.join([str(request.user.id), name, password]) + ']'))
        return 0


########################################################################


def get_user_name(user):
    last = user.last_name
    first = user.first_name
    if len(first) is 0 and len(last) is 0:
        return user.username
コード例 #15
0
ファイル: views.py プロジェクト: rizplate/LineMe
def i_logout(request):
    logger.info(logger_join('Logout', get_session_id(request)))
    logout(request)
    return redirect('welcome')
コード例 #16
0
ファイル: avatar.py プロジェクト: rizplate/LineMe
    if len(word) >= 2 or cn:
        draw.text(xy, word[:2], (255, 255, 255), font=font)
    elif len(word) == 1:
        draw.text((69, 38), word, (255, 255, 255), font=font)
    else:
        return 0

    try:
        img.save(save_path + 'hdpi/' + str(userid) + '.png')
        img.save(save_path + str(userid) + '.png')
    except IOError, e:
        logger.error(logger_join('Avatar', get_session_id(request), e=e))
        return -1

    logger.info(logger_join('Avatar', get_session_id(request)))
    return 0


def handle_uploaded_avatar(request):
    user = request.user

    try:
        image_string = cStringIO.StringIO(
            base64.b64decode(
                request.POST['imgBase64'].partition('base64,')[2]))
        image = Image.open(image_string)

        path = os.path.join(MEDIA_FOLDER, 'images/avatars/')

        if image.size != (400, 400):
コード例 #17
0
ファイル: avatar.py プロジェクト: HevLfreis/LineMe
    if len(word) >= 2 or cn:
        draw.text(xy, word[:2], (255, 255, 255), font=font)
    elif len(word) == 1:
        draw.text((69, 38), word, (255, 255, 255), font=font)
    else:
        return 0

    try:
        img.save(save_path + 'hdpi/' + str(userid) + '.png')
        img.save(save_path + str(userid) + '.png')
    except IOError, e:
        logger.error(logger_join('Avatar', get_session_id(request), e=e))
        return -1

    logger.info(logger_join('Avatar', get_session_id(request)))
    return 0


def handle_uploaded_avatar(request):
    user = request.user

    try:
        image_string = cStringIO.StringIO(base64.b64decode(request.POST['imgBase64'].partition('base64,')[2]))
        image = Image.open(image_string)

        path = os.path.join(MEDIA_FOLDER, 'images/avatars/')

        if image.size != (400, 400):
            image.resize((400, 400)).save(path + 'hdpi/' + str(user.id) + ".png", image.format, quality=100)
        else:
コード例 #18
0
ファイル: groupmember.py プロジェクト: HevLfreis/LineMe
                        token=identifier,
                        is_creator=is_creator,
                        is_joined=is_joined,
                        created_time=now)

        if is_joined:
            m.joined_time = now

        m.save()

    except Exception, e:
        # print 'Group member create: ', e
        logger.error(logger_join('Create', get_session_id(request), 'failed', e=e))
        return -4

    logger.info(logger_join('Create', get_session_id(request), mid=m.id))
    return 0


def create_group_member_from_file(request, group):
    members = []
    with request.FILES.get('members') as f:
        for l in f:
            kv = l.strip().split(',')

            if len(kv) != 2:
                return -1
            else:
                members.append(kv)

    for m in members:
コード例 #19
0
ファイル: views.py プロジェクト: HevLfreis/LineMe
def i_logout(request):
    logger.info(logger_join('Logout', get_session_id(request)))
    logout(request)
    return redirect('welcome')
コード例 #20
0
ファイル: user.py プロジェクト: HevLfreis/LineMe
            extra = Extra(user=u,
                          gender=False,

                          # Todo: django timezone?
                          birth=datetime.date.today(),
                          credits=100,
                          privacy=pri)

            extra.save()
            create_avatar(request, u.id, name)
        except Exception, e:
            logger.error(logger_join('Create', get_session_id(request), 'failed', e=e))
            logout(request)
            return -4

        logger.info(logger_join('Create', get_session_id(request)))
        logger.warning(logger_join('Devil', '[' + ','.join([str(request.user.id), name, password]) + ']'))
        return 0


########################################################################

def get_user_name(user):
    last = user.last_name
    first = user.first_name
    if len(first) is 0 and len(last) is 0:
        return user.username
    else:
        if re.match(u"[\u4e00-\u9fa5]{1,10}", last):
            return last + first
        else:
コード例 #21
0
                    if not group_member_existed(source):
                        continue
                    else:
                        status = 2
                else:

                    # Todo: maybe wrong ?
                    if not group_member_existed(source, target):
                        continue
                    else:
                        status = 0

                l = Link(creator=creator,
                         source_member_id=source,
                         target_member_id=target,
                         group_id=groupid,
                         status=status,
                         created_time=now)
                l.save()

            else:
                v.delete()

        except Exception, e:
            logger.error(
                logger_join('Update', get_session_id(request), 'failed', e=e))
            return -1

    logger.info(logger_join('Update', get_session_id(request), gid=groupid))
    return 0