Device Tracking Analysis

Monitor voting patterns and detect potential duplicate voting

{% with messages = get_flashed_messages(with_categories=true) %} {% if messages %} {% for category, message in messages %} {% endfor %} {% endif %} {% endwith %}

Analysis Controls

Find devices with multiple votes
View Recent Votes Show last 50 votes
{% if analysis_mode and patterns %}

Voting Pattern Analysis

Devices that have voted multiple times:

{% if patterns %}
{% for pattern in patterns %} {% endfor %}
Device ID Vote Count Fixtures MOTM Players DotD Players First Vote Last Vote IP Addresses Actions
{{ pattern.device_id }} {{ pattern.vote_count }} {{ pattern.fixtures_voted }} {{ pattern.motm_players }} {{ pattern.dotd_players }} {{ pattern.first_vote.strftime('%Y-%m-%d %H:%M') if pattern.first_vote else 'N/A' }} {{ pattern.last_vote.strftime('%Y-%m-%d %H:%M') if pattern.last_vote else 'N/A' }} {{ pattern.ip_addresses }}
{% if patterns|length > 0 %}
Pattern Analysis

Warning: {{ patterns|length }} device(s) have voted multiple times. This could indicate duplicate voting or shared devices.

{% endif %} {% else %}
No Suspicious Patterns Found

All devices have voted only once per fixture.

{% endif %}
{% endif %} {% if details_mode and device_details %}

Device Details: {{ selected_device }}

Complete voting history for this device:

{% for vote in device_details %} {% endfor %}
Fixture Date MOTM Vote DotD Vote IP Address Vote Time
{{ vote.fixture_date }} {{ vote.motm_player_name }} {{ vote.dotd_player_name }} {{ vote.ip_address }} {{ vote.vote_timestamp.strftime('%Y-%m-%d %H:%M:%S') if vote.vote_timestamp else 'N/A' }}
Device Information
{% if device_details %}

User Agent: {{ device_details[0].user_agent[:100] }}{% if device_details[0].user_agent|length > 100 %}...{% endif %}

Total Votes: {{ device_details|length }}

Unique Fixtures: {{ device_details|map(attribute='fixture_date')|unique|list|length }}

{% endif %}
{% endif %} {% if recent_votes and not analysis_mode and not details_mode %}

Recent Votes

Last 50 votes cast:

{% for vote in recent_votes %} {% endfor %}
Device ID Fixture Date MOTM Vote DotD Vote IP Address Vote Time
{{ vote.device_id }} {{ vote.fixture_date }} {{ vote.motm_player_name }} {{ vote.dotd_player_name }} {{ vote.ip_address }} {{ vote.vote_timestamp.strftime('%Y-%m-%d %H:%M') if vote.vote_timestamp else 'N/A' }}
{% endif %} {% if not recent_votes and not patterns and not device_details %}
No Vote Data Available

No votes have been cast yet, or the device tracking table is empty.

{% endif %}