Esempio n. 1
0
def editItem(request, name, id, form=None, template_name=EDIT_ITEM_TEMPLATE, delete=False):
    """
        Edit an user item profile
    """    
    info (request, 'editItem', 'Editing an item')
    try:        
        obj = getObj(request, name, id)
    except Http404:
        warning (request, 'editItem', "Requested an item which doesn't exist: %s" % name)
        raise Http404
    if delete:
        obj.delete()
        return HttpResponseRedirect(reverse("showItem", args=[name]))    
    baseItemMenu(request, name)    
    form = getForm(request, name, obj, editing=True)
    
    if form.is_valid():
            form.save(commit=True)
            return HttpResponseRedirect(reverse("showItem", args=[name]))
    
    return render_to_response(template_name, { "form": form,
                                                "name": name,
                                                "id": id,
                                                'profile':    request.session['profile'],
                                            }, context_instance=RequestContext(request))
Esempio n. 2
0
def getObj(request, name="Unk", id=None):
    """
        Returns a object list according the url specified, 
        or a defined object trough an id.
    """
    try:
        data = ITEM_URL_DICT[name]            
    except KeyError:
        warning (request, 'getObj', "Requested an item which doesn't exist: %(name)s" % {'name': name}) 
        raise Http404      
    if id:
        item = get_object_or_404(data['model'], id=id)        
        return item        
    objlist = getListFromQuery(request, objModel=data['model'], id=id, name=name)
    return objlist
Esempio n. 3
0
def baseItemMenu(request, name=None):
    """ 
        Generates the base item menu
    """        
    m = []  
    if name in URL_GROUP_ITEMS.keys():
        group = name                
    elif name in ITEM_URL_DICT:
        group = getGroupname_from_urlname(name)
    else:
        warning(request, 'baseItemMenu', "Requested an url which doesn't exist: %(name)s" % {'name': name} )
        raise Http404
    
    logMenu = appendMenu(m, getGroupFullname(group), reverse('showItemSummary', args=[group] ) )
            
    for url in URL_GROUP_ITEMS[group]:
        if 'label' in ITEM_URL_DICT[url].keys():
            appendSubmenu (m, logMenu, ITEM_URL_DICT[url]['label'],
                       reverse('showItem', args=[url]))
        else:
            appendSubmenu (m, logMenu, ITEM_URL_DICT[url]['model']._meta.verbose_name,
                       reverse('showItem', args=[url]))            
    setLeftMenu (request, m, _('Summary') )
Esempio n. 4
0
def getRow(request, block, keyfield, obj, urlname=None):    
    # Special cases:    
    # Handling choicefields.
    if keyfield in CHOICE_FIELDS.keys():
        fullname = getNameFromTuple(CHOICE_FIELDS[keyfield], obj[keyfield])
        if fullname:
                block.append(fullname)
                return None
        else:
            warning (request, 'getRow', "Requested field: %s, which doesn't exist for %s. Fields are: %s"
                  % (keyfield, urlname, obj) )            
    if keyfield in 'action':        
        num = obj[keyfield]
        for item in ADMIN_COMMAND_LIST_CHOICES:
            if item[0] is num:
                block.append(item[1])
                return None
        else:
            warning (request, 'getRow', "Requested field: %s, which doesn't exist for %s. Fields are: %s"
                  % (keyfield, urlname, obj) )
    # Adding the field by default            
    try:    
        block.append(obj[keyfield])
        return None
    except KeyError:
        pass
    new_keyfield = keyfield + '_id'
    try:
        primaryKey = obj[new_keyfield]
    except KeyError:    
        warning (request, 'getRow', "Requested field: %s, which doesn't exist for %s. Fields are: %s"
                  % (keyfield, urlname, obj) )        
        raise Http404  
    # Lets get the unicode data  
    if new_keyfield in SPECIAL_KEYFIELDS.keys():
        model = SPECIAL_KEYFIELDS[new_keyfield]
        try:
            data = model.objects.get(pk=primaryKey)
        except model.DoesNotExist:
            data = None
        block.append(data)
        return None    
    return None
Esempio n. 5
0
def index(request):
    """
        Login view
    """
    if not request.user or not request.user.is_authenticated():
        # Not autenticate user, show login form
        form = loginForm ()
        if request.method == 'POST':
            form = loginForm (request.POST)
            if form.is_valid ():
                user = authenticate (username = form.data['username'], 
                                     password = form.data['password']
                                    )
                if user is not None:
                    login (request, user)
                    info (request, 'index', 
                          'User %(username)s logged in ' % {'username':user.username}
                         )
                    request.session['profile'] = getProfile (user)
                    menu = request.session['profile']                    
                    if request.GET.has_key ('next'):
                        return HttpResponseRedirect(request.GET['next'])
                    data = {}
                    try:
                        credits = {}
                        u = Customer.objects.get(id=request.user.id)
                        for account in u.account_set.all():
                            credits[account.name] = account
                        data['credit'] = credits
                    except Customer.DoesNotExist:
                        if checkAdmin(user):
                            for account in Account.objects.all():
                                credits[account.name] = account
                            data['credit'] = credits
                    data['profile'] = menu
                    return render_to_response(TEMPLATES['root'], data,
                                                RequestContext (request)
                                             )
                else:
                    warning (request, 'index', 
                             'Invalid username or password'
                            )
                    form.errors['username'] = [
                                            _('Invalid username and password')
                                              ]
            else:
                warning (request, 'index', _('Posted values not valid'))
        else:
            info (request, 'index', 'Showing login form')
        data = {}
        data['form'] = form
        data['profile'] = getProfile(request.user)
        return render_to_response(TEMPLATES['login'], data , RequestContext (request))
    else:
        # Autenticate user
        try:
            data = {}
            try:
                credits = {}
                user = Customer.objects.get(id=request.user.id)
                for account in user.account_set.all():
                    credits[account.name] = account
                data['credit'] = credits
            except Customer.DoesNotExist:
                if (checkAdmin(request.user)):
                    for account in Account.objects.all():
                        credits[account.name] = account
                    data['credit'] = credits
            data['profile'] = request.session['profile']                            
            data['showInfoToUser'] = getOutputMsg(request)

            return render_to_response(TEMPLATES['root'], 
                                      data, 
                                      RequestContext (request)
                                     )            
        except KeyError:
            # Profile not correctly loaded, so we log out
            # and ask for login            
            return logout_view(request)