Welcome    Usage    Browse    Find CID    Search     Log in

cM API Documentation

module.py

Go to the documentation of this file.
00001 #
00002 # Collective Mind
00003 #
00004 # See cM LICENSE.txt for licensing details.
00005 # See cM Copyright.txt for copyright details.
00006 #
00007 # Developer(s): (C) Grigori Fursin, started on 2011.09
00008 #
00009 
00010 # Should always be here
00011 ini={}
00012 cm_kernel=None
00013 
00014 # Local settings
00015 import string
00016 import os
00017 import sys
00018 import tempfile
00019 import StringIO
00020 
00021 # ============================================================================
00022 def init(i):
00023     return {'cm_return':0}
00024 
00025 # ============================================================================
00026 def generate(i):
00027 
00028     """
00029     Generate qr-code
00030 
00031     Input:  {
00032               cm_string        - string to convert to qr-code
00033               qr_level         - qr_level (4,5,etc)
00034               image_size       - picture size
00035             }
00036 
00037     Output: {
00038               cm_return        - return code >0 if error
00039               cm_full_filename - file with image
00040             }
00041     """
00042 
00043     if 'cm_string' not in i: return {'cm_return':1, 'cm_error':'"cm_string" is not set'}
00044     if 'qr_level' not in i: return {'cm_return':1, 'cm_error':'"qr_level" is not set'}
00045     if 'image_size' not in i: return {'cm_return':1, 'cm_error':'"image_size" is not set'}
00046 
00047     # Import PyQRNative module
00048     r=cm_kernel.load_code({'cm_path':ini['path'], 'cm_code_name':'PyQRNative'})
00049     if r['cm_return']>0: return r
00050 
00051     qrm=r['code']
00052 
00053     # Prepare QR code
00054     qr = qrm.QRCode(int(i['qr_level']), qrm.QRErrorCorrectLevel.L)
00055     qr.addData(i['cm_string'])
00056     qr.make()
00057     im = qr.makeImage()
00058     im1=im.resize((int(i['image_size']), int(i['image_size'])))
00059 
00060     # Generate tmp file
00061     r=cm_kernel.gen_cm_tmp_file({})
00062     if r['cm_return']>0: return r
00063     tf=r['cm_path']
00064     uid=r['cm_uid']
00065   
00066     # Save image
00067     im1.save(tf, 'PNG')
00068 
00069     ii={}
00070     ii['cm_full_filename']=tf
00071 
00072     if i.get('cm_console','')=='txt':
00073        cm_kernel.print_for_con(tf)
00074     else:
00075        ii['cm_web_download']='yes'
00076        ii['cm_web_set_headers']='yes'
00077 
00078        # Prepare content header
00079        ii1={'cm_run_module_uoa':ini['cfg']['cm_modules']['cm-web'],
00080             'cm_action':'prepare_content_header',
00081             'cm_web_content':'.png',
00082             'cm_filename':tf}
00083 
00084        r=cm_kernel.access(ii1)
00085        if r['cm_return']>0: return r
00086 
00087        # Substitute special variables
00088        wh=[]
00089        for x in r['cm_web_headers']:
00090            wh.append(x.replace(cm_kernel.convert_str_to_special('filename'), tf))
00091 
00092        ii['cm_web_headers']=wh
00093 
00094     ii['cm_web_postprocess']='no'
00095     ii['cm_return']=0
00096 
00097     ii['cm_delete_file_after_view']='yes' # for tmp files!
00098 
00099     return ii

Generated on Wed May 28 02:49:02 2014 for Collective Mind Framework by DoxyGen 1.6.1
Concept, design and coordination: Grigori Fursin (C) 1993-2013