Exemple #1
0
    def update(self, instance, validated_data):
        # 获取上传文件对象
        file = validated_data['logo']

        # 获取brand名称
        name = validated_data['name']

        # 获取首字母
        first_letter = validated_data['first_letter']

        # 上传图片到fdfs系统
        fdfs = FDFSStorage()
        try:
            file_id = fdfs.save(file.name, file)
        except Exception:
            # 上传文件失败
            raise APIException('上传文件失败')

        # 修改SKU图片数据
        instance.name = name
        instance.logo = file_id
        instance.first_letter = first_letter
        instance.save()

        return instance
Exemple #2
0
    def post(self, request):
        """用户修改个人资料"""
        # 接收收据(当前版本只支持修改头像)
        user = request.user
        avatar = request.FILES.get('avatar')
        # 校验数据
        if avatar is None:
            return redirect(reverse('user:user'))

        # 进行业务处理

        # 获取用户对象
        user = User.objects.get(id=user.id)

        if user:
            # 使用自定义存储类储存用户上传的文件
            storage = FDFSStorage()
            filename = storage.save(avatar.name, avatar)

            # 修改头像
            user.avatar = filename
            user.save()

        # 返回应答
        return redirect(reverse('user:user'))
Exemple #3
0
def upload_graduation_topic(request, student_id):
    user = request.user
    user_obj = User.objects.get(id=user.id)
    if request.method == "GET":
        context = {
            "student_id": student_id,
        }
        return render(request, "defense/upload_annex_and_request_defense.html",
                      context)

    if request.method == "POST":
        form = AnnexForm(request.POST)
        file = request.FILES.get("file")
        temp_file = "%s/%s" % (settings.MEDIA_ROOT, file.name)
        with open(temp_file, 'wb') as upload_files:
            for chunk in file.chunks():
                upload_files.write(chunk)
        # 写入临时文件
        file_path = os.path.abspath(temp_file)
        print("##本地文件绝对路径", file_path)
        fdfs_storage = FDFSStorage()
        remote_file_id = fdfs_storage.upload(file_path)[1]

        if form.is_valid():
            form = form.clean()
            print("##FORM内容:", form)
            if has_role(user_obj, ['student']):
                topic2student_obj = Topic2Student.objects.get(student=user.id)
                annex_topic = topic2student_obj.topic
                annex_obj = Annex.objects.create(file=remote_file_id,
                                                 annex_phase_id=5,
                                                 raw_name=form['raw_name'],
                                                 uploader=user,
                                                 detail="论文",
                                                 topic=annex_topic)
                annex_obj.save()
                # 更改学生状态为已经上传论文并申请了答辩
                user_obj.user_phase_id = 10
                user_obj.save()
                print("##################")
                print("学生状态")
                print(user_obj.user_phase_id)
                print("##################")
            elif has_role(user_obj, ['teacher']):
                # topic2teacher_obj = Topic2Teacher.objects.get(teacher_id=user.id)
                # annex_topic = topic2teacher_obj.topic
                annex_obj = Annex.objects.create(file=remote_file_id,
                                                 annex_phase_id=6,
                                                 raw_name=form['raw_name'],
                                                 uploader=user,
                                                 detail="答辩文档",
                                                 topic=None)

            else:
                return HttpResponse("你是个管理员吧???")
            # return redirect(reverse('topic:my_topic'))
            return render(request,
                          "defense/upload_annex_and_request_defense.html",
                          {"student_id": student_id})
Exemple #4
0
def upload_open_topic(request):
    user = request.user
    user_obj = User.objects.get(id=user.id)
    # name = get_name_role(request)[0]
    # role = get_name_role(request)[1]
    # context = {
    #     "name": name,
    #     "role": role,
    # }
    if request.method == "POST":
        form = AnnexForm(request.POST)
        file = request.FILES.get("file")
        temp_file = "%s/%s" % (settings.MEDIA_ROOT, file.name)
        with open(temp_file, 'wb') as upload_files:
            for chunk in file.chunks():
                upload_files.write(chunk)

        file_path = os.path.abspath(temp_file)
        fdfs_storage = FDFSStorage()
        remote_file_id = fdfs_storage.upload(file_path)[1]

        if form.is_valid():
            form = form.clean()
            print("##FORM内容:", form)
            if has_role(user_obj, ['student']):
                topic2student_obj = Topic2Student.objects.get(student=user.id)
                annex_topic = topic2student_obj.topic
                annex_obj = Annex.objects.create(file=remote_file_id,
                                                 annex_phase_id=2,
                                                 raw_name=form['raw_name'],
                                                 uploader=user,
                                                 detail="form.detail",
                                                 topic=annex_topic)
                annex_obj.save()
                # 更改学生状态为已经上传开题报告
                user_obj.user_phase_id = 6
                user_obj.save()
            elif has_role(user_obj, ['teacher']):
                # topic2teacher_obj = Topic2Teacher.objects.get(teacher_id=user.id)
                # annex_topic = topic2teacher_obj.topic
                annex_obj = Annex.objects.create(file=remote_file_id,
                                                 annex_phase_id=1,
                                                 raw_name=form['raw_name'],
                                                 uploader=user,
                                                 detail="开题报告模板",
                                                 topic=None)
                annex_obj.save()
            else:
                return HttpResponse("你是个管理员吧???")
            return redirect(reverse('topic:my_topic'))

    return render(request, "open_topic/upload_open_topic.html")
Exemple #5
0
 def change_info(self, post, file, user):
     print('change_info')
     if file:
         fastdfs = FDFSStorage()
         user.img_url = fastdfs.save(file.name, file)
     if post['usersex']:
         user.sex = int(post['usersex'])
     user.username = post['username']
     user.tele = post['telephone']
     user.addr = post['address']
     user.desc = post['userdesc']
     user.save()
     return '信息修改成功'
Exemple #6
0
    def post(self, request):
        data = request.data

        fdfs = FDFSStorage()
        file = data['image']
        print(file)
        try:
            file_id = fdfs.save(file.name, file)
        except Exception:
            raise APIException('上传失败')
        image_id = settings.FDFS_URL + file_id

        return Response({'img_url': image_id})
Exemple #7
0
    def save_img(self, imgs, details, imgdb_id):
        try:
            img_database = ImgsDatabase.objects.get(id=imgdb_id)
        except ImgsDatabase.DoesNotExist:
            return False

        # 将图片保存到fastdfs存储系统中
        fastdfs = FDFSStorage()
        id_list = []  # 记录所添加图片的id用于传递到前端
        for i in range(len(imgs)):
            img = Imgs()
            # 将图片保存到fastdfs存储系统中
            img.img = fastdfs.save(imgs[i].name, imgs[i])
            img.name = imgs[i].name
            img.detail = details[i]
            img.imgsdb_id = img_database
            img.save()
            id_list.append(img.id)
        res = '上传成功', id_list
        return res
Exemple #8
0
    def create(self, validated_data):
        # 获取上传文件对象
        file = validated_data['logo']

        brand = validated_data['id']
        # 上传图片到FDFS系统
        fdfs = FDFSStorage()
        try:
            file_id = fdfs.save(file.name, file)
        except Exception:
            raise APIException('上传失败')
        # 保存上传记录
        brand_logo = Brand.objects.create(
            name=validated_data['name'],
            logo=file_id,
            first_letter=validated_data['first_letter'])
        if not brand.logo:
            brand.logo = brand_logo.logo.url
            brand.save()

        return brand_logo
Exemple #9
0
    def store_book(self, post, file, user, book_id):
        # 保存谱书信息
        # print(post)
        book_id = int(book_id)
        if book_id:
            # 若book_id不为0,则表明是修改谱书内容,需到数据库中查找对应谱书
            try:
                gene_book = GeneBook.objects.get(id=book_id)
            except GeneBook.DoesNotExist:
                return False
            # 判断是否需要更换谱书封面
            if file:
                if gene_book.img_name != post['filename']:
                    fastdfs = FDFSStorage()
                    gene_book.img = fastdfs.save(file.name, file)
                    gene_book.img_name = post['filename']
        else:
            # 若book_id为0,则表明是新创建谱书
            gene_book = GeneBook()
            if file:
                fastdfs = FDFSStorage()
                gene_book.img = fastdfs.save(file.name, file)
                gene_book.img_name = post['filename']
            else:
                gene_book.img_name = None
        gene_book.name = post['bookname']
        gene_book.author = post['author']
        gene_book.desc = post['bookdesc']
        gene_book.province = post['province']
        gene_book.city = post['city']
        gene_book.district = post['district']
        gene_book.addr = post['address']
        gene_book.grant = int(post['grant'])
        gene_book.user_id = user
        gene_book.audit_status = int(post['audit_select'])

        gene_book.save()
        return gene_book.id
Exemple #10
0
def img_handle(request):
    f1 = request.FILES.get('img')
    fdfs = FDFSStorage()
    return HttpResponse(fdfs.save(f1.name, f1))
Exemple #11
0
 def images(self, request):
     img = request.data.get('image')
     file_id = FDFSStorage._save(self, name='', content=img)
     image_url = FDFS_URL + file_id
     data = {'img_url': image_url}
     return Response(data)