from django.db import models from django.utils.translation import ugettext_lazy as _ from django.conf import settings from picampaign.organization.models import Organization from picampaign.contact.models import Contact LANGUAGES = map(lambda (k, v): (k, _(v)), settings.LANGUAGES) class Campaign(models.Model): """Campaign model, describe what have to be achieved""" id = models.AutoField(primary_key=True) title = models.CharField(max_length=255) description = models.CharField(max_length=512, blank=True) organization = models.ForeignKey(Organization, related_name='campaigns') start_date = models.DateField() end_date = models.DateField() default_lang = models.CharField(max_length=5, choices=LANGUAGES, verbose_name=_('language')) def __unicode__(self): return self.title class Argumentary(models.Model): """Argumentary in a given language for a campaign""" id = models.AutoField(primary_key=True) campaign = models.ForeignKey(Campaign) lang = models.CharField(max_length=5, choices=LANGUAGES, verbose_name=_('language')) text = models.TextField(null=True) def __unicode__(self): return 'Argumentary in %s for %s' % (self.lang, self.campaign.title) class CampaignContact(models.Model): """List contact related to a campaign with a given weight""" id = models.AutoField(primary_key=True) campaign = models.ForeignKey(Campaign) contact = models.ForeignKey(Contact) weight = models.IntegerField(default=0) def __unicode__(self): return 'Contact %s on %s' % (self.contact, self.campaign.title) def all_groups(self): return [x.name for x in self.contact.groups.all()]