A decentralized event management and credentialing system built on atproto.
at main 108 lines 4.1 kB view raw
1{% extends "admin_base.html" %} 2 3{% block title %}Event Management - Admin Panel{% endblock %} 4 5{% block content %} 6<!-- Page Header --> 7<div class="content"> 8 <div class="is-pulled-right"> 9 <a href="/admin/events/import" class="button is-primary">Import Events</a> 10 </div> 11 <h1 class="title is-4">Event Management</h1> 12 <p class="subtitle is-6"> 13 {{ total_count }} events 14 {% if search_term %} 15 - Search results for: "<strong>{{ search_term }}</strong>" 16 {% endif %} 17 </p> 18</div> 19 20<!-- Events Table --> 21{% if events %} 22<div class="box"> 23 <div class="table-container"> 24 <table class="table is-fullwidth is-striped is-hoverable"> 25 <thead> 26 <tr> 27 <th>AT-URI</th> 28 <th>CID</th> 29 <th>Updated</th> 30 <th width="100">Actions</th> 31 </tr> 32 </thead> 33 <tbody> 34 {% for event in events %} 35 <tr> 36 <td> 37 <div style="word-break: break-all;"> 38 <code class="has-text-info">{{ event.aturi }}</code> 39 {% if event.title %} 40 <br> 41 <small class="has-text-grey">{{ event.title }}</small> 42 {% endif %} 43 </div> 44 </td> 45 <td> 46 <div style="word-break: break-all;"> 47 <code class="is-size-7 has-text-grey">{{ event.cid }}</code> 48 </div> 49 </td> 50 <td> 51 <span class="is-size-7 has-text-grey"> 52 {{ event.updated_at }} 53 </span> 54 </td> 55 <td> 56 <a href="/admin/events?aturi={{ event.aturi | urlencode }}&cid={{ event.cid | urlencode }}" 57 class="button is-small is-info"> 58 View 59 </a> 60 </td> 61 </tr> 62 {% endfor %} 63 </tbody> 64 </table> 65 </div> 66 67 <!-- Pagination --> 68 {{ view_pagination(pagination) }} 69</div> 70{% else %} 71<!-- Empty State --> 72<div class="box has-text-centered"> 73 <div class="content"> 74 <h3 class="title is-5 has-text-grey">No Events Found</h3> 75 <p class="has-text-grey"> 76 {% if search_term %} 77 No events found matching your search criteria. Try a different search term or clear the search. 78 {% else %} 79 No events have been imported yet. Import your first batch of events to get started. 80 {% endif %} 81 </p> 82 <a href="/admin/events/import" class="button is-primary">Import Events</a> 83 </div> 84</div> 85{% endif %} 86 87<!-- Help Section --> 88<div class="box"> 89 <div class="content"> 90 <h4 class="title is-6">About Event Management</h4> 91 <p class="is-size-7"> 92 Events are stored as JSON records with AT Protocol URIs as identifiers. Key features: 93 </p> 94 <ul class="is-size-7"> 95 <li><strong>AT-URI:</strong> Unique identifier in AT Protocol format (e.g., at://did:plc:abc/community.lexicon.calendar.event/xyz)</li> 96 <li><strong>JSON Records:</strong> Full structured event data including title, description, dates, and metadata</li> 97 <li><strong>Search:</strong> Find events by title or description content</li> 98 <li><strong>Import:</strong> Bulk import events from JSON arrays</li> 99 </ul> 100 <div class="notification is-info is-light mt-4"> 101 <p class="is-size-7"> 102 <strong>Import Format:</strong> Events should be provided as a JSON array with each event containing at minimum an 103 <code>aturi</code> or <code>uri</code> field and structured event data. 104 </p> 105 </div> 106 </div> 107</div> 108{% endblock %}