mirror of
https://github.com/DarkflameUniverse/NexusDashboard.git
synced 2024-11-09 19:58:19 +00:00
sensible fix for pet names
and automoderation for pet names
This commit is contained in:
parent
d63dd807e3
commit
78ed39905f
@ -584,17 +584,9 @@ class PetNames(db.Model):
|
||||
|
||||
owner_id = db.Column(
|
||||
mysql.BIGINT,
|
||||
db.ForeignKey(CharacterInfo.id, ondelete='CASCADE'),
|
||||
nullable=True
|
||||
)
|
||||
|
||||
owner = db.relationship(
|
||||
'CharacterInfo',
|
||||
foreign_keys=[owner_id],
|
||||
backref="pet_owner",
|
||||
passive_deletes=True
|
||||
)
|
||||
|
||||
def save(self):
|
||||
db.session.add(self)
|
||||
db.session.commit()
|
||||
|
@ -23,8 +23,8 @@ def approve_pet(id):
|
||||
pet_data = PetNames.query.filter(PetNames.id == id).first()
|
||||
|
||||
pet_data.approved = 2
|
||||
log_audit(f"Approved pet name {pet_data.pet_name} from {pet_data.owner.name}")
|
||||
flash(f"Approved pet name {pet_data.pet_name} from {pet_data.owner.name}", "success")
|
||||
log_audit(f"Approved pet name {pet_data.pet_name} from {pet_data.owner_id}")
|
||||
flash(f"Approved pet name {pet_data.pet_name} from {pet_data.owner_id}", "success")
|
||||
pet_data.save()
|
||||
return redirect(request.referrer if request.referrer else url_for("main.index"))
|
||||
|
||||
@ -37,8 +37,8 @@ def reject_pet(id):
|
||||
pet_data = PetNames.query.filter(PetNames.id == id).first()
|
||||
|
||||
pet_data.approved = 0
|
||||
log_audit(f"Rejected pet name {pet_data.pet_name} from {pet_data.owner.name}")
|
||||
flash(f"Rejected pet name {pet_data.pet_name} from {pet_data.owner.name}", "danger")
|
||||
log_audit(f"Rejected pet name {pet_data.pet_name} from {pet_data.owner_id}")
|
||||
flash(f"Rejected pet name {pet_data.pet_name} from {pet_data.owner_id}", "danger")
|
||||
pet_data.save()
|
||||
return redirect(request.referrer if request.referrer else url_for("main.index"))
|
||||
|
||||
@ -47,9 +47,6 @@ def reject_pet(id):
|
||||
@login_required
|
||||
@gm_level(3)
|
||||
def get_pets(status="all"):
|
||||
# call this to make things nicer
|
||||
accociate_pets_and_owners()
|
||||
|
||||
columns = [
|
||||
ColumnDT(PetNames.id),
|
||||
ColumnDT(PetNames.pet_name),
|
||||
@ -111,29 +108,43 @@ def get_pets(status="all"):
|
||||
"""
|
||||
pet_data["2"] = "<span class='text-danger'>Rejected</span>"
|
||||
|
||||
try:
|
||||
pet_data["3"] = f"""
|
||||
<a role="button" class="btn btn-primary btn btn-block"
|
||||
href='{url_for('characters.view', id=pet_data["3"])}'>
|
||||
{CharacterInfo.query.filter(CharacterInfo.id==pet_data['3']).first().name}
|
||||
</a>
|
||||
"""
|
||||
except Exception as e:
|
||||
PetNames.query.filter(PetNames.id==id).first().delete()
|
||||
pet_data["3"] = "Deleted Character"
|
||||
|
||||
if pet_data["3"]:
|
||||
try:
|
||||
pet_data["3"] = f"""
|
||||
<a role="button" class="btn btn-primary btn btn-block"
|
||||
href='{url_for('characters.view', id=pet_data["3"])}'>
|
||||
{CharacterInfo.query.filter(CharacterInfo.id==pet_data['3']).first().name}
|
||||
</a>
|
||||
"""
|
||||
except Exception as e:
|
||||
PetNames.query.filter(PetNames.id==id).first().delete()
|
||||
pet_data["0"] = "<span class='text-danger'>Deleted Refresh to make go away</span>"
|
||||
pet_data["3"] = "<span class='text-danger'>Character Deleted</span>"
|
||||
else:
|
||||
pet_data["3"] = "Pending Character Association"
|
||||
|
||||
return data
|
||||
|
||||
|
||||
def accociate_pets_and_owners():
|
||||
pets = PetNames.query.filter(PetNames.owner_id == None).all()
|
||||
if pets:
|
||||
for pet in pets:
|
||||
owner = CharacterXML.query.filter(CharacterXML.xml_data.like(f"%{pet.id}%")).first()
|
||||
@scheduler.task("cron", id="pet_name_maintenance", mintute=0, timezone="UTC")
|
||||
def pet_name_maintenance():
|
||||
# associate pet names to characters
|
||||
unassociated_pets = PetNames.query.filter(PetNames.owner_id == None).all()
|
||||
if unassociated_pets:
|
||||
for pet in unassociated_pets:
|
||||
owner = CharacterXML.query.filter(CharacterXML.xml_data.like(f"%<p id=\"{pet.id}\" l=\"%")).first()
|
||||
if owner:
|
||||
pet.owner_id = owner.id
|
||||
pet.save()
|
||||
else:
|
||||
pet.delete()
|
||||
|
||||
# auto-moderate based on already moderated names
|
||||
unmoderated_pets = PetNames.query.filter(PetNames.approved==1).all()
|
||||
if unmoderated_pets:
|
||||
for pet in unmoderated_pets:
|
||||
existing_pet = PetNames.query.filter(PetNames.approved.in_([0,2])).first()
|
||||
if existing_pet:
|
||||
pet.approved = existing_pet.approved
|
||||
pet.save()
|
||||
|
||||
|
@ -0,0 +1,28 @@
|
||||
"""make pet owner not a forein key
|
||||
|
||||
Revision ID: b470795db8e1
|
||||
Revises: e3e8e05f27ee
|
||||
Create Date: 2022-02-12 20:51:12.318782
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'b470795db8e1'
|
||||
down_revision = 'e3e8e05f27ee'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_constraint('pet_names_ibfk_1', 'pet_names', type_='foreignkey')
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.create_foreign_key('pet_names_ibfk_1', 'pet_names', 'charinfo', ['owner_id'], ['id'], ondelete='CASCADE')
|
||||
# ### end Alembic commands ###
|
Loading…
Reference in New Issue
Block a user