Exemplo n.º 1
0
    def save_model(self, request, obj, form, change):
        if len(form.files) > 0 and obj.updated_at == None:
            #file, obj are new
            obj.user = request.user
            obj.connect_dc_doc()
            obj.save()
        elif len(form.files) > 0 and obj.updated_at != None:
            #object has been updated, look for file changes
            n_file = form.files['file']
            n_file_sz = getsize(n_file)
            n_file_hdr = n_file.read(512) if n_file_sz >= 512\
             else n_file.read()
            o_file = obj.file
            o_file_sz = getsize(o_file)
            o_file_hdr = o_file.read(512) if o_file_sz >= 512\
             else o_file.read()

            if o_file_hdr != n_file_hdr:
                #looks like the file could be different (not a whole file compar)
                obj.dc_properties.delete()
                obj.connect_dc_doc()
                obj.save()
        else:
            obj.dc_properties.update_access(obj.access_level)
            obj.save()
Exemplo n.º 2
0
    def save_model(self, request, obj, form, change):
        if len(form.files) > 0 and obj.updated_at is None:
            #file, obj are new
            obj.user = request.user
            obj.connect_dc_doc()
            obj.save()
        elif len(form.files) > 0 and obj.updated_at is not None:
            #object has been updated, look for file changes
            n_file = form.files['file']
            n_file_sz = getsize(n_file)
            n_file_hdr = n_file.read(512) if n_file_sz >= 512\
                else n_file.read()
            o_file = obj.file
            o_file_sz = getsize(o_file)
            o_file_hdr = o_file.read(512) if o_file_sz >= 512\
                else o_file.read()

            if o_file_hdr != n_file_hdr:
                #our 512 byte comparison tells us the docs differ
                obj.dc_properties.delete()
                obj.connect_dc_doc()
                obj.save()
        else:
            obj.dc_properties.update_access(obj.access_level)
            obj.save()