Beispiel #1
0
def cancel(request, order_id):
    """ storniert einen Auftrag """
    try:
        api = CreateApiResource('robotRock/Order')
        order = api.read(request.customer, order_id)
        if api.storno(request.customer, order):
            return render_to_json({'result': 'ok'})
        else:
            return render_to_json({'result': 'error', 'msg': 'Der Auftrag konnte nicht storniert werden.'})
    except:
        return render_to_json({'result': 'error', 'msg': 'Allgemeiner Fehler beim Stornieren.'})
Beispiel #2
0
 def add_user(data):
     """Function for adding a user to the customer"""
     username = data.get('email')
     defaults = {'email': username,
                 'first_name': data.get('firstname'),
                 'last_name': data.get('lastname') }
     user, created = User.objects.get_or_create(username=username, defaults=defaults)
     if created:
         request.customer.users.add(user)
         return render_to_json({'result': 'ok'})
     else:
         return render_to_json({'result': 'error', 'msg': 'Fehler beim Speichern des Benutzers!'})
Beispiel #3
0
 def add_notification(data):
     """Function for adding a user to the customer"""
     api = CreateApiResource('robotRock/Notification')
     api.create(customer=request.customer.kundennr,
                recipient=data.get('email'),
                status=data.get('event'))
     return render_to_json({'result': 'ok'})
Beispiel #4
0
def notifications(request):
    # Check if given user is admin for customer
    def add_notification(data):
        """Function for adding a user to the customer"""
        api = CreateApiResource('robotRock/Notification')
        api.create(customer=request.customer.kundennr,
                   recipient=data.get('email'),
                   status=data.get('event'))
        return render_to_json({'result': 'ok'})

    def delete_notifications(designators):
        """Function for removing a list of user_ids"""
        api = CreateApiResource('robotRock/Notification')
        for designator in designators:
            try:
                api.remove(customer=request.customer.kundennr,
                           designator=designator)
            except Exception, ex:
                logger.error("unable to delete notification '%s': %s" % (designator, ex))
        return render_to_json({'result': 'ok'})
Beispiel #5
0
def users(request):
    # Check if given user is admin for customer
    def add_user(data):
        """Function for adding a user to the customer"""
        username = data.get('email')
        defaults = {'email': username,
                    'first_name': data.get('firstname'),
                    'last_name': data.get('lastname') }
        user, created = User.objects.get_or_create(username=username, defaults=defaults)
        if created:
            request.customer.users.add(user)
            return render_to_json({'result': 'ok'})
        else:
            return render_to_json({'result': 'error', 'msg': 'Fehler beim Speichern des Benutzers!'})

    def delete_users(raw_ids):
        """Function for removing a list of user_ids"""
        ids = map(lambda id: int(id), raw_ids)
        result = request.customer.users.filter(id__in=ids).delete();
        return render_to_json({'result': 'ok'})

    # sollen wir eine Aktion durchfuehren?
    if request.method == "POST":
        what = request.POST.get('what')
        if what == 'create':
            return add_user(request.POST)
        elif what == 'delete':
            return delete_users(request.POST.getlist('ids[]'))
        else:
            return render_to_json({'result': 'error', 'msg': 'Ungueltige Aktion!'})

    # oder nur die Seite anzeigen?
    row_count = request.customer.users.count()
    paginator = Paginator(request, 10, row_count)
    return render_to_response('beliza/customers/users.html',
                              {'users': request.customer.users.all()[paginator.start():paginator.stop()],
                               'paginator': paginator},
                              context_instance=RequestContext(request))
Beispiel #6
0
def check_availability(request):
    """ Verfügbarkeit einer Bestellposition überprüfen. Wenn der entsprechende Artikel 
        fuer den jeweiligen Kunden lieferbar ist wird ein HTML-Snippet mit der Orderline
        gerendert und zurueckgeliefert, damit es dann in der Tabelle der Bestellpositionen
        angezeigt werden kann. """

    # ueberprueft die Parameter 
    artnr = request.GET.get('artnr')
    try:
        menge = int(request.GET.get('menge'))
    except ValueError:
        return render_to_json({'result': 'does_not_exist', 'reason': 'invalid article or quantity'})
    if not (menge and artnr):
        return render_to_json({'result': 'does_not_exist', 'reason': 'invalid article or quantity'})

    # eap Infos holen
    api = CreateApiResource('inventory/EAP')
    eap = api.fetch(artnr)
    if not eap:
        return render_to_json({'result': 'does_not_exist', 'reason': 'invalid article or quantity'})
    
    try:
        # zuerst die Verfuegbarkeit
        if not filter(lambda entry: entry['articles'] and entry['automatisch_moeglich'],
                      CreateApiResource('inventory/Alternatives').read(menge, artnr)):
            NonAvailable.objects.create(menge=menge, artnr=artnr, customer=request.customer.designator)
            return render_to_json({'result': 'not_available'})

        # jetzt den Preis und den Namen
        api = CreateApiResource('inventory/Price')
        preis = api.preis(artnr, request.customer.kundennr) * menge,

        form = OrderlineForm(prefix='form-%d' % int(time()),
                             initial={'menge': menge,
                                      'artnr': artnr,
                                      'preis': '%.2f EUR' % preis,
                                      'name': eap.get('name', '???')});
        t = loader.get_template('beliza/orders/orderline.html')
        html = t.render(Context({'form': form}))
        return render_to_json({'result': 'ok', 'html': html})

    except Exception, exc:
        print "------------> debug 100, %s" % exc
        if str(exc).find('unbekannt') != -1:
            return render_to_json({'result': 'does_not_exist'})
Beispiel #7
0
 def delete_users(raw_ids):
     """Function for removing a list of user_ids"""
     ids = map(lambda id: int(id), raw_ids)
     result = request.customer.users.filter(id__in=ids).delete();
     return render_to_json({'result': 'ok'})
Beispiel #8
0
            try:
                api.remove(customer=request.customer.kundennr,
                           designator=designator)
            except Exception, ex:
                logger.error("unable to delete notification '%s': %s" % (designator, ex))
        return render_to_json({'result': 'ok'})

    # sollen wir eine Aktion durchfuehren?
    if request.method == "POST":
        what = request.POST.get('what')
        if what == 'create':
            return add_notification(request.POST)
        elif what == 'delete':
            return delete_notifications(request.POST.getlist('ids[]'))
        else:
            return render_to_json({'result': 'error', 'msg': 'Ungueltige Aktion!'})

    # oder nur die Seite anzeigen?
    api = CreateApiResource('robotRock/Notification')
    notifications = []
    for notification in api.read(request.customer.kundennr):
        notifications.append({'designator': notification.designator,
                              'email': notification.recipient,
                              'event': NOTIFICATION_EVENTS.get(notification.status, '(Unbekanntes Ereignis)')})

    paginator = Paginator(request, 10, len(notifications))
    return render_to_response('beliza/customers/notifications.html',
                              {'notifications': notifications[paginator.start():paginator.stop()],
                               'paginator': paginator},
                              context_instance=RequestContext(request))
Beispiel #9
0
    api = CreateApiResource('inventory/EAP')
    eap = api.fetch(artnr)
    if not eap:
        return render_to_json({'result': 'does_not_exist', 'reason': 'invalid article or quantity'})
    
    try:
        # zuerst die Verfuegbarkeit
        if not filter(lambda entry: entry['articles'] and entry['automatisch_moeglich'],
                      CreateApiResource('inventory/Alternatives').read(menge, artnr)):
            NonAvailable.objects.create(menge=menge, artnr=artnr, customer=request.customer.designator)
            return render_to_json({'result': 'not_available'})

        # jetzt den Preis und den Namen
        api = CreateApiResource('inventory/Price')
        preis = api.preis(artnr, request.customer.kundennr) * menge,

        form = OrderlineForm(prefix='form-%d' % int(time()),
                             initial={'menge': menge,
                                      'artnr': artnr,
                                      'preis': '%.2f EUR' % preis,
                                      'name': eap.get('name', '???')});
        t = loader.get_template('beliza/orders/orderline.html')
        html = t.render(Context({'form': form}))
        return render_to_json({'result': 'ok', 'html': html})

    except Exception, exc:
        print "------------> debug 100, %s" % exc
        if str(exc).find('unbekannt') != -1:
            return render_to_json({'result': 'does_not_exist'})
    return render_to_json({'result': 'error_while_querying'})