from django.db import models from pygments.lexers import get_all_lexers from pygments.styles import get_all_styles LEXERS = [item for item in get_all_lexers() if item[1]] LANGUAGE_CHOICES = sorted([(item[1][0], item[0]) for item in LEXERS]) STYLE_CHOICES = sorted((item, item) for item in get_all_styles()) class Snippet(models.Model): created = models.DateTimeField(auto_now_add=True) owner = models.ForeignKey('auth.User', related_name='snippets', on_delete=models.CASCADE) title = models.CharField(max_length=100, blank=True, default='') code = models.TextField(help_text="code model help text") linenos = models.BooleanField(default=False) language = models.CharField(choices=LANGUAGE_CHOICES, default='python', max_length=100) style = models.CharField(choices=STYLE_CHOICES, default='friendly', max_length=100) class Meta: ordering = ('created',) class SnippetViewer(models.Model): snippet = models.ForeignKey(Snippet, on_delete=models.CASCADE, related_name='viewers') viewer = models.ForeignKey('auth.User', related_name='snippet_views', on_delete=models.CASCADE)