Skip to content


Repository files navigation

Lupinia Website (Awi)

Full website for Lupinia Studios, built with Django. The site can be viewed at

Built by Natasha L. (@lupinia)

Apps/Modules Included

  • System/Structure
    • Awi Access: Unified access control, permissions, and ownership settings for any object.
    • Awi Error: Unified error text handling/template tags.
    • DeerFind: Intelligent 404 handler.
  • Main Content
    • DeerTrees: Multi-level object-agnostic category system.
    • DeerBooks: Enhanced text/writing management, with multi-format display (HTML, Markdown, Plain Text, LaTeX), and automatic generation of PDF, DVI, and PostScript files from dynamically-generated LaTeX source.
    • DeerConnect: Link directory and contact information manager, with email form.
    • Sunset: Advanced image gallery, with built-in watermarking, metadata parsing, hash-based de-duplication, and batch imports from server-side directories. Also provides dynamic background images for page body site-wide.
  • Second Life Systems/Content
    • GridUtils: Standard models, views, and utility functions for common data types and structures used in Second Life and other virtual worlds.
    • DeerGuard SL: Security/authentication system for LSL scripted systems in Second Life and other virtual worlds.
  • Other
    • Awi Utils: Miscellaneous core components used by multiple other modules/apps.
    • DeerAttend: Event attendance history tracker/display.
    • DeerFood: Restaurant-style menu system.
    • DeerCoins: Coin collection (numismatic) database and tools.

Third-Party Apps/Modules Used

  • BeautifulSoup: A Python library for parsing and manipulating HTML.
  • Django Admin Tools: Improvements to the Django administrative dashboard.
  • Django Cookielaw: Easy tool for compliance with EU cookie law.
  • Django Debug Toolbar: Profiling and debugging tools for Django. (Dev only)
  • Django Haystack: Powerful tool for integrating search indexing servers into Django.
  • Django Honeypot: Provides tools to reduce automated form spam.
  • Django MPTT: Provides support for a recursive traversal tree structure; used for nested categories.
  • Django MPTT Admin: Enhanced administrative interface for objects using Django MPTT
  • Django Static Precompiler: Server-side compilation of CSS from SCSS.
  • Django S3 Folder Storage: Adds Amazon S3 as a file storage provider, with the ability to use folders within the same bucket (instead of separate buckets for everything).
  • ExifTool: Advanced metadata read/write tool.
  • Highlight.js: Syntax highlighting for code displayed in HTML content.
  • HTML2Text: Library for converting HTML to Markdown.
  • JustifiedGallery: JQuery plugin for displaying a justified grid of mixed-width thumbnails.
  • MapBox: Map data.
  • Pillow: Upgraded fork of PIL (Python Imaging Library).
  • PyExifTool: Python wrapper for ExifTool.
  • Rubber: Utility for building documents from LaTeX source more easily.
  • SassC: Library for processing CSS from SCSS.


  • Web Server: Nginx (
  • WSGI Connector: uWSGI
  • Database Server: PostgreSQL (Amazon RDS)
  • Static/Media Hosting: Amazon S3/CloudFront (
  • Search Indexing Server: Amazon OpenSearch
  • Cache Server: Amazon ElastiCache (Memcached)

Custom Management Commands

  • process_images (Sunset): If images need their assets rebuilt, this will rebuild them in the background. If not, it will check batch import folders for new images to import.
  • compile_latex (DeerBooks): If document files for a page need to be built/rebuilt, this will rebuild them in the background.
  • set_cat_thumb (DeerTrees): Set the thumbnail for categories containing images.
  • cleanup_working_dir (Awi Utils): Delete unused files from the local working directories for background processes that need to perform file manipulation (compile_latex, process_images).
  • health_check (DeerConnect): Performs a HEAD request to every external link in the system, and notifies the administrator(s) if any links return a status other than 200.
  • promote_seasonal (Awi Utils): Selectively feature/unfeature certain categories based on the current month.
  • clearcache (Awi Utils): Clear Django's cache, something that Django really should have a built-in management command for.
  • no_export_deleted (DeerBooks): Sets auto_export to False on pages that have been moved to the "Trash" category, in case this wasn't already handled.


This project as a whole is not currently licensed for re-use, but individual components of it may be licensed and distributed separately, including apps I've built.