Beispiel #1
0
def addpenalty(request, id, notice=False):
    
    if notice:
        if not has_any_server_perms(request.user, [perm.ADD_NOTICE, perm.ADD_PENALTY], request.server):
            raise Http403
    else:
        if not has_server_perm(request.user, perm.ADD_PENALTY, request.server):
            raise Http403
            
    client = get_object_or_404(Client, id=id, using=request.server)
    if notice:
        frmObj = NoticeForm
    else:
        frmObj = PenaltyForm
    if request.method == 'POST':
        form = frmObj(request.POST)
        if form.is_valid():
            p = Penalty(client=client,
                        reason= form.cleaned_data['reason'],
                        time_edit=datetime.datetime.now(),
                        time_add=datetime.datetime.now(),
                        data= "UP#%s" % request.user.username,
                        admin_id=0)
            if form.Meta.type == 1:
                p.duration=0
                p.type='Notice'
            else:
                if form.cleaned_data['permanent']:
                    p.duration=0
                    p.type='Ban'
                else:
                    #dt = time2minutes(str(form.cleaned_data['time'])+form.cleaned_data['time_type'])
                    p.duration = form.cleaned_data['time']
                    p.type='TempBan'
            p.save(using=request.server)
            Auditor.objects.create(user=request.user,
                                   server_id=request.server,
                                   clientid=client.id,
                                   message=_("Add \"%s\"") % str(p))
            try:
                signals.add_penalty.send(sender=p, user=request.user,
                                                client=client,
                                                penalty=p,
                                                server=request.server)
            except Exception, e:
                logger.error(str(e))
            if notice:
                messages.success(request, _('Notice added successfully.'))
            else:
                messages.success(request, _('Penalty added successfully.'))
            return HttpResponse("{\"sucess\": true}", mimetype='application/json') 
Beispiel #2
0
 def render(self, context):
     user = resolve_variable(self.user, context)
     server = resolve_variable(self.server, context)
     
     perms = []
     for perm in self.perms:
         try:
             perms.append(resolve_variable(perm, context))
         except:
             pass
     if has_any_server_perms(user, perms, server):
         return self.nodelist_true.render(context)
     else:
         return self.nodelist_false.render(context)
Beispiel #3
0
def removenotice(request, id):
    
    if not has_any_server_perms(request.user, [perm.DELETE_NOTICE, perm.DELETE_PENALTY], request.server):
        raise Http403
    
    penalty = get_object_or_404(Penalty, id=id, using=request.server)
    if (penalty.type != PENALTY_TYPE_NOTICE):
        raise Http403
    Auditor.objects.create(user=request.user,
                           server_id=request.server,
                           clientid=penalty.client.id,
                           message=_("Remove \"%s\"") % str(penalty))
    try:
        signals.delete_penalty.send(sender=penalty, user=request.user,
                                        client=penalty.client,
                                        penalty=penalty,
                                        server=request.server)        
    except Exception, e:
        logger.error(str(e))
Beispiel #4
0
def change_clientgroup(request, id):
    
    if request.method != 'POST':
        raise Http403

    g = int(request.POST.get('value'))
    if not has_server_perm(request.user, perm.CLIENT_GROUP_CHANGE, request.server):
        if g < 2 and has_any_server_perms(request.user, [perm.CLIENT_REGISTER, perm.CLIENT_REGULAR, perm.CLIENT_REMOVE_REGULAR, perm.CLIENT_REMOVE_REGISTER], request.server):
            pass
        elif g == 2 and has_server_perm(request.user, perm.CLIENT_REGULAR, request.server):
            pass
        else:
            raise Http403        
     
    group = get_object_or_404(Group, id=g, using=request.server)
    client = get_object_or_404(Client, id=id, using=request.server)

    try:
        currentLevel = client.group.level if client.group else 0
    except Group.DoesNotExist:
        currentLevel = 0
        
    if g == 100 or currentLevel == 100:
        server = get_object_or_404(Server, pk=request.server)
        if not (request.user.is_superuser or server.is_owner(request.user)):
            raise Http403
        
    if client.group_id > group.id:
        if client.group_id == 2 and has_server_perm(request.user, perm.CLIENT_REMOVE_REGULAR, request.server):
            pass
        elif client.group_id == 1 and has_server_perm(request.user, perm.CLIENT_REMOVE_REGISTER, request.server):
            pass
        elif has_server_perm(request.user, perm.CLIENT_GROUP_CHANGE, request.server):
            pass
        else:
            messages.error(request, _('You are not authorized to update this client at this time.'))
            return HttpResponse(str(client.group), mimetype='plain/text')
        upgrade = False
    else:
        upgrade = True
    
    client.group = group
    client.save()

    if upgrade:
        Auditor.objects.create(user=request.user,
                           server_id=request.server,
                           clientid=client.id,
                           message=_("Upgrade client to \"%s\"") % group.name)
    else:
        Auditor.objects.create(user=request.user,
                           server_id=request.server,
                           clientid=client.id,
                           message=_("Downgrade client to \"%s\"") % group.name)

    try:
        signals.update_player_group.send(sender=client, user=request.user,
                                        client=client,
                                        server=request.server)
    except Exception, e:
        logger.error(str(e))