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')
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)
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))
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))