Example #1
0
def euclides_test():
    print("algoritme d'euclides")
    print("--------------------")
    print(
        "Entra si vols que s'autogenerin els numeros o si prefereixes entrar-los tu."
    )
    print("- 0 -> Generats amb un nombre aleatori de 1 a " + str(digits) +
          " digits")
    print("- 1 -> A manija")
    option = getNumber("Escull una opcio : ")
    a = 0
    b = 0
    if (option == 0):
        a = generateRandomValue(random.randint(1, digits))
        b = generateRandomValue(random.randint(1, digits))
    else:
        a = getNumber("enter the first number: ")
        b = getNumber("enter the second number: ")

    print("Els nombres que s'utilitzen son : ")
    print("")
    print(a)
    print("")
    print(b)
    print("")
    print("Calculem el MCD ...")
    print("")
    # Considerem a com a divident i b com a divisor
    while (a % b != 0):
        tmp = b
        b = a % b
        a = tmp

    print("El maxim comu divisor es el " + str(b))
Example #2
0
def bezoud_test():
    print("algoritme d'euclides")
    print("--------------------")
    print(
        "Entra si vols que s'autogenerin els numeros o si prefereixes entrar-los tu."
    )
    print("- 0 -> Generats amb un nombre aleatori de 1 a " + str(digits) +
          " digits")
    print("- 1 -> A manija")
    option = getNumber("Escull una opcio : ")
    a = 0
    b = 0
    if (option == 0):
        a = generateRandomValue(random.randint(1, digits))
        b = generateRandomValue(random.randint(1, digits))
    else:
        print("The first number must be grather than the second!")
        a = getNumber("enter the first number: ")
        b = getNumber("enter the second number: ")

    ina = a
    inb = b

    print("Els nombres que s'utilitzen son : ")
    print(ina)
    print(inb)
    print("")
    print("Calculem el MCD i la identitat de Bezoud...")
    print("")
    # Considerem a com a divident i b com a divisor
    qant = 0
    pant = 1
    qact = 1
    pact = 0
    iteration = 0

    while (a % b != 0):
        quo = a // b
        qtmp = quo * qact + qant
        ptmp = quo * pact + pant
        qant = qact
        pant = pact
        qact = qtmp
        pact = ptmp

        tmp = b
        b = a % b
        a = tmp
        iteration += 1

    if (iteration % 2 == 0):
        pact *= -1
    else:
        qact *= -1
    print("MCD : " + str(b))
    print("Q_i : " + str(qact))
    print("P_i : " + str(pact))
    print("Moreover, ... : " + str(b) + " = " + str(qact) + "*" + str(inb) +
          " + " + str(pact) + "*" + str(ina))
Example #3
0
def extcute_body(body):
    if isinstance(body, dict):

        if body.get("status") == "RING":  # 有电话接入call-in,客户端显示页面
            log(body["number"])
            log('有电话接入,显示弹窗')
            ws['tran_id'] = body['vid']  # 将来访者id写入ws字典,供满意度调查按钮使用
            seatId = body['pid']  # seatId是分机号
            room = getNumber(seatId, Seat, ws)
            socketio.emit(event='ring', data=body, room=room)

        elif isinstance(body.get('ws'), dict):
            log('通话结束传过来的body', body)
            if body['ws']['status'] == 'Cdr':
                # 通话结束,发送Cdr话单,包含录音文件的路径
                log('通话结束,停止计时')
                seatId = body['ws']['pid']
                room = getNumber(seatId, Seat, ws)
                uid = get_uid(Seat, int(seatId))
                Funcs.sql_addCallRecord(body['cr'], uid)  # 添加通话记录
                Funcs.sql_addVoiceRecord(body['vr'], uid)  # 添加录音记录
                socketio.emit(event='off', data=body['ws'], room=room)
                wget_down(body['ws']['downPath'])  # 下载录音

        elif body.get("status") == 'ANWSER':  # 分机应答,让计时器开始计时
            log('通话建立')
            seatId = body['pid']
            room = getNumber(seatId, Seat, ws)
            socketio.emit(event='anwser', data=body, room=room)

        elif body.get("status") == 'INCOMING':  # 来电转分机请求
            vid = body.get("vid")
            ws['tran_id'] = body['vid']  # 将来访者id写入ws字典,供满意度调查按钮使用
            welcome(vid)

            # if setting_phone['pid']:  # 如果设置分机的优先级,使用优先分机
            #     auto(body['vid'], setting_phone['pid'])
            # else:
            #     pid = list(Funcs.p['IDLE'])  # 如果没有设置分机的优先机,就使用allFunc中的写死的默认分机
            #     # auto(body['vid'], random.choice(pid))             # 随机分配
            #     auto(body['vid'], '212')                            # 指定分机

        elif body.get("status") == 'change_status':  # 分机状态改变
            socketio.emit(event='phone_status', data=body)  # 广播给所有客户端,显示分机的状态

        elif body.get("status") == 'lose':  # 电话漏接情况,发送漏接短信
            pid = body['pid']               # 分机号
            client_phone = body['number']
            seat = Seat.query.filter_by(number=pid).first()
            user = seat.user
            user_phone = user.phone
            log('漏接短信信息', user_phone, client_phone, pid)
            status = send_message(user_phone, client_phone, pid)
Example #4
0
def menu():
    no_menu = True
    while no_menu:
        print("[1] Login")
        print("[2] Crear Cuenta")
        print("[3] Ver hilos")
        print("[0] Salir")
        opcion = utils.getNumber(4)
        if opcion == 1:
            user = input("Usuario: ")
            passs = input("Contraseña: ")
            token = utils.getToken(user, passs)
            if token != False:
                print("Bienvenido " + utils.getName(token))
                no_menu = False
            else:
                print("Usuario/Contraseña Incorrectos")
        elif opcion == 2:
            user = input("Usuario: ")
            passs = input("Contraseña: ")
            name = input("Nombre: ")
            utils.Logon(user, passs, name)
        elif opcion == 3:
            print("Mostrar hilos")
        elif opcion == 0:
            print("Saliendo...")
            no_menu = False
Example #5
0
def checkfilename(request):
    elapsedtime = time.time()
    if 'filenames2check' in request.POST and request.POST[
            'filenames2check'] != '':
        listoffilenames = request.POST['filenames2check']
        filenames = listoffilenames.split(' ')
        objectnumbers = [getNumber(o) for o in filenames]
    else:
        objectnumbers = []
        listoffilenames = ''
    dropdowns = getDropdowns()
    elapsedtime = time.time() - elapsedtime
    status = 'up'
    timestamp = time.strftime("%b %d %Y %H:%M:%S", time.localtime())

    return render(
        request, 'uploadmedia.html', {
            'filenames2check': listoffilenames,
            'objectnumbers': objectnumbers,
            'dropdowns': dropdowns,
            'overrides': overrides,
            'timestamp': timestamp,
            'elapsedtime': '%8.2f' % elapsedtime,
            'status': status,
            'title': TITLE,
            'serverinfo': SERVERINFO
        })
Example #6
0
def checkfilename(request):
    elapsedtime = time.time()
    if 'filenames2check' in request.POST and request.POST['filenames2check'] != '':
        listoffilenames = request.POST['filenames2check']
        filenames = listoffilenames.split(' ')
        objectnumbers = [getNumber(o) for o in filenames]
    else:
        objectnumbers = []
        listoffilenames = ''
    dropdowns = getDropdowns()
    elapsedtime = time.time() - elapsedtime
    status = 'up'
    timestamp = time.strftime("%b %d %Y %H:%M:%S", time.localtime())

    return render(request, 'uploadmedia.html', {'filenames2check': listoffilenames,
                                                'objectnumbers': objectnumbers, 'dropdowns': dropdowns,
                                                'overrides': overrides, 'timestamp': timestamp,
                                                'elapsedtime': '%8.2f' % elapsedtime,
                                                'status': status, 'title': TITLE, 'serverinfo': SERVERINFO})
Example #7
0
 def run(self, dispatcher: CollectingDispatcher, tracker: Tracker,
         domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
     text = ''
     quantidade = utils.getNumber(tracker.latest_message['entities'])
     sabor = utils.getFlavor(tracker.latest_message['entities'])
     carrinho = tracker.get_slot('carrinho')
     if quantidade and sabor:
         if cardapio.get(sabor):
             pastel = {
                 'sabor': sabor,
                 'quantidade': quantidade,
                 'valor': cardapio[sabor]
             }
             if carrinho:
                 carrinho.append(pastel)
             else:
                 carrinho = [pastel]
             text = f"{quantidade} {'pastéis' if quantidade > 1 else 'pastel'} sabor {sabor} adicionado no seu carrinho! O que mais você deseja?"
         else:
             text = f"O sabor {sabor} não está no nosso cardápio ainda...Quer pedir outro sabor?"
     else:
         text = 'Por favor, informe o sabor e a quantidade.'
     dispatcher.utter_message(text=text,
                              buttons=[{
                                  "title": "Pedir pastel",
                                  "payload": "/cardapio"
                              }, {
                                  "title": "Carrinho",
                                  "payload": "/carrinho"
                              }, {
                                  "title": "Finalizar pedido",
                                  "payload": "/finalizar"
                              }, {
                                  "title": "Sair",
                                  "payload": "/despedida"
                              }])
     return [SlotSet("carrinho", carrinho)]
Example #8
0
def uploadfiles(request):

    jobinfo = {}
    constants = {}
    images = []
    dropdowns = getDropdowns()
    elapsedtime = time.time()

    form = forms.Form(request)
    if request.POST:

        contributor = request.POST['contributor']
        overrideContributor = request.POST['overridecreator']

        creatorDisplayname = request.POST['creator']
        overrideCreator = request.POST['overridecreator']

        rightsholderDisplayname = request.POST['rightsholder']
        overrideRightsholder = request.POST['overriderightsholder']

        constants = {'creator': creatorDisplayname, 'contributor': contributor, 'rightsholder': rightsholderDisplayname}

        for lineno,afile in enumerate(request.FILES.getlist('imagefiles')):
            #print afile
            try:
                print "%s %s: %s %s (%s %s)" % ('id', lineno, 'name', afile.name, 'size', afile.size)
                im = get_exif(afile)
                objectnumber = getNumber(afile.name)
                #objectCSID = getCSID(objectnumber)
                creator, creatorRefname = assignValue(creatorDisplayname,overrideCreator,im,'Artist',dropdowns['creators'])
                contributor, dummy = assignValue(contributor,overrideContributor,im,'ImageDescription',{})
                rightsholder, rightsholderRefname = assignValue(rightsholderDisplayname,overrideRightsholder,im,'RightsHolder',dropdowns['rightsholders'])
                datetimedigitized, dummy = assignValue('','ifblank',im,'DateTimeDigitized',{})
                imageinfo = {'id': lineno, 'name': afile.name, 'size': afile.size,
                             'objectnumber': objectnumber,
                             #'objectCSID': objectCSID,
                             'date': datetimedigitized,
                             'creator': creatorRefname,
                             'contributor': contributor,
                             'rightsholder': rightsholderRefname,
                             'creatorDisplayname': creator,
                             'rightsholderDisplayname': rightsholder,
                             'contributorDisplayname': contributor
                }
                handle_uploaded_file(afile, imageinfo)
                images.append(imageinfo)
            except:
                #raise
                images.append({'name': afile.name, 'size': afile.size, 'error': 'problem extracting image metadata, not processed'})

        if len(images) > 0:
            jobnumber = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
            jobinfo['jobnumber'] = jobnumber
            writeCsv(getJobfile(jobnumber)+'.step1.csv', images,
                     ['name', 'size', 'objectnumber', 'date', 'creator', 'contributor', 'rightsholder'])
            jobinfo['estimatedtime'] = '%8.1f' % (len(images) * 10 / 60.0)

            if 'createmedia' in request.POST:
                jobinfo['status'] = 'createmedia'
                loginfo('start', getJobfile(jobnumber), request)
                try:
                    retcode = subprocess.call(["/usr/local/share/django/pahma_project/uploadmedia/postblob.sh", getJobfile(jobnumber)])
                    if retcode < 0:
                        loginfo('process', jobnumber+" Child was terminated by signal %s" %  -retcode, request)
                    else:
                        loginfo('process', jobnumber+": Child returned %s" %  retcode, request)
                except OSError as e:
                    loginfo('error', "Execution failed: %s" % e, request)
                loginfo('finish', getJobfile(jobnumber), request)

            elif 'uploadmedia' in request.POST:
                jobinfo['status'] = 'uploadmedia'
            else:
                jobinfo['status'] = 'No status possible'

    status = 'up'
    timestamp = time.strftime("%b %d %Y %H:%M:%S", time.localtime())
    elapsedtime = time.time() - elapsedtime

    return render(request, 'uploadmedia.html',
                  {'title': TITLE, 'images': images, 'count': len(images), 'constants': constants, 'jobinfo': jobinfo,
                   'dropdowns': dropdowns, 'overrides': overrides, 'status': status, 'timestamp': timestamp, 'elapsedtime': '%8.2f' % elapsedtime})
Example #9
0
def uploadfiles(request):

    jobinfo = {}
    constants = {}
    images = []
    dropdowns = getDropdowns()
    elapsedtime = time.time()

    form = forms.Form(request)
    if request.POST:

        contributor = request.POST['contributor']
        overrideContributor = request.POST['overridecreator']

        creatorDisplayname = request.POST['creator']
        overrideCreator = request.POST['overridecreator']

        rightsholderDisplayname = request.POST['rightsholder']
        overrideRightsholder = request.POST['overriderightsholder']

        constants = {
            'creator': creatorDisplayname,
            'contributor': contributor,
            'rightsholder': rightsholderDisplayname
        }

        for lineno, afile in enumerate(request.FILES.getlist('imagefiles')):
            #print afile
            try:
                print "%s %s: %s %s (%s %s)" % ('id', lineno, 'name',
                                                afile.name, 'size', afile.size)
                im = get_exif(afile)
                objectnumber = getNumber(afile.name)
                #objectCSID = getCSID(objectnumber)
                creator, creatorRefname = assignValue(creatorDisplayname,
                                                      overrideCreator, im,
                                                      'Artist',
                                                      dropdowns['creators'])
                contributor, dummy = assignValue(contributor,
                                                 overrideContributor, im,
                                                 'ImageDescription', {})
                rightsholder, rightsholderRefname = assignValue(
                    rightsholderDisplayname, overrideRightsholder, im,
                    'RightsHolder', dropdowns['rightsholders'])
                datetimedigitized, dummy = assignValue('', 'ifblank', im,
                                                       'DateTimeDigitized', {})
                imageinfo = {
                    'id': lineno,
                    'name': afile.name,
                    'size': afile.size,
                    'objectnumber': objectnumber,
                    #'objectCSID': objectCSID,
                    'date': datetimedigitized,
                    'creator': creatorRefname,
                    'contributor': contributor,
                    'rightsholder': rightsholderRefname,
                    'creatorDisplayname': creator,
                    'rightsholderDisplayname': rightsholder,
                    'contributorDisplayname': contributor
                }
                handle_uploaded_file(afile, imageinfo)
                images.append(imageinfo)
            except:
                #raise
                images.append({
                    'name':
                    afile.name,
                    'size':
                    afile.size,
                    'error':
                    'problem extracting image metadata, not processed'
                })

        if len(images) > 0:
            jobnumber = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
            jobinfo['jobnumber'] = jobnumber
            writeCsv(
                getJobfile(jobnumber) + '.step1.csv', images, [
                    'name', 'size', 'objectnumber', 'date', 'creator',
                    'contributor', 'rightsholder'
                ])
            jobinfo['estimatedtime'] = '%8.1f' % (len(images) * 10 / 60.0)

            if 'createmedia' in request.POST:
                jobinfo['status'] = 'createmedia'
                loginfo('start', getJobfile(jobnumber), request)
                try:
                    retcode = subprocess.call([
                        "/usr/local/share/django/pahma_project/uploadmedia/postblob.sh",
                        getJobfile(jobnumber)
                    ])
                    if retcode < 0:
                        loginfo(
                            'process', jobnumber +
                            " Child was terminated by signal %s" % -retcode,
                            request)
                    else:
                        loginfo('process',
                                jobnumber + ": Child returned %s" % retcode,
                                request)
                except OSError as e:
                    loginfo('error', "Execution failed: %s" % e, request)
                loginfo('finish', getJobfile(jobnumber), request)

            elif 'uploadmedia' in request.POST:
                jobinfo['status'] = 'uploadmedia'
            else:
                jobinfo['status'] = 'No status possible'

    status = 'up'
    timestamp = time.strftime("%b %d %Y %H:%M:%S", time.localtime())
    elapsedtime = time.time() - elapsedtime

    return render(
        request, 'uploadmedia.html', {
            'title': TITLE,
            'images': images,
            'count': len(images),
            'constants': constants,
            'jobinfo': jobinfo,
            'dropdowns': dropdowns,
            'overrides': overrides,
            'status': status,
            'timestamp': timestamp,
            'elapsedtime': '%8.2f' % elapsedtime
        })
Example #10
0
def menu():
    primera_vez = True
    name = "Anonimo"
    no_menu = True
    token = False
    os.system("cls")
    while no_menu:
        print("  ______________________  ")
        print("||                      ||")
        print("||    MENU PRINCIPAL    ||")
        print("||                      ||")
        print("||      [1] Login       ||")
        print("||   [2] Crear Cuenta   ||")
        print("||    [3] Ver hilos     ||")
        print("||      [0] Salir       ||")
        print("||                      ||")
        print("||______________________||")
        opcion = utils.getNumber(0, 4, "Opción: ")
        if opcion == 1:
            os.system("cls")
            print("{### FORMULARIO LOGEO ###}")
            user = input("Usuario: ")
            passs = utils.keyAlmacenada(0, user, "")
            no_guardado = False
            if passs == None:
                no_guardado = True
                passs = input("Contraseña: ")
            token = utils.getToken(user, passs)
            if token != False:
                if no_guardado:
                    utils.keyAlmacenada(1, user, passs)
                name = utils.getName(token)
                no_menu2 = True
                while no_menu2:
                    if primera_vez:
                        os.system("cls")
                        print("Bienvenido " + name)
                        primera_vez = False
                    maxima = 2
                    os.system("cls")
                    print("  ______________________  ")
                    print("||                      ||")
                    print("||        LOGEADO       ||")
                    print("||                      ||")
                    print("||    [1] Ver hilos     ||")
                    if user != "Anonimo":
                        print("||    [2] Nuevo hilo    ||")
                        maxima = 3
                        if name == "dios":
                            print("||    [3] Borrar hilo   ||")
                            maxima = 4
                    print("||       [0] Salir      ||")
                    print("||                      ||")
                    print("||______________________||")
                    opcion = utils.getNumber(0, maxima, "Opción: ")
                    if opcion == 1:
                        no_menu21 = True
                        while no_menu21:
                            os.system("cls")
                            print(
                                "  ______________________________________________  "
                            )
                            print("||\t\t\t\t\t\t||")
                            print("||\t\tSELECCIONA EL HILO\t\t||")
                            utils.getHilos()
                            print("||\t\t[100] Volver\t\t\t||")
                            print("||\t\t\t\t\t\t||")
                            print(
                                "||______________________________________________||"
                            )
                            opcion = utils.getNumber(100, utils.cuenta_hilos,
                                                     "ID Hilo: ")
                            if opcion >= 101:
                                no_menu4 = True
                                while no_menu4:
                                    os.system("cls")
                                    print("Mostrando hilo " + str(opcion) +
                                          ": " + utils.hilos[opcion - 101])
                                    print(
                                        "  _______________________________________________________________________________  "
                                    )
                                    print("||\t\t\t\t\t\t\t\t\t\t||")
                                    print("||\t\t\t\t\tHILOS\t\t\t\t\t||")
                                    utils.getComentarios(opcion)
                                    if (name == "dios"):
                                        print(
                                            "||\t\t\t\t[98] Borrar comentario\t\t\t\t||"
                                        )
                                    if (name != "Anonimo"):
                                        print(
                                            "||\t\t\t\t[99] Añadir comentario\t\t\t\t||"
                                        )
                                    print("||\t\t\t\t\t\t\t\t\t\t||")
                                    print("||\t\t\t\t[100] Volver\t\t\t\t\t||")
                                    print("||\t\t\t\t\t\t\t\t\t\t||")
                                    print(
                                        "||______________________________________________________________________________||"
                                    )
                                    opcion2 = utils.getNumber(
                                        98, 101, "Opcion: ")
                                    if opcion2 == 100:
                                        no_menu4 = False
                                        os.system("cls")
                                    elif opcion2 == 99:
                                        print("{### NUEVO COMENTARIO ###}")
                                        texto_comentario = input(
                                            "Texto del comentario: ")
                                        utils.setComentarioHilo(
                                            opcion, texto_comentario, name,
                                            token)
                                    elif opcion2 == 98:
                                        print("{### BORRAR COMENTARIO ###}")
                                        Id_comentario = utils.getNumber(
                                            100, utils.cuenta_comentarios,
                                            "Id Comentario: ")
                                        utils.deleteComentarioHilo(
                                            opcion, Id_comentario, token)
                            else:
                                no_menu21 = False
                                os.system("cls")
                    elif opcion == 2:
                        os.system("cls")
                        print("Escribe 'Cancelar' para cancelar la accion.")
                        print("{########~NUEVO HILO~########}")
                        titulo_hilo = input("Nombre del hilo: ")
                        if titulo_hilo != "Cancelar":
                            utils.setHilo(name, titulo_hilo, token)
                    elif opcion == 3:
                        os.system("cls")
                        print(
                            "  ______________________________________________")
                        print("||\t\t\t\t\t\t||")
                        print("||\t\tSELECCIONA EL HILO\t\t||")
                        utils.getHilos()
                        print("||\t\t\t\t\t\t||")
                        print("||\t\t[100] Volver\t\t\t||")
                        print("||\t\t\t\t\t\t||")
                        print(
                            "||______________________________________________||"
                        )

                        id_hilo = utils.getNumber(100, utils.cuenta_hilos,
                                                  "ID Hilo: ")
                        if id_hilo != 100:
                            utils.deleteHilo(id_hilo, token)
                    else:
                        no_menu2 = False
                        os.system("cls")
                        primera_vez = True
                        name = "Anonimo"
                        token = False
            else:
                print("Usuario/Contraseña Incorrectos")

        elif opcion == 2:
            no_pass = True
            os.system("cls")
            print("{### FORMULARIO REGISTRO ###}")
            user = input("Usuario: ")
            while no_pass:
                passs = input("Contraseña: ")
                repass = input("Introduzca de nuevo la contraseña: ")
                if passs == repass:
                    no_pass = False
                else:
                    print("Las contraseñas no coinciden")
            name = input("Nombre: ")
            utils.Logon(user, passs, name)

        elif opcion == 3:
            if primera_vez:
                os.system("cls")
                print("Has entrado como " + name)
                primera_vez = False
            no_menu3 = True
            while no_menu3:
                print("  ______________________________________________  ")
                print("||\t\t\t\t\t\t||")
                print("||\t\tSELECCIONA EL HILO\t\t||")
                utils.getHilos()
                print("||\t\t\t\t\t\t||")
                print("||\t\t[100] Volver\t\t\t||")
                print("||______________________________________________||")
                opcion = utils.getNumber(100, utils.cuenta_hilos, "Opción: ")
                if opcion != 100:
                    no_menu31 = True
                    while no_menu31:
                        os.system("cls")
                        print("Mostrando hilo " + str(opcion) + ": " +
                              utils.hilos[opcion - 101])
                        print(
                            "  _______________________________________________________________________________  "
                        )
                        print("||\t\t\t\t\t\t\t\t\t\t||")
                        print("||\t\t\t\t\tHILOS\t\t\t\t\t||")
                        utils.getComentarios(opcion)
                        print("||\t\t\t\t\t\t\t\t\t\t||")
                        print("||\t\t\t\t[100] Volver\t\t\t\t\t||")
                        print("||\t\t\t\t\t\t\t\t\t\t||")
                        print(
                            "||______________________________________________________________________________||"
                        )
                        opcion = utils.getNumber(100, 101, "Opción: ")
                        if opcion == 100:
                            os.system("cls")
                            no_menu31 = False
                else:
                    os.system("cls")
                    no_menu3 = False
                    primera_vez = True
                    name = "Anonimo"

        elif opcion == 0:
            os.system("cls")
            print("Saliendo...")
            no_menu = False
Example #11
0
def prepareFiles(request, validateonly, dropdowns):
    jobinfo = {}
    images = []
    for lineno, afile in enumerate(request.FILES.getlist('imagefiles')):
        # print afile
        try:
            print "%s %s: %s %s (%s %s)" % ('id', lineno, 'name', afile.name, 'size', afile.size)
            image = get_exif(afile)
            filename, objectnumber, imagenumber = getNumber(afile.name)
            # objectCSID = getCSID(objectnumber)
            im.creator, im.creatorRefname = assignValue(im.creatorDisplayname, im.overrideCreator, image, 'Artist',
                                                        dropdowns['creators'])
            im.contributor, dummy = assignValue(im.contributor, im.overrideContributor, image, 'ImageDescription', {})
            im.rightsholder, im.rightsholderRefname = assignValue(im.rightsholderDisplayname, im.overrideRightsholder,
                                                                  image, 'RightsHolder', dropdowns['rightsholders'])
            datetimedigitized, dummy = assignValue('', 'ifblank', image, 'DateTimeDigitized', {})
            imageinfo = {'id': lineno, 'name': afile.name, 'size': afile.size,
                         'objectnumber': objectnumber,
                         'imagenumber': imagenumber,
                         # 'objectCSID': objectCSID,
                         'date': datetimedigitized,
                         'creator': im.creatorRefname,
                         'contributor': im.contributor,
                         'rightsholder': im.rightsholderRefname,
                         'creatorDisplayname': im.creator,
                         'rightsholderDisplayname': im.rightsholder,
                         'contributorDisplayname': im.contributor
            }
            if not validateonly:
                handle_uploaded_file(afile)
            images.append(imageinfo)
        except:
            if not validateonly:
                # we still upload the file, anyway...
                handle_uploaded_file(afile)
            images.append({'name': afile.name, 'size': afile.size,
                           'error': 'problem extracting image metadata, not processed'})

    if len(images) > 0:
        jobnumber = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
        jobinfo['jobnumber'] = jobnumber

        if not validateonly:
            writeCsv(getJobfile(jobnumber) + '.step1.csv', images,
                     ['name', 'size', 'objectnumber', 'date', 'creator', 'contributor', 'rightsholder', 'imagenumber'])
        jobinfo['estimatedtime'] = '%8.1f' % (len(images) * 10 / 60.0)

        if 'createmedia' in request.POST:
            jobinfo['status'] = 'createmedia'
            if not validateonly:
                loginfo('start', getJobfile(jobnumber), request)
                try:
                    retcode = subprocess.call([path.join(POSTBLOBPATH, 'postblob.sh'), getJobfile(jobnumber)])
                    if retcode < 0:
                        loginfo('process', jobnumber + " Child was terminated by signal %s" % -retcode, request)
                    else:
                        loginfo('process', jobnumber + ": Child returned %s" % retcode, request)
                except OSError as e:
                    loginfo('error', "Execution failed: %s" % e, request)
                loginfo('finish', getJobfile(jobnumber), request)

        elif 'uploadmedia' in request.POST:
            jobinfo['status'] = 'uploadmedia'
        else:
            jobinfo['status'] = 'No status possible'

    return jobinfo, images
Example #12
0
def prepareFiles(request, validateonly, dropdowns):
    jobinfo = {}
    images = []
    for lineno, afile in enumerate(request.FILES.getlist('imagefiles')):
        # print afile
        try:
            print "%s %s: %s %s (%s %s)" % ('id', lineno, 'name', afile.name,
                                            'size', afile.size)
            image = get_exif(afile)
            filename, objectnumber, imagenumber = getNumber(afile.name)
            # objectCSID = getCSID(objectnumber)
            im.creator, im.creatorRefname = assignValue(
                im.creatorDisplayname, im.overrideCreator, image, 'Artist',
                dropdowns['creators'])
            im.contributor, dummy = assignValue(im.contributor,
                                                im.overrideContributor, image,
                                                'ImageDescription', {})
            im.rightsholder, im.rightsholderRefname = assignValue(
                im.rightsholderDisplayname, im.overrideRightsholder, image,
                'RightsHolder', dropdowns['rightsholders'])
            datetimedigitized, dummy = assignValue('', 'ifblank', image,
                                                   'DateTimeDigitized', {})
            imageinfo = {
                'id': lineno,
                'name': afile.name,
                'size': afile.size,
                'objectnumber': objectnumber,
                'imagenumber': imagenumber,
                # 'objectCSID': objectCSID,
                'date': datetimedigitized,
                'creator': im.creatorRefname,
                'contributor': im.contributor,
                'rightsholder': im.rightsholderRefname,
                'creatorDisplayname': im.creator,
                'rightsholderDisplayname': im.rightsholder,
                'contributorDisplayname': im.contributor
            }
            if not validateonly:
                handle_uploaded_file(afile)
            images.append(imageinfo)
        except:
            if not validateonly:
                # we still upload the file, anyway...
                handle_uploaded_file(afile)
            images.append({
                'name':
                afile.name,
                'size':
                afile.size,
                'error':
                'problem extracting image metadata, not processed'
            })

    if len(images) > 0:
        jobnumber = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
        jobinfo['jobnumber'] = jobnumber

        if not validateonly:
            writeCsv(
                getJobfile(jobnumber) + '.step1.csv', images, [
                    'name', 'size', 'objectnumber', 'date', 'creator',
                    'contributor', 'rightsholder', 'imagenumber'
                ])
        jobinfo['estimatedtime'] = '%8.1f' % (len(images) * 10 / 60.0)

        if 'createmedia' in request.POST:
            jobinfo['status'] = 'createmedia'
            if not validateonly:
                loginfo('start', getJobfile(jobnumber), request)
                try:
                    retcode = subprocess.call([
                        path.join(POSTBLOBPATH, 'postblob.sh'),
                        getJobfile(jobnumber)
                    ])
                    if retcode < 0:
                        loginfo(
                            'process', jobnumber +
                            " Child was terminated by signal %s" % -retcode,
                            request)
                    else:
                        loginfo('process',
                                jobnumber + ": Child returned %s" % retcode,
                                request)
                except OSError as e:
                    loginfo('error', "Execution failed: %s" % e, request)
                loginfo('finish', getJobfile(jobnumber), request)

        elif 'uploadmedia' in request.POST:
            jobinfo['status'] = 'uploadmedia'
        else:
            jobinfo['status'] = 'No status possible'

    return jobinfo, images