コード例 #1
0
    def processInspectionFields(self, request):
        post_request = request.POST
        ro_number = request.POST.get("ro_number")

        category_items_dict = {}
        try:
            ro = RO.objects.get(ro_number=ro_number)
            ro.inspector = request.user
            ro.inspection_status = "Completed"
            ro.save()
            for key, value in post_request.iteritems():
                if key == "ro_number" or key == "package":
                    continue
                attr, category_id, item_id = key.split("_")
                if category_id + "_" + item_id in category_items_dict:
                    category_items_dict[category_id + "_" +
                                        item_id][attr] = value
                else:
                    category_items_dict[category_id + "_" + item_id] = {
                        attr: value
                    }
            for key, value in category_items_dict.iteritems():
                category_id, item_id = key.split("_")
                category_item = InspectionCategoriesItems.objects.get(
                    category__id=category_id, item__id=item_id)
                ro_inspection = RoInspection.objects.filter(
                    inspection=category_item, ro=ro)
                if len(ro_inspection) < 1:
                    ro_inspection = RoInspection()
                    ro_inspection.inspection = category_item
                    ro_inspection.ro = ro
                else:
                    ro_inspection = ro_inspection[0]
                for attr, val in value.iteritems():
                    if attr == "image":
                        import uuid
                        val = ContentFile(b64decode(val.split(",")[1]),
                                          uuid.uuid1().hex + ".png")
                    ro_inspection.__setattr__(attr, val)
                ro_inspection.save()

#         postRequset = request.POST
#         user = request.user
#         post_dict ={}
# #         print request.POST
#         try:
#             for key,value in postRequset.iteritems():
#                 if key =="roNumber":
#                     continue
#                 id,val =key.split("_")[1:]
#                 if int(id) in post_dict:
#                     post_dict.get(int(id)).update({val : value})
#                 else:
#                     post_dict[int(id)] = {val : value}
#             self.getInspectionCategoriesObjectsById(post_dict)
#             self.saveRoInspection(post_dict,postRequset.get("roNumber"),user)
        except Exception as e:
            print e
コード例 #2
0
ファイル: serializers.py プロジェクト: mvattuone/grh-platform
    def from_native(self, data):
        if isinstance(data, basestring) and data.startswith('data:application/pdf'):
            pdfformat, pdfstr = data.split(';base64,')  # format ~= data:image/X,
            ext = pdfformat.split('/')[-1]  # guess file extension
            data = ContentFile(base64.b64decode(pdfstr), name=str(uuid.uuid4()) + "." + ext)

        if isinstance(data, basestring) and data.startswith('data:image'):
            # base64 encoded image - decode
            format, imgstr = data.split(';base64,')  # format ~= data:image/X,
            ext = format.split('/')[-1]  # guess file extension

            raw_data = ContentFile(base64.b64decode(imgstr), name='temp.' + ext)

            img = Image.open(raw_data)
            output = StringIO.StringIO() #temporarily mess w/ image in memory

            t_dim = (1600,1600)
            i_dim = img.size
            compare_image_to_thumb = [(i_dim > t_dim) for i_dim, t_dim in zip(i_dim,t_dim)]
            if True in compare_image_to_thumb:
                t_dim = (1600,1600) #TODO: Remove stupid repeat variable
                img.thumbnail(t_dim, Image.ANTIALIAS)

            # try to get image exif and flip here on the server
            try:
                for orientation in ExifTags.TAGS.keys() :
                    if ExifTags.TAGS[orientation] == 'Orientation' : break

                imgExif = img._getexif()
                if imgExif is not None :
                    exif = dict(imgExif.items())

                    if exif[orientation] == 3 :
                        img = img.rotate(180, expand=True)
                    elif exif[orientation] == 6 :
                        img = img.rotate(-90, expand=True)
                    elif exif[orientation] == 8 :
                        img = img.rotate(90, expand=True)

            except:
                traceback.print_exc()

            img.save(output,'png')
            output.seek(0)
            converted_data = output.read()
            data = ContentFile(converted_data, name=str(uuid.uuid4()) + "." + ext)
        return super(Base64FileField, self).from_native(data)
コード例 #3
0
ファイル: fields.py プロジェクト: adelsonllima/djangoplus
 def to_python(self, data):
     if data:
         data = ContentFile(base64.b64decode(data.split(',')[1]))
         data.name = 'Image.png'
     return super(PhotoField, self).to_python(data)