Exemple #1
0
    def _createBarcode(self):
        if self.barcode["value"] == "":
            return
        if self.barcode["type"] == BARCODE_ANY:
            logger.warning("Usando %s por defecto" % self.typeToName(BARCODE_128))
            self.barcode["type"] = BARCODE_128

        type_ = self.typeToName(self.barcode["type"])
        value_ = self.barcode["value"]
        bg_ = self.barcode["bg"]
        fg_ = self.barcode["fg"]
        if not isinstance(self.barcode["bg"], str):
            bg_ = QColor(self.barcode["bg"]).name()

        if not isinstance(self.barcode["fg"], str):
            fg_ = QColor(self.barcode["fg"]).name()

        margin_ = self.barcode["margin"] / 10
        bar_ = None
        render_options = {
            'module_width': 0.2,
            'module_height': 5,  # 15
            'text_distance': 1.0,  # 5.0
            'background': bg_.lower(),
            'foreground': fg_.lower(),
            'write_text': self.barcode["text"],
            'font_size': 10,
            'text': value_,
            'quiet_zone': margin_,  # 6.5
        }

        try:
            import barcode
            from barcode.writer import ImageWriter
            from PIL.ImageQt import ImageQt
            barC = barcode.get_barcode_class(type_.lower())
            bar_ = barC(u'%s' % value_, writer=ImageWriter())
            b = bar_.render(render_options)
            qim = ImageQt(b)
            self.p = QPixmap.fromImage(qim)
        except Exception:
            print(traceback.format_exc())
            self.barcode["valid"] = False
            self.p = None

        if self.p:
            # Escalar
            if self.barcode["scale"] != 1.0:
                wS_ = self.barcode["x"] * self.barcode["scale"]
                hS_ = self.barcode["y"] * self.barcode["scale"]
                self.p = self.p.scaled(wS_, hS_)

            self.barcode["x"] = self.p.width()
            self.barcode["y"] = self.p.height()

            # FALTA: res , cut y rotation

            self.barcode["valid"] = True
        else:
            self.barcode["valid"] = False
Exemple #2
0
def gen_single(code='test'):
    # return image path: file:///path/to/image
    C128 = barcode.get_barcode_class('code128')
    ins_c128 = C128(code, writer=ImageWriter())
    path = os.path.join(ABS_DIR_TO_STORE_IMAGES, code + rand_prefix())
    # print(path)
    ins_c128.save(path)
    return pathlib.Path(path).as_uri() + '.png'
Exemple #3
0
def get_br(bno):
	import barcode
        #msgprint("bno "+cstr(bno))
	from barcode.writer import ImageWriter
	EAN = barcode.get_barcode_class('code39')
	ean = EAN(bno, writer=ImageWriter())
	fullname = ean.save(bno)
        #msgprint("from utils "+cstr(fullname))
        return fullname
Exemple #4
0
def creaCodigoAux():
	EAN = barcode.get_barcode_class('ean13')
	#En esta linea creo un ID0 basado en el tiempo de Unix a prueba de Hash Collision
	stamp = str((int(time.time())*100)+(datetime.datetime.now().second+10))
	ean = EAN(stamp)
	ean.save("sif/media/codes/"+stamp)
	crea = CodigoBarras(codigo=stamp)
	crea.save()
	cofre = CodigoBarras.objects.get(id=crea.id)
	return cofre
 def generate_code(value):
     ''' Add extra char
     '''
     import barcode
     EAN = barcode.get_barcode_class('ean13')
     if len(value) != 12:
         raise osv.except_osv(
             _('Error'),
             _('EAN before control must be 12 char!'))
     ean13 = EAN(value)
     return ean13.get_fullcode()
Exemple #6
0
def sgv_ean_barcode(request, ean=None):

    if validate_ean13(ean):
        return redirect('/static/img/ean_error.svg')
    else:
        import barcode
        response = HttpResponse(content_type='image/svg+xml')
        options = {'module_height': 5, 'write_text': False}
        svg = barcode.get_barcode_class('ean13')(ean)
        response.write(svg.render(options))
        return response
def generate_barcode(code, docname):
	path = os.path.abspath(os.path.join('.','bench_smart', 'public', 'files'))
	directory = '%s/%s'%(path, docname)
	if not os.path.exists(directory):
		os.makedirs(directory)

	if directory:
		filpath = directory + '/' + code
		barcode.PROVIDED_BARCODES
		EAN = barcode.get_barcode_class('Code39')
		ean = EAN(code)
		fullname = ean.save(filpath)
	return fullname or None
Exemple #8
0
 def generate_barcode(self):
     "generates barcode png and returns filename"
     try:
         import barcode
     except ImportError:
         #not installed
         return None
     
     if not self.upc:
         return None
     EAN = barcode.get_barcode_class('ean13')
     upc_filename = EAN(self.upc, writer=barcode.writer.ImageWriter()).save('%s.png' % self.upc)
     return upc_filename
Exemple #9
0
    def _write_product_table_row(self, work_book, work_sheet, product, line):

        barcode_code = product.barcode
        EAN = barcode.get_barcode_class('ean13')
        ean = EAN(barcode_code, writer=ImageWriter())
        file_name = ean.save(product.name)
        size = openpyxl.drawing.Image(file_name).image.size * array([0.5, 0.5])
        img = openpyxl.drawing.Image(file_name, size=size)
        line_number = 'A%s' %line
        img.anchor(work_book.worksheets[0].cell(line_number))


        work_sheet.append((
            product.name,
            product.order,
            product.quantity,
        ))
        work_sheet.append((work_sheet.add_image(img),)),
Exemple #10
0
def gen_barcode(code):
    from StringIO import StringIO
    import barcode

    try:
        code_class = barcode.get_barcode_class('code39')
        image_writer=barcode.writer.ImageWriter()
        code_generater = code_class(code, writer=image_writer, add_checksum=False)
        io = StringIO()
        options = {'text_distance': 2}
        code_generater.write(io, options)
        #response = make_response(io.read())
        #response.headers['content-Type'] = 'image/png'
        #return response
        print io.len
        return io.read()
    except Exception, e:
        print e
 def generate_barcode(self, barcode_string, height, width):
     temp_path_svg = tempfile.gettempdir()+"/temp_barcode"
     temp_path_png = tempfile.gettempdir()+"/temp_barcode.png"
     code39 = barcode.get_barcode_class('code39')
     c39 = code39(str(barcode_string))
     fullname = c39.save(temp_path_svg)
     file = open(temp_path_svg+".svg")
     
     img = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200,75)
     ctx = cairo.Context(img)
     svg_data = file.read()
     handler = rsvg.Handle(None, str(svg_data))
     handler.render_cairo(ctx)
     img.write_to_png(temp_path_png)
     
     name = open(temp_path_png, "r+")
     barcode_data = base64.b64encode(name.read())
     return barcode_data
Exemple #12
0
def _barcode(this, val, height=None, type="code128", add_checksum=False):
    if not barcode:
        return ""
    if not val:
        return ""
    try:
        bar_cls = barcode.get_barcode_class(type)
        writer = NFBarWriter()
        writer.custom_module_height = height
        if type == "code39":
            bar = bar_cls(str(val), writer=writer, add_checksum=add_checksum)
        else:
            bar = bar_cls(str(val), writer=writer)
        _, fname = tempfile.mkstemp(suffix=".png", prefix="barcode-")
        fullname = bar.save(fname.replace(".png", ""))
        return fullname
    except Exception as e:
        print("WARNING: failed to generate barcode: %s (%s)" % (val, e))
        return ""
Exemple #13
0
def test():
    if not os.path.isdir(TESTPATH):
        try:
            os.mkdir(TESTPATH)
        except OSError as e:
            print('Test not run.')
            print('Error:', e)
            sys.exit(1)
    objects = []

    def append(x, y):
        objects.append(OBJECTS.format(filename=x, name=y))

    def append_img(x, y):
        objects.append(IMAGES.format(filename=x, name=y))

    options = dict(module_width=0.495, module_height=25.0)
    for codename, code in TESTCODES:
        bcode = get_barcode(codename, code)
        if codename.startswith('i'):
            options['center_text'] = False
        else:
            options['center_text'] = True
        filename = bcode.save(os.path.join(TESTPATH, codename), options)
        print('Code: {0}, Input: {1}, Output: {2}'.format(
            bcode.name, code, bcode.get_fullcode()))
        append(filename, bcode.name)
        if ImageWriter is not None:
            bcodec = get_barcode_class(codename)
            bcode = bcodec(code, writer=ImageWriter())
            opts = dict(font_size=14, text_distance=1)
            if codename.startswith('i'):
                opts['center_text'] = False
            else:
                options['center_text'] = True
            filename = bcode.save(os.path.join(TESTPATH, codename), opts)
            append_img(filename, bcode.name)
        else:
            objects.append(NO_PIL)
    # Save htmlfile with all objects
    with codecs.open(HTMLFILE, 'w', encoding='utf-8') as f:
        obj = '\n'.join(objects)
        f.write(HTML.format(version=__version__, body=obj))
Exemple #14
0
def creaCodigo(request):
	
	informacion = "Inicia"
	if request.method == "POST":
		informacion = "pasa post"
		formulario = FormuCrea(request.POST)
		if formulario.is_valid():
			EAN = barcode.get_barcode_class('ean13')
			ean = EAN(request.POST.get('codigo'))
			ean.save(request.POST.get('codigo'))
 			agrega = formulario.save(commit = False)
			agrega.save()
			informacion = "Terminado"
			return HttpResponseRedirect('/codigoBarras/%s' %agrega.id)
	else:
		tablaCofre = CodigoBarras.objects().all()
		formulario = FormuCrea()
		ctx = {'form': formulario,'info':informacion,'tabla':tablaCofre}
	return render_to_response('inventario/agregaCB.html',ctx,context_instance = RequestContext(request))
def generate_barcode(code, docname):
	site_name = get_site_name()
	path = os.path.abspath(os.path.join('.',site_name, 'public', 'files','Barcode'))
	directory = '/%s/%s/'%(path,docname)
		

	if not os.path.exists(directory):		
		os.makedirs(directory)
		

	if directory:
		code1=code.replace("/","-")
		filpath = directory + code1

		barcode.PROVIDED_BARCODES
		EAN = barcode.get_barcode_class('Code39')
		ean = EAN(code)
		ean.writer.set_options({"module_height":6.0})
		fullname = ean.save(filpath)
		return code1 or None
def creaCodigo(request):
	
	informacion = "Inicia"
	if request.method == "POST":
		informacion = "pasa post"
		EAN = barcode.get_barcode_class('ean13')
		#En esta linea creo un ID0 basado en el tiempo de Unix a prueba de Hash Collision
		stamp = str((int(time.time())*100)+(datetime.datetime.now().second+10))
		ean = EAN(stamp)
		ean.save("sif/media/codes/"+stamp)
		crea = CodigoBarras(codigo=stamp)
		crea.save()
		informacion = "Terminado"
        
		return HttpResponseRedirect('/codigoBarras/%s' %crea.id)
	else:
		formulario = "<input type='submit' name='envia' value='envia'>"
		
	ctx = {'form': formulario,'info':informacion}
	return render_to_response('inventario/agregaCB.html',ctx,context_instance = RequestContext(request))
Exemple #17
0
def test():
    if not os.path.isdir(TESTPATH):
        try:
            os.mkdir(TESTPATH)
        except OSError as e:
            print('Test not run.')
            print('Error:', e)
            sys.exit(1)
    objects = []
    append = lambda x, y: objects.append(OBJECTS.format(filename=x, name=y))
    append_img = lambda x, y: objects.append(IMAGES.format(filename=x, name=y))
    options = dict(module_width=0.495, module_height=25.0)
    for codename, code in TESTCODES:
        bcode = get_barcode(codename, code)
        if codename.startswith('i'):
            options['center_text'] = False
        else:
            options['center_text'] = True
        filename = bcode.save(os.path.join(TESTPATH, codename), options)
        print('Code: {0}, Input: {1}, Output: {2}'.format(
            bcode.name, code, bcode.get_fullcode()))
        append(filename, bcode.name)
        if ImageWriter is not None:
            bcodec = get_barcode_class(codename)
            bcode = bcodec(code, writer=ImageWriter())
            opts = dict(font_size=14, text_distance=1)
            if codename.startswith('i'):
                opts['center_text'] = False
            else:
                options['center_text'] = True
            filename = bcode.save(os.path.join(TESTPATH, codename), opts)
            append_img(filename, bcode.name)
        else:
            objects.append(NO_PIL)
    # Save htmlfile with all objects
    with codecs.open(HTMLFILE, 'w', encoding='utf-8') as f:
        obj = '\n'.join(objects)
        f.write(HTML.format(version=__version__, body=obj))
Exemple #18
0
def barcode_func():
    barcode_classes = {
        '1': 'ean8',
        '2': 'ean13',
        '3': 'ean14',
        '4': 'upca',
        '5': 'jan',
        '6': 'isbn10',
        '7': 'isbn13',
        '8': 'issn',
        '9': 'code39',
        'x': 'code128',
        '*': 'pzn',
    }
    output = ''
    barcode_class = input('Select a Barcode Class: ')
    for option in barcode_class:
        output += barcode_classes.get(option) + ''
    br = barcode.get_barcode_class(output)
    barcode_data = input('Put your Barcode Number: ')
    barcode_ean8 = br(barcode_data)
    barcode_save_name = input('Put your filename: ')
    barcode_ean8.save(barcode_save_name)
Exemple #19
0
    def voucher_gen(self, request):
        MAX_X = 210
        MAX_Y = 297

        f = FPDF('P', 'mm', 'A4')
        f.add_page()
        pth = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                           'voucher_template.png')
        f.image(pth, 0, 0, MAX_X, MAX_Y)
        f.set_font('Arial', '', 20)
        f.text(70, 165, request.args['name'][0])
        f.text(70, 201, request.args['reason'][0])
        f.text(70, 236, request.args['extra'][0])
        f.set_font('Arial', '', 14)

        rand = os.urandom(8).encode('hex')

        EAN = barcode.get_barcode_class('code128')

        r = con.execute(vouchers.insert().values(
            fullname=request.args['name'][0].decode('utf8'),
            reason=request.args['reason'][0].decode('utf8'),
            extra=request.args['extra'][0].decode('utf8'),
            unique_id=rand,
            used=False,
            timestamp=int(time.time())))
        no = str(r.lastrowid)

        ean = EAN(str(rand))
        fullname = ean.save('/tmp/ean13_barcode')
        svg2png(url=fullname, write_to="/tmp/out.png", dpi=300)

        f.image("/tmp/out.png", 10, 10, 100, 20)

        f.text(165, 257, no)
        request.setHeader('Content-Type', "application/pdf")
        return f.output(dest='S')
Exemple #20
0
    def soft_barcode(self, barcode_type, data, impl='bitImageColumn',
                     module_height=5, module_width=0.2, text_distance=1):

        image_writer = ImageWriter()

        # Check if barcode type exists
        if barcode_type not in barcode.PROVIDED_BARCODES:
            raise BarcodeTypeError(
                'Barcode type {} not supported by software barcode renderer'
                .format(barcode_type))

        # Render the barcode to a fake file
        barcode_class = barcode.get_barcode_class(barcode_type)
        my_code = barcode_class(data, writer=image_writer)

        my_code.write("/dev/null", {
            'module_height': module_height,
            'module_width': module_width,
            'text_distance': text_distance
        })

        # Retrieve the Pillow image and print it
        image = my_code.writer._image
        self.image(image, impl=impl)
 def report_barcode(
     self,
     type,  # pylint: disable=redefined-builtin
     value,
     width=600,
     height=100,
     humanreadable=0,
     quiet=1,
 ):
     if type == "gs1_128":
         Gs1_128 = barcode.get_barcode_class("gs1_128")
         gs1_182 = Gs1_128(str(value), writer=SVGWitoutTextWriter())
         image = gs1_182.render()
         return request.make_response(image,
                                      headers=[("Content-Type",
                                                "image/svg+xml")])
     return super().report_barcode(
         type,
         value,
         width=width,
         height=height,
         humanreadable=humanreadable,
         quiet=quiet,
     )
Exemple #22
0
def generate_barcode(event):
    global tmp_path
    delete_temp_image()
    barcode_txt = ent_barcode_txt.get()
    code_type = ent_code_type.get()
    if len(barcode_txt) is 0:
        notify('Nothing to do')
        return
    print(f'Code type: {code_type}')
    print(f'Text to generate: {barcode_txt}')
    b_class = barcode.get_barcode_class(code_type)
    iw = ImageWriter()
    iw.set_options({'dpi': 140})
    try:
        bar = b_class(str(barcode_txt), writer=iw)
        notify('Format success')
    except (barcode.errors.WrongCountryCodeError, barcode.errors.BarcodeError,
            barcode.errors.BarcodeNotFoundError,
            barcode.errors.IllegalCharacterError,
            barcode.errors.NumberOfDigitsError, ValueError) as e:
        return notify(str(e))
    path = os.path.join(tempfile.gettempdir(), barcode_txt)
    tmp_path = bar.save(path, text=barcode_txt)
    print(f'temporary image: {tmp_path}')
def create_barcode(code,product_name,price):
	EAN = barcode.get_barcode_class('code128')
	code_name = code
	ean = EAN(code_name, writer=ImageWriter())
	barcode_image_name = ean.save('{}_{}'.format(code_name,product_name))
	cwd = os.getcwd()
	image = Image.open(barcode_image_name)
	image_main = Image.open('final_img_barcode.jpg')
	main_image_sizex,main_image_sizey = image_main.size
	resized_img = image.resize((main_image_sizex-1500,main_image_sizey-1200))
	image_main.paste(resized_img,(700,500))
	image_main.save("{}/barcodes/{}".format(cwd,barcode_image_name))
	image_after = Image.open("{}/barcodes/{}".format(cwd,barcode_image_name))
	draw = ImageDraw.Draw(image_after)
	font = ImageFont.truetype('roboto-bold.ttf', size=100)
	(x, y) = (main_image_sizex-2300,main_image_sizey-1100) # (1300, 2000)
	message = "RS : {}".format(price)
	color = 'rgb(0, 0, 0)'
	draw.text((x, y), message, fill=color,font=font)
	image_after.save("{}/barcodes/{}".format(cwd,barcode_image_name))
	os.remove(barcode_image_name)
	product_code_ent.delete(0,END)
	product_name_ent.delete(0,END)
	product_price_ent.delete(0,END)
Exemple #24
0
def generate(details,path):
	  EAN = barcode.get_barcode_class('code128')
	  ean = EAN(details, writer=ImageWriter())
	  barcodePic = ean.save(path + 'barcode')
def Ean_writer(t, n):
    EAN = barcode.get_barcode_class('ean13')
    ean = EAN(u'{}'.format(t), writer=ImageWriter())
    fullname = ean.save('{}'.format(n))
#importing barcode module (pip install barcode)
import barcode

# defining a variable with class having ean13 (13 numbers can be converted to barcode)
br = barcode.get_barcode_class("ean13")
# 13 digit number you want to convert to barcode
Br = br("0123456789123")
# saving the barcode with name barcode (it will save as barcode.svg in same directory)
qr = Br.save("barcode")
Exemple #27
0
        except OSError, e:
            print('Test not run.')
            print('Error:', e)
            sys.exit(1)
    objects = []
    append = lambda x, y: objects.append(OBJECTS.format(filename=x, name=y))
    append_img = lambda x, y: objects.append(IMAGES.format(filename=x, name=y))
    options = dict(module_width=0.495, module_height=25.0)
    for codename, code in TESTCODES:
        bcode = get_barcode(codename, code)
        filename = bcode.save(os.path.join(TESTPATH, codename))
        print('Code: {0}, Input: {1}, Output: {2}'.format(
            bcode.name, code, bcode.get_fullcode()))
        append(filename, bcode.name)
        if ImageWriter is not None:
            bcodec = get_barcode_class(codename)
            bcode = bcodec(code, writer=ImageWriter())
            opts = dict(font_size=14, text_distance=1)
            if codename.startswith('i'):
                opts['center_text'] = False
            filename = bcode.save(os.path.join(TESTPATH, codename), opts)
            append_img(filename, bcode.name)
        else:
            objects.append(NO_PIL)
    # Save htmlfile with all objects
    with codecs.open(HTMLFILE, 'w', encoding='utf-8') as f:
        obj = '\n'.join(objects)
        f.write(HTML.format(version=__version__, body=obj))


if __name__ == '__main__':
Exemple #28
0
 def crate_barcode(self, provided, item):
     code = barcode.get_barcode_class(provided)
     bar = code(item, writer=barcode.writer.ImageWriter())
     bar.save(
         os.path.join(os.path.join(self.get_current_path(), 'Img'),
                      provided + "_" + item))
Exemple #29
0
def billing_barcode_image(request):
    # LCMT 0115547010161
    # LCB1 0105538110884
    taxId = request.GET['tax']
    ref1 = request.GET['ref1']
    ref2 = request.GET['ref2']
    terminal = request.GET['terminal']

    if 'ref2' in request.GET:
        ref2 = request.GET['ref2']
    else:
        ref2 = ''

    # TO set Ref2 to identify Terminal , A0 = 00 , B1 = 01
    if ref2 == '':
        ref2 = '00' if terminal == 'LCMT' else '01'

    amount = request.GET['amount']
    # suffix 	=	'10' #TMB work, but KBank not working
    # Modify by Chutchai on June 11,2020
    # change from 00 to 10 to support TMB (version 1.8)
    suffix = '10'

    # Convert Ref1
    ref1 = convert_ref1(ref1)

    from barcode.writer import ImageWriter
    import barcode
    EAN = barcode.get_barcode_class('code128')
    # EAN.default_writer_options['write_text'] = False
    # EAN.default_writer_options['human'] = 'ABC'
    # EAN.render(self.writer.ImageWriter,text='sdas')

    # data = '|%s\n%s\n%s\n%s\n%s' % (taxId,suffix,ref1,ref2,amount)
    # Modify on March 26, 2020
    # To remove new line and remove Dot on amount

    # data = '|%s%s\r\n%s\r\n%s\r\n%s' % (taxId,suffix,ref1,ref2,amount.replace('.',''))
    # Update on Apr 30,2020 -- Remove New Line
    data = '|%s%s\r%s\r%s\r%s' % (taxId, suffix, ref1, ref2,
                                  amount.replace('.', ''))
    print(data)
    ean = EAN(data, writer=ImageWriter())
    # ean.render(writer_options=ImageWriter(),text='sds')
    fullname = ean.save('barcode')

    #Add Text below Barcode
    from PIL import Image, ImageFont, ImageDraw
    im = Image.open("barcode.png")
    width, height = im.size
    d = ImageDraw.Draw(im)
    # print ('Barcode size : %s %s' % (width, height))

    # data = 'LCB1&LCMT'
    # data = data.replace('\n','     ')
    data = '|    %s    %s    %s    %s    %s' % (taxId, suffix, ref1, ref2,
                                                amount)
    font = ImageFont.truetype('arial.ttf', size=28)
    ascent, descent = font.getmetrics()
    (font_width, baseline), (offset_x, offset_y) = font.font.getsize(data)
    # print ('Text Width :%s' % (font_width))

    font.width = width
    location = ((width / 2) - (font_width / 2), height - 80)
    d.text(location, data, fill=(0, 0, 0), font=font)

    # Put version on Right&Bottom
    version = 'Version 1.8'
    font = ImageFont.truetype('arial.ttf', size=12)
    ascent, descent = font.getmetrics()
    (font_width, baseline), (offset_x, offset_y) = font.font.getsize(version)
    location = (width - (font_width), height - 60)
    d.text(location, version, fill=(0, 0, 0), font=font)

    im.save('barcode_out.png')

    cropped_example = im.crop((0, 0, width, height - 40))
    cropped_example.save('barcode_new.png')
    image_data = open("barcode_new.png", "rb").read()

    return HttpResponse(image_data, content_type="image/png")
Exemple #30
0
#!/usr/bin/env python

# pip install viivakoodi
import barcode
from barcode.writer import ImageWriter
try:
    import Image, ImageDraw, ImageFont
except ImportError:
    from PIL import Image, ImageDraw, ImageFont

CODE128 = barcode.get_barcode_class('code128')
FONT = "Helvetica.ttf"

options = {
    "module_width": 0.254,  # 3 dots / 300 dpi * 25.4mm/in
    "module_height": 10.0,  # The height of the barcode modules in mm
    "quiet_zone":
    0.0,  # Distance on the left and on the right from the border to the first (last) barcode module in mm as float. Defaults to 6.5.
    "font_size":
    18,  # Font size of the text under the barcode in pt as integer. Defaults to 10.
    "text_distance":
    0.7,  # Distance between the barcode and the text under it in mm as float. Defaults to 5.0.
}

label_sizes = {
    "17x54": (
        566, 165
    ),  # printable area: 47.92mm x 13.97mm (566dots x 165dots in 300dpi = 135.84dots x 39.60dots in 72dpi)
    "17x87": (
        956, 165
    ),  # printable area: 80.94mm x 13.97mm (956dots x 165dots in 300dpi = 229.44dots x 39.60dots in 72dpi)
def show():
    """
    This action shows a tourism service details.
    """
    this_service = db.service(request.args(0,cast=int)) or redirect(URL('index', args=request.args(1,cast=int))) or redirect(URL('operator', 'index'))
    
    if this_service.operator_id.owner_id != auth.user.id:
        
        session.flash  = T("Insufficient privileges")
        
        redirect(URL('default','user',args='not_authorized'))
        
    # Select service extensions
    db.service_extension.service_id.default = this_service.id
    
    service_extensions = db(db.service_extension.service_id==this_service.id).select()
            
    # Select photos
    photos = db(db.photo.service_id==this_service.id).select(orderby=db.photo.id)
    
    # Update service mean rating given by comments
    comments = update_mean_rating(this_service)
    
    # Retrive service prices
    this_year_prices, next_year_prices = det_serv_prices(this_service)
    
    # Determine for the service if it is a fixed price service
    determine_price_mode(this_service)
    
    # Select people limits for this service
    people_limits = db(db.people_limits.service_id==this_service.id).select()
    
    if people_limits: people_limits = people_limits.first()
    
    # Select timetables for service
    this_year_timetable, next_year_timetable, month_to_show = det_serv_timetable(this_service)
    
    if this_year_timetable and this_year_timetable.first().flexible == False and month_to_show < 0:
        
        this_service.enabled = False
        this_year_timetable = None
    
    # Check if availability database exists
    availability = check_availability(this_service)
    
    # Create barcode
    # Bar Code filename definition (one tmp file per user)
    import barcode
    from barcode.writer import ImageWriter
    from cStringIO import StringIO
    
    barCode_filename = this_service.code + 'barcode.png'
    
    EAN = barcode.get_barcode_class('ean13')
    
    # Calculate Barcode Number
    code = ''
    for i in range(5,8):
        code += this_service.code[i]
    for i in range(9,12):
        code += str(ord(this_service.code[i]))
    for i in range(12,15):
        code += this_service.code[i]
    while len(code)<13:
        code = '0' + code
    if len(code)>13:
        code = code[0:13]
    
    ean = EAN(code, writer=ImageWriter())
    ean.default_writer_options['module_height']=15.0
    ean.default_writer_options['quiet_zone']=1.5
    ean.default_writer_options['text_distance']=1.0
    ean.default_writer_options['dpi']=150
    barCode_location = request.folder + 'static/barcodes/' + barCode_filename
    f = open(barCode_location, 'wb')
    if BARCODE == True:
        ean.write(f) # PIL (ImageWriter) produces RAW format here
    f.close()
    
    return dict(service=this_service, extensions=service_extensions, photos=photos, comments=comments,
                this_ypr=this_year_prices, next_ypr=next_year_prices, people_limits=people_limits,
                this_ytt=this_year_timetable, next_ytt=next_year_timetable, month_show=month_to_show,
                available = availability, barCode = 'barcodes/' + barCode_filename)
Exemple #32
0
def barcode_to_png(barcode_type, text_str, filename):
    EAN = barcode.get_barcode_class(barcode_type)
    ean = EAN(text_str, writer=ImageWriter())
    ean.save(filename)
Exemple #33
0
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import barcode
from barcode.writer import ImageWriter
from StringIO import StringIO
from shutil import copyfileobj
C39 = barcode.get_barcode_class('code39')


def generateBarCode(code):
    try:
        print u"正在生成条形码: "+unicode(code)
        ean = C39(code, writer=ImageWriter(), add_checksum=False)
        fp = StringIO()
        ean.write(fp)
        fp.seek(0) # move buffer back to 0
        return fp
    except:
        raise Exception('Failed to generate barcode')
    return None

if __name__=="__main__":
    fp = generateBarCode(u"QT7689564545")
    img = open('test.png', 'w')
    copyfileobj(fp,img)
    img.close()
 def __init__(self, printer_name):
     self.printer_conn = cups.Connection()
     self.code39 = barcode.get_barcode_class('code39')
     self.printer = printer_name
Exemple #35
0
def invoice(canvas, application):
    """
    Draw a membership invoice from to a canvas from an application objects.

    @param application {Application} modeemintternet.models.Application object
    @param canvas {Canvas} reportlab.pdfgen.canvas.Canvas object
    """

    p = canvas

    # Logo on top of the page
    textPath = os.path.abspath(os.path.join(settings.PROJECT_DIR, 'static', 'logo', 'text.eps'))
    p.drawImage(textPath, 50, 710, height=100, preserveAspectRatio=True, anchor='nw')

    p.drawString(70, 720, 'Modeemi ry c/o TTY')
    p.drawString(70, 700, 'PL 553')
    p.drawString(70, 680, 'FIN-33101 Tampere')

    # Box containing the user information
    p.drawString(50, 560, 'Sähköposti')
    p.drawString(310, 560, application.email)
    p.rect(40, 550, 500, 30)
    p.drawString(50, 530, 'Nimi')
    p.drawString(310, 530, application.first_name + ' ' + application.last_name)
    p.rect(40, 520, 500, 30)
    p.drawString(50, 500, 'Haluamani käyttäjätunnus')
    p.drawString(310, 500, application.primary_nick)
    p.rect(40, 490, 500, 30)
    p.drawString(50, 470, 'Jos jo käytössä')
    p.drawString(310, 470, application.secondary_nick)
    p.rect(40, 460, 500, 30)
    p.drawString(50, 440, 'Haluamani komentokehoite')
    p.drawString(310, 440, application.shell)
    p.rect(40, 430, 500, 30)
    p.drawString(50, 410, 'Hakemus tehty')
    p.drawString(310, 410, application.applied.strftime('%d.%m.%Y'))
    p.rect(40, 400, 500, 30)

    # Line delimiting the pre-filled and user-filled parts
    p.line(300, 400, 300, 580)

    # Draw the bank information grid
    # Horizontal lines
    p.line(0, 40, 600, 40)
    p.line(0, 70, 600, 70)
    p.line(300, 100, 600, 100)
    p.line(0, 200, 300, 200)
    p.line(0, 250, 600, 250)
    p.line(0, 300, 600, 300)

    # Vertical lines
    p.line(300, 40, 300, 300)
    p.line(350, 40, 350, 100)
    p.line(450, 40, 450, 70)
    p.line(70, 200, 70, 300)

    # Texts
    p.drawString(90, 270, 'FI10 2243 1800 0057 39')
    p.drawString(320, 270, 'NDEAFIHH')
    p.drawString(90, 220, 'Modeemi ry')
    p.drawString(90, 175, application.first_name + ' ' + application.last_name)
    p.drawString(370, 80, application.bank_reference)
    deadline = application.applied + timedelta(days=21)
    p.drawString(370, 50, deadline.strftime('%d.%m.%Y'))
    p.drawString(550, 50, '8,00')

    p.setFontSize(7)
    p.drawString(40, 290, 'Tilinro')
    p.drawString(80, 290, 'IBAN')
    p.drawString(310, 290, 'BIC')
    p.drawString(40, 240, 'Saaja')
    p.drawString(310, 90, 'Viitenro')
    p.drawString(310, 60, 'Eräpäivä')
    p.drawString(460, 60, 'Euro')

    p.drawString(30, 180, 'Maksajan')
    p.drawString(39, 170, 'nimi ja')
    p.drawString(41, 160, 'osoite')

    p.drawString(45, 95, 'Alle-')
    p.drawString(33, 85, 'kirjoitus')

    p.line(70, 80, 300, 80)

    p.drawString(30, 60, 'Tililtä nro')

    generator = barcode.get_barcode_class('code128')
    img = generator(code128(application),
            writer=ImageWriter()).save('/tmp/barcode')
    p.drawImage(img, 150, 5, height=30, width=300, anchor='nw')

    return p
Exemple #36
0
def createPrintTicket(d, promo, **kwargs):
    canvas = Image.open(config.Ticket.TEMPLATE_FILE)

    #Generate Barcode
    code39 = barcode.get_barcode_class('code39')
    barcodeImage = code39(d.code, writer=barcode.writer.ImageWriter())
    barcodeImage = barcodeImage.render({'dpi':config.Ticket.BARCODE_DPI,'module_height':config.Ticket.BARCODE_HEIGHT})

    #Insert Barcode
    canvas.paste(barcodeImage, config.Ticket.BARCODE_POS)
    drawCanvas = ImageDraw.Draw(canvas)
    x,y = config.Ticket.BARCODE_POS
    font = ImageFont.truetype(config.Ticket.FONT,config.Ticket.BARCODE_TEXT_SIZE)
    drawCanvas.text(config.Ticket.BARCODE_TEXT_POS, d.code, (0,0,0),font=font)

    #Render Ticket Name & Price
    ticketName = d.ticketName.decode('utf8')
    ticketPrice = d.ticketPrice.decode('utf8')
    ticketCurrency = d.ticketCurrency.replace("&euro;","€").decode('utf8')
    font = ImageFont.truetype(config.Ticket.FONT, config.Ticket.FONT_SIZE)
    drawCanvas.text(config.Ticket.TICKET_NAME_POS, ticketName, (0,0,0), font=font)
    drawCanvas.text(config.Ticket.PRICE_POS, ticketPrice + " " + ticketCurrency , (0,0,0), font=font)

    #Render Name
    font = ImageFont.truetype(config.Ticket.FONT,config.Ticket.FONT_SIZE)
    name = d.name.decode('utf8')
    if not promo:
        printedName = name
        while True:
            (w, h) = drawCanvas.textsize(name,font=font)
            if w < config.Ticket.NAME_MAX_LENGTH:
                break
            else:
                printedName =  printedName[:-1]
        drawCanvas.text(config.Ticket.NAME_POS, printedName, (0,0,0), font=font)
    else:
        #Render Logo
        logo = Image.open(kwargs["logo"])
        if config.Ticket.LOGO_SCALE != 1:
            logo = logo.resize((int(logo.size[0] * config.Ticket.LOGO_SCALE),
                                int(logo.size[1] * config.Ticket.LOGO_SCALE)))
        canvas.paste(logo, config.Ticket.LOGO_POS)

    ticketImagePath = "%s/%s.%s" % (config.Ticket.OUTPUT_DIR,
                                    d.code,
                                    config.Ticket.OUTPUT_FORMAT)

    try:
        os.mkdir(config.Ticket.OUTPUT_DIR)
    except OSError:
        pass

    try:
        canvas.save(ticketImagePath)
    except:
        print "Cannot save ticket image to %s" % (ticketImagePath,)

    pageTicketPath = "%s/%s.pdf" % (config.TicketPage.OUTPUT_DIR, d.code)
    htmlTemplate = config.TicketPage.TEMPLATE % { 'name' : name,
                                                  'code' : d.code,
                                                  'ticket' : ticketImagePath,
                                                  'price' : ticketPrice,
                                                  'desc' : ticketName }
    try:
        os.mkdir(config.TicketPage.OUTPUT_DIR)
    except OSError:
        pass
    if os.path.exists(pageTicketPath):
        print "File already exist %s" % (pageTicketPath)
        try:
            os.remove(pageTicketPath)
        except Exception as e:
            print e
            exit(1)
    try:
        print "Create ticket %s for %s" % (d.code, name)
        pisa.CreatePDF(StringIO.StringIO(htmlTemplate.encode('ascii', 'xmlcharrefreplace')),
                       open(pageTicketPath,'wb'))
    except:
        print "Cannot write PDF ticket to %s" % (pageTicketPath,)
Exemple #37
0
def batCodeSvgGenerator(stockNumber):
    EAN = barcode.get_barcode_class('ean13')
    ean = EAN(stockNumber, writer=ImageWriter())
    ean.save("media\\uploads\\" + str(stockNumber))
    return "media\\uploads\\" + str(stockNumber) + ".png"
Exemple #38
0
import csv
import barcode
from barcode.writer import ImageWriter
from PIL import Image



print('Chose barcode standard')
print(barcode.PROVIDED_BARCODES) # prints out compatible barcode types
barChoice = input() # by typing in correctly you set the type and store it in the variable
barType = barcode.get_barcode_class(barChoice) # this imports that excact type into generator
print(barType)
print('Press 1 for SVG or 2 for PNG?')
fileformatChoice = input()
print('Type name of file')
nameFile = input() # name of the csv file to import (only name not the .csv extention)
if fileformatChoice == '1':
    with open("%s.csv" % nameFile) as readCSV:
        reader = csv.reader(readCSV) # open csv file and store into reader
        for row in reader: # for every row in reader do:
            x = ("".join(row)) # converting each row from list to a string
            barValue = barType(x) # store the raw value of barcode
            print(barValue) # print out the raw value
            fileName = barValue.save('./output/%s' % x) # save the barcode as .svg in folder "output"
            print(fileName)


elif fileformatChoice == '2':
    with open("%s.csv" % nameFile) as readCSV:
        reader = csv.reader(readCSV) # open csv file and store into reader
        for row in reader: # for every row in reader do:
Exemple #39
0
from docx import Document
from docx.shared import Inches
import barcode
from barcode.writer import ImageWriter

label = "704041"
CODE39 = barcode.get_barcode_class('code39')
CODE39.default_writer_options['module_height'] = 3.0
CODE39.default_writer_options['module_width'] = 0.01
CODE39.default_writer_options['text_distance'] = 0.3
CODE39.default_writer_options['font_size'] = 16
#ean = barcode.get_barcode('code39', label, writer=ImageWriter())
#ean.default_writer_options['module_height'] = 3.0
#ean.default_writer_options['add_checksum'] = False
#ean.default_writer_options[''] = 0.2
#ean.calculate_size(dpb)
code39 = CODE39(label, writer=ImageWriter(), add_checksum=False)
pngfile = 'C:\\data\\' + label
filename = code39.save(pngfile)
#filename = ean.save(pngfile)

document = Document()
sections = document.sections
for section in sections:
    section.top_margin = Inches(0.1)
    section.bottom_margin = Inches(0.2)
    section.left_margin = Inches(0.25)
    section.right_margin = Inches(0.3)

p = document.add_paragraph()
r = p.add_run()
Exemple #40
0
    def _createBarcode(self) -> None:
        """Create barcode."""
        if self.barcode["value"] == "":
            return
        if self.barcode["type"] == BARCODE_ANY:
            logger.warning("Usando %s por defecto" %
                           self.typeToName(BARCODE_128))
            self.barcode["type"] = BARCODE_128

        type_ = self.typeToName(self.barcode["type"])
        value_ = self.barcode["value"]
        bg_ = self.barcode["bg"]
        fg_ = self.barcode["fg"]
        if not isinstance(self.barcode["bg"], str):
            bg_ = QtGui.QColor(self.barcode["bg"]).name()

        if not isinstance(self.barcode["fg"], str):
            fg_ = QtGui.QColor(self.barcode["fg"]).name()

        margin_ = self.barcode["margin"] / 10

        render_options: Dict[str, Any] = {}
        render_options["module_width"] = 0.6
        render_options["module_height"] = 10
        render_options["background"] = bg_.lower()
        render_options["foreground"] = fg_.lower()
        render_options["font_size"] = 8
        render_options["write_text"] = self.barcode["text"]
        render_options["text_distance"] = 35
        render_options["quiet_zone"] = margin_
        if self.barcode["text"]:
            render_options["text"] = value_
        else:
            render_options["text"] = " "

        barC = barcode.get_barcode_class(type_.lower())
        try:
            bar_ = barC(u"%s" % value_)
        except Exception:
            bar_ = barC("000000000000")

        svg = bar_.render(render_options)
        xml_svg = load2xml(svg.decode("utf-8")).getroot()
        xwidth, xheight = xml_svg.get("width"), xml_svg.get("height")
        if xwidth and xheight:
            svg_w = 3.779 * float(xwidth[0:6])
            svg_h = 3.779 * float(xheight[0:6])
        else:
            logger.warning("width or height missing")
            svg_w = 0.0
            svg_h = 0.0
        self.p = QtGui.QPixmap(int(svg_w), int(svg_h))
        render = QtSvg.QSvgRenderer(svg)
        self.p.fill(QtCore.Qt.transparent)
        painter = Qt.QPainter(self.p)
        render.render(painter, Qt.QRectF(0, 0, svg_w * 3.4, svg_h * 3.4))

        if self.p.isNull():
            self.barcode["valid"] = False
        else:

            if self.barcode["scale"] != 1.0:
                wS_ = self.barcode["x"] * self.barcode["scale"]
                hS_ = self.barcode["y"] * self.barcode["scale"]
                self.p = self.p.scaled(wS_, hS_)

            self.barcode["x"] = self.p.width()
            self.barcode["y"] = self.p.height()

            self.barcode["valid"] = True
import barcode
from barcode.writer import ImageWriter
from barcode import generate

#print(barcode.PROVIDED_BARCODES)
EAN = barcode.get_barcode_class('ean13')
ean = EAN(u'5901234123457')
fullname = ean.save('ean13_barcode') #creates barcode svg

'''
ean = EAN(u'5901234123457', writer=ImageWriter()) #creates barcode image
fullname = ean.save('ean13_barcode')
'''
'''
fp = open('a.txt','wb')
ean.write(fp)
'''
'''
name = generate('EAN13', u'5901234123457', output='barcode_svg')
'''
Exemple #42
0
 def __init__(self, printer_name):
     self.printer_conn = cups.Connection()
     self.code39 = barcode.get_barcode_class('code39')
     self.printer = printer_name
Exemple #43
0
                    break
                if (Key == ord("c")):
                    ean = self.EAN(Barcode)
                    BarcodeName = ean.save('barcodes/' + Barcode)
                    ImageName = "images/{}.jpg".format(Barcode)
                    if (ImageName == 'images/.jpg'):
                        pass
                    else:
                        cv.imwrite(ImageName, BlurImage)
                        print("{} Lagret".format(ImageName))
                        Count += 1
            else:

                Ret = False
                break


if __name__ == '__main__':
    """
        Setter noen spesial variaber som __name__ og kjører all av koden som fant seg i filen
        Lager 2 variable
        EAN: class(code39)
        Capture = webkamera som er koblet til pc-en 
        1 for webkamera 
        0 for innebygde kamera på pc-en
        Kaller klassen og gir verdi for variablene så kaller den andre funskjonen for å kjøre programmet

    """
    EAN = barcode.get_barcode_class('code39')
    Capture = cv.VideoCapture(1)
    CaptureFrame(EAN, Capture).getFrame()
Exemple #44
0
barcodes = {'OP0001': 'https://google.com'}
barcodes['OP0002'] = 'https://dannydannydanny.github.io'
path_data = './python/data/'  # Dev
file_json = 'barcodes.json'

# %% Write dictionary to json file
with open(path_data + file_json, 'w') as f:
    json.dump(barcodes, f)

# %% Read dictionary from json file
with open(path_data + file_json, 'r') as f:
    barcodes = json.load(f)

# %% ENCODING DATA IN A BARDCODE and SHOW BARCODE
encoder_c128 = barcode.get_barcode_class('code128')

text_to_encode = 'Hello, world!'
filename = 'barcode'

mybarcode = encoder_c128(text_to_encode)
fullname = mybarcode.save(path_data + filename)
SVG(filename=path_data + filename + '.svg')


def text_to_barcode_svg(text_to_encode, path, filename):
    encoder_c128 = barcode.get_barcode_class('code128')
    mybarcode = encoder_c128(text_to_encode)
    mybarcode.save(path + filename)
    print('encoded ' + text_to_encode + ' as ' + path + filename)
                i_hist = hist(img, 13)
                print(i_hist)

                res = ""
                for j in range(13):
                    val = i_hist[j]
                    if val <= bins[j][8]:
                        for k in range(9):
                            if val <= bins[j][k]:
                                res += str(k)
                                break

                    else:
                        res += str(9)
                print(res)
                EAN = barcode.get_barcode_class('ean13')
                ean = EAN(res, writer=ImageWriter())
                fullname = ean.save('barcode')
                window.Element('image').Update(data=get_img_data(fullname))

                img = scale(img, 3)
                #img_png = []
                #for i in img:
                #    col = []
                #    for j in i:
                #        col.append(j)
                #    img_png.append(col)
                #img_png = np.array(img_png)

                res_png = png.from_array(img, 'L').save("temp.png")
                window.Element('pic').Update(data=get_img_data("temp.png"))
Exemple #46
0
def text_to_barcode_svg(text_to_encode, path, filename):
    encoder_c128 = barcode.get_barcode_class('code128')
    mybarcode = encoder_c128(text_to_encode)
    mybarcode.save(path + filename)
    print('encoded ' + text_to_encode + ' as ' + path + filename)
Exemple #47
0
 def create_barcode(self, serial):
     code39 = barcode.get_barcode_class('code39')
     c39 = code39(str(serial), writer=ImageWriter())
     fullname = c39.save('barcode')
Exemple #48
0
def imprimir( request, pk, din = '4'):

    credentials = tools.getImpersonateUser(request) 
    (user, _ ) = credentials
    
    professor = User2Professor( user )     
    
    instance = get_object_or_404( Sortida, pk = pk )
    instance.flag_clean_nomes_toco_alumnes = True
    
    fEsDireccioOrGrupSortides = request.user.groups.filter(name__in=[u"direcció", u"sortides"] ).exists()
    potEntrar = ( professor in instance.professors_responsables.all() or 
                  professor in instance.altres_professors_acompanyants.all() or 
                  fEsDireccioOrGrupSortides
                   )

    if not potEntrar:
        raise Http404 

    #Preparo el codi de barres
    import time
    import barcode
    from PIL import Image
    from barcode.writer import ImageWriter
    CodiBarres = barcode.get_barcode_class(u'code128')
    codi_barres = CodiBarres(instance.codi_de_barres or "x", writer=ImageWriter())
    barres = codi_barres.save("/tmp/barcode-{0}-{1}".format( time.time(), request.session.session_key ))
    im = Image.open(barres)
    im=im.crop( (20,20,385,50,) )
    s = im.size
    #im = im.resize((int(s[0] * 0.8), int(s[1] * 0.8)))
    im.save(barres)

        
    alumnes_que_hi_van = set( instance.alumnes_convocats.all() ) 
    alumnes_que_no_hi_van = set( instance.alumnes_que_no_vindran.all() )
    alumnes = list( alumnes_que_hi_van - alumnes_que_no_hi_van )
    
    report = []
    
    for alumne in Alumne.objects.filter( pk__in = [ a.id for a in alumnes ] ):
        o = classebuida()
        o.alumne = unicode( alumne )
        o.grup = unicode( alumne.grup )
        o.ciutat = instance.ciutat
        o.preu = instance.preu_per_alumne
        o.departament = unicode( instance.departament_que_organitza ) if instance.departament_que_organitza else instance.comentari_organitza
        o.titol = instance.titol_de_la_sortida 
        o.desde = instance.calendari_desde.strftime( "%H:%Mh del %d/%m/%Y" )
        o.desde_dia = instance.calendari_desde.strftime( "%d/%m/%Y" )
        o.finsa = instance.calendari_finsa.strftime( "%H:%Mh del %d/%m/%Y" )
        o.mitja = instance.get_mitja_de_transport_display()
        o.programa_de_la_sortida = instance.programa_de_la_sortida.split("\n") or ['',]
        o.condicions_generals = instance.condicions_generals.split("\n") or ['-',]
        o.terminipagament = u"" if not bool( instance.termini_pagament ) else u"- darrer dia pagament {0} -".format( instance.termini_pagament.strftime( '%d/%m/%Y' ) )
        report.append(o)
        o.barres = barres
        o.informacio_pagament = instance.informacio_pagament.split("\n") or ['-',]
        o.te_codi_barres = bool(instance.codi_de_barres)

    #from django.template import Context                              
    from appy.pod.renderer import Renderer
    import cgi
    import os
    from django import http
    
    excepcio = None

    #try:
        
    #resultat = StringIO.StringIO( )
    resultat = "/tmp/DjangoAula-temp-{0}-{1}.odt".format( time.time(), request.session.session_key )
    #context = Context( {'reports' : reports, } )
    path = os.path.join( settings.PROJECT_DIR,  '../customising/docs/autoritzacio2.odt') if din==4 else os.path.join( settings.PROJECT_DIR,  '../customising/docs/autoritzacio2-A5.odt')
    if not os.path.isfile(path):
        path = os.path.join(os.path.dirname(__file__), 'templates/autoritzacio2.odt') if din=='4' else os.path.join(os.path.dirname(__file__), 'templates/autoritzacio2-A5.odt')

    renderer = Renderer(path, {'report' :report, }, resultat)  
    renderer.run()
    docFile = open(resultat, 'rb')
    contingut = docFile.read()
    docFile.close()
    os.remove(resultat)
    
    #barcode
    os.remove(barres)
        
#     except Exception, e:
#         excepcio = unicode( e )
        
    if True: #not excepcio:
        response = http.HttpResponse( contingut, content_type='application/vnd.oasis.opendocument.text')
        response['Content-Disposition'] = u'attachment; filename="{0}-{1}.odt"'.format( "autoritzacio_sortida", pk )
                                                     
    else:
        response = http.HttpResponse('''Als Gremlin no els ha agradat aquest fitxer! %s''' % cgi.escape(excepcio))
    
    return response
Exemple #49
0
        array.append(x[1])
    print(array, '\n')

    os.remove('barcode.png')


while True:
    inp = input(
        'Select the number of your barcode choice\n1-EAN-8\n2-CODE 128\n3-CODE 39\n0-QUIT\n\n'
    )
    # for ean 8 barcod type
    if inp == '1' or inp == 'EAN-8' or inp == 'ean-8' or inp == 'ean':
        print("EAN-8 is working and  requires minimum 7 numbers\n")
        code = input("Enter code of your barcode:\n")
        # running code thrugh the package
        EAN = barcode.get_barcode_class('ean8')
        ean = EAN(code)
        # storing svg for display
        ean.save('SVG_IMAGE')
        # using image writer for ong image to use in processing
        png = EAN(code, writer=ImageWriter())
        imag = png.save('barcode')
        barcodeworking()

    elif inp == '2' or inp == 'CODE 128' or inp == 'code 128' or inp == 'c128' or inp == 'C128':
        print("CODE 128 is working\n")
        code = input("Enter code of your barcode:\n")
        C128 = barcode.get_barcode_class('code128')
        c128 = C128(code)
        c128.save('SVG_IMAGE')
        png = C128(code, writer=ImageWriter())
Exemple #50
0
#
##############################################################################

import time
from openerp.report import report_sxw
from openerp.osv import osv
from openerp import pooler
import base64
import urllib,urllib2
import barcode
import os
barcode.PROVIDED_BARCODES
['code39', 'ean', 'ean13', 'ean8', 'gs1', 'gtin', 'isbn', 'isbn10', 'isbn13', 'issn', 'jan', 'pzn', 'upc', 'upca']
[u'code39', u'code128', u'ean', u'ean13', u'ean8', u'gs1', u'gtin',u'isbn', u'isbn10', u'isbn13', u'issn', u'jan', u'pzn', u'upc', u'upca']
[u'code39', u'code128', u'ean', u'ean13', u'ean8', u'gs1', u'gtin', u'isbn', u'isbn10', u'isbn13', u'issn', u'jan', u'pzn', u'upc', u'upca']
EAN = barcode.get_barcode_class(u'code39')
from barcode.writer import ImageWriter

class order(report_sxw.rml_parse):
    def __init__(self, cr, uid, name, context):
        super(order, self).__init__(cr, uid, name, context=context)
        self.localcontext.update({
        'time': time,
        'get_artwork':self._get_artwork,
        'get_barcode':self._get_barcode,
        })
    def _get_artwork(self, obj):
        attach = self.pool.get('ir.attachment')
        res = ''
        attach_ids = attach.search(self.cr, self.uid, [('res_id','=',obj.id),('res_name','=',obj.name)])
        if attach_ids:
def write():
    st.header("Stregkodegenererator til delehold")

    if st.checkbox(
            "Vis hjælp til at lokalisere elevoversigt fra Cicero og Lectio"):
        st.info(
            "__Elevoversigt fra Cicero:__  \n"
            "Start med at uploade en elevoversigt fra cicero.  \n"
            "Åben Cicero og gå til 'Cirkulation' --> 'Låner'.  \n"
            "Angiv alle klasser under 'Lånergrupper' og søg.  \n"
            "Tryk på 'Print og eksporter' i venstre hjørne og vælg 'Eksporter viste: CSV'.  \n"
            "  \n"
            "__Elevoversigt fra Lectio:__  \n"
            "Log ind på Lectio.  \n"
            "Gå til 'Hovedmenu' og vælg 'Importer/Eksporter data'.  \n"
            "Tryk på 'Excel' under kolonnen 'Eksporter' ud fra rækken 'Elever'."
        )

    # upload fra Cicero
    st.write("__Upload elevoversigt fra Cicero__")
    Elever_Cicero_file = st.file_uploader(
        "Uploade eksport af fuld elevoversigt fra Cicero i csv-format",
        type="csv")

    if Elever_Cicero_file is not None:
        Elever_Cicero_data = pd.read_csv(Elever_Cicero_file,
                                         sep=';',
                                         na_filter=False)
        Elever_Cicero_data.drop(
            ["Adresse", "Postnummer & by", "Telefon", "E-mail"],
            axis=1,
            inplace=True)
        Elever_Cicero_data = Elever_Cicero_data.rename(
            columns={"Lånergrupper": "Stamklasse"})

        if st.checkbox("Vis elevoversigt fra Cicero"):
            st.write(Elever_Cicero_data)

    # upload fra Lectio
    st.write("__Upload elevoversigt fra Lectio__")
    Elever_Lectio_file = st.file_uploader(
        "Uploade eksport af fuld elevoversigt fra Lectio i xlsx-format",
        type="xlsx")

    if Elever_Lectio_file is not None:
        Elever_Lectio_data = pd.read_excel(Elever_Lectio_file,
                                           sep=';',
                                           na_filter=False)
        Elever_Lectio_data.drop([
            "Id", "PNr", "Afdeling", "Brugernavn", "CPR-NUMMER", "TELEFON 1",
            "TELEFON 2", "Adresse CO", "Adresse", "Stednavn", "Postnummer",
            "Kommunenr", "Email"
        ],
                                axis=1,
                                inplace=True)
        Elever_Lectio_data = Elever_Lectio_data.rename(
            columns={"KaldeNavn": "Navn"})

        if st.checkbox("Vis elevoversigt fra Lectio"):
            st.write(Elever_Lectio_data)

        st.write("__Hvilke holdoversigter ønskes genereret?__")
        # Lav oversigt over alle delehold
        Hold = set()
        for line in Elever_Lectio_data["Hold"]:
            Hold_temp = line.split(",")
            for elem in Hold_temp:
                if elem.startswith(" "):
                    Hold.add(elem[1:])
                else:
                    Hold.add(elem)
        Hold = list(Hold)
        Hold.sort()
        Valgte_hold = st.multiselect("Du kan vælge flere hold på én gang.",
                                     options=Hold)

    # Generer stregkoder
    if Elever_Cicero_file and Elever_Lectio_file is not None and len(
            Hold) != 0:
        #generate_barcodes(Elever_Cicero_data, Elever_Lectio_data, Valgte_hold)

        # Lav en sammensat dataframe af de to uploadede filer
        Elever_merged_data = pd.merge(Elever_Cicero_data,
                                      Elever_Lectio_data,
                                      on=["Navn", "Stamklasse"])
        Elever_merged_data = Elever_merged_data.sort_values("Navn", axis=0)
        #Elever_merged_data = Elever_merged_data.sort_values("Navn", axis=0, ignore_index=True)
        if st.checkbox("Vis samlet elevoversigt"):
            st.write(Elever_merged_data)

        # Find elever som ikke eksisterer i begge filer
        Elever_med_fejl = pd.concat([Elever_Cicero_data,
                                     Elever_Lectio_data]).drop_duplicates(
                                         subset=['Navn', 'Stamklasse'],
                                         keep=False)
        if len(Elever_med_fejl) == 0:
            st.info(
                "Der var ingen elever som kun var at finde i en enkelt fil.")
        elif len(Elever_med_fejl) != 0:
            st.warning("__Følgende elever var ikke at finde i begge filer:__")
            st.write(Elever_med_fejl)

        # Den resterende kode sættes i gang når brugeren ønsker det
        if st.button("Generer filer med stregkoder for de valgte hold"):
            # Genereate folder to barcodes
            try:
                os.mkdir('Barcodes')
            except OSError:
                print("Creation of the directory %s failed" % path)

            # Generer stregkodeark for hvert af de valgte hold
            for hold in range(0, len(Valgte_hold)):

                # Generer dataframe hvor hvert af de valgte hold
                Valgt_hold_temp = pd.DataFrame(
                    columns=["Navn", "Lånernummer", "Stamklasse", "Hold"])
                for row in range(0, len(Elever_merged_data["Hold"])):
                    if Valgte_hold[hold] in Elever_merged_data["Hold"][row]:
                        if len(Valgt_hold_temp) == 0:
                            Valgt_hold_temp = Elever_merged_data.loc[[row]]
                        elif len(Valgt_hold_temp) != 0:
                            Valgt_hold_temp = Valgt_hold_temp.append(
                                Elever_merged_data.loc[[row]],
                                sort=False,
                                ignore_index=True)

                # Generer stregkolder for hvert af de valgte hold
                code39_class = barcode.get_barcode_class('code39')
                opts = {
                    'module_width': 0.2,
                    'module_height': 8.0,
                    'font_size': 15,
                    'text_distance': 1
                }
                for elem in range(0, len(Valgt_hold_temp['Lånernummer'])):
                    Loannumber = Valgt_hold_temp['Lånernummer'][elem]
                    code39 = code39_class(str(Loannumber),
                                          writer=ImageWriter(),
                                          add_checksum=False)
                    save_code = code39.save('Barcodes/' + str(Loannumber),
                                            options=opts)

                ### Generer tom PDF ###
                dato = dt.date.today()
                Filnavn = str(Valgte_hold[hold]) + ' - ' + str(dato) + '.pdf'
                save_name = os.path.join(os.path.expanduser("~"), "Desktop",
                                         Filnavn)
                pdf = SimpleDocTemplate(save_name,
                                        pagesize=A4,
                                        rightMargin=15,
                                        leftMargin=15,
                                        topMargin=15,
                                        bottomMargin=15)

                # Data for header
                header_data = [[
                    'Antal elever: ' + str(len(Valgt_hold_temp)),
                    str(dato),
                    str(Valgte_hold[hold])
                ]]

                # List of list med navne og barcodes
                names = []
                images = []
                for elem in range(0, len(Valgt_hold_temp['Lånernummer'])):
                    # Data om navne
                    Navn = Valgt_hold_temp["Navn"][elem]
                    names.append(Navn)
                    # Data om barcodes
                    Loannumber = Valgt_hold_temp['Lånernummer'][elem]
                    image = PIL.Image.open('Barcodes/' + str(Loannumber) +
                                           '.png')
                    width, height = image.size
                    image_Loannumber = Image('Barcodes/' + str(Loannumber) +
                                             '.png')
                    image_Loannumber.drawWidth = width / 4
                    image_Loannumber.drawHeight = height / 4
                    images.append(image_Loannumber)

                # Generer tabel ud fra List of list med navne og barcodes
                data = []
                start = 0
                s**t = 3
                for elem in range(0, len(names), 3):
                    data += [names[start:s**t], images[start:s**t]]
                    start += 3
                    s**t += 3

                # Generer tabeller
                header = Table(header_data, colWidths=2.55 * inch)
                table = Table(data, colWidths=2.55 * inch)

                # table style header
                ts = TableStyle([('FONTSIZE', (0, 0), (-1, -1), 12),
                                 ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
                                 ('LEFTPADDING', (0, 0), (-1, -1), 1),
                                 ('RIGHTPADDING', (0, 0), (-1, -1), 1),
                                 ('BOTTOMPADDING', (0, 0), (-1, -1), 10),
                                 ('TOPPADDING', (0, 0), (-1, -1), 5)])
                header.setStyle(ts)

                # table style til stregkoder og navne
                ts = TableStyle([('FONTSIZE', (0, 0), (-1, -1), 9),
                                 ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
                                 ('LEFTPADDING', (0, 0), (-1, -1), 1),
                                 ('RIGHTPADDING', (0, 0), (-1, -1), 1),
                                 ('BOTTOMPADDING', (0, 0), (-1, -1), 1),
                                 ('TOPPADDING', (0, 0), (-1, -1), 1)])
                table.setStyle(ts)

                # Tilføj elemter til pdf
                elems = []
                elems.append(header)
                elems.append(table)
                pdf.build(elems)

            if len(Valgte_hold) == 1:
                st.success(
                    'Succes!  \n' + str(len(Valgte_hold)) +
                    ' PDF-fil er genereret. Filerne er placeret på skrivebordet.'
                )
            elif len(Valgte_hold) > 1:
                st.success(
                    'Succes!  \n' + str(len(Valgte_hold)) +
                    ' PDF-filer er genereret. Filerne er placeret på skrivebordet.'
                )
            elif len(Valgte_hold) == 0:
                st.error(
                    'Du mangler at vælge hvilke holdoversigter som ønskes genereret.'
                )

            # Delete barcodes
            shutil.rmtree('Barcodes')
Exemple #52
0
from parameters import *
from transform_utils import TransformUtils

#First, delete everything in ./dataset
cwd = os.getcwd()
path = os.path.join(cwd, generation_folder)

os.chdir(path)
for image_path in glob.glob("*.png"):
    file_path = os.path.join(path, image_path)
    os.unlink(file_path)
if os.path.exists(os.path.join(path, 'labels.txt')):
    os.unlink(os.path.join(path, 'labels.txt'))
os.chdir("../")
coder = barcode.get_barcode_class(barcode_type)

T = TransformUtils(w=WIDTH, h=HEIGHT)
labels = np.array([np.zeros((nb_img, 10), dtype=np.bool_)] * 10)
for k in range(nb_img):
    nb = rd.randint(0, max_barcode_number)
    nb_digits = len(str(max_barcode_number))
    nb = str(nb).zfill(nb_digits)
    barcode = coder(nb, ImageWriter(), add_checksum=False)
    barcode.save("./" + generation_folder + '/temp', options=barcode_options)
    temp = cv2.imread("./" + generation_folder + '/temp.png',
                      cv2.IMREAD_GRAYSCALE)
    ##########################################################
    ################### DATA AUGMENTATION ####################
    ##########################################################
    if rd.random() < 0.5:
def gen_apple_wallet(barcode_type, barcode_input):

    if request.method == 'POST':
        if request.is_json:
            content = request.get_json(silent=False)
        else:
            content = {'name': 'Membership Card'}

    elif request.method == 'GET':
        if request.is_json:
            content = request.get_json(silent=False)
        else:
            content = request.args

    else:
        return 'Bad request.'

    pass_name = decode_input(content.get('name', 'Membership Card'))
    pass_description = decode_input(
        content.get('description',
                    'My membership card ' + barcode_type + ' pass'))
    pass_header_text = decode_input(content.get('header_text'))
    pass_header_value = decode_input(content.get('header_value'))
    pass_primary_text = decode_input(content.get('primary_text'))
    pass_primary_value = decode_input(content.get('primary_value'))
    pass_icon = decode_input(
        content.get(
            'icon',
            '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'
        ))
    pass_logo = decode_input(
        content.get(
            'logo',
            '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'
        ))
    pass_location = decode_input(content.get('location', False))
    pass_latitude = decode_input(content.get('latitude', '0'))
    pass_longitude = decode_input(content.get('longitude', '0'))
    pass_relevant_text = decode_input(
        content.get('relevant_text', 'A pass is available for use here'))
    pass_foreground_color = decode_input(
        content.get('foreground_color', 'rgb(0,0,0)'))
    pass_background_color = decode_input(
        content.get('background_color', 'rgb(37,170,225)'))
    pass_label_color = decode_input(
        content.get('label_color', 'rgb(241,92,34)'))

    pass_debug = content.get('debug', False)

    if pass_debug:
        print(pass_name)
        print(pass_description)
        print(pass_icon)
        print(pass_logo)
        print(pass_location)
        print(pass_latitude)
        print(pass_longitude)
        print(pass_relevant_text)
        print(pass_foreground_color)
        print(pass_background_color)
        print(pass_label_color)

    simplename = re.sub('[^a-zA-Z0-9]', '', pass_name).lower()

    if barcode_type.upper() == 'C39':
        if len(barcode_input) < 44:
            pass_barcode_buffer = BytesIO()
            AW_C39 = barcode.get_barcode_class('Code39')
            AW_C39(barcode_input, writer=ImageWriter(),
                   add_checksum=False).render({
                       'font_size': 0,
                       'dpi': 300
                   }).save(pass_barcode_buffer, format='PNG')
            pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue())
        else:
            return 'Bad Code39 code.'
    elif barcode_type.upper() == 'C128':
        if len(barcode_input) < 129:
            pass_barcode_buffer = BytesIO()
            AW_C128 = barcode.get_barcode_class('Code128')
            AW_C128(barcode_input, writer=ImageWriter()).render({
                'font_size': 0,
                'dpi': 300
            }).save(pass_barcode_buffer, format='PNG')
            pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue())
        else:
            return 'Bad Code128 code.'
    elif barcode_type.upper() == 'EAN13':
        barcode_input = re.sub("\D", "", barcode_input)
        if len(barcode_input) == 13:
            pass_barcode_buffer = BytesIO()
            AW_EAN13 = barcode.get_barcode_class('EAN13')
            AW_EAN13(barcode_input, writer=ImageWriter()).render({
                'font_size': 0,
                'dpi': 300
            }).save(pass_barcode_buffer, format='PNG')
            pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue())
        else:
            return 'Bad EAN13 code.'
    elif barcode_type.upper() == 'EAN8':
        barcode_input = re.sub("\D", "", barcode_input)
        if len(barcode_input) == 8:
            pass_barcode_buffer = BytesIO()
            AW_EAN8 = barcode.get_barcode_class('EAN8')
            AW_EAN8(barcode_input, writer=ImageWriter()).render({
                'font_size': 0,
                'dpi': 300
            }).save(pass_barcode_buffer, format='PNG')
            pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue())
        else:
            return 'Bad EAN8 code.'
    elif barcode_type.upper() == 'JAN':
        barcode_input = re.sub("\D", "", barcode_input)
        if (barcode_input[0:2] == '45'
                or barcode_input[0:2] == '49') and len(barcode_input) == 13:
            pass_barcode_buffer = BytesIO()
            AW_JAN = barcode.get_barcode_class('JAN')
            AW_JAN(barcode_input, writer=ImageWriter()).render({
                'font_size': 0,
                'dpi': 300
            }).save(pass_barcode_buffer, format='PNG')
            pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue())
        else:
            return 'Bad JAN code.'
    elif barcode_type.upper() == 'ISBN13':
        barcode_input = re.sub("\D", "", barcode_input)
        if (barcode_input[0:3] == '978'
                or barcode_input[0:3] == '979') and len(barcode_input) == 13:
            pass_barcode_buffer = BytesIO()
            AW_ISBN13 = barcode.get_barcode_class('ISBN13')
            AW_ISBN13(barcode_input, writer=ImageWriter()).render({
                'font_size': 0,
                'dpi': 300
            }).save(pass_barcode_buffer, format='PNG')
            pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue())
        else:
            return 'Bad ISBN13 code.'
    elif barcode_type.upper() == 'ISBN10':
        barcode_input = re.sub("\D", "", barcode_input)
        if len(barcode_input) == 10:
            pass_barcode_buffer = BytesIO()
            AW_ISBN10 = barcode.get_barcode_class('ISBN10')
            AW_ISBN10(barcode_input, writer=ImageWriter()).render({
                'font_size': 0,
                'dpi': 300
            }).save(pass_barcode_buffer, format='PNG')
            pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue())
        else:
            return 'Bad ISBN10 code.'
    elif barcode_type.upper() == 'ISSN':
        barcode_input = re.sub("\D", "", barcode_input)
        if len(barcode_input) == 8:
            pass_barcode_buffer = BytesIO()
            AW_ISSN = barcode.get_barcode_class('ISSN')
            AW_ISSN(barcode_input, writer=ImageWriter()).render({
                'font_size': 0,
                'dpi': 300
            }).save(pass_barcode_buffer, format='PNG')
            pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue())
        else:
            return 'Bad ISSN code.'
    elif barcode_type.upper() == 'NOCODE':
        pass_barcode = None
    else:
        return 'No valid barcode type passed with the request, try again.'

    cardInfo = StoreCard()

    if not barcode_type.upper(
    ) == 'NOCODE' and not pass_header_text and not pass_header_value:
        pass_header_text = 'Account Number'
        pass_header_value = barcode_input

    if pass_header_text and pass_header_value:
        cardInfo.addHeaderField('header_field', pass_header_value,
                                pass_header_text)

    if barcode_type.upper(
    ) == 'NOCODE' and pass_primary_value and pass_primary_text:
        cardInfo.addPrimaryField('primary_field', pass_primary_value,
                                 pass_primary_text)

    cardInfo.addBackField('name', pass_name, 'Name: ')
    cardInfo.addBackField('description', pass_description, 'Description: ')
    cardInfo.addBackField('credit', address, 'Created By: ')

    passfile = Pass(cardInfo, \
    passTypeIdentifier=pass_type_id, \
    organizationName=pass_name, \
    teamIdentifier=team_id)

    passfile.logoText = pass_name
    passfile.description = pass_description
    passfile.serialNumber = pass_type_id + '.' + simplename + '.' + barcode_input
    passfile.barcode = ''
    passfile.foregroundColor = pass_foreground_color
    passfile.backgroundColor = pass_background_color
    passfile.labelColor = pass_label_color

    if pass_location:
        passfile.locations = [{
            'latitude': float(pass_latitude),
            'longitude': float(pass_longitude),
            'relevantText': pass_relevant_text
        }]

    passfile.addFile('icon.png', BytesIO(base64.b64decode(str(pass_icon))))
    passfile.addFile('logo.png', BytesIO(base64.b64decode(str(pass_logo))))

    if not barcode_type.upper() == 'NOCODE':
        passfile.addFile('strip.png', BytesIO(base64.b64decode(pass_barcode)))

    pass_encoded = base64.b64encode(
        passfile.create('crts/certificate.pem', 'crts/key.pem',
                        'crts/wwdr.pem', pass_passcode).getvalue())

    return send_file(BytesIO(base64.b64decode(pass_encoded)),
                     mimetype='application/vnd.apple.pkpass',
                     as_attachment=True,
                     attachment_filename='pass.pkpass')
Exemple #54
0
def imprimir(request, pk):

    credentials = tools.getImpersonateUser(request)
    (user, _) = credentials

    professor = User2Professor(user)

    instance = get_object_or_404(Sortida, pk=pk)
    instance.flag_clean_nomes_toco_alumnes = True

    fEsDireccioOrGrupSortides = request.user.groups.filter(
        name__in=[u"direcció", u"sortides"]).exists()
    potEntrar = (professor in instance.professors_responsables.all()
                 or professor in instance.altres_professors_acompanyants.all()
                 or fEsDireccioOrGrupSortides)

    if not potEntrar:
        raise Http404

    #Preparo el codi de barres
    import time
    import barcode
    from PIL import Image
    from barcode.writer import ImageWriter
    CodiBarres = barcode.get_barcode_class(u'code128')
    codi_barres = CodiBarres(instance.codi_de_barres or "x",
                             writer=ImageWriter())
    barres = codi_barres.save("/tmp/barcode-{0}-{1}".format(
        time.time(), request.session.session_key))
    im = Image.open(barres)
    im = im.crop((
        20,
        20,
        385,
        50,
    ))
    s = im.size
    #im = im.resize((int(s[0] * 0.8), int(s[1] * 0.8)))
    im.save(barres)

    alumnes_que_hi_van = set(instance.alumnes_convocats.all())
    alumnes_que_no_hi_van = set(instance.alumnes_que_no_vindran.all())
    alumnes = list(alumnes_que_hi_van - alumnes_que_no_hi_van)

    report = []

    for alumne in Alumne.objects.filter(pk__in=[a.id for a in alumnes]):
        o = classebuida()
        o.alumne = unicode(alumne)
        o.grup = unicode(alumne.grup)
        o.ciutat = instance.ciutat
        o.preu = instance.preu_per_alumne
        o.departament = unicode(
            instance.departament_que_organitza
        ) if instance.departament_que_organitza else instance.comentari_organitza
        o.titol = instance.titol_de_la_sortida
        o.desde = instance.calendari_desde.strftime("%H:%Mh del %d/%m/%Y")
        o.desde_dia = instance.calendari_desde.strftime("%d/%m/%Y")
        o.finsa = instance.calendari_finsa.strftime("%H:%Mh del %d/%m/%Y")
        o.mitja = instance.get_mitja_de_transport_display()
        o.programa_de_la_sortida = instance.programa_de_la_sortida.split(
            "\n") or [
                '',
            ]
        o.condicions_generals = instance.condicions_generals.split("\n") or [
            '-',
        ]
        o.terminipagament = u"" if not bool(
            instance.termini_pagament
        ) else u"- darrer dia pagament {0} -".format(
            instance.termini_pagament.strftime('%d/%m/%Y'))
        report.append(o)
        o.barres = barres
        o.informacio_pagament = instance.informacio_pagament.split("\n") or [
            '-',
        ]
        o.te_codi_barres = bool(instance.codi_de_barres)

    #from django.template import Context
    from appy.pod.renderer import Renderer
    import cgi
    import os
    from django import http

    excepcio = None

    #try:

    #resultat = StringIO.StringIO( )
    resultat = "/tmp/DjangoAula-temp-{0}-{1}.odt".format(
        time.time(), request.session.session_key)
    #context = Context( {'reports' : reports, } )
    path = os.path.join(settings.PROJECT_DIR,
                        '../customising/docs/autoritzacio2.odt')
    if not os.path.isfile(path):
        path = os.path.join(os.path.dirname(__file__),
                            'templates/autoritzacio2.odt')

    renderer = Renderer(path, {
        'report': report,
    }, resultat)
    renderer.run()
    docFile = open(resultat, 'rb')
    contingut = docFile.read()
    docFile.close()
    os.remove(resultat)

    #barcode
    os.remove(barres)

    #     except Exception, e:
    #         excepcio = unicode( e )

    if True:  #not excepcio:
        response = http.HttpResponse(
            contingut, content_type='application/vnd.oasis.opendocument.text')
        response[
            'Content-Disposition'] = u'attachment; filename="{0}-{1}.odt"'.format(
                "autoritzacio_sortida", pk)

    else:
        response = http.HttpResponse(
            '''Als Gremlin no els ha agradat aquest fitxer! %s''' %
            cgi.escape(excepcio))

    return response
Exemple #55
0
#!/usr/bin/env python

# pip install viivakoodi
import barcode
from barcode.writer import ImageWriter
try:
	import Image,ImageDraw, ImageFont		
except ImportError:		
	from PIL import Image, ImageDraw, ImageFont

CODE128 = barcode.get_barcode_class('code128')
FONT = "FreeSans.ttf"

options = {
  "module_width":   0.254, # 3 dots / 300 dpi * 25.4mm/in
  "module_height": 10.0,   # The height of the barcode modules in mm
  "quiet_zone":     0.0,   # Distance on the left and on the right from the border to the first (last) barcode module in mm as float. Defaults to 6.5.
  "font_size":     18  ,   # Font size of the text under the barcode in pt as integer. Defaults to 10.
  "text_distance":  0.7,   # Distance between the barcode and the text under it in mm as float. Defaults to 5.0.
}

label_sizes = {
  "17x54": (566, 165), # printable area: 47.92mm x 13.97mm (566dots x 165dots in 300dpi = 135.84dots x 39.60dots in 72dpi)
  "17x87": (956, 165), # printable area: 80.94mm x 13.97mm (956dots x 165dots in 300dpi = 229.44dots x 39.60dots in 72dpi)
  "29x90": (991, 306), # printable area: 83.90mm x 25.91mm (991dots x 306dots in 300dpi = 237.84dots x 73.44dots in 72dpi)
}

pt300 = 0.24 # (pt300 = 0.24 pt72)

def create_label_type1(label_size, barcode_value, line1=None, line2=None, line3=None):
    im = Image.new("L", label_sizes[label_size], 255)
# install package
# type pip install python-barcode in command prompt/terminal

from barcode.writer import ImageWriter
import barcode
# there are many barcode types
# select what you need
# check it on pypi.org/project/python-barcode
hr = barcode.get_barcode_class('ean13')
Hr = hr('0234564257425')
# svg file will be created using ean13
qr = Hr.save('barcode')

# image file or png file
# import pillow library to use code39
gr = barcode.get_barcode_class('code39', )
Gr = gr('1234567891011', writer=ImageWriter())
qr = Gr.save('pngbarcode')
Exemple #57
0
def make_barcode():
    UPC = barcode.get_barcode_class('upc')
    upc = UPC(pk, writer=ImageWriter())
    code = upc.save('upc_code')
    return code
Exemple #58
0
        try:
            os.mkdir(TESTPATH)
        except OSError, e:
            print('Test not run.')
            print('Error:', e)
            sys.exit(1)
    objects = []
    append = lambda x, y: objects.append(OBJECTS.format(filename=x, name=y))
    append_img = lambda x, y: objects.append(IMAGES.format(filename=x, name=y))
    for codename, code in TESTCODES:
        bcode = get_barcode(codename, code)
        filename = bcode.save(os.path.join(TESTPATH, codename))
        print('Code: ', bcode.name, ', digits: ', bcode.digits)
        append(filename, bcode.name)
        if ImageWriter is not None:
            bcodec = get_barcode_class(codename)
            bcode = bcodec(code, writer=ImageWriter())
            filename = bcode.save(os.path.join(TESTPATH, codename),
                                  font_size=14, text_distance=1)
            append_img(filename, bcode.name)
        else:
            objects.append(NO_PIL)
    # Save htmlfile with all objects
    with codecs.open(HTMLFILE, 'w', encoding='utf-8') as f:
        obj = '\n'.join(objects)
        f.write(HTML.format(version=__version__, body=obj))


if __name__ == '__main__':
    test()
    webbrowser.open(HTMLFILE)
def press1(button):
    try:
        with open("ACEconfig.json", "r") as ACEconfigFile:
            ACE = json.load(ACEconfigFile)
        with open("ACIconfig.json", "r") as ACIconfigFile:
            ACI = json.load(ACIconfigFile)

        start = app.getDatePicker("startDP")
        end = app.getDatePicker("endDP")
        delta = (end - start).days + 1
        for i in range(0,
                       delta):  # For each day between the start and end dates
            day = datetime.date.fromordinal(start.toordinal() + i)
            YYYYMMDD = str(day).replace("-", "")
            if day.weekday() < 5:  # If the day is not Saturday or Sunday
                SCAC = "SEIK" + YYYYMMDD + "DR"
                ACE["tripNumber"] = SCAC
                ACE["estimatedArrivalDateTime"] = str(day) + " 10:00:00"

                CCN = "726G" + YYYYMMDD + "DR"
                PARS = CCN + "02"
                ACI["tripNumber"] = CCN
                ACI["estimatedArrivalDateTime"] = str(day) + " 12:00:00"
                ACI["shipments"][0]["cargoControlNumber"] = PARS
                ACI["shipments"][0]["estimatedArrivalDate"] = str(
                    day) + " 12:00:00"

                if app.getCheckBox("Save .json(s) to disk"):
                    path = "ACE-ACI Manifests" + os.sep + YYYYMMDD
                    if not os.path.exists("ACE-ACI Manifests"):
                        os.mkdir("ACE-ACI Manifests")
                    if not os.path.exists(path):
                        os.mkdir(path)
                    with open(path + os.sep + "ace-trip-" + SCAC + ".json",
                              "w") as outFile:
                        json.dump(ACE, outFile)
                    with open(path + os.sep + "aci-trip-" + CCN + ".json",
                              "w") as outFile:
                        json.dump(ACI, outFile)

                if app.getCheckBox("Send .json(s) to BorderConnect"):
                    sendToBC(ACE)
                    sendToBC(ACI)

                if app.getCheckBox("Request .pdf(s) from BorderConnect"):
                    ACERequest = {
                        "data": "PDF_REQUEST",
                        "companyKey": "c-9000-2bcd8ae5954e0c48",
                        "type": "ACE_STANDARD_DRIVERS_COPY",
                        "action": "EMAIL",
                        "tripNumber": SCAC,
                        "emailDetails": {
                            "address": "*****@*****.**",
                            "replyToAddress": "*****@*****.**",
                            "subject": "ACE eManifest Trip Number " + SCAC,
                            "body": str(day)
                        }
                    }
                    sendToBC(ACERequest)
                    ACIRequest = {
                        "data": "PDF_REQUEST",
                        "companyKey": "c-9000-2bcd8ae5954e0c48",
                        "type": "ACI_STANDARD_DRIVERS_COPY",
                        "action": "EMAIL",
                        "tripNumber": CCN,
                        "emailDetails": {
                            "address": "*****@*****.**",
                            "replyToAddress": "*****@*****.**",
                            "subject": "ACI eManifest Trip Number " + CCN,
                            "body": str(day)
                        }
                    }
                    sendToBC(ACIRequest)

                if app.getCheckBox("Generate .pdf(s)"):
                    path = "ACE-ACI Manifests" + os.sep + YYYYMMDD
                    if not os.path.exists("ACE-ACI Manifests"):
                        os.mkdir("ACE-ACI Manifests")
                    if not os.path.exists(path):
                        os.mkdir(path)
                    CODE128 = barcode.get_barcode_class("code128")

                    #ACE Manifest
                    text = []
                    text.append("ACE Manifest")
                    text.append(" ")
                    text.append("Company: Stallion Express Inc.")
                    text.append("Trip Number: " + SCAC)
                    text.append(" ")
                    text.append(" ")
                    text.append(" ")  # Empty room for barcodes
                    text.append(" ")
                    text.append(" ")
                    text.append(" ")
                    text.append(" ")
                    text.append(" ")
                    text.append(" *" + SCAC + "*")
                    text.append(" ")
                    text.append("Driver Name: " +
                                ACE["drivers"][0]["firstName"] + " " +
                                ACE["drivers"][0]["lastName"])
                    text.append(
                        "Truck License Plate: " +
                        ACE["truck"]["licensePlates"][0]["number"] + " (" +
                        ACE["truck"]["licensePlates"][0]["stateProvince"] +
                        ", CA)")
                    text.append(
                        "Trailer License Plate: " +
                        ACE["trailers"][0]["licensePlates"][0]["number"] +
                        " (" + ACE["trailers"][0]["licensePlates"][0]
                        ["stateProvince"] + ", CA)")

                    bar = CODE128(SCAC, writer=ImageWriter())
                    if os.path.exists(path + os.sep + SCAC):
                        os.remove(path + os.sep + SCAC)
                    file = bar.save(path + os.sep + SCAC)

                    c = canvas.Canvas(path + os.sep + SCAC + ".pdf",
                                      bottomup=0)
                    c.setFont("Lucida", 20)
                    c.drawImage(file,
                                20,
                                120,
                                width=227,
                                height=140,
                                mask=None)
                    for i, line in enumerate(text):
                        c.drawString(20, 40 + (i * 22), line)
                    if os.path.exists(path + os.sep + SCAC + ".pdf"):
                        os.remove(path + os.sep + SCAC + ".pdf")
                    c.save()

                    # ACI Manifest
                    text = []
                    text.append("ACI Manifest for Canada")
                    text.append(" ")
                    text.append("Company: Stallion Express Inc.")
                    text.append("Conveyance Reference Number: " + CCN)
                    text.append(" ")
                    text.append(" ")
                    text.append(" ")  # Empty room for barcodes
                    text.append(" ")
                    text.append(" ")
                    text.append(" ")
                    text.append(" ")
                    text.append(" ")
                    text.append(" *" + CCN + "*")
                    text.append(" ")
                    text.append("Port of Entry: 0427: Niagara Falls")
                    text.append("               - Queenston Lewiston Bridge"
                                )  # TODO: un-hardcode this
                    text.append("Driver Name: " +
                                ACI["drivers"][0]["firstName"] + " " +
                                ACI["drivers"][0]["lastName"])
                    text.append("Truck License Plate: " +
                                ACI["truck"]["licensePlate"]["number"] + " (" +
                                ACI["truck"]["licensePlate"]["stateProvince"] +
                                ", CA)")
                    text.append(
                        "Trailer License Plate: " +
                        ACI["trailers"][0]["licensePlate"]["number"] + " (" +
                        ACI["trailers"][0]["licensePlate"]["stateProvince"] +
                        ", CA)")
                    text.append("Cargo Control Number(s): " + PARS)
                    text.append("                         Type: PARS")

                    bar = CODE128(CCN, writer=ImageWriter())
                    if os.path.exists(path + os.sep + CCN):
                        os.remove(path + os.sep + CCN)
                    file = bar.save(path + os.sep + CCN)

                    c = canvas.Canvas(path + os.sep + CCN + ".pdf", bottomup=0)
                    c.setFont("Lucida", 20)
                    c.drawImage(file,
                                20,
                                120,
                                width=227,
                                height=140,
                                mask=None)
                    for i, line in enumerate(text):
                        c.drawString(20, 40 + (i * 22), line)
                    if os.path.exists(path + os.sep + CCN + ".pdf"):
                        os.remove(path + os.sep + CCN + ".pdf")
                    c.save()
                if app.getCheckBox("Email .pdf(s) to Driver"):
                    path = "ACE-ACI Manifests" + os.sep + YYYYMMDD
                    if os.path.exists(
                            path + os.sep + SCAC + ".pdf"
                    ) and os.path.exists(
                            path + os.sep + CCN + ".pdf"
                    ):  # IF both necessary files are present, send an email
                        server = smtplib.SMTP(host="smtp.gmail.com", port=587)
                        server.starttls()
                        server.login("*****@*****.**",
                                     password)

                        message = MIMEMultipart()
                        text = ""
                        message["From"] = "*****@*****.**"
                        message["To"] = "*****@*****.**"
                        message["Subject"] = "Paperwork for " + str(day)

                        message.attach(MIMEText(text, "plain"))

                        files = [
                            path + os.sep + SCAC + ".pdf",
                            path + os.sep + CCN + ".pdf"
                        ]
                        for f in files:
                            attachment = MIMEApplication(open(f, "rb").read())
                            attachment.add_header("Content-Disposition",
                                                  "attachment",
                                                  filename=f)
                            message.attach(attachment)

                        server.send_message(message)
                        print("Email Sent")
                        del message
                    else:
                        print("Ford BoL or ACI not found")
                if app.getCheckBox("Backup to Google Drive"):
                    pass
                    # TODO: Backup to Google Drive?
    except:
        print(sys.exc_info())
        raise
Exemple #60
0
def get_barcode():
	barcode.PROVIDED_BARCODES
	EAN = barcode.get_barcode_class('ean13')        
	m = str(int(round(time.time() * 1000)))
	ean = EAN(m) 
	return ean