Пример #1
0
class Milestone(reorderhelper.models.ReorderableMixin, models.Model):
    title = models.CharField(max_length=255)
    tag = models.CharField(max_length=20)

    description = MarkdownxField()
    due = models.PositiveIntegerField()
    lead = models.ForeignKey(Partner)
    maintask = models.ForeignKey(Task, blank=True)
    secondarytasks = models.ManyToManyField(
        Task, related_name="milestone_secondaryTasks")

    verification = MarkdownxField()

    wp = SortableForeignKey(Workpackage)

    @property
    def tasklist(self):
        # print("tasklist")
        l1 = ["\\textbf{{\\ref{{{}}}}}".format(self.maintask.tag)]
        # print(l1)
        l2 = ["\\ref{{{}}}".format(t.tag) for t in self.secondarytasks.all()]
        # print(l2)
        r = ", ".join(l1 + l2)
        # print(r)
        return r

    def __str__(self):
        return self.title

    class Meta:
        ordering = ['order']
Пример #2
0
class Task(reorderhelper.models.ReorderableMixin, models.Model):
    title = models.CharField(max_length=255)
    tag = models.CharField(max_length=20)

    start = models.PositiveIntegerField()
    end = models.PositiveIntegerField()

    objectives = MarkdownxField()
    description = MarkdownxField()

    wp = SortableForeignKey(Workpackage)
    lead = models.ForeignKey(Partner)

    def __str__(self):
        return self.title

    def interval(self):
        return [
            (self.start, self.end),
        ]

    def contributors(self):
        return set([x.partner.shortname for x in self.taskpartnerpm_set.all()])

    class Meta:
        ordering = ['order']
Пример #3
0
class ActivitySponsor(DateModel, SortableMixin):
    is_active = models.BooleanField(verbose_name=_('Active'), default=True)
    logo_height = models.PositiveSmallIntegerField(
        verbose_name=_('Logo Height'), null=True, blank=True)
    logo_width = models.PositiveSmallIntegerField(verbose_name=_('Logo Width'),
                                                  null=True,
                                                  blank=True)
    sponsor_type = SortableForeignKey(verbose_name=_('Sponsor Type'),
                                      to='sponsor.SponsorType')
    sponsor = models.ForeignKey(verbose_name=_('Sponsor'),
                                to='sponsor.Sponsor')
    activity = models.ForeignKey(verbose_name=_('Activity'),
                                 to='activity.Activity')

    # ordering field
    order_id = models.PositiveSmallIntegerField(default=0,
                                                editable=False,
                                                db_index=True)

    class Meta:
        verbose_name = _('Activity Sponsor')
        verbose_name_plural = _('Activity Sponsors')
        ordering = ('order_id', 'sponsor_type')
        unique_together = ('activity', 'sponsor')

    def __str__(self):
        return '{activity} - {sponsor}'.format(
            activity=self.activity.__str__(), sponsor=self.sponsor.__str__())
Пример #4
0
class Direction(SortableMixin):
    name = models.CharField(max_length=100, default='')
    text = HTMLField(default='', verbose_name=_('Text'))
    lazy_text = HTMLField(default='',
                          verbose_name=_('Lazy Text'),
                          editable=False)
    recipe = SortableForeignKey('Recipe',
                                related_name='directions',
                                on_delete=models.CASCADE)
    order_with_respect_to = 'recipe'
    ingredient_amounts = models.ManyToManyField('IngredientAmount', blank=True)
    direction_order = models.PositiveIntegerField(default=0,
                                                  editable=False,
                                                  db_index=True)

    def save(self, *args, **kwargs):
        if settings.LAZIFY_IMAGES:
            self.lazy_text = lazify_images(self.text)
        super().save(*args, **kwargs)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = _('Direction')
        verbose_name_plural = _('Directions')
        ordering = ['direction_order']
        constraints = [
            models.UniqueConstraint(fields=['recipe', 'text'],
                                    name='no duplicate direction per recipe')
        ]
Пример #5
0
class CalendarDay(Sortable):
    apartament = SortableForeignKey(Apartament,
                                    related_name='calendar',
                                    verbose_name=_('calendar'))
    date = models.DateField(u'Data')
    price = models.DecimalField(u'Cena', max_digits=10, decimal_places=2)
    STATE_FREE = 1
    STATE_BOOKING = 2
    STATE_UNAVAILABLE = 3
    STATE_CHOICES = (
        (STATE_FREE, _('Free')),
        (STATE_BOOKING, _('Booking')),
        (STATE_UNAVAILABLE, _('Unavailable')),
    )
    state = models.PositiveSmallIntegerField(u'Stan',
                                             choices=STATE_CHOICES,
                                             default=STATE_FREE)

    created_date = models.DateTimeField(auto_now_add=True)
    updated_date = models.DateTimeField(auto_now=True)

    objects = CalendarDayManager()

    class Meta:
        ordering = ('-date', )
        verbose_name = u'Dzień kalendarza'
        verbose_name_plural = u'Dni kalendarza'
        unique_together = ('apartament', 'date')

    def __unicode__(self):
        return str(self.date)

    @property
    def formatted_price(self):
        return formatted_price(self.price)
Пример #6
0
class PriceSettings(Sortable):
    apartament = SortableForeignKey(Apartament,
                                    related_name='price',
                                    verbose_name=_('price'),
                                    unique=True)
    price = models.DecimalField(u'Cena', max_digits=10, decimal_places=2)
    show_default_price = models.BooleanField(u'Pokazuj domyślną cenę',
                                             default=True)

    created_date = models.DateTimeField(auto_now_add=True)
    updated_date = models.DateTimeField(auto_now=True)

    class Meta:
        verbose_name = u'Cena domyślna'
        verbose_name_plural = u'Cena domyślna'

    @property
    def state(self):
        return CalendarDay.STATE_FREE

    def get_state_display(self):
        return unicode(dict(CalendarDay.STATE_CHOICES)[self.state])

    @property
    def formatted_price(self):
        return formatted_price(self.price)
Пример #7
0
class SearchTermItem(TimeStampsModel, SortableMixin):
    uuid = models.UUIDField(primary_key=True,
                            default=uuid.uuid4,
                            editable=False)
    category = SortableForeignKey('search_terms.SearchTermCategory',
                                  on_delete=models.CASCADE)
    slug = models.CharField(max_length=30, unique=True)
    name = models.CharField(max_length=60)
    description = models.TextField(null=True, blank=True)
    call_to_action_type = models.CharField(choices=SEARCH_TERM_CTA_TYPES,
                                           default=PLAIN_TEXT_CTA_TYPE,
                                           max_length=20)
    call_to_action_text = models.CharField(max_length=255,
                                           null=True,
                                           blank=True)
    link = models.CharField(max_length=200, null=True, blank=True)
    order_number = models.PositiveIntegerField(default=0,
                                               editable=False,
                                               db_index=True)

    class Meta:
        ordering = ['order_number']

    def __str__(self):
        return self.name

    @property
    def v1_url(self):
        return f'{settings.V1_URL}{self.link}'
Пример #8
0
class ThroughImage(Sortable):
    catalogImage = SortableForeignKey(CatalogImage, on_delete=models.CASCADE, verbose_name=_('catalog image'))
    catalogAlbum = models.ForeignKey(CatalogAlbum, on_delete=models.CASCADE, verbose_name=_('catalog album'))

    image_order = models.PositiveIntegerField(default=0, editable=False, db_index=True)
    class Meta(Sortable.Meta):
        ordering = ['image_order']
Пример #9
0
class Division(SortableMixin):
    name = models.CharField('name', max_length=120, db_index=True)
    office = models.ForeignKey('Office',
                               on_delete=models.SET_NULL,
                               blank=True,
                               null=True,
                               related_name='divisions',
                               db_index=True)
    department = SortableForeignKey('Department',
                                    on_delete=models.SET_NULL,
                                    blank=True,
                                    null=True,
                                    related_name='divisions')
    url = models.SlugField(max_length=120, unique=True)
    independent = models.BooleanField(default=False)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = 'Division'
        verbose_name_plural = 'Divisions'
        ordering = ['division_order']

    division_order = models.PositiveIntegerField(default=0,
                                                 editable=False,
                                                 db_index=True)
class Photos(Sortable):
    apartament = SortableForeignKey(Apartament,
                                    related_name='slides',
                                    verbose_name=_('Gallery'))

    published = models.BooleanField(_('Published'), default=True)

    imageField1 = models.ImageField(_('Image'),
                                    upload_to='apartaments',
                                    blank=True)
    imageField2 = models.ImageField(_('Image'),
                                    upload_to='apartaments',
                                    blank=True)
    imageField3 = models.ImageField(_('Image'),
                                    upload_to='apartaments',
                                    blank=True)

    template = models.CharField(max_length=255,
                                choices=(('1', 'one photo'),
                                         ('2', 'two photo'), ('3',
                                                              'three photo')))

    class Meta(Sortable.Meta):
        verbose_name = _('Photo')
        verbose_name_plural = _('Photos')

    def __unicode__(self):
        return self.apartament.name
Пример #11
0
class Task(SortableMixin, TimeStampedModel):
    title = models.CharField(max_length=255)
    description = models.TextField(blank=True)
    priority = models.CharField(
        max_length=1, choices=Priority.choices, default=Priority.MEDIUM
    )
    labels = models.ManyToManyField(Label, related_name="tasks")
    assignees = models.ManyToManyField(User, related_name="tasks")
    column = SortableForeignKey(Column, related_name="tasks", on_delete=models.CASCADE)
    task_order = models.PositiveIntegerField(default=0, editable=False, db_index=True)
    period = models.CharField(
        max_length=2, choices=Period.choices, default=Period.WORKDAY
    )
    week = models.PositiveIntegerField(choices=[(x, str(x)) for x in range(1, 53)])
    color = models.CharField(max_length=7, default="#D7421B")
    created = models.DateTimeField(
        auto_now_add=True, help_text="(automatic) created date"
    )
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)

    def __str__(self):
        return f"{self.id} - {self.title}"

    class Meta:
        ordering = ["task_order"]
Пример #12
0
class EmploymentPoint(EventPoint):
    employment = SortableForeignKey(Employment,
                                    null=True,
                                    on_delete=models.CASCADE)

    class Meta(EventPoint.Meta):
        verbose_name_plural = "Employment Points"
Пример #13
0
class Poll(SortableMixin):

    class Meta:
        # verbose_name_plural = u'Polls'
        ordering = ['poll_order']

    user = models.ForeignKey(User, null=True)
    poll_type = models.CharField(
        max_length=30,
        default='multi',
        choices=(
            ('multi', 'pick multiple options'),
            ('one', 'pick one option'),
            ('countries', 'pick a country from the list'),
            ('text', 'type text'),
            ('email_now', 'email - save and send at Submit'),
            ('email', 'email - just save'),
            ('first_name', 'enter first name'),
            ('phone', 'telephone number')
        )
    )
    question = models.CharField(max_length=500, blank=True)
    survey = SortableForeignKey(
        Survey, on_delete=models.SET_NULL,
        blank=True, null=True)
    first_level = models.BooleanField(default=True)
    poll_order = models.PositiveIntegerField(default=0, editable=False, db_index=True)
    include_in_raport = models.BooleanField(default=True)
    include_in_details = models.BooleanField(default=True)
    ghost = models.BooleanField(default=False)
    group = models.ForeignKey(PollGroup, on_delete=models.SET_NULL, null=True, blank=True)

    def __str__(self):
        return self.question
Пример #14
0
class AffiliationPoint(EventPoint):
    affiliation = SortableForeignKey(Affiliation,
                                     null=True,
                                     on_delete=models.CASCADE)

    class Meta(EventPoint.Meta):
        verbose_name_plural = "Affiliation Points"
Пример #15
0
class ProjectPoint(EventPoint):
    experience = SortableForeignKey(Project,
                                    null=True,
                                    on_delete=models.CASCADE)

    class Project(EventPoint.Meta):
        verbose_name_plural = "Project Points"
Пример #16
0
class Link(SortableMixin):
    COMPONENT_CHOICES = (
        ('page', _('Page')),
        ('initiatives.list', _('Initiative Search')),
        ('initiatives.start', _('Initiative Start')),
        ('initiatives.create', _('Initiative Create')),
        ('initiatives.detail', _('Initiative Detail')),
        ('initiatives.activities.list', _('Activities Search')),
        ('project', _('Project')),
        ('task', _('Task')),
        ('fundraiser', _('Fundraiser')),
        ('results-page', _('Results Page')),
        ('news', _('News')),
    )

    link_group = SortableForeignKey(LinkGroup, related_name='links')
    link_permissions = models.ManyToManyField(LinkPermission, blank=True)
    highlight = models.BooleanField(default=False)
    title = models.CharField(_('Title'), null=False, max_length=100)
    component = models.CharField(_('Component'), choices=COMPONENT_CHOICES, max_length=50,
                                 blank=True, null=True)
    component_id = models.CharField(_('Component ID'), max_length=100, blank=True, null=True)
    external_link = models.CharField(_('External Link'), max_length=2000, blank=True, null=True)
    link_order = models.PositiveIntegerField(default=0, editable=False, db_index=True)

    class Meta:
        ordering = ['link_order']
Пример #17
0
class CourseTeacher(Sortable):

    teacher = models.ForeignKey(User, verbose_name=_(u'Teacher'))
    course = SortableForeignKey(Course, verbose_name=_(u'Course'))

    class Meta(Sortable.Meta):
        verbose_name = _(u'course teacher')
        verbose_name_plural = _(u'course teachers')
Пример #18
0
class Project(SimpleModel, SortableMixin):
    class Meta:
        ordering = ['order']

    category = SortableForeignKey(Category)
    description = models.TextField()

    order = models.PositiveIntegerField(default=0, editable=False)
Пример #19
0
class Component(SimpleModel, Sortable):
    class Meta(Sortable.Meta):
        pass

    widget = SortableForeignKey(Widget)

    def __unicode__(self):
        return self.title
Пример #20
0
class SortableCategoryWidget(SimpleModel, Sortable):
    class Meta(Sortable.Meta):
        verbose_name = 'Sortable Category Widget'
        verbose_name_plural = 'Sortable Category Widgets'

    non_sortable_category = SortableForeignKey(NonSortableCategory)

    def __str__(self):
        return self.title
Пример #21
0
class EducationPoint(EventPoint):
    education = SortableForeignKey(Education,
                                   null=True,
                                   on_delete=models.CASCADE)
    text = models.TextField('Text')
    keyword = models.CharField('Keyword', max_length=50, null=True)

    class Meta(EventPoint.Meta):
        verbose_name_plural = "Education Points"
Пример #22
0
class Unit(Sortable):
    title = models.CharField(verbose_name=_(u'Title'), max_length=200)
    course = SortableForeignKey(Course, verbose_name=_(u'Course'))

    UNIT_TYPES = (
        ('n', _(u'Normal')),
        ('h', _(u'Homework')),
        ('e', _(u'Exam')),
    )
    unittype = models.CharField(verbose_name=_(u'Type'), choices=UNIT_TYPES,
                                max_length=1, default=UNIT_TYPES[0][0])
    start = models.DateTimeField(verbose_name=_(u'Start'),
                                 null=True, blank=True,
                                 help_text=_(u'Until this date is reached, no '
                                             u'contents of this module will '
                                             u'be shown to the students.'))
    deadline = models.DateTimeField(verbose_name=_(u'Deadline'),
                                    null=True, blank=True,
                                    help_text=_(u'Until this date is reached, '
                                                u'the students will be able '
                                                u'to modify their answers, '
                                                u"but won't see the solution"))
    weight = models.SmallIntegerField(verbose_name=_(u'Weight'), null=False,
                                      default=0,
                                      help_text='0-100%',
                                      validators=[MaxValueValidator(100)])

    UNIT_STATUSES = (
        ('d', _(u'Draft')),
        ('l', _(u'Listable')),
        ('p', _(u'Published')),
    )

    status = models.CharField(
        verbose_name=_(u'Status'),
        choices=UNIT_STATUSES,
        max_length=10,
        default=UNIT_STATUSES[0][0],
    )

    objects = UnitManager()

    class Meta(Sortable.Meta):
        verbose_name = _(u'unit')
        verbose_name_plural = _(u'units')
        unique_together = ('title', 'course')

    def __unicode__(self):
        return u'%s - %s (%s)' % (self.course, self.title, self.unittype)

    def get_unit_type_name(self):
        for t in self.UNIT_TYPES:
            if t[0] == self.unittype:
                return t[1]

    def natural_key(self):
        return self.course.natural_key() + (self.title, )
Пример #23
0
class FolderIgnore(Sortable):
    class Meta(Sortable.Meta):
        pass

    folder = SortableForeignKey(Folder)
    ignore_line = models.CharField(max_length=254)

    def __str__(self):
        return self.ignore_line
class PhraseCategory(SortableMixin):
    category = SortableForeignKey('Category', on_delete=models.CASCADE, db_index=True)
    phrase = models.ForeignKey('Phrase', on_delete=models.CASCADE, db_index=True)
    order = models.PositiveIntegerField(editable=False, db_index=True, default=0)

    def __str__(self):
        return f'{self.category.name} - {self.phrase.content}'

    class Meta:
        ordering = ['order']
Пример #25
0
class Component(SimpleModel, SortableMixin):
    class Meta:
        ordering = ['order']

    widget = SortableForeignKey(Widget)

    order = models.PositiveIntegerField(default=0, editable=False)

    def __str__(self):
        return self.title
Пример #26
0
class Person(SortableMixin):
    first_name = models.CharField('First Name', max_length=30, db_index=True)
    last_name = models.CharField('Last Name', max_length=30, db_index=True)
    surname = models.CharField('Surname', max_length=30, db_index=True)
    birthday = models.DateField('Birthday',
                                help_text='yyyy-mm-dd',
                                db_index=True)
    job_acceptance_date = models.DateField('Job Acceptance Date',
                                           help_text='yyyy-mm-dd',
                                           blank=True,
                                           null=True)
    image = models.ImageField('Image', upload_to="persons")

    office = models.ForeignKey('Office',
                               on_delete=models.SET_NULL,
                               blank=True,
                               null=True,
                               related_name='persons')
    department = models.ForeignKey('Department',
                                   on_delete=models.SET_NULL,
                                   blank=True,
                                   null=True,
                                   related_name='persons')
    division = SortableForeignKey('Division',
                                  on_delete=models.SET_NULL,
                                  blank=True,
                                  null=True,
                                  related_name='persons')
    position = models.CharField('Position', max_length=50, db_index=True)

    email = models.EmailField('Email',
                              unique=True,
                              blank=True,
                              null=True,
                              db_index=True)
    phone_number = models.PositiveSmallIntegerField('Phone',
                                                    unique=True,
                                                    blank=True,
                                                    null=True,
                                                    db_index=True)
    url = models.SlugField(max_length=120, unique=True)
    last_update = models.DateField(auto_now=True)

    def __str__(self):
        return self.first_name + ' ' + self.last_name

    class Meta:
        verbose_name = 'Person'
        verbose_name_plural = 'Persons'
        ordering = ['person_order']

    person_order = models.PositiveIntegerField(default=0,
                                               editable=False,
                                               db_index=True)
Пример #27
0
class PageContents(SortableMixin):
    page = models.ForeignKey('Page', on_delete=models.CASCADE)
    content = SortableForeignKey("BaseContent",
                                 on_delete=models.CASCADE,
                                 related_name='pgs')
    content_order = models.PositiveIntegerField(default=0,
                                                editable=False,
                                                db_index=True)

    class Meta:
        ordering = ('content_order', )
Пример #28
0
class SubSection(SortableMixin):
	title = models.CharField(max_length=255, default='Section Title')
	description = RichTextField()
	order = models.PositiveIntegerField(default=0, editable=False, db_index=True)
	section = SortableForeignKey(to=Section, on_delete=models.CASCADE, null=True)

	def __str__(self):
		return self.title

	class Meta:
		ordering = ['order', ]
Пример #29
0
class ThroughImage(Sortable):
    #catalogImage = models.ForeignKey(CatalogImage, on_delete=models.CASCADE)
    catalogImage = SortableForeignKey(CatalogImage, on_delete=models.CASCADE)
    catalogAlbum = models.ForeignKey(CatalogAlbum, on_delete=models.CASCADE)

    #weight = models.IntegerField(verbose_name=_("weight"))

    class Meta(Sortable.Meta):
        #ordering = ['weight']
        #unique_together = ('catalogAlbum', 'weight',)
        pass
Пример #30
0
class SortableCategoryWidget(SimpleModel, SortableMixin):
    class Meta:
        ordering = ['order']
        verbose_name = 'Sortable Category Widget'
        verbose_name_plural = 'Sortable Category Widgets'

    non_sortable_category = SortableForeignKey(NonSortableCategory)

    order = models.PositiveIntegerField(default=0, editable=False)

    def __str__(self):
        return self.title