示例#1
0
文件: orders.py 项目: vanderheyde/ecm
def change_state(request, order_id, transition):
    """
    Serves URL /shop/orders/<order_id>/<transition>/
    """
    try:
        order = get_object_or_404(Order, id=int(order_id))

        if request.user != order.originator:
            return forbidden(request)

        order.check_can_pass_transition(transition)

        if transition == order.modify.__name__:
            return _modify(request, order)
        elif transition == order.confirm.__name__:
            order.confirm()
            return redirect('/shop/orders/%d/' % order.id)
        elif transition == order.cancel.__name__:
            comment = request.POST.get('comment', None)
            if not comment:
                raise IllegalTransition('Please leave a comment.')
            order.cancel(comment)
            return redirect('/shop/orders/%d/' % order.id)
        else:
            return forbidden(request)
    except ValueError:
        raise Http404()
    except IllegalTransition, error:
        return _order_details(request, order, error)
示例#2
0
文件: home.py 项目: vanderheyde/ecm
def edit_api(request, keyID):
    api = get_object_or_404(UserAPIKey, keyID=int(keyID))
    if api.user != request.user:
        return forbidden(request)

    if request.method == 'POST':
        form = EditApiKeyForm(request.POST)
        form.user = request.user
        if form.is_valid():
            api.vCode = form.cleaned_data["vCode"]
            api.is_valid = True
            api.save()

            members, corps = init_characters(request.user, form.characters)
            
            for member in members:
                member.save()
            for corp in corps:
                corp.save()
            
            update_user_accesses(request.user)
            
            logger.info('"%s" edited API Key %d' % (request.user, api.keyID))

            return redirect('/account/')
    else: # request.method == 'GET'
        form = EditApiKeyForm(initial={"keyID" : api.keyID, "vCode" : api.vCode})

    data = {
        'form': form,
        'request_path' : request.get_full_path(),
        'accessMask': required_access_mask(character=True)
    }
    return render_to_response('ecm/auth/edit_api.html', data, Ctx(request))
示例#3
0
文件: home.py 项目: vanderheyde/ecm
def delete_api(request, keyID):
    api = get_object_or_404(UserAPIKey, keyID=int(keyID))
    if api.user == request.user:
        keyID = api.keyID
        api.delete()
        logger.info('"%s" deleted API Key %d' % (request.user, keyID))
        return redirect("/account/")
    else:
        return forbidden(request)
示例#4
0
文件: home.py 项目: vanderheyde/ecm
def delete_binding(request, binding_id):
    binding = get_object_or_404(UserBinding, id=int(binding_id))
    if binding.user == request.user:
        binding.delete()
        logger.info('"%s" removed binding to external application "%s"'
                        % (request.user, binding.external_app.name))
        return redirect('/account/')
    else:
        return forbidden(request)
示例#5
0
文件: home.py 项目: vanderheyde/ecm
def delete_character(request, characterID):
    character = get_object_or_404(Member, characterID=int(characterID))
    if character.owner == request.user:
        character.owner = None
        character.save()
        update_user_accesses(request.user)
        logger.info('"%s" gave up ownership of character "%s"' % (request.user, character.name))
        return redirect('/account/')
    else:
        return forbidden(request)
示例#6
0
文件: orders.py 项目: vanderheyde/ecm
def details(request, order_id):
    """
    Serves URL /shop/orders/<order_id>/
    """
    try:
        order = get_object_or_404(Order, id=int(order_id))
    except ValueError:
        raise Http404()

    if order.originator != request.user:
        return forbidden(request)

    return _order_details(request, order)
示例#7
0
文件: orders.py 项目: vanderheyde/ecm
def change_state(request, order_id, transition):
    """
    Serves URL /industry/orders/<order_id>/<transition>/
    """
    try:
        order = get_object_or_404(Order, id=int(order_id))

        order.check_can_pass_transition(transition)

        if transition == order.accept.__name__:
            if not order.accept(request.user):
                raise IllegalTransition(
                    'Order could not be accepted. See order log for details.')

        elif transition == order.resolve.__name__:
            order.resolve(request.user, '')

        elif transition == order.reject.__name__:
            comment = request.POST.get('comment', None)
            if not comment:
                raise IllegalTransition('Please leave a comment.')
            order.reject(request.user, comment)

        elif transition == order.start_preparation.__name__:
            order.start_preparation(user=request.user)
            jobs = order.jobs.exclude(state__in=[Job.IN_PRODUCTION, Job.READY])
            jobs.update(state=Job.IN_PRODUCTION, assignee=request.user)

        elif transition == order.end_preparation.__name__:
            order.end_preparation(request.user)
            jobs = order.jobs.exclude(state=Job.READY)
            jobs.update(state=Job.READY, assignee=request.user)

        elif transition == order.deliver.__name__:
            order.deliver(request.user)

        elif transition == order.record_payment.__name__:
            order.record_payment(request.user)

        else:
            return forbidden(request)

        # operation was successfull
        return redirect('/industry/orders/%d/' % order.id)

    except ValueError:
        raise Http404()
    except IllegalTransition, error:
        return _order_details(request, order, error)
示例#8
0
文件: orders.py 项目: Betriebsrat/ecm
def change_state(request, order_id, transition):
    """
    Serves URL /industry/orders/<order_id>/<transition>/
    """
    try:
        order = get_object_or_404(Order, id=int(order_id))

        order.check_can_pass_transition(transition)

        if transition == order.accept.__name__:
            if not order.accept(request.user):
                raise IllegalTransition('Order could not be accepted. See order log for details.')
        
        elif transition == order.resolve.__name__:
            order.resolve(request.user, '')
        
        elif transition == order.reject.__name__:
            comment = request.POST.get('comment', None)
            if not comment:
                raise IllegalTransition('Please leave a comment.')
            order.reject(request.user, comment)
        
        elif transition == order.start_preparation.__name__:
            order.start_preparation(user=request.user)
            jobs = order.jobs.exclude(state__in=[Job.IN_PRODUCTION, Job.READY])
            jobs.update(state=Job.IN_PRODUCTION, assignee=request.user)
            
        elif transition == order.end_preparation.__name__:
            order.end_preparation(request.user)
            jobs = order.jobs.exclude(state=Job.READY)
            jobs.update(state=Job.READY, assignee=request.user)
        
        elif transition == order.deliver.__name__:
            order.deliver(request.user)
        
        elif transition == order.record_payment.__name__:
            order.record_payment(request.user)
        
        else:
            return forbidden(request)
    
        # operation was successfull    
        return redirect('/industry/orders/%d/' % order.id)
    
    except ValueError:
        raise Http404()
    except IllegalTransition, error:
        return _order_details(request, order, error)
示例#9
0
文件: orders.py 项目: vanderheyde/ecm
def add_comment(request, order_id):
    """
    Serves URL /shop/orders/<order_id>/comment/
    """
    try:
        order = get_object_or_404(Order, id=int(order_id))
    except ValueError:
        raise Http404()

    if order.originator != request.user:
        return forbidden(request)

    if request.method == 'POST':
        comment = request.POST.get('comment', '')
        order.add_comment(request.user, comment)
        LOG.info('"%s" added a comment on order #%d', request.user, order.id)

    return redirect('/shop/orders/%d/' % order.id)