class BaseModel(models.Model): uuid = UUIDField() created = CreationDateTimeField() modified = ModificationDateTimeField() class Meta: abstract = True
class Notice(models.Model): LIVE = 1 REMOVED = 2 STATUS_CHOICES = ( (LIVE, _('Published')), (REMOVED, _('Unpublished')), ) title = models.CharField(max_length=255) body = models.TextField() created = CreationDateTimeField() status = models.IntegerField(choices=STATUS_CHOICES, default=LIVE) end_date = models.DateTimeField(blank=True, null=True, help_text='Optional. Determines when the' 'notice dissapears') # managers objects = models.Manager() live = NoticeLiveManager() class Meta: ordering = ('-created', ) def __unicode__(self): return u'Notice: %s' % self.title
class AkismetSubmission(models.Model): """ Stores the submissions to Akismet that are sent by trusted writers. This shall be used as a log of sorts to make sure we know what the data has been reported to Akismet as spam or ham. """ SPAM_TYPE, HAM_TYPE = 'spam', 'ham' TYPES = ( (SPAM_TYPE, _('Spam')), (HAM_TYPE, _('Ham')), ) sender = models.ForeignKey(settings.AUTH_USER_MODEL) sent = CreationDateTimeField( _('sent at'), db_index=True, ) type = models.CharField( _('type'), max_length=4, choices=TYPES, db_index=True, ) class Meta: get_latest_by = 'sent' ordering = ('-sent', ) abstract = True
class SalesContract(models.Model): external_reference = models.CharField(verbose_name=_("External Reference"), max_length=100, blank=True) discount = models.DecimalField(max_digits=5, decimal_places=2, verbose_name=_("Discount"), blank=True, null=True) customer = models.ForeignKey('crm_core.Customer', verbose_name=_("Customer")) dateofcreation = CreationDateTimeField(verbose_name=_("Created at"), editable=False) lastmodification = ModificationDateTimeField( verbose_name=_("Last modified"), editable=False) lastmodifiedby = models.ForeignKey(settings.AUTH_USER_MODEL, limit_choices_to={'is_staff': True}, blank=True, verbose_name=_("Last modified by"), null=True) pdf_path = models.CharField(max_length=200, null=True, blank=True, editable=False) class Meta: abstract = True @transaction.atomic() @reversion.create_revision() def save(self, *args, **kwargs): super(SalesContract, self).save(*args, **kwargs)
class APPReview(models.Model): class Meta: app_label = 'city_viewer' verbose_name = verbose_name_plural = _('App反馈') title = models.CharField(_('标题'), max_length=100, blank=True, default='用户反馈') device = models.ForeignKey(APPDevice, verbose_name=_('设备'), blank=True, null=True) content = models.TextField(_('内容')) contact = models.CharField(_('联系方式'), max_length=100, blank=True) tracked = models.CharField(_('处理结果'), max_length=255, default='未处理') ip = models.IPAddressField(blank=True, default='0.0.0.0') source = models.CharField(_('来源'), max_length=3, choices=SOURCE_CHOICES, default='APP') app = models.ForeignKey(APPInfo, verbose_name=_('APP'), blank=True, default='1') created_at = CreationDateTimeField() def __unicode__(self): return '%s[%s]' % (self.content, self.source)
class ProjectBudgetLine(models.Model): """ BudgetLine: Entries to the Project Budget sheet. This is the budget for the amount asked from this website. """ project = models.ForeignKey('projects.Project') description = models.CharField(_('description'), max_length=255, default='') amount = MoneyField() created = CreationDateTimeField() updated = ModificationDateTimeField() @property def owner(self): return self.project.owner @property def parent(self): return self.project class Meta: verbose_name = _('budget line') verbose_name_plural = _('budget lines') def __unicode__(self): return u'{0} - {1}'.format(self.description, self.amount)
class MeditationSession(models.Model): user = models.ForeignKey(User) meditation_id = models.IntegerField( blank=False, null=False) # foreign key to local meditation_id percent_completed = models.FloatField() created_at = CreationDateTimeField(_('created_at')) updated_at = ModificationDateTimeField(_('updated_at'))
class Poll(models.Model): created_at = CreationDateTimeField() text = models.CharField(_('Text'), max_length=400) latitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True) longitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True) author = models.ForeignKey(to='core.Profile', related_name='polls') class Meta: ordering = ['created_at'] verbose_name = _('Poll') verbose_name_plural = _('Polls') def __unicode__(self): return self.text def get_sorted_answers(self): return self.answers.order_by('-likes', 'created_at') @property def get_interests_images(self): return map(lambda x: x.get_image_url, self.interests.all())
class Hit(models.Model): created = CreationDateTimeField(editable=False) edited = ModificationDateTimeField(editable=False) path = models.CharField(db_index=True, max_length=255, verbose_name=_("Path")) method = models.CharField(max_length=6, verbose_name=_("Method")) ip = models.CharField(max_length=12, verbose_name=_("Ip")) user_agent = models.CharField(max_length=255, verbose_name=_("User agent")) authenticated = models.BooleanField(verbose_name=_("Authenticated user"), default=False) staff = models.BooleanField(verbose_name=_("Staff user"), default=False) superuser = models.BooleanField(verbose_name=_("Superuser"), default=False) username = models.CharField(db_index=True, max_length=120, verbose_name=_("Username")) referer = models.CharField(max_length=255, blank=True, verbose_name=_("Referer")) view = models.CharField(max_length=120, blank=True, verbose_name=_("View")) module = models.CharField(max_length=120, blank=True, verbose_name=_("Module")) status_code = models.PositiveSmallIntegerField( verbose_name=_("Status code")) reason_phrase = models.CharField(max_length=120, blank=True, verbose_name=_("Reason phrase")) request_time = models.PositiveIntegerField(verbose_name=_("Request time")) doc_size = models.PositiveIntegerField(verbose_name=_("Document size")) num_queries = models.PositiveIntegerField( verbose_name=_("Number of queries")) queries_time = models.PositiveIntegerField(verbose_name=_("Queries time")) is_tablet = models.BooleanField(default=False, verbose_name=_("Tablet")) is_pc = models.BooleanField(default=False, verbose_name=_("PC")) is_bot = models.BooleanField(default=False, verbose_name=_("Bot")) os = models.CharField(max_length=120, verbose_name=_("Operating system")) os_version = models.CharField(max_length=120, verbose_name=_("Operating system version")) is_tablet = models.BooleanField(default=False, verbose_name=_("Tablet")) is_mobile = models.BooleanField(default=False, verbose_name=_("Mobile")) is_touch = models.BooleanField(default=False, verbose_name=_("Has touch capabilities")) browser = models.CharField(max_length=255, verbose_name=_("Browser")) device = models.CharField(max_length=255, verbose_name=_("Device")) country = models.CharField(max_length=120, verbose_name=_("Country")) city = models.CharField(max_length=120, verbose_name=_("City")) latitude = models.CharField(max_length=24, verbose_name=_("Latitude")) longitude = models.CharField(max_length=25, verbose_name=_("Longitude")) region = models.CharField(max_length=120, verbose_name=_("Region")) city = models.CharField(max_length=120, verbose_name=_("City")) class Meta: app_label = 'watchtower' verbose_name = _(u'Hit') verbose_name_plural = _(u'Hits') ordering = ['-created'] def __str__(self): return self.path + ' - ' + str(self.created)
class Enquiry(models.Model): email = models.EmailField() name = models.CharField(_('Name'), max_length=255) message = models.TextField(_('Message')) created = CreationDateTimeField() modified = ModificationDateTimeField() def get_full_name(self): return "{0} {1}".format(self.name) def __unicode__(self): return self.email class Meta: verbose_name = 'Enquiry' verbose_name_plural = 'Enquiries' ordering = [ 'created', ] def save(self, *args, **kwargs): super(Enquiry, self).save(*args, **kwargs) send_mail( '[enquiry] From Chiswick Website', 'From {0} email: {1} \n {2}'.format(self.name, self.email, self.message), settings.DEFAULT_FROM_EMAIL, [ '*****@*****.**', ], fail_silently=False, )
class BaseModel(models.Model): created = CreationDateTimeField() updated = ModificationDateTimeField() class Meta: abstract = True
class Video(models.Model): """Video model for youtube videos """ uploaded= CreationDateTimeField() youtube_id=models.CharField(max_length=20, unique=True) title=models.CharField(max_length=100) description=models.TextField(blank=True) programmes=models.ManyToManyField(Programme, blank=True) genre=models.ManyToManyField(Genre,blank=True) featured=models.BooleanField( default=False) hidden = models.BooleanField(default=False) def __unicode__(self): return self.title def thumbnail(self): return '/'.join(['http://img.youtube.com/vi',self.youtube_id,'maxresdefault.jpg']) def get_genres(self): return ', '.join( list(self.genre.all()[:2]) ) def summary(self): return ''.join([self.description[:50],'...']) def title_summary(self): title_truncated=self.title[:50] if len(title_truncated)<len(self.title): return ''.join([self.title[:50],'...']) else: return self.title class Meta: ordering = ['-uploaded'] get_latest_by = 'uploaded'
class Article(models.Model): forum = models.ForeignKey(Forum, verbose_name='板块') created = CreationDateTimeField("创建的时间") title = models.CharField("标题", max_length=255) body = models.TextField("文章内容") user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='创建的用户') attachment = models.ManyToManyField(Attachment) update_date = models.DateTimeField('更新的时间', blank=True, null=True) kw = jsonfield.JSONField() def save(self, force_insert=False, force_update=False, using=None, update_fields=None): words = posseg.cut(self.title) words = [k.word for k in words if k.flag in ['n', 'eng'] and len(k.word) > 1] self.kw = words super(Article, self).save(force_insert, force_update, using, update_fields) def get_markdown(self): return markdown.markdown(self.body) def get_absolute_url(self): return reverse("article:detail", kwargs={"pk": self.id}) def get_last_reply(self): return self.reply_set.order_by('created').last() class Meta(object): verbose_name = verbose_name_plural = '文章' def __str__(self): return self.title
class Terms(models.Model): author = models.ForeignKey(settings.AUTH_USER_MODEL) created = CreationDateTimeField(_('creation date')) updated = ModificationDateTimeField(_('last modification')) date = models.DateTimeField() contents = models.CharField(max_length=500000) version = models.CharField(max_length=40) def __unicode__(self): return 'Terms {0} - {1}'.format(self.version, self.date.date()) class Meta: ordering = ('-date', ) verbose_name_plural = _('Terms') verbose_name = _('Term') @classmethod def get_current(cls): queryset = cls.objects.filter(date__lte=now()).order_by('-date') if queryset.count(): return queryset.all()[0] return None
class TaskStatusLog(models.Model): task = models.ForeignKey('tasks.Task') status = models.CharField(_('status'), max_length=20) start = CreationDateTimeField( _('created'), help_text=_('When this task entered in this status.')) class Meta: verbose_name = _(u'task status log') verbose_name_plural = _(u'task status logs') class Analytics: type = 'task' tags = { 'id': 'task.id', 'status': 'status', 'theme': { 'task.project.theme.name': { 'translate': True } }, 'theme_slug': 'task.project.theme.slug', 'location': 'task.project.location.name', 'location_group': 'task.project.location.group.name', 'country': 'task.project.country_name' } fields = { 'id': 'task.id', 'project_id': 'task.project.id', 'user_id': 'task.author.id', } @staticmethod def timestamp(obj, created): return obj.start
class Realm(models.Model): name = models.CharField(strings.NAME, max_length=128, unique=True) prefix = models.SlugField(strings.PREFIX) description = models.TextField(strings.DESCRIPTION) created_at = CreationDateTimeField(strings.CREATED_AT) updated_at = ModificationDateTimeField(strings.UPDATED_AT) class Meta: ordering = ( 'name', 'created_at', ) verbose_name = strings.REALM verbose_name_plural = strings.REALM_PLURAL def __unicode__(self): return self.name def apply_text_substitutions(self, text): substitutions = self.textsubstitution_set.all() for s in substitutions: regexp = re.compile(s.regexp) result = regexp.subn(s.sub, text) text = result[0] return text
class ProjectPhaseLog(models.Model): project = models.ForeignKey('projects.Project') status = models.ForeignKey('bb_projects.ProjectPhase') start = CreationDateTimeField( _('created'), help_text=_('When this project entered in this status.') ) class Meta: verbose_name = _('project phase log') verbose_name_plural = _('project phase logs') class Analytics: type = 'project' tags = { 'id': 'project.id', 'sub_type': 'project.project_type', 'status': 'status.name', 'status_slug': 'status.slug', 'theme': { 'project.theme.name': {'translate': True} }, 'theme_slug': 'project.theme.slug', 'location': 'project.location.name', 'location_group': 'project.location.group.name', 'country': 'project.country_name' } fields = { 'id': 'project.id', 'user_id': 'project.owner.id' } @staticmethod def timestamp(obj, created): return obj.start
class Base(models.Model): id = models.AutoField(primary_key=True) created = CreationDateTimeField() modified = ModificationDateTimeField() class Meta(object): abstract = True
class BaseModel(models.Model): created = CreationDateTimeField( _(u'Fecha y hora de creación') ) modified = ModificationDateTimeField( _(u'Fecha y hora de modificación') ) class Meta: get_latest_by = 'modified' ordering = ('-modified', '-created',) abstract = True def __str__(self): return unidecode(self.__unicode__()) def __unicode__(self): return u'Objeto %s (PK: %d)' % ( self.__class__.__name__, self.pk ) def __repr__(self): return '<%s object %s (PK: %d) at %s>' % ( self.__class__.__name__, str(self), self.pk, hex(id(self)) ) def save(self, *args, **kwargs): self.full_clean() super(BaseModel, self).save(*args, **kwargs)
class Tag(models.Model): created = CreationDateTimeField("创建的时间") title = models.CharField("名称", max_length=255) user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='创建的用户') avatar = models.ImageField("图标", default="tag-default.png") describe = models.TextField("描述", null=True, blank=True) update_date = models.DateTimeField(default=now()) def get_absolute_url(self): return reverse("tag:tag_detail", kwargs={"title": self.title}) def get_week_count(self): return self.question_set.filter(created__gt=now() - datetime.timedelta( days=7)).count() + self.article_set.filter( created__gt=now() - datetime.timedelta(days=7)).count() def get_30_count(self): return self.question_set.filter(created__gt=now() - datetime.timedelta( days=30)).count() + self.article_set.filter( created__gt=now() - datetime.timedelta(days=30)).count() def __str__(self): return self.title class Meta(object): verbose_name = verbose_name_plural = '标签'
class Topic(models.Model): """A political topic Political topic is a point of interest around a topic. Attributes ---------- default_body : Body Many government bodies can work on a same topic, but usually one topic is bound to a particular government body. This parameter specifies which political body is most relevant for this topic. """ created = CreationDateTimeField() slug = autoslug.AutoSlugField(populate_from='title') title = models.CharField(_("Pavadinimas"), max_length=255) description = models.TextField(_("Aprašymas"), blank=True) indicators = models.ManyToManyField(Indicator, blank=True) default_body = models.ForeignKey(Body, null=True, blank=True, on_delete=models.SET_NULL) logo = ImageField(upload_to='topics/%Y/%m/%d/', blank=True) def __str__(self): return self.title def get_absolute_url(self): return reverse('topic-details', args=[self.pk, self.slug])
class ShipmentDetails(models.Model): STATUS_TYPE_PENDING = 'PENDING' STATUS_TYPE_PROCESSED = 'PROCESSED' status_type_choices = ((STATUS_TYPE_PENDING, STATUS_TYPE_PENDING), (STATUS_TYPE_PROCESSED, STATUS_TYPE_PROCESSED)) id = models.CharField(max_length=24, primary_key=True, default=get_24_char_uuid) shipment_id = models.IntegerField(unique=True) shipment_date = models.DateTimeField() transport_id = models.CharField(max_length=30, unique=True) transport_label = models.CharField(max_length=15, blank=True, null=True) shipment_reference = models.CharField(max_length=50) status = models.CharField(max_length=30, choices=status_type_choices, default=STATUS_TYPE_PENDING) seller = models.ForeignKey(SellerDetails, on_delete=models.DO_NOTHING) user = models.ForeignKey(CustomerDetails, on_delete=models.DO_NOTHING, blank=True, null=True) created = CreationDateTimeField() modified = ModificationDateTimeField() def __unicode__(self): return '{} {}'.format(self.shipment_id, self.shipment_reference) class Meta: verbose_name = 'Shipment detail'
class Hackathon(models.Model): class Meta: app_label = 'hackathon' db_table = 'hackathon_hackathon' verbose_name = 'Hackathon' ordering = ['-created'] get_latest_by = 'created' name = models.CharField('Name', max_length=24, unique=True) slogan = models.CharField('Slogan', max_length=256) template = models.CharField('Template', max_length=32, default='default') slug = models.CharField('Team Slug', max_length=24, unique=True) cover = models.ImageField('Cover', upload_to='hackathons') start = models.DateTimeField('Start') end = models.DateTimeField('End') instruction = models.TextField( 'Instructions', help_text='Please input the content with markdown syntax') created = CreationDateTimeField() updated = ModificationDateTimeField() def save(self, force_insert=False, force_update=False, using=None, update_fields=None): if not self.slug: self.slug = slugify(self.name) super(Hackathon, self).save(force_insert, force_update, using, update_fields)
class Addon(models.Model): """Optional add-ons (applications) that are installed by the user.""" name = models.CharField(unique=True, max_length=60) version = models.CharField(max_length=20, help_text='Don\'t include a leading "V".') manufacturer = models.CharField(max_length=80) url_root = \ models.CharField(unique=True, max_length=40, help_text="The urlconf is rooted here. " "Don't use leading or trailing slashes.") notes = models.TextField(blank=True, help_text="Instructions, release notes, etc.") installed_date = CreationDateTimeField() updated_date = ModificationDateTimeField() objects = ApplicationManager() def __unicode__(self): """Return a useful string.""" return "%s v%s from %s, rooted at %s" % \ (self.name, self.version, self.manufacturer, self.url_root)
class BRCreationModificationModel(models.Model): data_criacao = CreationDateTimeField(_(u'Data de criação')) data_modificacao = ModificationDateTimeField(_(u'Data de modificação')) class Meta: abstract = True
class OrganizationContact(ValidatedModelMixin, models.Model): """ Basic details for an organization contact """ name = models.TextField(_('name'), null=True, blank=True, max_length=100) email = models.EmailField(_('email'), null=True, blank=True, max_length=254) phone = models.TextField(_('phone'), null=True, blank=True, max_length=40) owner = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('owner'), null=True) created = CreationDateTimeField( _('created'), help_text=_('When this contact was created.')) updated = ModificationDateTimeField(_('updated')) required_fields = ['name', 'email'] class Meta(object): verbose_name = _('Partner Organization Contact') verbose_name_plural = _('Partner Organization Contacts') def __str__(self): return str(self.name)
class AkismetSubmission(models.Model): """ Stores the submissions to Akismet that are sent by trusted writers. This shall be used as a log of sorts to make sure we know what the data has been reported to Akismet as spam or ham. """ SPAM_TYPE, HAM_TYPE = "spam", "ham" TYPES = ( (SPAM_TYPE, _("Spam")), (HAM_TYPE, _("Ham")), ) sender = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT) sent = CreationDateTimeField( _("sent at"), db_index=True, ) type = models.CharField( _("type"), max_length=4, choices=TYPES, db_index=True, ) class Meta: get_latest_by = "sent" ordering = ("-sent", ) abstract = True
class Server(models.Model): host = models.CharField(_('host'), max_length=255, help_text=_('domain or ip address')) user = models.ForeignKey(to=get_user_model()) created = CreationDateTimeField(_('created')) modified = ModificationDateTimeField(_('modified')) objects = ServerManager() def __unicode__(self): return u'%s' % self.host class Meta: get_latest_by = 'modified' ordering = ( '-modified', '-created', ) def get_absolute_url(self): return reverse('servers:server', kwargs={'server_id': self.pk}) def get_last_scan(self): scans = ScanTask.objects.get_by_server(self) return scans[0] if scans else None
class Contact(models.Model): contact_name = models.CharField(max_length=200, null=False) email = models.CharField(max_length=70, null=False) subject = models.CharField(max_length=40, null=False) message = models.TextField(null=True) created_date = CreationDateTimeField() updated_date = ModificationDateTimeField()
class Tutorial(models.Model): LIVE = 1 HIDDEN = 2 STATUS_CHOICES = ( (LIVE, _('Published')), (HIDDEN, _('Unpublished')), ) title = models.CharField(max_length=255) slug = AutoSlugField(unique=True, populate_from='title') body = models.TextField() url = models.URLField(blank=True) thumbnail = models.ImageField(upload_to="tutorials", blank=True) status = models.IntegerField(choices=STATUS_CHOICES, default=HIDDEN) created = CreationDateTimeField() modified = ModificationDateTimeField() def __unicode__(self): return self.title @models.permalink def get_absolute_url(self): return ('tutorial:object_detail', [self.slug]) @property def is_published(self): return self.status == self.LIVE