예제 #1
0
 def post(self, request, *args, **kwargs):
     request_data = request.data.copy()
     code = request_data["code"]
     u_type = int(self.request.data.get("u_type", 1))
     openid = self.get_openid(code, u_type)
     try:
         wechat_bind = WechatInfo.objects.get(openid=openid)
         token, _ = Token.objects.get_or_create(user=wechat_bind.user)
         result = {"token": token.key,
                   "user_id": wechat_bind.user_id,
                   "u_type": wechat_bind.user.profile.u_type}
         self.create_fit_info(u_type, wechat_bind.user)
         if u_type == 0:
             self.add_coach_info(wechat_bind.user, result)
         else:
             self.update_gym_info(wechat_bind.user, result)
         return Response(result)
     except WechatInfo.DoesNotExist:
         nickname = request_data["nickName"]
         headimgurl = request_data["avatarUrl"]
         gender = request_data["gender"]
         province = request_data["province"]
         city = request_data["city"]
         country = request_data["country"]
         
         User = get_user_model()
         user_obj, _ = User.objects.get_or_create(username=openid,
                                                  password=make_password(
                                                      "atm7777777"))
         wechat_bind = WechatInfo(user=user_obj, nickname=nickname,
                                  headimgurl=headimgurl,
                                  openid=openid,
                                  sex=gender, province=province, city=city,
                                  country=country)
         wechat_bind.save()
         self.create_fit_info(u_type, wechat_bind.user)
         profile_obj = Profile(user=user_obj, u_type=u_type,
                               nickname=nickname)
         profile_obj.save()
         token, _ = Token.objects.get_or_create(user=wechat_bind.user)
         init_new_user.delay(user_id=user_obj.id)
         result = {"token": token.key,
                   "user_id": wechat_bind.user_id,
                   "u_type": wechat_bind.user.profile.u_type}
         if u_type == 0:
             self.add_coach_info(wechat_bind.user, result)
         else:
             self.update_gym_info(wechat_bind.user, result)
         return Response(result)
예제 #2
0
def individual(request):
    if request.method == 'POST':
        if request.POST['password'] == request.POST['password2']:
            user = User.objects.create_user(request.POST['username'],
                                            password=request.POST['password'])
            auth.login(request, user)

            profile = Profile()
            profile.area = request.POST['area']
            profile.user = user
            profile.master = False
            profile.save()

            return redirect('home')
    return render(request, 'accounts/individual.html')
예제 #3
0
    def register_user(self, validated_data):
        sid = transaction.savepoint()  # Transaction open
        try:
            user_data = Profile(
                username=validated_data['primary_contact'],
                primary_contact=validated_data['primary_contact'],
                email=validated_data['email'],
                first_name=validated_data['first_name'],
                last_name=validated_data['last_name'],
                pan_card=validated_data['pan_card'],
                user_type=2)
            user_data.save()

            user_data.set_password(validated_data['password'])

            user_data.alternate_contact = validated_data['alternate_contact']
            user_data.address = validated_data['address']
            user_data.city = validated_data['city']
            user_data.town = validated_data['town']
            user_data.pincode = validated_data['pincode']
            user_data.landmark = validated_data['landmark']
            user_data.state = validated_data['state']

            user_data.beneficiary_name = validated_data['beneficiary_name']
            user_data.account_no = validated_data['account_no']
            user_data.ifsc_code = validated_data['ifsc_code']
            user_data.bank_name = validated_data['bank_name']
            user_data.save()

            try:
                pancard_image = json.loads(validated_data['pancard_image'])
                pan_image_file = get_image_file(str(pancard_image["image"]))
                name = pancard_image["name"]
                user_data.pan_image = SimpleUploadedFile(
                    name, pan_image_file,
                    getattr(pancard_image, "content_type",
                            "application/octet-stream"))
                user_data.save()
            except:
                pass

            transaction.savepoint_commit(sid)
            return user_data
        except Exception as exc:
            print('Exception For Register User | RegistrationSerializer', exc)
            print('exception ', str(traceback.print_exc()))
            transaction.rollback(sid)
            return None
예제 #4
0
def editProfile(request):
    uname = request.user
    auth = User.objects.get(username=uname)
    pk = User.objects.get(username=uname).pk
    readone_notification(auth, '', "Welcome")

    pinfo = ''
    try:
        pinfo = Profile.objects.get(author=pk)
    except:
        print('no profile')

    if request.method == 'POST':
        try:
            pinfo = Profile.objects.get(author=pk)
            print("***********<<<<<<< pinfo has data >>>>>>>***********")
            form = editprofileForm(request.POST)
            if form.is_valid():
                pinfo.phonenumber = form.cleaned_data.get('phonenumber')
                pinfo.address = form.cleaned_data.get('address')
                pinfo.location = form.cleaned_data.get('location')
                pinfo.description = form.cleaned_data.get('description')
                pinfo.save()
                return redirect(f'/company/profile/{request.user}')

#messages.success(request,f'Job has been updated successfully !!')
        except:
            form = editprofileForm(request.POST)
            if form.is_valid():
                print("<<< pinfo has no data >>>")
                inst = Profile()
                #inst.image = request.FILES.get('image')
                #print ('**************************',inst.image)
                inst.phonenumber = form.cleaned_data.get('phonenumber')
                inst.address = form.cleaned_data.get('address')
                inst.location = form.cleaned_data.get('location')
                inst.description = form.cleaned_data.get('description')
                inst.author = auth
                #auth_user.username = form1.cleaned_data.get('username')
                #auth_user.first_name = form1.cleaned_data.get('first_name')
                #auth_user.last_name = form1.cleaned_data.get('last_name')
                #auth_user.email = form1.cleaned_data.get('email')
                inst.save()
                return redirect(f'/company/edit_profile/')
    return render(request, 'company/edit_profile.html', {
        'result': auth,
        'info': pinfo,
    })
예제 #5
0
def corporation(request):
    if request.method == 'POST':
        if request.POST['password'] == request.POST['password2']:
            user = User.objects.create_user(request.POST['username'],
                                            password=request.POST['password'])
            auth.login(request, user)

            profile = Profile()
            profile.company = request.POST['company']
            profile.area = request.POST['area']
            profile.user = user
            profile.master = True
            profile.save()

            return redirect('home')
    return render(request, 'accounts/corporation.html')
예제 #6
0
    def run(cls,
            user_id: str,
            group_id: str = None,
            room_id: str = None) -> Profile:
        try:
            return Profile.objects.get(id=user_id)
        except ObjectDoesNotExist:
            data = (cls._get_user_from_group(group_id, user_id) if group_id
                    is not None else cls._get_user_from_room(room_id, user_id)
                    if room_id is not None else cls._get_user(user_id))
            profile = Profile(id=data['userId'],
                              name=data['displayName'],
                              picture=data['pictureUrl'])
            profile.save(force_insert=True)

            return profile
예제 #7
0
파일: views.py 프로젝트: plutokamin/pujia8
def article_detail(request, aid):
    article = Articles.objects.select_related().get(pk=aid)
    article.count += 1
    article.save()
    article_user = User.objects.select_related().get(id=article.name_id)
    try:
        user_profile = article_user.get_profile()
    except:
        import time
        today = time.strftime("%Y-%m-%d", time.localtime())
        profile = Profile(user=article_user,
                          count=0,
                          today=today,
                          todaycount=0)
        profile.save()
        user_profile = article_user.get_profile()

    perm_edit_article = False
    if request.user == article.name:
        perm_edit_article = True
    if article.subject == '0':
        subject = 'new'
    else:
        subject = 'topic'
    article_label_list = Articles.objects.select_related().filter(
        label=article.label, post='1').order_by('-time')
    if len(article_label_list) < 2:
        article_label_list = None
    if article.label == None or article.label == '':
        article_label_list = None

    article_hot_list = cache.get('article_hot_list')
    if not article_hot_list:
        article_hot_list = Articles.objects.select_related().filter(
            hot='1', post='1').order_by('-time')[:10]
        cache.set('article_hot_list', article_hot_list, 900)
    game_hot_list = cache.get('game_hot_list')
    if not game_hot_list:
        game_hot_list = Games.objects.select_related().filter(
            post='1').order_by('-count')[:10]
        cache.set('game_hot_list', game_hot_list, 900)
    return render_to_response('article_detail.html', {'article': article, 'subject':subject,\
                                                'article_label_list':article_label_list, 'game_hot_list': game_hot_list, \
                                                'article_hot_list':article_hot_list,\
                                                'perm_edit_article': perm_edit_article,\
                                                'user_profile': user_profile},
                              context_instance=RequestContext(request))
예제 #8
0
 def post(self, request, *args, **kwargs):
     account = self.request.data["account"]
     password = self.request.data["password"]
     u_type = self.request.data.get("u_type", 1)
     valid_code = self.request.data["valid_code"]
     rpt_password = self.request.data["rpt_password"]
     nickname = self.request.data.get("nickname")
     if password != rpt_password:
         return Response({"detail": "密码不相同"},
                         status=status.HTTP_400_BAD_REQUEST)
     User = get_user_model()
     account_type, username = get_username(account)
     if not nickname:
         nickname = username
     cache_key = "code_%s_%s" % ("register", account)
     cache_vcode = cache.get(cache_key)
     if str(valid_code) != "1984" and valid_code != str(cache_vcode):
         return Response({"detail": "验证码不符,请重新输入"},
                         status=status.HTTP_400_BAD_REQUEST)
     try:
         new_user = User(username=username,
                         password=make_password(password))
         new_user.save()
         profile_obj = Profile(user=new_user,
                               u_type=u_type,
                               nickname=nickname)
         if u_type == 1:
             new_coach = Coach(user=new_user, )
             new_coach.save()
         else:
             new_member = Member(user=new_user)
             new_member.save()
         if account_type == "phone":
             # 手机号注册
             profile_obj.phone = account
         else:
             # 邮箱注册
             new_user.email = account
             new_user.save()
         profile_obj.save()
         Token.objects.get_or_create(user=new_user)
         init_new_user.delay(user_id=new_user.id)
     except IntegrityError:
         return Response({"detail": "注册帐户已存在, 请直接登录"},
                         status=status.HTTP_400_BAD_REQUEST)
     return Response({"detail": "注册成功"}, status=status.HTTP_201_CREATED)
예제 #9
0
def create():
    try:
        while(True):
            username = raw_input("帳號: ")
            check = len(list(User.objects.filter(username=username)))
            if check==0:
                break
            print(bcolors.FAIL + "帳號已經被註冊 \n" + bcolors.ENDC)
        
        password = ""
        password2 = ""
        while(True):
            password = getpass.getpass("密碼: ")
            password2 = getpass.getpass("密碼(再一次): ")
            if password==password2:
                break
            else:
                print(bcolors.FAIL + "密碼不一樣,重新輸入 \n"  + bcolors.ENDC)
                
        while(True):
            email = raw_input("電子郵件: ")
            
            if email_valid(email):
                break
            print(bcolors.FAIL + "請輸入正確的電子郵件"  + bcolors.ENDC)
        
        admin = User()
        admin.username = username
        admin.set_password(password)
        admin.email = email
        admin.is_superuser = True
        admin.is_staff = True
        admin.is_active = True
        admin.date_joined = timezone.now()
        admin.save()
        
        userProflie = Profile()
        userProflie.username = username
        userProflie.user = admin
        userProflie.save()
        print(bcolors.OKBLUE + "\n "+ username +"帳號建立成功 \n \n" + bcolors.ENDC)
    except Exception as e:
        s = str(e)
        print(bcolors.FAIL + "\n\n取消建立帳號 \n"  + bcolors.ENDC)
        if """does not exist""" in s:
            print(bcolors.FAIL + "資料庫有問題,請檢查 \n"  + bcolors.ENDC)
예제 #10
0
 def post(self, request, *args, **kwargs):
     data = request.POST.get("userData")
     if "," not in data:
         kwargs['error'] = '資料格式錯誤。'
     
     data = data.replace("\r\n","")
     data = data.replace("\r","")
     data = data.replace(" ","")
     temp = data.split(";")
     userArr = []
     repeat = []
     sp = ""
     
     for i in temp:
         if len(i.split(","))>2:
             kwargs['error'] = '資料格式錯誤。'
             break;
         sp = i.split(",")
         
         try:
             User.objects.get(username=sp[0])
             repeat.append(sp[0])
         except:
             userArr.append(sp)
         
     if(len(repeat)>0):
         kwargs['error'] = '資料重復:'+', '.join(repeat)
         return super(CAccountAdd3nd, self).post(request, *args, **kwargs)
     
     for i in userArr:
         newUser = User()
         newUser.username = i[0]
         newUser.set_password(i[0])
         newUser.save()
         profile = Profile()
         profile.user = newUser
         profile.fullName = i[1]
         profile.type=0
         profile.isActive=True
         profile.isAuth=True
         profile.save()    
         
         
         
     messages.success(request,'帳號加入成功。')
     return super(CAccountAdd3nd, self).post(request, *args, **kwargs)
예제 #11
0
def register(request):
    if request.method == "POST":

        form = RegisterForm(request.POST)

        if form.is_valid():
            user = User.objects.create_user(
                form.cleaned_data["username"],
                email=form.cleaned_data["email"],
                password=form.cleaned_data["password"])
            p = Profile(user=user)
            p.save()
            return redirect(reverse("login"))
        else:
            return render(request, "register.html", {"form": form})
    else:
        return render(request, "register.html", {"form": RegisterForm()})
예제 #12
0
def uploadResume(request,jbid):
    user = request.user
    if request.method == 'POST':
        uploaded_file = request.FILES['cv']
        fs = FileSystemStorage()
        fs.save(uploaded_file.name,uploaded_file)
        parser_r(uploaded_file,uploaded_file.name,user)
        try:
            prof =Profile.objects.get(author = user.id)
            prof.resume = uploaded_file
            prof.save()
        except:
            prof = Profile()
            prof.author = user
            prof.resume = uploaded_file
            prof.save()
        
        fs.delete(uploaded_file.name)
        return redirect(f'/applicant/details/{jbid}')
예제 #13
0
def profile(request, user_id):
    user = User.objects.get(id=user_id)
    enrolls = Enroll.objects.filter(student_id=user_id)
    try:
        profile = Profile.objects.get(user=user)
    except ObjectDoesNotExist:
        profile = Profile(user=user)
        profile.save()

    try:
        hour_of_code = Certificate.objects.get(student_id=user_id)
    except ObjectDoesNotExist:
        hour_of_code = None

    # 計算積分
    credit = profile.work + profile.assistant + profile.forum + profile.creative

    school_name = ""
    #檢查是否為教師或同班同學
    user_enrolls = Enroll.objects.filter(student_id=request.user.id)
    for enroll in user_enrolls:
        if is_classmate(user_id, enroll.classroom_id) or request.user.id == 1:
            return render(
                request, 'account/profile.html', {
                    'hour_of_code': hour_of_code,
                    'school': school_name,
                    'enrolls': enrolls,
                    'profile': profile,
                    'user_id': user_id,
                    'credit': credit
                })
    if user_id == str(request.user.id):
        return render(
            request, 'account/profile.html', {
                'hour_of_code': hour_of_code,
                'school': school_name,
                'enrolls': enrolls,
                'profile': profile,
                'user_id': user_id,
                'credit': credit
            })
    return redirect("/")
예제 #14
0
def upld_propic_2(request):
    user = request.user
    usrnm = str(user)
    if request.method == 'POST':

        img = request.POST.get('propic')
        with open("media/profile-pic/applicant/" + usrnm + "_imageToSave.png",
                  "wb") as fh:
            fh.write(base64.b64decode(img))
        try:
            obj = Profile.objects.get(author=user.id)
            obj.image = "/" + fh.name
            obj.save()
        except:
            obj = Profile()
            obj.image = "/" + fh.name
            obj.author = user
            obj.save()

        return redirect('/applicant/edit_profile/')
예제 #15
0
 def handle_noargs(self, **options):
     staffs = simplejson.load(open(os.path.join(settings.COMMANDS_ROOT[0], 'staffs.json')))
     institute = Institute.objects.get(name='University of Waterloo')
     for staff in staffs:
         try:
             user = User()
             user.username = unique_username(staff['firstName'], staff['lastName'])
             user.email = staff['userID'] + '@uwaterloo.ca'
             user.set_password(staff['userID'])
             user.first_name = staff['firstName']
             user.last_name = staff['lastName']
             user.is_active = False
             user.save()
             profile = Profile()
             profile.user = user
             profile.institute = institute
             profile.role = 'I'
             profile.save()
             print 'Added %s.' % staff['userID']
         except:
             pass
예제 #16
0
def profile(request, user_id):
    user = User.objects.get(id=user_id)
    enrolls = Enroll.objects.filter(student_id=user_id)
    try: 
        profile = Profile.objects.get(user=user)
    except ObjectDoesNotExist:
        profile = Profile(user=user)
        profile.save()

    try:
        hour_of_code = Certificate.objects.get(student_id=user_id)
    except ObjectDoesNotExist:
        hour_of_code = None

    del lesson_list[:]
    reset()
    works = Work.objects.filter(user_id=user_id)
    for work in works:
        lesson_list[work.index-1].append(work.score)
        lesson_list[work.index-1].append(work.publication_date)
        if work.score > 0 :
            score_name = User.objects.get(id=work.scorer).first_name
            lesson_list[work.index-1].append(score_name)
        else :
            lesson_list[work.index-1].append("null")

    # 計算積分    
    credit = profile.work + profile.assistant + profile.debug + profile.creative
    # 記錄系統事件
    if is_event_open(request) :       
        log = Log(user_id=request.user.id, event='查看個人檔案')
        log.save()        
        
    #檢查是否為教師或同班同學
    user_enrolls = Enroll.objects.filter(student_id=request.user.id)
    for enroll in user_enrolls:
        user = User.objects.get(id=user_id)
        if not is_classmate(user, enroll.classroom_id) and not request.user.id == 1:
            return redirect("/")
    return render_to_response('account/profile.html',{'hour_of_code':hour_of_code, 'works':works, 'lesson_list':lesson_list, 'enrolls':enrolls, 'profile': profile,'user_id':user_id, 'credit':credit}, context_instance=RequestContext(request))	
예제 #17
0
def save_profile(backend, user, response, *args, **kwargs):

    # if necessary, create an empty profile
    try:
        new_profile = user.profile

    except Profile.DoesNotExist:
        new_profile = Profile(user=user)
        new_profile.save()

    # populate profile with Facebook data
    if backend.name == settings.SOCIAL_AUTH_FACEBOOK:
        new_profile.gender = response.get('gender', '')
        new_profile.facebook_link = response.get('link', '')
        new_profile.save()

    try:
        userena_signup = user.userena_signup

    except UserenaSignup.DoesNotExist:
        userena_signup = UserenaSignup(
            user=user, activation_key=userena_settings.USERENA_ACTIVATED)
        userena_signup.save()
예제 #18
0
def editProfile (request):
    uname = request.user
    auth = User.objects.get(username=uname)
    pk = User.objects.get(username=uname).pk
    pinfo = ''
    try:
        pinfo = Profile.objects.get(author = pk)
    except:
        print(" no profile")      
    if request.method == 'POST':
        #print('<><><><><><><>>>>>>>>>>>>>>>>>>>>>> ',request.FILES['image'])
        try:
            pinfo = Profile.objects.get(author = pk)
            print("***********<<<<<<< pinfo has data >>>>>>>***********")
            form = editprofileForm(request.POST, request.FILES ,instance = pinfo)
            if form.is_valid():
                pinfo.image =  form.cleaned_data.get('image')
                pinfo.phonenumber = form.cleaned_data.get('phonenumber')
                pinfo.address = form.cleaned_data.get('address')
                pinfo.job_title = form.cleaned_data.get('job_title')
                pinfo.save()
                #messages.success(request,f'Job has been updated successfully !!')
                return redirect(f'/applicant/profile/{request.user}')
        except:
            form = editprofileForm(request.POST , request.FILES)
            if form.is_valid():
                print("<<< pinfo has no data >>>")
                inst = Profile()
                inst.image = request.FILES.get('image')
                #print ('**************************',inst.image)
                inst.phonenumber = form.cleaned_data.get('phonenumber')
                inst.address = form.cleaned_data.get('address')
                inst.job_title = form.cleaned_data.get('job_title')
                inst.author = auth
                inst.save()
                return redirect(f'/applicant/profile/{request.user}')
    return render(request,'applicant/edit_profile.html',{'result':auth , 'info' : pinfo ,})
def change_profile(request):
    # if profile_image exist, delete this image
    if Profile.objects.filter(user=request.user):
        Profile.objects.filter(user=request.user).delete()

    profile = Profile()
    profile.user = request.user
    # save profile_image
    if 'image' in request.FILES:
        im = Image.open(request.FILES['image'])
        im = im.resize((1920, 1920))
        bigsize = (im.size[0] * 3, im.size[1] * 3)
        mask = Image.new('L', bigsize, 0)
        draw = ImageDraw.Draw(mask)
        draw.ellipse((0, 0) + bigsize, fill=255)
        mask = mask.resize(im.size, Image.ANTIALIAS)
        im.putalpha(mask)

        output = ImageOps.fit(im, mask.size, centering=(0.5, 0.5))
        output.putalpha(mask)

        buffer = BytesIO()
        output.save(buffer, format='png')

        file = InMemoryUploadedFile(
            buffer,
            '{}'.format(request.FILES['image']),
            '{}'.format(request.FILES['image']),
            'image/png',
            buffer.tell(),
            None,
        )

        profile.image = file
    profile.save()
    return redirect('/account/userpage/' + str(profile.user))
예제 #20
0
def profile(request, user_id):
    user = User.objects.get(id=user_id)
    enrolls = Enroll.objects.filter(student_id=user_id)
    try:
        profile = Profile.objects.get(user=user)
    except ObjectDoesNotExist:
        profile = Profile(user=user)
        profile.save()

    # 計算積分
    credit = profile.work + profile.assistant + profile.debug + profile.creative
    # 記錄系統事件
    if is_event_open(request):
        log = Log(user_id=request.user.id, event='查看個人檔案')
        log.save()

    #檢查是否為教師或同班同學
    user_enrolls = Enroll.objects.filter(student_id=request.user.id)
    for enroll in user_enrolls:
        if is_classmate(user_id, enroll.classroom_id) or request.user.id == 1:
            return render_to_response('account/profile.html', {
                'enrolls': enrolls,
                'profile': profile,
                'user_id': user_id,
                'credit': credit
            },
                                      context_instance=RequestContext(request))
    if user_id == str(request.user.id):
        return render_to_response('account/profile.html', {
            'enrolls': enrolls,
            'profile': profile,
            'user_id': user_id,
            'credit': credit
        },
                                  context_instance=RequestContext(request))
    return redirect("/")
예제 #21
0
def user_post_save_receiver(sender, instance, created, *args, **kwargs):
    if created:
        profile = Profile(user=instance)
        profile.save()
예제 #22
0
    def post(self, request, *args, **kwargs):
        def _get_total_price(ordered_products):
            total_price = 0
            for ordered_product in ordered_products:
                total_price += ordered_product.total
            return total_price

        if request.user.is_authenticated:
            cart = CartAuth(request)
        else:
            cart = Cart(request)
        order_form = OrderForm(request.POST)
        if order_form.is_valid():
            fullname = order_form.cleaned_data['fullname']
            email = order_form.cleaned_data['email']
            phone = order_form.cleaned_data['phone']
            user = None
            if request.user.is_authenticated:
                user = request.user
            elif User.objects.get(username=email).exists():
                return redirect(reverse('account:login'))
            else:
                password = User.objects.make_random_password()
                user = User.objects.create_user(email, email, password)
                profile = Profile(user=user, phone=phone)
                profile.save()
                user.last_name = fullname
            postcode = order_form.cleaned_data.get('postcode')
            region = order_form.cleaned_data.get('region')
            area = order_form.cleaned_data.get('area')
            city = order_form.cleaned_data.get('city')
            street = order_form.cleaned_data.get('street')
            house = order_form.cleaned_data.get('house')
            building = order_form.cleaned_data.get('building')
            apartment = order_form.cleaned_data.get('apartment')
            comment = order_form.cleaned_data.get('comment')
            payment_type = order_form.cleaned_data.get('payment_type')
            entity_name = order_form.cleaned_data.get('entity_name')
            entity_inn = order_form.cleaned_data.get('entity_inn')
            entity_kpp = order_form.cleaned_data.get('entity_kpp')
            delivery = None
            entity = None
            if postcode:
                delivery = Delivery(postcode=postcode,
                                    region=region,
                                    area=area,
                                    city=city,
                                    street=street,
                                    house=house,
                                    building=building,
                                    apartment=apartment,
                                    comment=comment)
                delivery.save()
            if entity_name:
                entity = Entity(title=entity_name,
                                inn=entity_inn,
                                kpp=entity_kpp)
                entity.save()

            order = Order(delivery=delivery, user=user, entity=entity)
            order.save()
            products = tuple(cart.get())
            print(tuple(products), 'ORDER PRODUCTS FOR CREATE')

            ordered_products = OrderedProducts.objects.bulk_create(
                OrderedProducts(order=order,
                                product=product,
                                count=product.count,
                                total=product.get_discount_price() *
                                int(product.count)) for product in products)
            if payment_type in ('bank', 'bill', 'receipt'):
                payment = Payment(total=_get_total_price(ordered_products),
                                  _type=self.payment_type_crutch[payment_type])
                payment.save()
            order.payment = payment
            order.save()
            return redirect(reverse('account:ProfileOrders'))
        return redirect(reverse('account:ProfileOrders'))
예제 #23
0
def save_profile(sender, instance, created, **kwargs):
    user = instance
    if created:
        profile = Profile(user=user)
        profile.save()
예제 #24
0
def signup(request):
    context = {}
    if request.method == "POST":
        user_form = SignupForm(request.POST)
        if user_form.is_valid():
            users_email = User.objects.filter(email=user_form.data["email"])
            if len(users_email) != 0:
                messages.error(request,
                               "Пользователь с таким email уже существует.")
                context["form"] = SignupForm(request.POST)
                return render(request, "account/signup.html", context)
            else:
                ok = check_blacklist(user_form.data['email'])
                if ok is not None:
                    messages.error(
                        request,
                        f"Имя пользователя не должно содержать \"{ok}\"")
                    context["form"] = SignupForm(request.POST)
                    return render(request, "account/signup.html", context)
                else:
                    new_user = user_form.save(commit=True)
                    new_user.set_password(user_form.cleaned_data["password1"])
                    new_user.is_active = False
                    new_user.save()
                    profile = Profile(user=new_user, avatar_id=1)
                    profile.save()
                    code_object = Code()
                    code_object.user = new_user
                    code_object.code, code_object.token = utils.generate_codes(
                        new_user, datetime.datetime.now())
                    code_object.save()
                    mail_context = {
                        'token': code_object.token,
                        'code': code_object.code,
                        'user': new_user
                    }
                    utils.send_mail(new_user.email,
                                    'Подтверждение Регистрации',
                                    'mail/confirmation.html', mail_context)
                    messages.warning(
                        request,
                        'На вашу электронную почту было отправлено письмо, для подтверждения.'
                    )
                    return redirect(reverse('account:login'))
        else:
            errors = user_form.errors.as_json()
            errors = json.loads(errors)
            codes = []
            for key, message in errors.items():
                for error in message:
                    codes.append(error['code'])
            print(codes)
            if 'unique' in codes:
                messages.error(request,
                               "Пользователь с таким именем уже существует.")
            if 'password_too_similar' in codes:
                messages.error(request, "Пароль и имя пользователя совпадают.")
            if 'password_mismatch' in codes:
                messages.error(request, "Пароли не совпадают.")
            if ('password_no_symbol'
                    in codes) or ('password_no_lower' in codes) or (
                        'password_no_upper'
                        in codes) or ('password_no_number' in codes) or (
                            'password_too_short'
                            in codes) or ('password_too_common' in codes):
                messages.error(
                    request,
                    "Пароль не соответствует требованиям. (минимум: длина 8 символов, "
                    "1 спец.символ, 1 строчная буква, 1 прописная буква, 1 цифра)"
                )
            context["form"] = SignupForm(request.POST)
    else:
        if request.user.is_authenticated:
            messages.warning(request, "Вы уже вошли в аккаунт.")
            return redirect(reverse('account:view_my'))
        context["form"] = SignupForm()
    return render(request, "account/signup.html", context)
예제 #25
0
from django.contrib.auth.models import User
from account.models import Profile

user = User.objects.get(username='******')
p = Profile(user=user, nick='dj')
p.save()
예제 #26
0
def user_login(request):
    message = None
    test = ""
    if request.method == "POST":
        form = LoginForm(request.POST)
        if form.is_valid():
            username = request.POST['username']
            password = request.POST['password']
            user = authenticate(username=username, password=password)
            if user is not None:
                if user.is_active:
                    if user.is_superuser:
                        mygroup1, created = Group.objects.get_or_create(
                            name='teacher')
                        user.groups.add(mygroup1)
                        mygroup2, created = Group.objects.get_or_create(
                            name='active_teacher')
                        user.groups.add(mygroup2)
                        if user.first_name == "":
                            user.first_name = "管理員"
                            user.save()
                            # create Message
                            title = "請修改您的姓名"
                            url = "/account/realname"
                            message = Message.create(title=title,
                                                     url=url,
                                                     time=timezone.now())
                            message.save()

                            # message for group member
                            messagepoll = MessagePoll.create(
                                message_id=message.id, reader_id=1)
                            messagepoll.save()
                    # 登入成功,導到大廳
                    login(request, user)
                    # 記錄訪客資訊
                    admin_user = User.objects.get(id=1)
                    try:
                        profile = Profile.objects.get(user=admin_user)
                    except ObjectDoesNotExist:
                        profile = Profile(user=admin_user)
                        profile.save()
                    profile.visitor_count = profile.visitor_count + 1
                    profile.save()

                    year = localtime(timezone.now()).year
                    month = localtime(timezone.now()).month
                    day = localtime(timezone.now()).day
                    date_number = year * 10000 + month * 100 + day
                    try:
                        visitor = Visitor.objects.get(date=date_number)
                    except ObjectDoesNotExist:
                        visitor = Visitor(date=date_number)
                    visitor.count = visitor.count + 1
                    visitor.save()

                    visitorlog = VisitorLog(visitor_id=visitor.id,
                                            user_id=user.id,
                                            IP=request.META.get('REMOTE_ADDR'))
                    visitorlog.save()

                    return redirect('/account/0')
                else:
                    message = "Your user is inactive"
            else:
                message = "無效的帳號或密碼!"
    else:
        form = LoginForm()
    return render(request, 'registration/login.html', {
        'test': test,
        'message': message,
        'form': form
    })
예제 #27
0
def student_login(request):
    message = None
    test = ""
    if request.method == "POST":
        form = StudentLoginForm(request.POST)
        if form.is_valid():
            username = request.POST['teacher'] + "_" + request.POST['username']
            password = request.POST['password']
            user = authenticate(username=username, password=password)
            if user is not None:
                if user.is_active:
                    # 登入成功,導到大廳
                    login(request, user)
                    # 記錄訪客資訊
                    admin_user = User.objects.get(id=1)
                    try:
                        profile = Profile.objects.get(user=admin_user)
                    except ObjectDoesNotExist:
                        profile = Profile(user=admin_user)
                        profile.save()
                    profile.visitor_count = profile.visitor_count + 1
                    profile.save()
                    try:
                        profile = Profile.objects.get(user=user)
                    except ObjectDoesNotExist:
                        profile = Profile(user=user)
                        profile.save()
                        # create Message
                        title = "請洽詢任課教師課程名稱及選課密碼"
                        url = "/student/classroom/add"
                        message = Message.create(title=title,
                                                 url=url,
                                                 time=timezone.now())
                        message.save()

                        # message for group member
                        messagepoll = MessagePoll(message_id=message.id,
                                                  reader_id=user.id)
                        messagepoll.save()
                    profile.visitor_count = profile.visitor_count + 1
                    profile.save()

                    year = localtime(timezone.now()).year
                    month = localtime(timezone.now()).month
                    day = localtime(timezone.now()).day
                    date_number = year * 10000 + month * 100 + day
                    try:
                        visitor = Visitor.objects.get(date=date_number)
                    except ObjectDoesNotExist:
                        visitor = Visitor(date=date_number)
                    visitor.count = visitor.count + 1
                    visitor.save()

                    visitorlog = VisitorLog(visitor_id=visitor.id,
                                            user_id=user.id,
                                            IP=request.META.get('REMOTE_ADDR'))
                    visitorlog.save()

                    return redirect('/account/0')
                else:
                    message = "Your user is inactive"
            else:
                message = "無效的帳號或密碼!"
    else:
        form = StudentLoginForm()
    return render(request, 'account/student_login.html', {
        'test': test,
        'message': message,
        'form': form
    })
예제 #28
0
def user_login(request):
    message = None
    test = ""
    if request.method == "POST":
        form = LoginForm(request.POST)
        if form.is_valid():
            username = request.POST['username']
            password = request.POST['password']
            user = authenticate(username=username, password=password)
            if user is not None:
                if user.is_active:
                    if user.id == 1:
                        if user.first_name == "":
                            user.first_name = "管理員"
                            user.save()
                            # create Message
                            title = "請修改您的姓名"
                            url = "/account/realname"
                            message = Message.create(title=title,
                                                     url=url,
                                                     time=timezone.now())
                            message.save()

                            # message for group member
                            messagepoll = MessagePoll.create(
                                message_id=message.id, reader_id=1)
                            messagepoll.save()
                    # 登入成功,導到大廳
                    login(request, user)
                    # 記錄系統事件
                    if is_event_open(request):
                        log = Log(user_id=request.user.id, event='登入系統')
                        log.save()
                    # 記錄訪客資訊
                    admin_user = User.objects.get(id=1)
                    try:
                        profile = Profile.objects.get(user=admin_user)
                    except ObjectDoesNotExist:
                        profile = Profile(user=admin_user)
                        profile.save()
                    profile.login_count = profile.login_count + 1
                    profile.save()

                    year = localtime(timezone.now()).year
                    month = localtime(timezone.now()).month
                    day = localtime(timezone.now()).day
                    date_number = year * 10000 + month * 100 + day
                    try:
                        visitor = Visitor.objects.get(date=date_number)
                    except ObjectDoesNotExist:
                        visitor = Visitor(date=date_number)
                    visitor.count = visitor.count + 1
                    visitor.save()

                    visitorlog = VisitorLog(visitor_id=visitor.id,
                                            user_id=user.id,
                                            IP=request.META.get('REMOTE_ADDR'))
                    visitorlog.save()

                    return redirect('dashboard')
                else:
                    message = "Your user is inactive"
            else:
                # 記錄系統事件
                if is_event_open(request):
                    log = Log(user_id=0, event='登入失敗')
                    log.save()
                message = "無效的帳號或密碼!"
    else:
        form = LoginForm()
    return render_to_response('registration/login.html', {
        'test': test,
        'message': message,
        'form': form
    },
                              context_instance=RequestContext(request))
예제 #29
0
def user_login(request, role):
    message = None
    test = ""
    if request.method == "POST":
        if role == "0":
            form = LoginForm(request.POST)
        else:
            form = LoginStudentForm(request.POST)
        if form.is_valid():
            teacher = request.POST['teacher']
            username = request.POST['username']
            password = request.POST['password']
            if role == "0":
                user = authenticate(username=username, password=password)
            else:
                user = authenticate(username=teacher + "_" + username,
                                    password=password)
            if user is not None:
                if user.is_active:
                    if user.id == 1:
                        zones = Zone.objects.all()
                        if len(zones) == 0:
                            for city_name, zones, mapx, mapy in county:
                                city = County(name=city_name,
                                              mapx=mapx,
                                              mapy=mapy)
                                city.save()
                                for zone_name in zones:
                                    zone = Zone(name=zone_name, county=city.id)
                                    zone.save()
                            school = School(county=1,
                                            zone=9,
                                            system=3,
                                            name="南港高中")
                            school.save()
                            user.last_name = "1"
                            user.save()
                        if user.first_name == "":
                            user.first_name = "管理員"
                            user.save()
                            try:
                                group = Group.objects.get(name="apply")
                            except ObjectDoesNotExist:
                                group = Group(name="apply")
                                group.save()
                            group.user_set.add(user)
                            # create Message
                            title = "請修改您的姓名"
                            url = "/account/realname"
                            message = Message(title=title,
                                              url=url,
                                              time=timezone.now())
                            message.save()

                            # message for group member
                            messagepoll = MessagePoll(message_id=message.id,
                                                      reader_id=1)
                            messagepoll.save()
                    # 記錄訪客資訊
                    admin_user = User.objects.get(id=1)
                    try:
                        profile = Profile.objects.get(user=admin_user)
                    except ObjectDoesNotExist:
                        profile = Profile(user=admin_user)
                        profile.save()
                    profile.visitor_count = profile.visitor_count + 1
                    profile.save()

                    year = localtime(timezone.now()).year
                    month = localtime(timezone.now()).month
                    day = localtime(timezone.now()).day
                    date_number = year * 10000 + month * 100 + day
                    try:
                        visitor = Visitor.objects.get(date=date_number)
                    except ObjectDoesNotExist:
                        visitor = Visitor(date=date_number)
                    except MultipleObjectsReturned:
                        visitor = Visitor.objects.filter(date=date_number)[0]
                    visitor.count = visitor.count + 1
                    visitor.save()

                    visitorlog = VisitorLog(visitor_id=visitor.id,
                                            user_id=user.id,
                                            IP=request.META.get('REMOTE_ADDR'))
                    visitorlog.save()
                    # 登入成功,導到大廳
                    login(request, user)
                    return redirect('/account/dashboard/0')
                else:
                    message = "帳號未啟用!"
            else:
                message = "無效的帳號或密碼!"
    else:
        if role == "0":
            form = LoginForm()
        else:
            form = LoginStudentForm()
    return render(request, 'registration/login.html', {
        'role': role,
        'message': message,
        'form': form
    })