view apps/profile/models.py @ 151:c7be7def8b57

Bundles! (basic functionality) Changes made in this commit: * Added new dependencies (see pip-requirements) * Added new dependency and setup information to README * Deleted the included mptt app (in apps/mptt) in favour of just adding the dependency to pip-requirements (makes it easier to update, etc) * Changed the import convention to use `from apps.bundle.models import Bundle` rather than `from agora.apps.bundle.models import Bundle` because Celery was having problems with the latter style. Everything should still work. * Moved the syntax-highlighting and related code for snippets into separate HTML files so that they can be used by the bundle app And, of course, the ability to upload bundles. But wait! There's more! Changes still to come, for only $19.95 a month: * Bundle versioning * Automatic license integration (i.e. adding headers to files) * The ability to download bundles (zip, tar, etc) * Rating bundles * And much, much more! Batteries not included.
author dellsystem <ilostwaldo@gmail.com>
date Mon, 15 Oct 2012 00:52:00 -0400
parents 5ab229c9d348
children
line wrap: on
line source

from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import ugettext as _

from apps.free_license.models import FreeLicense
from apps.pygments_style.models import PygmentsStyle


class Profile(models.Model):
    user = models.OneToOneField(User)
    preferred_license = models.ForeignKey(FreeLicense, help_text=_("\
        By default, all of your submissions will be under the following \
        license, and this license will be displayed next to your \
        submissions. <a href=\"/licenses/\">Find out more.</a>"),
        default=1)
    interests = models.CharField(max_length=512, null=True, help_text=_("\
        Tell us about your research interests (e.g. \
        <em>signal processing</em>, <em>hyperbolic PDEs</em>). These \
        keywords will be used when searching for submissions."), blank=True,
        verbose_name=_("Research interests"))
    blurb = models.TextField(max_length=16384, null=True, help_text=_("\
        Finally, anything else you would like to say about yourself."),
        blank=True)
    pygments_style = models.ForeignKey(PygmentsStyle, default=1,
        verbose_name=_('Syntax highlighting style'), help_text=_("\
        Choose a stylesheet for displayed syntax-highlighted code. Most of \
        these stylesheets are based off of default Pygments stylesheets."))

    def __unicode__(self):
        return self.user.username


# Defines a post_save hook to ensure that a profile is created for each user
# This also ensures that the admin user (created when running syncdb) has one
def create_user_profile(sender, instance, created, **kwards):
    if created:
        Profile.objects.create(user=instance)

models.signals.post_save.connect(create_user_profile, sender=User)