Property rejection handling

fixe some table to be wider
make search and pagination float right
This commit is contained in:
Aaron Kimbre 2022-04-01 10:02:02 -05:00
parent 7f992a5dfa
commit 27c4f1a7f2
8 changed files with 219 additions and 92 deletions

View File

@ -68,7 +68,7 @@ def get(status):
elif status == "resolved":
query = db.session.query().select_from(BugReport).filter(BugReport.resolved_time is not None)
elif status == "unresolved":
query = db.session.query().select_from(BugReport).filter(BugReport.resolved_time is None)
query = db.session.query().select_from(BugReport).filter(BugReport.resolved_time == "")
else:
raise Exception("Not a valid filter")

View File

@ -187,3 +187,13 @@ class RescueForm(FlaskForm):
)
submit = SubmitField('Submit')
class RejectPropertyForm(FlaskForm):
rejection_reason = StringField(
'Rejection Reason',
widget=TextArea(),
validators=[validators.DataRequired()]
)
submit = SubmitField('Submit')

View File

@ -12,10 +12,11 @@ from flask import (
from flask_user import login_required, current_user
from datatables import ColumnDT, DataTables
import time
from app.models import Property, db, UGC, CharacterInfo, PropertyContent, Account
from app.models import Property, db, UGC, CharacterInfo, PropertyContent, Account, Mail
from app.schemas import PropertySchema
from app import gm_level, log_audit
from app.luclient import query_cdclient
from app.forms import RejectPropertyForm
import zlib
import app.pylddlib as ldd
@ -70,7 +71,7 @@ def approve(id):
log_audit(message)
flash(
message,
"danger"
"warning"
)
property_data.save()
@ -88,6 +89,67 @@ def approve(id):
return redirect(go_to)
@property_blueprint.route('/reject/<id>', methods=['GET', 'POST'])
@login_required
@gm_level(3)
def reject(id):
property_data = Property.query.filter(Property.id == id).first()
form = RejectPropertyForm()
if form.validate_on_submit():
char_name = CharacterInfo.query.filter(CharacterInfo.id==property_data.owner_id).first().name
zone_name = query_cdclient(
'select DisplayDescription from ZoneTable where zoneID = ?',
[property_data.zone_id],
one=True
)[0]
property_data.mod_approved = False
property_data.rejection_reason = form.rejection_reason.data
message = f"""Rejected Property
{property_data.name if property_data.name else zone_name}
from {char_name} with reason \"{form.rejection_reason.data}\""""
log_audit(message)
flash(
message,
"danger"
)
property_data.save()
# send rejection reason to their mailbox
# cause the game doesn't present it otherwise
Mail(
sender_id=0,
sender_name=f"[GM] {current_user.username}",
receiver_id=property_data.owner_id,
receiver_name=char_name,
time_sent=time.time(),
subject=f"Property {property_data.name} on {zone_name} Rejected",
body=message,
attachment_id=0,
attachment_lot=0,
attachment_count=0
).save()
go_to = ""
if request.referrer:
if "view_models" in request.referrer:
go_to = url_for('properties.view', id=id)
else:
go_to = url_for('properties.index')
else:
go_to = url_for('main.index')
return redirect(go_to)
form.rejection_reason.data = property_data.rejection_reason
return render_template('properties/reject.html.j2', property_data=property_data, form=form)
@property_blueprint.route('/view/<id>', methods=['GET'])
@login_required
def view(id):
@ -172,6 +234,13 @@ def get(status="all"):
Unapprove
</a>
"""
if not property_data["10"]:
property_data["0"] += f"""
<a role="button" class="btn btn-danger btn btn-block"
href='{url_for('properties.reject', id=id)}'>
Reject
</a>
"""
property_data["1"] = f"""
<a role="button" class="btn btn-primary btn btn-block"

View File

@ -92,3 +92,13 @@ body { font-family:'Nunito', Helvetica, Arial, sans-serif; }
color: rgba(255, 255, 255, 0.5);
border-color: rgba(255, 255, 255, 0.5);
}
div.dataTables_paginate {
float: right;
margin: 0;
}
div.dataTables_filter{
float: right;
margin: 0;
}

View File

@ -8,9 +8,10 @@
{{ status|capitalize }} Bug Reports
{% endblock content_before %}
{% block content %}
<table class="table table-dark table-striped table-bordered table-hover" id="accounts_table">
<thead>
{% block content_override %}
<div class="mx-5">
<table class="table table-dark table-striped table-bordered table-hover" id="accounts_table">
<thead>
<tr>
<th>Actions</th>
<th>Body</th>
@ -20,9 +21,10 @@
<th>Submitted</th>
<th>Resolved</th>
</tr>
</thead>
<tbody></tbody>
</table>
</thead>
<tbody></tbody>
</table>
</div>
{% endblock %}

View File

@ -8,60 +8,62 @@
Moderation of {{ status|capitalize }} Items
{% endblock content_before %}
{% block content %}
<h4> Characters </h4>
<hr class="bg-primary"/>
<table class="table table-dark table-striped table-bordered table-hover" id="character_table">
<thead>
<tr>
<th>Actions</th>
<th>Account</th>
<th>Name</th>
<th>Pending Name</th>
<th>Needs Rename</th>
<th>Last Login</th>
<th>Permission Map</th>
</tr>
</thead>
<tbody></tbody>
</table>
<br/>
<h4> Pets </h4>
<hr class="bg-primary"/>
<table class="table table-dark table-striped table-bordered table-hover" id="pet_table">
<thead>
<tr>
<th>Actions</th>
<th>Name</th>
<th>Status</th>
<th>Owner</th>
</tr>
</thead>
<tbody></tbody>
</table>
<br/>
<h4> Properties </h4>
<hr class="bg-primary"/>
<table class="table table-dark table-striped table-bordered table-hover" id="property_table">
<thead>
<tr>
<th>Actions</th>
<th>Owner</th>
<th>Template ID</th>
<th>Clone ID</th>
<th>Name</th>
<th>Description</th>
<th>Privacy</th>
<th>Approved</th>
<th>Updated</th>
<th>Claimed</th>
<th>Rejection Reason</th>
<th>Reputation</th>
<th>Location</th>
</tr>
</thead>
<tbody></tbody>
</table>
{% block content_override %}
<div class="mx-5">
<h4> Characters </h4>
<hr class="bg-primary"/>
<table class="table table-dark table-striped table-bordered table-hover" id="character_table">
<thead>
<tr>
<th>Actions</th>
<th>Account</th>
<th>Name</th>
<th>Pending Name</th>
<th>Needs Rename</th>
<th>Last Login</th>
<th>Permission Map</th>
</tr>
</thead>
<tbody></tbody>
</table>
<br/>
<h4> Pets </h4>
<hr class="bg-primary"/>
<table class="table table-dark table-striped table-bordered table-hover" id="pet_table">
<thead>
<tr>
<th>Actions</th>
<th>Name</th>
<th>Status</th>
<th>Owner</th>
</tr>
</thead>
<tbody></tbody>
</table>
<br/>
<h4> Properties </h4>
<hr class="bg-primary"/>
<table class="table table-dark table-striped table-bordered table-hover" id="property_table">
<thead>
<tr>
<th>Actions</th>
<th>Owner</th>
<th>Template ID</th>
<th>Clone ID</th>
<th>Name</th>
<th>Description</th>
<th>Privacy</th>
<th>Approved</th>
<th>Updated</th>
<th>Claimed</th>
<th>Rejection Reason</th>
<th>Reputation</th>
<th>Location</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
{% endblock %}
{% block js %}

View File

@ -8,36 +8,38 @@
Property Management
{% endblock content_before %}
{% block content %}
{% if message %}
<div class="row">
<div class="col text-center">
<h3>{{ message }}</h3>
{% block content_override %}
<div class="mx-5">
{% if message %}
<div class="row">
<div class="col text-center">
<h3>{{ message }}</h3>
</div>
</div>
</div>
<br/>
{% endif %}
<table class="table table-dark table-striped table-bordered table-hover" id="properties_table">
<thead>
<tr>
<th>Actions</th>
<th>Owner</th>
<th>Template ID</th>
<th>Clone ID</th>
<th>Name</th>
<th>Description</th>
<th>Privacy</th>
<th>Approved</th>
<th>Updated</th>
<th>Claimed</th>
<th>Rejection Reason</th>
<th>Reputation</th>
<th>Performance Cost</th>
<th>Location</th>
</tr>
</thead>
<tbody></tbody>
</table>
<br/>
{% endif %}
<table class="table table-dark table-striped table-bordered table-hover" id="properties_table">
<thead>
<tr>
<th>Actions</th>
<th>Owner</th>
<th>Template ID</th>
<th>Clone ID</th>
<th>Name</th>
<th>Description</th>
<th>Privacy</th>
<th>Approved</th>
<th>Updated</th>
<th>Claimed</th>
<th>Rejection Reason</th>
<th>Reputation</th>
<th>Performance Cost</th>
<th>Location</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
{% endblock %}

View File

@ -0,0 +1,32 @@
{% extends 'base.html.j2' %}
{% block title %}
Viewing {{property_data.owner.name}}'s
{% if property_data.name %}
{{ property_data.name }}
{% else %}
{{ property_data.zone_id|get_zone_name }}
{% endif %}
{% endblock %}
{% block content_before %}
Viewing {{property_data.owner.name}}'s
{% if property_data.name %}
{{ property_data.name }}
{% else %}
{{ property_data.zone_id|get_zone_name }}
{% endif %}
{% endblock %}
{% block content %}
<form method=post>
{{ form.csrf_token }}
<div class="card shadow-sm mx-auto pb-3 bg-dark border-primary" style="width: 20rem;">
<div class="card-body">
{{ helper.render_field(form.rejection_reason) }}
{{ helper.render_submit_field(form.submit) }}
</div>
</div>
</form>
{% endblock content %}