예제 #1
0
class _Role(GenericModel, AgepolyEditableModel, SearchableModel):
    """Un role, pour une accred"""

    class MetaRightsAgepoly(AgepolyEditableModel.MetaRightsAgepoly):
        access = 'INFORMATIQUE'
        world_ro_access = True

    name = models.CharField(max_length=255)
    id_epfl = models.CharField(max_length=255, null=True, blank=True, help_text=_(u'Mettre ici l\'ID accred du rôle pour la synchronisation EPFL'))
    description = models.TextField(null=True, blank=True)
    order = models.IntegerField(null=True, blank=True, help_text=_(u'Il n\'est pas possible d\'accréditer la même personne dans la même unité plusieurs fois. Le rôle avec le plus PETIT ordre sera pris en compte'))

    need_validation = models.BooleanField(_(u'Nécessite validation'), default=False, help_text=_(u'A cocher pour indiquer que le comité de l\'AGEPoly doit valider l\'attribution du rôle'))

    ACCESS_CHOICES = (
        ('PRESIDENCE', _(u'Présidence')),
        ('TRESORERIE', _(u'Trésorerie')),
        ('COMMUNICATION', _('Communication')),
        ('INFORMATIQUE', _('Informatique')),
        ('ACCREDITATION', _(u'Accréditations')),
        ('LOGISTIQUE', _('Logistique')),
        ('SECRETARIAT', _(u'Secrétariat')),
        ('COMMISSIONS', _(u'Commissions'))
    )

    access = MultiSelectField(choices=ACCESS_CHOICES, blank=True, null=True)

    def __unicode__(self):
        return self.name

    def get_access(self):
        if self.access:
            return u', '.join(list(self.access))

    def __init__(self, *args, **kwargs):

        super(_Role, self).__init__(*args, **kwargs)

        self.MetaRights = type("MetaRights", (self.MetaRights,), {})
        self.MetaRights.rights_update({
            'DISPLAY_ACTIVE_USERS': _(u'Peut afficher la liste des gens possédant l\'accréditation'),
        })

    def rights_can_DISPLAY_ACTIVE_USERS(self, user):

        if user.is_superuser:
            return True

        return self.rights_in_root_unit(user, 'INFORMATIQUE')

    class MetaData:
        list_display = [
            ('name', _('Nom')),
            ('id_epfl', _('ID EPFL ?')),
            ('need_validation', _('Validation ?')),
            ('order', _('Ordre'))
        ]

        details_display = [
            ('name', _('Nom')),
            ('description', _('Description')),
            ('id_epfl', _('ID EPFL ?')),
            ('need_validation', _('Validation ?')),
            ('order', _('Ordre')),
            ('get_access', _(u'Accès')),
        ]

        default_sort = "[1, 'asc']"  # name

        filter_fields = ('name', 'id_epfl', 'description')

        yes_or_no_fields = ['need_validation']

        base_title = _(u'Rôles')
        list_title = _(u'Liste de tous les rôles')
        base_icon = 'fa fa-list'
        elem_icon = 'fa fa-group'

        menu_id = 'menu-units-roles'

        help_list = _(u"""Les rôles sont les différents type d'accréditations possibles pour une unité.

Certains rôles donnent des accès particuliers.
Par exemple, le rôle 'Trésorier' donne l'accès TRÉSORERIE. Les droits sont gérés en fonction des accès !""")

    class MetaSearch(SearchableModel.MetaSearch):

        extra_text = u'rôle role roles'

        fields = [
            'name',
            'description',
            'get_access',
        ]

    class Meta:
        abstract = True

    def can_delete(self):

        if self.accreditation_set.count():
            return (False, _(u'Au moins une accréditation existe avec ce rôle, impossible de supprimer le rôle (NB: Historique compris)'))

        return (True, None)
예제 #2
0
class Coupon(CreatedAtAbstractBase):
    COUPON_TYPE_MONETORY = 'monetary'
    COUPON_TYPE_PERCENTAGE = 'percentage'

    COUPON_TYPES = (
        (COUPON_TYPE_MONETORY, 'Money based coupon'),
        (COUPON_TYPE_PERCENTAGE, 'Percentage discount'),
    )

    COUPON_APPLICATION_PART = 1
    COUPON_APPLICATION_MATERIAL = 2
    COUPON_APPLICATION_LABOUR = 3

    COUPON_APPLICATION_TYPES = (
        (COUPON_APPLICATION_PART, 'Applicable to Part price'),
        (COUPON_APPLICATION_MATERIAL, 'Applicable to Material price'),
        (COUPON_APPLICATION_LABOUR, 'Applicable to Labour price'),
    )
    CODE_LENGTH = 9
    CODE_CHARS = string.ascii_uppercase + string.digits

    value = models.IntegerField(_("Value"),
                                help_text=_("Arbitrary coupon value"))
    amount_limit = models.IntegerField(
        _("Limit"),
        help_text=
        _("For Percentage discount, this is the amount limit for which coupon can be used"
          ),
        blank=True,
        null=True)
    code = models.CharField(
        _("Code"),
        max_length=30,
        unique=True,
        blank=True,
        db_index=True,
        help_text=_("Leaving this field empty will generate a random code."))
    desc = models.CharField(_("Description"), max_length=255)
    type = models.CharField(_("Type"), max_length=20, choices=COUPON_TYPES)
    user = models.ForeignKey(
        BumperUser,
        verbose_name=_("User"),
        null=True,
        blank=True,
        help_text=_(
            "You may specify a user you want to restrict this coupon to."))
    valid_until = models.DateTimeField(
        _("Valid until"),
        blank=True,
        null=True,
        help_text=_("Leave empty for coupons that never expire"))
    applicable_to = MultiSelectField(_("Applicable To"),
                                     max_length=20,
                                     choices=COUPON_APPLICATION_TYPES)
    used_times = models.IntegerField(
        _("Used Times"),
        default=0,
        help_text=
        _("How many times this coupon can be used PER USER? 0 means infinite times"
          ))
    max_use = models.IntegerField(
        _("Max Use"),
        default=0,
        help_text=_(
            "How many times this coupon can be used? 0 means infinite times"))
    campaign = models.ForeignKey('Campaign',
                                 verbose_name=_("Campaign"),
                                 blank=True,
                                 null=True,
                                 related_name='couponscampaign')
    cashback_value = models.IntegerField(
        _("Cashback Value"),
        default=0,
        help_text=
        _("Cashback Value for coupon with cashback. 0 means no cashback entry."
          ))
    cashback_type = models.CharField(
        _("Cashback Type"),
        max_length=20,
        blank=True,
        null=True,
        choices=COUPON_TYPES,
        help_text=_("Mandatory if cashback value"))
    cashback_amt_limit = models.IntegerField(
        _("Cashback Limit"),
        help_text=
        _("For Percentage cashback, this is the amount limit for which coupon can be used"
          ),
        blank=True,
        null=True)
    cashback_applicable_to = MultiSelectField(_("Cashback Applicable To"),
                                              max_length=20,
                                              choices=COUPON_APPLICATION_TYPES)
    how_it_works = models.CharField(_("How It Works"),
                                    max_length=255,
                                    null=True,
                                    blank=True)
    title = models.CharField(_("Title"), max_length=64)
    packages = models.ManyToManyField(Package, related_name="coupon_packages")

    objects = CouponManager()

    class Meta:
        ordering = ['created_at']
        verbose_name = _("Coupon")
        verbose_name_plural = _("Coupons")

    def __str__(self):
        return self.code

    def save(self, *args, **kwargs):
        if not self.code:
            self.code = Coupon.generate_code()
        super(Coupon, self).save(*args, **kwargs)

    def expired(self, booking=None):
        if booking and booking.pickup_time:
            return self.valid_until is not None and self.valid_until < booking.pickup_time
        else:
            return self.valid_until is not None and self.valid_until < timezone.now(
            )

    def is_valid(self, app_version):
        if app_version:
            return (self.is_cashback
                    and app_version > 34) or not self.is_cashback
        else:
            return (not self.is_cashback)

    @classmethod
    def generate_code(cls, prefix=""):
        code = "".join(
            random.choice(Coupon.CODE_CHARS)
            for i in range(Coupon.CODE_LENGTH))
        return prefix + code
예제 #3
0
class Company(models.Model):
    name = models.CharField(max_length=150)
    address = models.CharField(max_length=255)
    city = models.CharField(max_length=100, default='')

    # State abbreviations
    alabama = 'AL'
    alaska = 'AK'
    arizona = 'AZ'
    arkansas = 'AR'
    california = 'CA'
    colorado = 'CO'
    connecticut = 'CT'
    delaware = 'DE'
    florida = 'FL'
    georgia = 'GA'
    hawaii = 'HI'
    idaho = 'ID'
    illinois = 'IL'
    indiana = 'IN'
    iowa = 'IA'
    kansas = 'KS'
    kentucky = 'KY'
    louisiana = 'LA'
    maine = 'ME'
    maryland = 'MD'
    massachusetts = 'MA'
    michigan = 'MI'
    minnesota = 'MN'
    mississippi = 'MS'
    missouri = 'MO'
    montana = 'MT'
    nebraska = 'NE'
    nevada = 'NV'
    new_hampshire = 'NH'
    new_jersey = 'NJ'
    new_mexico = 'NM'
    new_york = 'NY'
    north_carolina = 'NC'
    north_dakota = 'ND'
    ohio = 'OH'
    oklahoma = 'OK'
    oregon = 'OR'
    pennsylvania = 'PA'
    rhode_island = 'RI'
    south_carolina = 'SC'
    south_dakota = 'SD'
    tennessee = 'TN'
    texas = 'TX'
    utah = 'UT'
    vermont = 'VT'
    virginia = 'VA'
    washington = 'WA'
    west_virginia = 'WV'
    wisconsin = 'WI'
    wyoming = 'WY'

    states = (('', 'State'), (alabama, 'Alabama'), (alaska, 'Alaska'),
              (arizona, 'Arizona'), (arkansas, 'Arkansas'), (california,
                                                             'California'),
              (colorado, 'Colorado'), (connecticut,
                                       'Connecticut'), (delaware, 'Delaware'),
              (florida, 'Florida'), (georgia, 'Georgia'), (hawaii, 'Hawaii'),
              (idaho, 'Idaho'), (illinois, 'Illinois'), (indiana, 'Indiana'),
              (iowa, 'Iowa'), (kansas, 'Kansas'), (kentucky, 'Kentucky'),
              (louisiana, 'Louisiana'), (maine, 'Maine'),
              (maryland, 'Maryland'), (massachusetts, 'Massachusetts'),
              (michigan, 'Michigan'), (minnesota, 'Minnesota'),
              (mississippi, 'Mississippi'), (missouri, 'Missouri'),
              (montana, 'Montana'), (nebraska, 'Nebraska'), (nevada, 'Nevada'),
              (new_hampshire, 'New Hampshire'), (new_jersey,
                                                 'New Jersey'), (new_mexico,
                                                                 'New Mexico'),
              (new_york, 'New York'), (north_carolina,
                                       'North Carolina'), (north_dakota,
                                                           'North Dakota'),
              (ohio, 'Ohio'), (oklahoma, 'Oklahoma'), (oregon, 'Oregon'),
              (pennsylvania, 'Pennsylvania'), (rhode_island, 'Rhode Island'),
              (south_carolina,
               'South Carolina'), (south_dakota,
                                   'South Dakota'), (tennessee, 'Tennessee'),
              (texas, 'Texas'), (utah, 'Utah'), (vermont,
                                                 'Vermont'), (virginia,
                                                              'Virginia'),
              (washington,
               'Washington'), (west_virginia,
                               'West Virginia'), (wisconsin,
                                                  'Wisconsin'), (wyoming,
                                                                 'Wyoming'))

    state = models.CharField(max_length=10, choices=states, default='')
    zip = models.CharField(max_length=10, default='')
    auto_respond_text = models.TextField(null=True, max_length=600)
    auto_respond_number = PhoneNumberField(null=True, blank=False, unique=True)
    phone_number = PhoneNumberField(null=True, blank=False, unique=True)
    email = models.EmailField(max_length=100)
    allow_same_day_appointments = models.BooleanField(default=True)
    customer_user = models.ForeignKey(Customer_User,
                                      on_delete=models.CASCADE,
                                      null=True,
                                      blank=True)
    created = models.DateTimeField(auto_now_add=True)
    days_of_the_week_enabled = MultiSelectField(choices=DAYS_OF_THE_WEEK,
                                                max_choices=7,
                                                default=None)
    hours_of_the_day_enabled = MultiSelectField(choices=HOURS_OF_THE_DAY,
                                                max_choices=24,
                                                default=None)

    def __str__(self):
        return str(self.id) + '-' + self.name + '-' + self.address
예제 #4
0
class WebHookTarget(models.Model):
    """A target for a webhook.

    A webhook target is a URL which will receive a POST request when the
    corresponding event occurs.
    """
    ALL_EVENTS = '*'

    EVENT_CHOICES = (
        (ALL_EVENTS, _('All events')),
        ('review_request_closed', _('Review request closed')),
        ('review_request_published', _('Review request published')),
        ('review_request_reopened', _('Review request reopened')),
        ('review_published', _('Review published')),
        ('reply_published', _('Reply published')),
    )

    ENCODING_JSON = 'application/json'
    ENCODING_XML = 'application/xml'
    ENCODING_FORM_DATA = 'application/x-www-form-urlencoded'

    ALL_ENCODINGS = (ENCODING_JSON, ENCODING_XML, ENCODING_FORM_DATA)

    ENCODINGS = (
        (ENCODING_JSON, _('JSON')),
        (ENCODING_XML, _('XML')),
        (ENCODING_FORM_DATA, _('Form Data')),
    )

    APPLY_TO_ALL = 'A'
    APPLY_TO_NO_REPOS = 'N'
    APPLY_TO_SELECTED_REPOS = 'S'

    APPLY_TO_CHOICES = (
        (APPLY_TO_ALL, _('All review requests')),
        (APPLY_TO_SELECTED_REPOS,
         _('Only review requests on selected repositories')),
        (APPLY_TO_NO_REPOS,
         _('Only review requests not associated with a repository (file '
           'attachments only)')),
    )

    # Standard information
    enabled = models.BooleanField(default=True)
    events = MultiSelectField(
        _('events'),
        choices=EVENT_CHOICES,
        blank=True,
        help_text=_('Select any or all events that should trigger this '
                    'Webhook.'))

    url = models.URLField(
        'URL',
        help_text=_('When the event is triggered, HTTP requests will be '
                    'made against this URL.'))

    encoding = models.CharField(
        _('encoding'),
        choices=ENCODINGS,
        default=ENCODING_JSON,
        max_length=40,
        help_text=_('Payload contents will be encoded in this format.'))

    # Custom content
    use_custom_content = models.BooleanField(_('use custom payload content'),
                                             default=False)

    custom_content = models.TextField(
        _('custom content'),
        blank=True,
        null=True,
        help_text=_('You can override what is sent to the URL above. If '
                    'left blank, the default payload will be sent.'))

    # HMAC payload signing
    secret = models.CharField(
        _('HMAC secret'),
        max_length=128,
        blank=True,
        help_text=_('If specified, the HMAC digest for the Webhook payload '
                    'will be signed with the given secret.'))

    # Apply to
    apply_to = models.CharField(_('apply to'),
                                max_length=1,
                                blank=False,
                                default=APPLY_TO_ALL,
                                choices=APPLY_TO_CHOICES)

    repositories = models.ManyToManyField(
        Repository,
        blank=True,
        null=True,
        related_name='webhooks',
        help_text=_('If set, this Webhook will be limited to these '
                    'repositories.'))

    local_site = models.ForeignKey(
        LocalSite,
        blank=True,
        null=True,
        related_name='webhooks',
        help_text=_('If set, this Webhook will be limited to this site.'))

    extra_data = JSONField(
        null=True,
        help_text=_('Extra JSON data that can be tied to this Webhook '
                    'registration. It will not be sent with the Webhook '
                    'request.'))

    objects = WebHookTargetManager()

    def is_accessible_by(self, user, local_site=None):
        """Return if the webhook can be accessed or modified by the user.

        All superusers and admins of the webhook's local site can access and
        modify the webhook.

        Args:
            user (django.contrib.auth.models.User):
                The user who is trying to access the webhook.

            local_site (reviewboard.site.models.LocalSite):
                The current local site, if it exists.

        Returns:
            bool:
            Whether or not the given user can access or modify the webhook
            through the given local site.
        """
        return (user.is_superuser or (user.is_authenticated() and local_site
                                      and self.local_site_id == local_site.pk
                                      and local_site.is_mutable_by(user)))

    def __str__(self):
        return self.url

    class Meta:
        verbose_name = _('webhook')
예제 #5
0
class CompanyProfile(models.Model):
    company = models.CharField(_("Company name"), max_length=60)
    user = models.OneToOneField(User)
    phone_number = models.CharField(_("Phone number"),
                                    max_length=16,
                                    blank=True)
    company_website = models.CharField(_("Company website"),
                                       max_length=1000,
                                       blank=True)
    logo = models.ImageField(_("Company logo"),
                             upload_to='uploads/company_images',
                             blank=True)
    days_attending = MultiSelectField(_("Days attending"), choices=DAY_CHOICES)
    majors_wanted = MultiSelectField(_("Majors wanted"), choices=MAJOR_CHOICES)
    grade_level_wanted = MultiSelectField(_("Grade level wanted"),
                                          choices=GRADE_LEVEL_CHOICES)
    company_bio = models.TextField(_("Company bio"),
                                   max_length=1000,
                                   blank=True)
    has_submitted_payment = models.BooleanField(_("Has submitted payment"),
                                                default=False)
    friday_tables = models.TextField(_("Friday table locations"), default='[]')
    friday_number_of_tables = models.IntegerField(_("Friday # of tables"),
                                                  default=0)
    saturday_tables = models.TextField(_("Saturday table locations"),
                                       default='[]')
    saturday_number_of_tables = models.IntegerField(_("Saturday # of tables"),
                                                    default=0)
    creation_date = models.DateTimeField(_("Creation time"),
                                         auto_now_add=True,
                                         null=True)
    updated_at = models.DateTimeField(_("Last updated"),
                                      auto_now=True,
                                      null=True)
    reps = models.ManyToManyField(CompanyRep, _("Representatives+"))
    reps_alumni = models.ManyToManyField(CompanyRep,
                                         _("Alumni reps+"),
                                         blank=True)
    number_of_representatives = models.IntegerField(
        _("Number of representatives"), default=1)
    friday_representatives = models.ManyToManyField(CompanyRep,
                                                    _("Fridays reps+"),
                                                    blank=True)
    saturday_representatives = models.ManyToManyField(CompanyRep,
                                                      _("Saturday reps+"),
                                                      blank=True)
    number_of_tables = models.IntegerField(_("Number of tables"), default=0)
    total_bill = models.IntegerField(_("Total bill"), null=True, default=500)
    interview_rooms_friday = models.IntegerField(null=True, default=0)
    interview_friday_from = models.CharField(null=True,
                                             blank=True,
                                             max_length=15)
    interview_friday_to = models.CharField(null=True,
                                           blank=True,
                                           max_length=15)
    interview_rooms_saturday = models.IntegerField(null=True, default=0)
    interview_saturday_from = models.CharField(null=True,
                                               blank=True,
                                               max_length=15)
    interview_saturday_to = models.CharField(null=True,
                                             blank=True,
                                             max_length=15)
    tables = models.TextField(_("Staff assigned tables"),
                              default='[]',
                              null=True,
                              blank=True)
    is_non_profit = models.BooleanField(_("Is non-profit"), default=False)
    sponsor = models.CharField(_("Sponsorship choice"),
                               max_length=100,
                               blank=True)
    sponsorshipitem = models.ManyToManyField(SponsorshipItem,
                                             _("Sponsorship item choices+"),
                                             blank=True)

    def __unicode__(self):
        return self.company
예제 #6
0
class Answer(models.Model):

    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

    author = models.CharField(max_length=2000)

    created_time = models.DateTimeField(default=timezone.now)

    komu = MultiSelectField("Кому Вы должны ?",
                            choices=KOMU_CHOICES,
                            max_choices=5,
                            blank=False,
                            help_text="Выберете 1 или более вариантов.",
                            error_messages={
                                'invalid_list': 'Введите список значений.',
                                'required': 'Обязательное поле.'
                            })

    skolko = MultiSelectField(
        'Сколько всего Вы должны ?',
        choices=SKOLKO_CHOICES,
        max_choices=1,
        blank=False,
        help_text=f"Укажите пожалуйста приблизительный диапазон",
        error_messages={'required': 'Обязательное поле.'})

    prosrochky = MultiSelectField(
        'Есть ли у Вас просрочки по кредитам ?',
        choices=PROSROCHKY_CHOICES,
        max_choices=1,
        blank=False,
        help_text=f"Или любым другим платежам срок по которым уже наступил.",
        error_messages={'required': 'Обязательное поле.'})

    zalogi = MultiSelectField(
        'Есть ли у Вас имущество в залоге ?',
        choices=ZALOGI_CHOICES,
        max_choices=1,
        blank=False,
        help_text=f"Например, ипотечная квартира или \
            автомобиль купленный в автокредит.",
        error_messages={'required': 'Обязательное поле.'})

    name = models.CharField("Как Вас зовут ?",
                            blank=False,
                            max_length=200,
                            default="",
                            help_text=f"Представьтесь пожалуйста, \
             нам необходимо знать Ваше имя или псевдоним",
                            error_messages={'required': 'Обязательное поле.'})

    phone = PhoneNumberField("Вот и последний шаг.",
                             blank=False,
                             unique=False,
                             help_text=f"Введите Ваш номер телефона",
                             error_messages={'required': 'Обязательное поле.'})

    def get_absolute_url(self):
        return reverse("blog:answer_detail", kwargs={"pk": self.pk})

    def __str__(self):
        return f"""
        Дата: {self.created_time}
        IP автора: {self.author},
        Телефон: {self.phone},
        Имя: {self.name},
        Сколько: {self.skolko},
        Кому: {self.komu},
        Залоги: {self.zalogi}
        """

    def __unicode__(self):
        return self.__str__()
예제 #7
0
class ExercisesDetail(models.Model):

    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)

    CARDIO = 'CARDIO'
    PLYO = "PLYO"
    WEIGHT = "WEIGHT"
    LAPS = "LAPS"
    MACHINE = "MACHINE"

    type_choices = ((CARDIO, "CARDIO"), (PLYO, "PLYO"), (WEIGHT, "WEIGHT"),
                    (LAPS, "LAPS"), (MACHINE, "MACHINE"))

    type = MultiSelectField(
        max_length=20,
        choices=type_choices,
        default="WEIGHT",
    )

    FB = 'FULL_BODY'
    BK = 'BACK'
    CR = 'CORE'
    AR = 'ARMS'
    LG = 'LEGS'

    major_muscule_choices = ((FB, "FULL BODY"), (BK, "BACK"), (CR, "CORE"),
                             (AR, "ARMS"), (LG, 'LEGS'))

    major_muscule = MultiSelectField(
        max_length=19,
        choices=major_muscule_choices,
        default=FB,
    )

    BC = 'BICEP'
    CL = 'CALVES'
    CH = 'CHEST'
    GT = 'GLUTES'
    HS = 'HAMSTRINGS'
    IT = 'INNER_THIGH'
    LT = 'LATS'
    OQ = 'OBLIQUE'
    OT = 'OUTER_THIGH'
    QD = 'QUADS'
    SD = 'SHOULDERS'
    TC = 'TRICEP'

    minior_muscule_choices = ((BC, "BICEP"), (CL, "CALVES"), (CH, "CHEST"),
                              (GT, "GLUTES"), (HS, 'HAMSTRINGS'),
                              (IT, 'INNER THIGH'), (LT, 'LATS'),
                              (OQ, 'OBLIQUE'), (OT, 'OUTER THIGH'),
                              (QD, 'QUADS'), (SD, 'SHOULDERS'), (TC, 'TRICEP'))

    minior_muscule = MultiSelectField(
        max_length=50,
        choices=minior_muscule_choices,
        default=BC,
    )

    name = models.CharField(max_length=100)
    slug = models.SlugField(max_length=40, blank=True, null=True)
    execution = models.CharField(max_length=1000, blank=True, null=True)
    comments = models.CharField(max_length=1000, blank=True, null=True)
    preparation = models.CharField(max_length=1000, blank=True, null=True)

    example = models.ImageField(upload_to='exercise_video/',
                                blank=True,
                                null=True)
    example_thumbnail = models.ImageField(
        upload_to='exercise_video/thumbnail/', blank=True, null=True)

    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)

    equipment = models.ManyToManyField('Equipment')

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        if not self.id:
            # Newly created object, so set slug
            self.slug = slugify(self.name)
        super(ExercisesDetail, self).save(*args, **kwargs)
예제 #8
0
class Customer(models.Model):
    """
    客户表
    """
    qq = models.CharField('QQ',
                          max_length=64,
                          unique=True,
                          help_text='QQ号必须唯一')
    qq_name = models.CharField('QQ昵称', max_length=64, blank=True, null=True)
    name = models.CharField('姓名',
                            max_length=32,
                            blank=True,
                            null=True,
                            help_text='学员报名后,请改为真实姓名',
                            default="")
    sex_type = (('male', '男'), ('female', '女'))
    sex = models.CharField("性别",
                           choices=sex_type,
                           max_length=16,
                           default='male',
                           blank=True,
                           null=True)
    birthday = models.DateField('出生日期',
                                default=None,
                                help_text="格式yyyy-mm-dd",
                                blank=True,
                                null=True)
    phone = models.BigIntegerField('手机号', blank=True, null=True)
    source = models.CharField('客户来源',
                              max_length=64,
                              choices=source_type,
                              default='qq')
    introduce_from = models.ForeignKey('Customer',
                                       verbose_name="转介绍自学员",
                                       blank=True,
                                       null=True,
                                       on_delete=models.CASCADE)
    course = MultiSelectField("咨询课程",
                              choices=course_choices,
                              null=True,
                              blank=True)
    class_type = models.CharField("班级类型",
                                  max_length=64,
                                  choices=class_type_choices,
                                  default='fulltime')
    customer_note = models.TextField(
        "客户备注",
        blank=True,
        null=True,
    )
    status = models.CharField("状态",
                              choices=enroll_status_choices,
                              max_length=64,
                              default="unregistered",
                              help_text="选择客户此时的状态")
    date = models.DateTimeField("咨询日期", auto_now_add=True)
    last_consult_date = models.DateField("最后跟进日期", auto_now_add=True)
    next_date = models.DateField("预计再次跟进时间", blank=True, null=True)
    consultant = models.ForeignKey('UserInfo',
                                   verbose_name="销售",
                                   related_name='customers',
                                   blank=True,
                                   null=True,
                                   on_delete=models.CASCADE)
    class_list = models.ManyToManyField('ClassList',
                                        verbose_name="已报班级",
                                        null=True,
                                        blank=True)

    def __str__(self):
        return self.name + ":" + self.qq

    def get_classlist(self):
        l = []
        for cls in self.class_list.all():
            l.append(str(cls))
        return mark_safe("<br>".join(l))

    def get_status(self):
        status_color = {
            "studying": "green",
            "signed": "#B03060",
            "unregistered": "red",
            "paid_in_full": "blue"
        }
        return mark_safe(
            "<span style='background-color:%s;color:white'>%s</span>" %
            (status_color[self.status], self.get_status_display()))
예제 #9
0
class StaffProfile(models.Model):
    """
    This model defines both staff and volunteer users.

    This does not define children in the program
    """

    user = models.OneToOneField(User,
                                related_name='profile',
                                on_delete=models.CASCADE)
    program_country = models.ManyToManyField(Country,
                                             blank=True,
                                             related_name='lwb_staff')
    lwb_program = models.ForeignKey(LWBProgram,
                                    null=True,
                                    blank=True,
                                    on_delete=models.CASCADE,
                                    related_name='staff')
    about_you = models.TextField(max_length=3000, blank=True, null=True)
    country_of_residence = models.CharField(max_length=120,
                                            blank=True,
                                            null=True)
    city_of_residence = models.CharField(max_length=120, blank=True, null=True)
    email = models.EmailField(blank=True, null=True)
    phone = models.CharField(max_length=24, blank=True, null=True)
    location = models.CharField(max_length=180, blank=True, null=True)
    user_language_spoken = models.CharField(max_length=120,
                                            blank=True,
                                            null=True)
    user_language_spoken_other = models.CharField(max_length=120,
                                                  blank=True,
                                                  null=True)
    user_language_written = models.CharField(max_length=120,
                                             blank=True,
                                             null=True)
    user_language_written_other = models.CharField(max_length=120,
                                                   blank=True,
                                                   null=True)

    role = MultiSelectField(choices=(
        ('heartbeat_admin',
         'Heartbeat Admin (Gives Sitewide Access: Use Caution'),
        ('manager_cambodia', 'Manager: Cambodia'),
        ('manager_china', 'Manager: China'),
        ('manager_india', 'Manager: India'),
        ('manager_uganda', 'Manager: Uganda'),
        ('coordinator_cambodia_education', 'Coordinator: Cambodia Education'),
        ('coordinator_cambodia_education_rangsei',
         'Coordinator: Cambodia Education Rangsei Village'),
        ('coordinator_cambodia_education_sokhem',
         'Coordinator: Cambodia Education Sokhem Village'),
        ('coordinator_cambodia_education_sokhem_sibling',
         'Coordinator: Cambodia Education Sokhem Sibling'),
        ('coordinator_cambodia_education_ary',
         'Coordinator: Cambodia Education Ary Village'),
        ('coordinator_cambodia_foster_care',
         'Coordinator: Cambodia Foster Care'),
        ('coordinator_cambodia_healing_homes',
         'Coordinator: Cambodia Healing Homes'),
        ('coordinator_cambodia_medical', 'Coordinator: Cambodia Medical'),
        ('coordinator_cambodia_nutrition', 'Coordinator: Cambodia Nutrition'),
        ('coordinator_cambodia_safe_haven',
         'Coordinator: Cambodia Safe Haven'),
    ))

    is_active = models.BooleanField(default=True)

    class Meta:
        """Meta class."""

        permissions = (("is_admin", "Set user as admin"), )

    @classmethod
    def active(cls):
        """Class method."""
        return cls.objects.filter(is_active=True)

    def __str__(self):
        """Class String magic."""
        return self.user.username
예제 #10
0
class Interest(models.Model):
    ## The user associated with the Interest
    user=models.OneToOneField('auth.User',default=1)
    ## A multiple choice field which represents the selected interests of user
    my_field = MultiSelectField(choices=
        (('Fiction','Fiction'),('LoveandRomance','LoveandRomance'),("Mystery","Mystery"),("Thriller","Thriller"),("ScienceandFiction","ScienceandFiction"),("Fantasy","Fantasy"),("Horror","Horror"),("ActionandAdventure","ActionandAdventure"),("Comedy","Comedy"),("Poetry","Poetry"),("Study","Study"),))
예제 #11
0
class PatientConsultation(PatientBaseModel, PatientRelatedPermissionMixin):
    SUGGESTION_CHOICES = [
        (SuggestionChoices.HI, "HOME ISOLATION"),
        (SuggestionChoices.A, "ADMISSION"),
        (SuggestionChoices.R, "REFERRAL"),
    ]

    patient = models.ForeignKey("PatientRegistration",
                                on_delete=models.CASCADE,
                                related_name="consultations")
    facility = models.ForeignKey("Facility",
                                 on_delete=models.CASCADE,
                                 related_name="consultations")
    symptoms = MultiSelectField(choices=SYMPTOM_CHOICES,
                                default=1,
                                null=True,
                                blank=True)
    other_symptoms = models.TextField(default="", blank=True)
    symptoms_onset_date = models.DateTimeField(null=True, blank=True)
    category = models.CharField(choices=CATEGORY_CHOICES,
                                max_length=8,
                                default=None,
                                blank=True,
                                null=True)
    examination_details = models.TextField(null=True, blank=True)
    existing_medication = models.TextField(null=True, blank=True)
    prescribed_medication = models.TextField(null=True, blank=True)
    suggestion = models.CharField(max_length=3, choices=SUGGESTION_CHOICES)
    referred_to = models.ForeignKey(
        "Facility",
        null=True,
        blank=True,
        on_delete=models.PROTECT,
        related_name="referred_patients",
    )
    admitted = models.BooleanField(default=False)
    admitted_to = models.IntegerField(choices=ADMIT_CHOICES,
                                      default=None,
                                      null=True,
                                      blank=True)
    admission_date = models.DateTimeField(null=True, blank=True)
    discharge_date = models.DateTimeField(null=True, blank=True)
    bed_number = models.CharField(max_length=100, null=True, blank=True)

    def __str__(self):
        return f"{self.patient.name}<>{self.facility.name}"

    def save(self, *args, **kwargs):
        if not self.pk or self.referred_to is not None:
            # pk is None when the consultation is created
            # referred to is not null when the person is being referred to a new facility
            self.patient.facility = self.referred_to or self.facility
            self.patient.save()

        super(PatientConsultation, self).save(*args, **kwargs)

    class Meta:
        constraints = [
            models.CheckConstraint(
                name="if_referral_suggested",
                check=~models.Q(suggestion=SuggestionChoices.R)
                | models.Q(referred_to__isnull=False),
            ),
            models.CheckConstraint(
                name="if_admitted",
                check=models.Q(admitted=False)
                | models.Q(admission_date__isnull=False),
            ),
        ]
예제 #12
0
class Profile(models.Model):

    objects = ProfileManager()
    all_objects = ProfileManager(alive_only=False)

    @classmethod
    def get_position_choices(cls):
        return POSITION_CHOICES

    @classmethod
    def get_structure_choices(cls):
        return STRUCTURE_CHOICES

    @classmethod
    def get_modalities_choices(cls):
        return MODALITIES_CHOICES

    @classmethod
    def get_methods_choices(cls):
        return METHODS_CHOICES

    @classmethod
    def get_domains_choices(cls):
        return DOMAINS_CHOICES

    user = models.OneToOneField(User,
                                on_delete=models.SET_NULL,
                                null=True,
                                blank=True,
                                related_name='profile')
    is_public = models.BooleanField(default=True)

    name = models.CharField(max_length=200, blank=False)
    contact_email = models.EmailField(verbose_name='Contact E-mail',
                                      blank=True)
    webpage = models.URLField(blank=True)
    institution = models.CharField(max_length=100, blank=False)
    country = models.ForeignKey(Country,
                                on_delete=models.CASCADE,
                                related_name='profiles',
                                null=True)
    position = models.CharField(max_length=50,
                                choices=POSITION_CHOICES,
                                blank=True)
    grad_month = models.CharField(verbose_name='Month',
                                  max_length=2,
                                  choices=MONTHS_CHOICES,
                                  blank=True)
    grad_year = models.CharField(verbose_name='Year', max_length=4, blank=True)
    brain_structure = MultiSelectField(choices=STRUCTURE_CHOICES, blank=True)
    modalities = MultiSelectField(choices=MODALITIES_CHOICES, blank=True)
    methods = MultiSelectField(choices=METHODS_CHOICES, blank=True)
    domains = MultiSelectField(choices=DOMAINS_CHOICES, blank=True)
    keywords = models.CharField(max_length=250, blank=True)

    orcid = models.CharField(
        null=True,
        blank=True,
        verbose_name='ORCID',
        max_length=30,
        help_text=
        'Please insert the information from the brackets: https://orcid.org/[ID]'
    )
    twitter = models.CharField(
        null=True,
        blank=True,
        max_length=200,
        help_text=
        'Please insert the information from the brackets: https://twitter.com/[username]'
    )
    linkedin = models.CharField(
        null=True,
        blank=True,
        verbose_name='LinkedIn',
        max_length=200,
        help_text=
        'Please insert the information from the brackets: https://linkedin.com/in/[username]'
    )
    github = models.CharField(
        null=True,
        blank=True,
        verbose_name='GitHub',
        max_length=200,
        help_text=
        'Please insert the information from the brackets: https://github.com/[username]'
    )
    google_scholar = models.CharField(
        null=True,
        blank=True,
        verbose_name='Google Scholar',
        max_length=200,
        help_text=
        'Please insert the information from the brackets: https://scholar.google.com/citations?user=[ID]'
    )
    researchgate = models.CharField(
        null=True,
        blank=True,
        verbose_name='ResearchGate',
        max_length=200,
        help_text=
        'Please insert the information from the brackets: https://www.researchgate.net/profile/[username]'
    )

    published_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    deleted_at = models.DateTimeField(null=True)

    claimed_at = models.DateTimeField(null=True)
    claimed_by = models.ForeignKey(User,
                                   on_delete=models.SET_NULL,
                                   related_name='profile_claims',
                                   null=True)

    class Meta:
        ordering = ['name', 'institution', 'updated_at']
        base_manager_name = 'objects'

    def delete(self):
        self.deleted_at = timezone.now()
        self.save()

    def hard_delete(self):
        super().delete()

    def __str__(self):
        return f'{self.name}, {self.institution}'

    def brain_structure_labels(self):
        return [
            dict(STRUCTURE_CHOICES).get(item, item)
            for item in self.brain_structure
        ]

    def modalities_labels(self):
        return [
            dict(MODALITIES_CHOICES).get(item, item)
            for item in self.modalities
        ]

    def methods_labels(self):
        return [dict(METHODS_CHOICES).get(item, item) for item in self.methods]

    def domains_labels(self):
        return [dict(DOMAINS_CHOICES).get(item, item) for item in self.domains]

    def grad_month_labels(self):
        return dict(MONTHS_CHOICES).get(self.grad_month)
예제 #13
0
class Application(models.Model):
    """
    Represents a `Hacker`'s application to this hackathon.
    """

    # META INFO
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    datetime_submitted = models.DateTimeField(auto_now_add=True)
    wave = models.ForeignKey(Wave, on_delete=models.CASCADE)
    user = models.ForeignKey("user.User", on_delete=models.CASCADE, null=False)
    status = models.CharField(choices=STATUS_OPTIONS,
                              max_length=1,
                              default=STATUS_PENDING)

    # ABOUT YOU
    first_name = models.CharField(max_length=255,
                                  blank=False,
                                  null=False,
                                  verbose_name="first name")
    last_name = models.CharField(max_length=255,
                                 blank=False,
                                 null=False,
                                 verbose_name="last name")
    extra_links = models.CharField(
        "Point us to anything you'd like us to look at while considering your application",
        max_length=200,
        blank=True,
    )
    question1 = models.TextField(QUESTION1_TEXT, max_length=500)
    question2 = models.TextField(QUESTION2_TEXT, max_length=500)
    question3 = models.TextField(QUESTION3_TEXT, max_length=500)
    resume = models.FileField(
        "Upload your resume (PDF only)",
        help_text=
        "Companies will use this resume to offer interviews for internships and full-time positions.",
        validators=[
            FileExtensionValidator(allowed_extensions=["pdf"]),
            FileSizeValidator(max_filesize=2.5),
        ],
        upload_to=uuid_generator,
        storage=s3_storage,
    )

    # DEMOGRAPHIC INFORMATION
    school = models.ForeignKey(
        School,
        null=True,
        on_delete=models.SET_NULL,
        verbose_name="What school do you go to?",
    )
    school_other = models.CharField(null=True, blank=True, max_length=255)
    major = models.CharField("What's your major?", max_length=255)
    classification = models.CharField("What classification are you?",
                                      choices=CLASSIFICATIONS,
                                      max_length=3)
    gender = models.CharField("What's your gender?",
                              choices=GENDERS,
                              max_length=2,
                              default=NO_ANSWER)
    gender_other = models.CharField("Self-describe",
                                    max_length=255,
                                    null=True,
                                    blank=True)
    race = MultiSelectField("What race(s) do you identify with?",
                            choices=RACES,
                            max_length=41)
    race_other = models.CharField("Self-describe",
                                  max_length=255,
                                  null=True,
                                  blank=True)
    grad_year = models.IntegerField(
        "What is your anticipated graduation year?", choices=GRAD_YEARS)
    num_hackathons_attended = models.CharField(
        "How many hackathons have you attended?",
        max_length=22,
        choices=HACKATHON_TIMES)

    # LEGAL INFO
    agree_to_coc = models.BooleanField(choices=AGREE, default=None)
    is_adult = models.BooleanField(
        "Please confirm you are 18 or older.",
        choices=AGREE,
        default=None,
        help_text=
        "Please note that freshmen under 18 must be accompanied by an adult or prove that they go to Texas "
        "A&M.",
    )

    # LOGISTICAL INFO
    shirt_size = models.CharField("What size shirt do you wear?",
                                  choices=SHIRT_SIZES,
                                  max_length=4)
    address = AddressField(on_delete=models.CASCADE, default=None)
    additional_accommodations = models.TextField(
        "Do you require any special accommodations at the event?",
        max_length=500,
        blank=True,
    )

    technology_experience = models.CharField(max_length=150, default=None)

    # TEAM MATCHING INFO
    has_team = models.CharField(
        "Do you have a team yet?",
        choices=HAS_TEAM_OPTIONS,
        max_length=16,
    )
    wants_team = models.CharField(
        "Would you like to be contacted to help get a team?",
        choices=WANTS_TEAM_OPTIONS,
        help_text=
        "We will take into account many factors to make sure you are paired with a team that works well",
        max_length=16,
    )

    # CONFIRMATION DEADLINE
    confirmation_deadline = models.DateTimeField(null=True, blank=True)

    # MISCELLANEOUS
    notes = models.TextField("Anything else you would like us to know?",
                             max_length=300,
                             blank=True)

    def __str__(self):
        return "%s, %s - Application" % (self.last_name, self.first_name)

    def get_absolute_url(self):
        return reverse_lazy("application:update", args=[self.id])

    def clean(self):
        super().clean()
        if not self.is_adult:
            raise exceptions.ValidationError(
                "Unfortunately, we cannot accept hackers under the age of 18. Have additional questions? Email "
                f"us at {settings.ORGANIZER_EMAIL}. ")
        if not self.first_name.isalpha():
            raise exceptions.ValidationError(
                "First name can only contain letters.")
        if not self.last_name.isalpha():
            raise exceptions.ValidationError(
                "Last name can only contain letters.")
예제 #14
0
class _AccessDelegation(GenericModel, UnitEditableModel):
    unit = FalseFK('units.models.Unit')

    access = MultiSelectField(choices=_Role.ACCESS_CHOICES, blank=True, null=True)
    valid_for_sub_units = models.BooleanField(_(u'Valide pour les sous-unités'), default=False, help_text=_(u'Si sélectionné, les accès supplémentaires dans l\'unité courante seront aussi valides dans les sous-unités'))

    user = models.ForeignKey(TruffeUser, blank=True, null=True, help_text=_(u'(Optionnel !) L\'utilisateur concerné. L\'utilisateur doit disposer d\'une accréditation dans l\'unité.'))
    role = FalseFK('units.models.Role', blank=True, null=True, help_text=_(u'(Optionnel !) Le rôle concerné.'))

    class MetaRightsUnit(UnitEditableModel.MetaRightsUnit):
        unit_ro_access = True
        access = 'ACCREDITATION'

    class MetaData:
        list_display = [
            ('get_display_list', ''),
            ('user', _('Utilisateur')),
            ('role', _(u'Rôle')),
            ('get_access', _(u'Accès'))
        ]

        details_display = [
            ('user', _('Utilisateur')),
            ('role', _('Rôle')),
            ('get_access', _(u'Accès supplémentaires')),
            ('valid_for_sub_units', _(u'Valide pour les sous-unités'))
        ]

        default_sort = "[0, 'asc']"  # id

        filter_fields = ('user__first_name', 'user__last_name','user__username', 'role__name', 'access')
        not_sortable_columns = ['get_display_list', ]

        base_title = _(u'Délégation d\'accès')
        list_title = _(u'Liste de toutes les délégations d\'accès')
        base_icon = 'fa fa-list'
        elem_icon = 'fa fa-group'

        menu_id = 'menu-units-delegations'

        yes_or_no_fields = ['valid_for_sub_units']

        has_unit = True

        help_list = _(u"""Les délégations d'accès permettent de donner des accès supplémentaires dans une unité.

Les accès sont normalement déterminés en fonction des accréditations, au niveau global.
Par exemple, une personne accréditée en temps que 'Trésorier' dans une unité disposera de l'accès TRESORERIE pour l'unité.

Avec les délégations d'accês, il est par exemple possible de donner l'accès "COMMUNICATION" à tout les membres d'une unité en créant une délégations d'accès.

Il est aussi possible de restreindre une délégation â un utilisateur ou à un rôle particulier.""")

    class Meta:
        abstract = True

    def get_access(self):
        if self.access:
            return u', '.join(list(self.access))

    def __unicode__(self):
        return _(u'Accês supplémentaire n°%s' % (self.pk,))

    def delete_signal(self, request):
        self.save_signal()

    def save_signal(self):
        """Cleanup rights"""

        for user in self.unit.get_users():
            user.clear_rights_cache()

    def get_display_list(self):
        return _(u'Délégation #{}'.format(self.pk))
예제 #15
0
class NewBuilding(models.Model):
    # class Meta():
    #     db_table = 'Новострои'
    # ordering = ['name']

    name = models.CharField(max_length=200,
                            verbose_name=u'Название',
                            default=1)

    street = models.ForeignKey(Street,
                               on_delete=models.CASCADE,
                               verbose_name='Улица',
                               related_name='street')
    house_number = models.CharField(max_length=10, verbose_name='Номер дома')
    house_letter = models.CharField(
        max_length=2,
        verbose_name='Буква дома',
        choices=choices.HOUSE_LETTER_CHOICES,
        null=True,
        blank=True,
    )

    administrative_district = models.ForeignKey(
        AdministrativeDistrict,
        on_delete=models.CASCADE,
        verbose_name="Административный район")
    # administrativeDistrict = models.CharField(max_length=2, choices=choices.THE_ADMINISTRATIVE_DISTRICT_CHOICES,
    #                                           default=choices.NOT_COMPLETED,
    #                                           verbose_name=u"Административный район")  #
    district = models.CharField(
        max_length=4,
        choices=choices.DISTRICT_CHOICES,
        verbose_name=u"Район",
    )  # )
    micro_district = models.CharField(
        max_length=4,
        choices=choices.FULL_MICRO_DISTRICT_CHOICES,
        default=choices.NOT_COMPLETED,
        verbose_name="Микрорайон",
        null=True,
        blank=True)  # микрорайон

    houising_number = models.CharField(max_length=2,
                                       choices=choices.HOUSING_NUMBER_CHOICES,
                                       default=choices.NOT_DIVIDED,
                                       verbose_name='Номер корпуса',
                                       null=True,
                                       blank=True)

    location = models.CharField(max_length=200,
                                verbose_name=u"Расположение",
                                default=1,
                                null=True,
                                blank=True)  #
    # developer = models.CharField(max_length=100, verbose_name=u"Застройщик", default=1)  #
    developer = models.ForeignKey(Developer,
                                  on_delete=models.CASCADE,
                                  verbose_name='Застройщик',
                                  null=True,
                                  blank=True)
    the_class = models.CharField(max_length=2,
                                 choices=choices.THE_CLASS_CHOICES,
                                 default=choices.NOT_COMPLETED,
                                 verbose_name=u"Класс",
                                 null=True,
                                 blank=True)
    number_of_storeys = models.PositiveSmallIntegerField(
        verbose_name=u"Этажность", default=1)  #
    number_of_buildings = models.PositiveSmallIntegerField(
        verbose_name=u"Количество домов", default=1)  #
    number_of_sections_or_entrances = models.IntegerField(
        verbose_name=u"Количество секций/подьездов", default=1)
    construction_technology = models.CharField(
        max_length=2,
        choices=choices.THE_CONSTRUCTION_TECHNOLOGY_CHOICES,
        default=choices.NOT_COMPLETED,
        verbose_name=u"Технология строительства",
        null=True,
        blank=True)
    walls_type = models.CharField(max_length=2,
                                  choices=choices.THE_WALLS_TYPE_CHOICES,
                                  default=choices.NOT_COMPLETED,
                                  verbose_name=u"Стены",
                                  null=True,
                                  blank=True)
    warming = models.CharField(max_length=2,
                               choices=choices.THE_WARMING_CHOICES,
                               default=choices.NOT_COMPLETED,
                               verbose_name=u"Утепление",
                               null=True,
                               blank=True)  #
    room_height = models.FloatField(verbose_name=u"Высота помещений",
                                    default=1)  #
    number_of_apartments_in_house = models.PositiveSmallIntegerField(
        verbose_name=u"Кол-во квартир в доме", default=1)  #

    # ----------------------------------------------------
    number_of_one_room = models.PositiveSmallIntegerField(
        verbose_name=u"Кол-во 1к.кв.", default=1)
    square_of_one_room = models.FloatField(verbose_name=u"Площадь 1к.кв.",
                                           default=1)
    number_of_two_room = models.PositiveSmallIntegerField(
        verbose_name=u"Кол-во 2к.кв.", default=1)
    square_of_two_room = models.FloatField(verbose_name=u"Площадь 2к.кв.",
                                           default=1)
    number_of_three_room = models.PositiveSmallIntegerField(
        verbose_name=u"Кол-во 3к.кв.", default=1)
    square_of_three_room = models.FloatField(verbose_name=u"Площадь 3к.кв.",
                                             default=1)
    number_of_four_room = models.PositiveSmallIntegerField(
        verbose_name=u"Кол-во 4к.кв.", default=1)
    square_of_four_room = models.FloatField(verbose_name=u"Площадь 4к.кв.",
                                            default=1)
    # ----------------------------------------------------

    number_of_apartments_per_floor = models.PositiveSmallIntegerField(
        verbose_name=u"Кол-во квартир на этаже", default=1)
    commercial_premises = models.PositiveSmallIntegerField(
        verbose_name=u"Коммерческие помещения", null=True,
        default=1)  # пишешь только этаж
    heating = models.CharField(max_length=2,
                               choices=choices.THE_HEATING_CHOICES,
                               default=choices.NOT_COMPLETED,
                               verbose_name=u"Отопление",
                               null=True,
                               blank=True)
    gasification = models.BooleanField(verbose_name=u"Газификация", default=1)
    elevator = models.CharField(max_length=50, verbose_name=u"Лифт",
                                default=1)  #
    parking = MultiSelectField(choices=choices.THE_PARKING_CHOICES,
                               default=choices.NOT_COMPLETED,
                               verbose_name=u"Паркинг",
                               null=True,
                               blank=True)
    number_of_parking_spaces = models.SmallIntegerField(
        verbose_name=u"Кол-во машиномест", default=1)
    price = models.SmallIntegerField(verbose_name=u"Цена за м2 у застройщика",
                                     default=1)
    completion_date = models.SmallIntegerField(
        verbose_name=u"Сдан и принят в эксплуатацию", default=1)
    description = models.TextField(verbose_name=u"Описание", default=1)

    slug = models.SlugField(
        max_length=150,
        unique=True,
        blank=True,
    )
    lat = models.FloatField(verbose_name='Широта',
                            default=0,
                            null=True,
                            blank=True)
    lng = models.FloatField(verbose_name='Долгота',
                            default=0,
                            null=True,
                            blank=True)

    # SEE HOW DOES IT WORK WITH VUEJS
    def get_absolute_url(self):
        return reverse('property_detail', kwargs={'slug': self.slug})

    def get_update_url(self):
        return reverse('property_edit', kwargs={'slug': self.slug})

    def __str__(self):
        if (self.house_letter):
            return '{} {}{}   |   {}'.format(self.street, self.house_number,
                                             self.house_letter, self.name)
        else:
            return '{} {}'.format(self.street, self.house_number)

    class Meta:
        verbose_name = 'Новострой'
        verbose_name_plural = 'Новострои'
예제 #16
0
class School(models.Model):

    slug = models.SlugField(max_length=50, default="none")
    logo = models.ImageField(upload_to="avatars",
                             blank=True,
                             null=True,
                             default="avatars/profile.png")
    school_name = models.CharField(max_length=200)
    email = models.EmailField(max_length=70, blank=True)
    phone_number = models.CharField(max_length=15, default=0)
    url = models.URLField()
    areas = models.ManyToManyField(Area, blank=True)

    Motorcycle = 'Motorcycle'
    Car = 'Car'
    CarTowing = 'CarTowing'
    RigidTruck = 'RigidTruck'
    ArticulatedTruck = 'ArticulatedTruck'
    MiniBus = 'MiniBus'
    Coach = 'Coach'

    TRAININGAREAS = (
        (Motorcycle, 'Motorcycle'),
        (Car, 'Car'),
        (CarTowing, 'Car Towing'),
        (RigidTruck, 'Rigid Truck'),
        (ArticulatedTruck, 'Articulated Truck'),
        (MiniBus, 'Mini Bus'),
        (Coach, 'Coach'),
    )
    products = MultiSelectField(choices=TRAININGAREAS, default='Car')

    IndependentDrivingInstructor = 'Independent Driving Instructor'
    DrivingSchool = 'Driving School'
    InsuranceCompany = 'Insurance Company'

    TYPES = (
        (IndependentDrivingInstructor, 'Independent Driving Instructor'),
        (DrivingSchool, 'Driving School'),
        (InsuranceCompany, 'Insurance Company'),
    )
    school_type = models.CharField(choices=TYPES,
                                   default='Driving School',
                                   max_length=30)

    rsa_number = models.CharField(max_length=8)

    Dublin1 = 'Dublin 1'
    Dublin2 = 'Dublin 2'
    Dublin3 = 'Dublin 3'
    Dublin4 = 'Dublin 4'
    Dublin5 = 'Dublin 5'
    Dublin6 = 'Dublin 6'
    Dublin7 = 'Dublin 7'
    Dublin8 = 'Dublin 8'
    Dublin9 = 'Dublin 9'
    Dublin10 = 'Dublin 10'
    Dublin11 = 'Dublin 11'
    Dublin12 = 'Dublin 12'
    Dublin13 = 'Dublin 13'
    Dublin14 = 'Dublin 14'
    Dublin15 = 'Dublin 15'
    Dublin16 = 'Dublin 16'
    Dublin17 = 'Dublin 17'
    Dublin18 = 'Dublin 18'
    Dublin20 = 'Dublin 20'
    Dublin22 = 'Dublin 22'
    Dublin24 = 'Dublin 24'

    AREAS = (
        (Dublin1, 'Dublin 1'),
        (Dublin2, 'Dublin 2'),
        (Dublin3, 'Dublin 3'),
        (Dublin4, 'Dublin 4'),
        (Dublin5, 'Dublin 5'),
        (Dublin6, 'Dublin 6'),
        (Dublin7, 'Dublin 7'),
        (Dublin8, 'Dublin 8'),
        (Dublin9, 'Dublin 9'),
        (Dublin10, 'Dublin 10'),
        (Dublin11, 'Dublin 11'),
        (Dublin12, 'Dublin 12'),
        (Dublin13, 'Dublin 13'),
        (Dublin14, 'Dublin 14'),
        (Dublin15, 'Dublin 15'),
        (Dublin16, 'Dublin 16'),
        (Dublin17, 'Dublin 17'),
        (Dublin18, 'Dublin 18'),
        (Dublin20, 'Dublin 20'),
        (Dublin22, 'Dublin 22'),
        (Dublin24, 'Dublin 24'),
    )
    Area = MultiSelectField(choices=AREAS, default='Dublin1')
    Business_des = HTMLField(default="-")

    Lesson_Price_For_12 = models.DecimalField(max_digits=6,
                                              decimal_places=0,
                                              default=0)
    Lesson_Price_For_1 = models.DecimalField(max_digits=6,
                                             decimal_places=0,
                                             default=0)

    def __str__(self):
        return self.school_name
예제 #17
0
class zvonok(models.Model):
    auth = models.ForeignKey(
        'auth.User',
        verbose_name='Риелтор:',
        on_delete=models.CASCADE,
    )
    date_sozd = models.DateTimeField(auto_now=False,
                                     verbose_name='Дата создания:')
    tel = models.IntegerField('Телефон', help_text='9881112233', blank=False)
    raion_choise = (
        ('Выбор района', 'Выбор района'),
        ('Ахун', 'Ахун'),
        ('Бытха', 'Бытха'),
        ('Виноградная', 'Виноградная'),
        ('Дагомыс', 'Дагомыс'),
        ('Донская', 'Донская'),
        ('Донская(Пасечная)', 'Донская(Пасечная)'),
        ('Донская(Тимерязева)', 'Донская(Тимерязева)'),
        ('Завокзальный', 'Завокзальный'),
        ('Заречный', 'Заречный'),
        ('Клубничная', 'Клубничная'),
        ('КСМ', 'КСМ'),
        ('Красная поляна', 'Красная поляна'),
        ('Кудепста', 'Кудепста'),
        ('Макаренко', 'Макаренко'),
        ('Мамайка', 'Мамайка'),
        ('Мамайский перевал', 'Мамайский перевал'),
        ('Мацеста', 'Мацеста'),
        ('Н.Сочи', 'Н.Сочи'),
        ('Объезная', 'Объезная'),
        ('Пластунская', 'Пластунская'),
        ('Приморье', 'Приморье'),
        ('Раздольное', 'Раздольное'),
        ('Светлана', 'Светлана'),
        ('Соболевка', 'Соболевка'),
        ('Транспортная', 'Транспортная'),
        ('Фабрициуса', 'Фабрициуса'),
        ('Хоста', 'Хоста'),
        ('Центр', 'Центр'),
        ('(А) Блиново(+Вес)', '(А) Блиново(+Вес)'),
        ('(А) Гол. дали', '(А) Гол. дали'),
        ('(А) Кур.гор(+Чкал)', '(А) Кур.гор(+Чкал)'),
        ('(А) Мирный', '(А) Мирный'),
        ('(А) Молдовка', '(А) Молдовка'),
        ('(А) Центр', '(А) Центр'),
        ('(А) Чай совхоз', '(А) Чай совхоз'),
    )
    raion = MultiSelectField('Район',
                             choices=raion_choise,
                             max_length=20,
                             default='Неважно',
                             blank=False)
    subj_choise = (('Неважно', 'Неважно'), ('Студия', 'Студия'),
                   ('Однокомнатная', 'Однокомнатная'), ('Двухкомнатная',
                                                        'Двухкомнатная'),
                   ('Многокомнатная', 'Многокомнатная'), ('Дом', 'Дом'),
                   ('Участок', 'Участок'), ('Коммерция', 'Коммерция'))
    subj = models.CharField(verbose_name='Что ищет:',
                            max_length=50,
                            choices=subj_choise,
                            default='Неважно',
                            blank=False)
    cena = models.IntegerField(verbose_name='Бюджет до:',
                               validators=[MinValueValidator(300000)],
                               blank=False,
                               default=800000)
    client_name = models.CharField('Имя клиента:', max_length=45, blank=False)
    prim = models.TextField('Первичная информация:', blank=False)
    coment = models.TextField('Коментарий по проделанной работе', blank=False)
    status_choises = (('Новый', 'Новый'), ('Перезвонить', 'Перезвонить'),
                      ('Недозвонился', 'Недозвонился'),
                      ('В работе', 'В работе'), ('Архив', 'Архив'),
                      ('В общем доступе', 'В общем доступе'))
    status_zvonka = models.CharField(max_length=55,
                                     verbose_name='Статус звонка',
                                     choices=status_choises,
                                     default='Новый')
    prezvonit = models.DateTimeField(
        verbose_name='Перезвонить: ',
        blank=False,
    )  #default=datetime.now())

    def __str__(self):
        return self.client_name

    class Meta:
        verbose_name = 'Звонки риелторам'
        verbose_name_plural = 'Звонки риелторам'
예제 #18
0
class Report(models.Model):
    FILLING_CHOICES = (('Some One Else', 'Some One Else'), ('My Self',
                                                            'My Self'))
    TITLE_CHOICES = (('MR', 'MR'), ('MRS', 'Mrs'), ('DR', 'DR'), ('MISS',
                                                                  'MISS'))
    GENDER_CHOICES = (
        ('Male', 'Male'),
        ('Female', 'Female'),
    )
    Abuja = 'FC'
    Abia = 'AB'
    Adamawa = 'AD'
    Akwa_Ibom = 'AK'
    Anambra = 'AN'
    Bauchi = 'BA'
    Bayelsa = 'BY'
    Benue = 'BE'
    Borno = 'BO'
    Cross_River = 'CR'
    Delta = 'DE'
    Ebonyi = 'EB'
    Edo = 'ED'
    Ekiti = 'EK'
    Enugu = 'EN'
    Gombe = 'GO'
    Imo = 'IM'
    Jigawa = 'JI'
    Kaduna = 'KD'
    Kano = 'KN'
    Katsina = 'KT'
    Kebbi = 'KE'
    Kogi = 'KO'
    Kwara = 'KW'
    Lagos = 'LA'
    Nassarawa = 'NA'
    Niger = 'NI'
    Ogun = 'OG'
    Ondo = 'ON'
    Osun = 'OS'
    Oyo = 'OY'
    Plateau = 'PL'
    Rivers = 'RI'
    Sokoto = 'SO'
    Taraba = 'TA'
    Yobe = 'YO'
    Zamfara = 'ZA'

    STATE_CHOICES = [
        (Abuja, 'abuja'),
        (Abia, 'abia'),
        (Adamawa, 'adamawa'),
        (Akwa_Ibom, 'akwa'),
        (Anambra, 'anambra'),
        (Bauchi, 'bauchi'),
        (Bayelsa, 'bayelsa'),
        (Benue, 'benue'),
        (Borno, 'borno'),
        (Cross_River, 'cross river'),
        (Delta, 'delta'),
        (Ebonyi, 'ebonyi'),
        (Edo, 'edo'),
        (Ekiti, 'ekiti'),
        (Enugu, 'enugu'),
        (Gombe, 'gombe'),
        (Imo, 'imo'),
        (Jigawa, 'jigawa'),
        (Kaduna, 'kaduna'),
        (Kano, 'kano'),
        (Katsina, 'katsina'),
        (Kebbi, 'kebbi'),
        (Kogi, 'kogi'),
        (Kwara, 'kwara'),
        (Lagos, 'lagos'),
        (Nassarawa, 'nassarawa'),
        (Niger, 'niger'),
        (Ogun, 'ogun'),
        (Ondo, 'ondo'),
        (Osun, 'osun'),
        (Oyo, 'oyo'),
        (Plateau, 'plateaue'),
        (Rivers, 'rivers'),
        (Sokoto, 'sokoto'),
        (Taraba, 'taraba'),
        (Yobe, 'yobe'),
        (Zamfara, 'zamfara'),
    ]

    filling_for_who = models.CharField(max_length=150, choices=FILLING_CHOICES)
    symptoms = MultiSelectField(choices=SYMPTOMS_CHOICES)
    title = models.CharField(max_length=10, choices=TITLE_CHOICES)
    full_name = models.CharField(max_length=100)
    phone = models.CharField(max_length=100)
    email = models.CharField(max_length=100)
    gender = models.CharField(max_length=10, choices=GENDER_CHOICES)
    traveled = models.BooleanField(default=False)
    contact = models.BooleanField(default=False)
    treatment = models.BooleanField(default=False)
    state = models.CharField(max_length=2, choices=STATE_CHOICES, default=None)
    address = models.TextField()

    def __str__(self):  #Show title as the identifier
        return self.title + " " + self.full_name + ' from ' + self.address + " " + self.state

    def get_user_summary(self):
        return 'name: ' + self.full_name + " i am filling for " + self.filling_for_who + " i experience " + self.symptoms + "my address is " + self.address
        if self.traveled:
            return 'i have traveled out recently'
        if self.contact:
            return 'i have  been in contact with a suspected patient'
예제 #19
0
class Resource(VideoResourceMixin, TimeStampedModel):
    type = models.CharField(
        max_length=1,
        choices=settings.RESOURCE_CH_TYPES,
        default=settings.RESOURCE_CH_TYPE_VIDEO_VIMEO)
    status = models.CharField(
        max_length=1,
        choices=settings.RESOURCE_CH_STATUS,
        default=settings.RESOURCE_CH_STATUS_DRAFT)
    name = models.CharField(
        blank=False, null=False, max_length=555)
    description = models.TextField(
        blank=True, null=True)
    link = models.URLField(
        blank=True, null=True)
    url = models.URLField(
        blank=True, null=True)
    thumbnail = models.URLField(
        blank=True, null=True)
    duration = models.IntegerField(
        blank=True, null=True)
    tags = models.ManyToManyField(
        'Tag', blank=True)
    sections = MultiSelectField(
        choices=settings.RESOURCE_CH_SECTIONS,
        blank=True, null=True)
    projects = models.TextField(
        blank=True,
        null=True,
        default='')
    extra_data = models.TextField(
        blank=True,
        null=True)

    objects = ResourceManager()

    class Meta:
        ordering = ['name']

    def __str__(self):
        return self.name

    @property
    def is_draft(self):
        return self.status == settings.RESOURCE_CH_STATUS_DRAFT

    @property
    def is_type_filestack(self):
        return self.type == settings.RESOURCE_CH_TYPE_FILESTACK

    def get_handle(self):
        return self.link.split(settings.RESOURCE_FILESTACK_CDN_URL)[1][1:]

    @property
    def url_hash(self):
        url = None

        if self.is_type_filestack:
            handle = self.get_handle()
            url = reverse('resource:resource-redirect',
                          kwargs={'handle': handle,
                                  'filename': self.extra_data.get('filename', None)})
        return url

    def has_modifications(self, modified_time):
        return self.modified_time < parse_datetime(modified_time)

    @classmethod
    def get_provider_status(cls, status):
        try:
            status = settings.RESOURCE_PROVIDERS_STATUS[status]
        except KeyError:
            status = settings.RESOURCE_CH_STATUS_DRAFT

        return status

    def set_as_available(self, websocket=True):
        self.status = settings.RESOURCE_CH_STATUS_AVAILABLE
        self.save(update_fields=['status'])
        if websocket:
            self.notificate_update_websocket()

    def set_as_error(self, websocket=True):
        self.status = settings.RESOURCE_CH_STATUS_ERROR
        self.save(update_fields=['status'])
        if websocket:
            self.notificate_update_websocket()

    def delete(self, *args, **kwargs):
        self.status = settings.RESOURCE_CH_STATUS_REMOVED
        self.save(update_fields=['status'])

    def force_delete(self, *args, **kwargs):
        super().delete(*args, **kwargs)

    @property
    def project_list(self):
        return self.projects.split(',') if self.projects is not None else []

    @project_list.setter
    def project_list(self, value):
        if value is None:
            self.projects = ''
        else:
            project_list = self.project_list
            project_list.append(str(value))
            self.projects = ','.join(project_list)
        self.save(update_fields=['projects'])
예제 #20
0
class Event(models.Model):
    SOCIETY_CHOICES = (
        ('UWCS', 'Uni of Warwick Computing Society'),
        ('WE', 'Warwick Esports'),
    )

    id = models.IntegerField(primary_key=True)

    # Event display information
    title = models.CharField(max_length=100)
    description = models.TextField(blank=True, help_text=markdown_allowed())
    start = models.DateTimeField(default=timezone.now)
    end = models.DateTimeField(default=timezone.now)
    location = models.CharField(max_length=100)

    # Signup information
    signup_start = models.DateTimeField(default=timezone.now)
    signup_end = models.DateTimeField(default=timezone.now)
    signup_start_fresher = models.DateTimeField(blank=True, null=True)
    signup_limit = models.IntegerField(default=70)

    # Society eligibility criteria
    hosted_by = MultiSelectField(blank=True,
                                 choices=SOCIETY_CHOICES,
                                 max_choices=2)
    cost_member = models.DecimalField(default=0,
                                      decimal_places=2,
                                      max_digits=3)
    cost_non_member = models.DecimalField(default=5,
                                          decimal_places=2,
                                          max_digits=3)

    # Routing
    slug = models.SlugField(max_length=40, unique=True)

    # Seating plan
    has_seating = models.BooleanField(default=True)
    seating_location = models.ForeignKey(SeatingRoom,
                                         on_delete=models.PROTECT,
                                         blank=True,
                                         null=True)

    # Signup options
    has_photography = models.BooleanField(default=False)
    has_livestream = models.BooleanField(default=False)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return '/events/{slug}'.format(slug=self.slug)

    @property
    def signups(self):
        signups = EventSignup.objects.filter(
            event=self, is_unsigned_up=False).exclude(
                comment__exact='').order_by('-created_at').all()

        return signups

    @property
    def signups_all(self):
        signups = EventSignup.objects.filter(
            event=self, is_unsigned_up=False).order_by('-created_at').all()

        return signups

    @property
    def signup_count(self):
        return len(self.signups_all)

    @property
    def signups_left(self):
        return self.signup_limit - self.signup_count

    def signup_start_for_user(self, user):
        if self.signup_start_fresher:
            profile = WarwickGGUser.objects.get(user=user)

            return self.signup_start_fresher if profile.is_fresher else self.signup_start
        else:
            return self.signup_start

    def signups_open(self, user):
        return self.signup_start_for_user(user) < timezone.now(
        ) <= self.signup_end and self.signup_count < self.signup_limit

    @property
    def is_ongoing(self):
        if self.start < timezone.now() <= self.end:
            return True
        else:
            return False
예제 #21
0
class Data(models.Model):
    """
    'Free Internet Quota (MB)','Additional free Internet Quota (GB)','Social Media Free MB'
    includes for donut calculation

    """
    plan = models.OneToOneField(Plan,
                                on_delete=models.CASCADE,
                                related_name="data")
    free_internet = models.IntegerField(
        default=0,
        null=True,
        blank=True,
        verbose_name=_('Free Internet Quota (MB)'))
    add_free_internet = models.IntegerField(
        default=0,
        null=True,
        blank=True,
        verbose_name=_('Additional free Internet Quota (MB)'))
    free_internet_wifi = models.IntegerField(
        default=0,
        null=True,
        blank=True,
        verbose_name=_('Free Internet Wi-Fi (MB)'))
    fair_policy = models.IntegerField(default=0,
                                      null=True,
                                      blank=True,
                                      verbose_name=_('Fair policy (Daily MB)'))
    after_quota_fair_policy = models.IntegerField(
        default=0,
        null=True,
        blank=True,
        verbose_name=_('After /quota Fair policy consumption(kbps)'))
    rate_after_consumption = models.IntegerField(
        default=0,
        null=True,
        blank=True,
        verbose_name=_('Rate/MB after consumption(SAR)'))
    data_usage_rate = models.IntegerField(default=0,
                                          null=True,
                                          blank=True,
                                          verbose_name=_('Data Usage Rate/MB'))
    free_access_to_apps = models.BooleanField(
        default=False, verbose_name=_('Free Access to Apps (Yes/No)'))
    social_media_free_mb = models.IntegerField(
        default=0,
        null=True,
        blank=True,
        verbose_name=_('Social Media Free MB'))
    Social_includes = MultiSelectField(choices=get_available_apps(),
                                       null=True,
                                       blank=True)
    donut_data_val = models.IntegerField(default=0,
                                         null=True,
                                         blank=True,
                                         verbose_name=_('Donut Data Value'))

    class Meta:
        verbose_name = 'data'
        verbose_name_plural = 'datas'
        db_table = 'data'

    @property
    def available_data(self):
        return get_available_data(self)
예제 #22
0
class Application(AbstractApplication):
    GRANT_TYPES = (
        (AbstractApplication.GRANT_AUTHORIZATION_CODE, 'Authorization code'),
        (AbstractApplication.GRANT_PASSWORD, 'Resource owner password-based'),
        (GrantType.CLIENT_CREDENTIALS, 'Client Credentials'),
    )
    CLIENT_TYPES = ((AbstractApplication.CLIENT_CONFIDENTIAL,
                     'Confidential'), )

    user = models.ForeignKey(OAuth2User,
                             db_column='oauth2_user_id',
                             related_name='%(app_label)s_%(class)s',
                             null=True,
                             blank=True,
                             on_delete=models.CASCADE)

    client_type = models.CharField(
        max_length=32,
        choices=CLIENT_TYPES,
        default=AbstractApplication.CLIENT_CONFIDENTIAL,
        verbose_name='Client 종류',
        help_text='Confidential 만 지원한다.')
    authorization_grant_type = MultiSelectField(
        max_length=128,
        choices=GRANT_TYPES,
        default=AbstractApplication.GRANT_AUTHORIZATION_CODE,
        verbose_name='Grant 종류',
        help_text='Authorization code와 Password 만 지원한다.')

    is_in_house = TinyBooleanField(default=False, verbose_name='내부 서비스 여부')
    jwt_alg = models.CharField(max_length=6,
                               choices=JwtAlg.get_choices(),
                               default=JwtAlg.HS256,
                               verbose_name='JWT 알고리즘')
    jwt_hs_256_secret = models.CharField(max_length=32,
                                         default=jwt_hs_256_secret,
                                         verbose_name='JWT HS256 Secret')

    updated = None
    created = models.DateTimeField(auto_now_add=True,
                                   editable=False,
                                   verbose_name='등록일')
    last_modified = models.DateTimeField(auto_now=True,
                                         editable=False,
                                         verbose_name='수정일')
    _redirect_uris = models.TextField(db_column='redirect_uris')

    @property
    def redirect_uris(self):
        if not self.is_in_house:
            return self._redirect_uris

        redirect_uris = []
        # pylint: disable=no-member
        for redirect_uri in self._redirect_uris.split():
            if not is_absolute_uri(redirect_uri):
                redirect_uris.append(
                    f"https://{GeneralConfig.get_site_domain()}{redirect_uri}")
            else:
                redirect_uris.append(redirect_uri)
        return ' '.join(redirect_uris)

    objects = ApplicationManager()

    def allows_grant_type(self, *grant_types):
        return any(allowed_grant_type in grant_types
                   for allowed_grant_type in self.authorization_grant_type)

    def redirect_uri_allowed(self, uri):
        for allowed_uri in self.redirect_uris.split():
            if is_same_url_until_path(allowed_uri, uri):
                return True
        return False

    class Meta(AbstractApplication.Meta):
        swappable = 'OAUTH2_PROVIDER_APPLICATION_MODEL'
        db_table = 'oauth2_application'
예제 #23
0
class StudyWordLive(models.Model):
    '''学习工作生活'''
    company_style = models.CharField(u'公司类型',
                                     max_length=120,
                                     choices=COMPANY_STYLE,
                                     default='0')
    salary_describe = models.CharField(u'收入描述',
                                       max_length=120,
                                       choices=SALARY_DESCRIBE,
                                       default='0')
    work_situation = models.CharField(u'工作情况',
                                      max_length=120,
                                      choices=WORK_SITUATION,
                                      default='0')
    company_name = models.CharField(u'公司名称', max_length=120, default='')
    educational_background = models.CharField(u'学历',
                                              choices=EDUCATIONAL_BACKGROUND,
                                              max_length=60,
                                              default='0')
    major_style = models.CharField(u'专业类型',
                                   choices=MAJOR_STYLE,
                                   max_length=120,
                                   default='0')
    school = models.CharField(u'学校类型', max_length=120, default='')
    enrolment_time = models.CharField(u'入学年份', max_length=60, default='')
    language = MultiSelectField(u'语言能力', max_length=60, choices=LANGUAGE)
    family_num = models.CharField(u'家中排行',
                                  max_length=60,
                                  choices=FAMILY_NUM,
                                  default='0')
    consumption_level = models.CharField(u'最大消费',
                                         max_length=60,
                                         choices=CONSUMPTION_LEVEL,
                                         default='0')
    is_smoking = models.BooleanField(u'是否吸烟', default=False)
    is_drink = models.BooleanField(u'是否喝酒', default=False)
    faith = models.CharField(u'宗教信仰',
                             max_length=60,
                             choices=FAITH,
                             default='1')
    take_exercise = models.CharField(u'体育锻炼',
                                     max_length=60,
                                     choices=TAKE_EXERCISE,
                                     default='0')
    work_rest = models.CharField(u'作息习惯', max_length=120, default='')
    want_kid = models.BooleanField(u'是否要孩子', default=True)
    with_parents_live = models.BooleanField(u'是否和父母同住', default=False)
    make_romantic = models.BooleanField(u'是否制造浪漫', default=True)
    live_skill = MultiSelectField(u'生活技能', max_length=120, choices=LIKE_SKILL)
    like_sport = MultiSelectField(u'喜欢运动', max_length=120, choices=LIKE_SPORT)
    like_food = MultiSelectField(u'喜欢食物', max_length=120, choices=LIKE_FOOD)
    like_book = MultiSelectField(u'喜欢书籍', max_length=120, choices=LIKE_BOOK)
    like_movie = MultiSelectField(u'喜欢电影', max_length=120, choices=LIKE_MOVIE)
    avocation = MultiSelectField(u'业余爱好', max_length=120, choices=AVOCATION)
    like_travel = MultiSelectField(u'喜欢旅游',
                                   max_length=120,
                                   choices=LIKE_TRAVEL)
    like_program = MultiSelectField(u'喜欢节目',
                                    max_length=120,
                                    choices=LIKE_PROGRAM)
    introduce = models.TextField(u'内心独白', default='')
    login_id = models.ForeignKey(LoginInfo)

    class Meta:
        verbose_name_plural = u'学习工作生活'
예제 #24
0
class OrgProfile(models.Model):

    user = models.ForeignKey(
        User, on_delete=models.CASCADE, null=True, blank=True, verbose_name=_("اسم المستخدم"), help_text=_('المستخدمون الذين ليس لديهم طلبات بروفايل فقط'))

    staff = models.CharField(max_length=100, null=True, blank=True)

    name = models.CharField(max_length=255, null=False,
                            verbose_name=_("اسم المنظمة"))
    name_en_ku = models.CharField(max_length=255, null=True, blank=True,
                                  verbose_name=_("اسم المنظمة باللغة الانكليزية أو الكردية"))
    short_cut = models.CharField(
        max_length=255, null=True, blank=True, verbose_name=_("الاسم المختصر"))
    org_type = models.CharField(
        max_length=150, null=False, choices=MyChoices.type_CHOICES, verbose_name=_("نوع المنظمة"))

    # position_work = CountryField(
    #     max_length=255, null=False, verbose_name=_("مكان العمل"))

    # city_work = models.ForeignKey(
    #     City, on_delete=models.SET_NULL, null=True, blank=True, verbose_name=_("المحافظة"))
    # city_work = models.CharField(
    #     max_length=150, choices=syr_city_CHOICES, null=True, blank=True, verbose_name=_("المحافظة"))

    # position = models.ForeignKey(
    #     Position, on_delete=models.SET_NULL, null=True, blank=True, verbose_name=_('مكان العمل'))

    logo = models.ImageField(upload_to="org_logos",
                             null=True, blank=True, default='org_logos/default_logo.jpg', verbose_name=_("شعار المنظمة"))
    message = RichTextField(
        max_length=5000, null=False, verbose_name=_("الرؤية و الرسالة"))
    message_en = RichTextField(
        max_length=5000, null=True, blank=True, verbose_name=_("الرؤية و الرسالة باللغة الانكليزية"))

    name_managing_director = models.CharField(
        max_length=255, null=True, blank=True, verbose_name=_("اسم رئيس مجلس اﻹدارة"))
    name_ceo = models.CharField(
        max_length=255, null=True, blank=True, verbose_name=_('اسم المدير التنفيذي'))
    name_ceo_en = models.CharField(
        max_length=255, null=True, blank=True, verbose_name=_('اسم المدير التنفيذي باللغة الانجليزية'))

    # CONTACT INFO
    site_web = models.URLField(
        max_length=255, null=True, blank=True, verbose_name=_('الموقع الالكتروني'))
    facebook = models.URLField(
        max_length=255, null=True, blank=True, verbose_name=_('صفحة فيسبوك'))
    twitter = models.URLField(
        max_length=255, null=True, blank=True, verbose_name=_('صفحة تويتر'))
    email = models.EmailField(max_length=255, null=True,
                              blank=True, verbose_name=_('البريد الاكتروني'))
    phone = models.CharField(max_length=100, null=True,
                             blank=True, verbose_name=_('رقم الهاتف'))
    name_person_contact = models.CharField(
        max_length=255, null=True, blank=True, verbose_name=_('اسم الشخص المسؤول عن التواصل'))
    email_person_contact = models.EmailField(
        max_length=255, null=True, blank=True, verbose_name=_('البريد الاكتروني للشخص المسؤول عن التواصل'))
    org_adress = models.CharField(
        max_length=255, null=False, verbose_name=_('عنوان المقر الرئيسي'))

    # ORG INFO
    work_domain = MultiSelectField(
        max_length=255, choices=MyChoices.domain_CHOICES, null=False, verbose_name=_('مجال العمل'))
    target_cat = MultiSelectField(
        max_length=255, null=False, choices=MyChoices.target_CHOICES, verbose_name=_('الفئات المستهدفة'))
    date_of_establishment = models.CharField(
        max_length=150, null=True, blank=True, verbose_name=_('تاريخ سنة التأسيس'))
    is_org_registered = models.CharField(
        max_length=100, null=False, choices=MyChoices.bool_CHOICES, verbose_name=_('هل المنظمة مسجلة ؟'))
    org_registered_country = CountryField(
        max_length=255, null=True, blank=True, verbose_name=_("بلد التسجيل"))

    org_members_count = models.PositiveIntegerField(
        validators=[MinValueValidator(1)], null=True, blank=True, verbose_name=_('عدد اﻷعضاء'))
    org_members_womans_count = models.PositiveIntegerField(
        validators=[MinValueValidator(1)], null=True, blank=True, verbose_name=_('عدد النساء من اﻷعضاء'))
    w_polic_regulations = MultiSelectField(
        max_length=200, null=False, choices=MyChoices.polic_CHOICES, verbose_name=_('السياسات واللوائح المكتوبة'))
    org_member_with = models.CharField(max_length=100, null=True, blank=True, choices=MyChoices.bool_CHOICES, verbose_name=_(
        'ھل المؤسسة عضو في اي شبكة او تحالف او جسم تنسیقي؟'))
    coalition_name = models.CharField(
        max_length=255, null=True, blank=True, verbose_name=_('اسم الشبكة / التحالف'))
    coalition_name_en = models.CharField(
        max_length=255, null=True, blank=True, verbose_name=_('اسم الشبكة / التحالف باللغة الانجليزية'))

    publish = models.BooleanField(default=False)

    created_at = models.DateTimeField(auto_now_add=True)
    published_at = models.DateTimeField(blank=True, null=True, default=None)
    updated_at = models.DateTimeField(blank=True, null=True, default=None)

    def __str__(self):
        if self.name:
            # return '%s %s' % (self.name, self.user.username)
            # return '%s' % (self.user.username) + ' / ' + '%s' % (self.name)
            return self.name

    def get_absolute_url(self):
        return reverse("particip_detail", kwargs={"par_id": self.id})
예제 #25
0
class Praise(models.Model):
    STARS = (
        ('1', '1'),
        ('2', '2'),
        ('3', '3'),
        ('4', '4'),
        ('5', '5'),
    )

    SUBJECTS = (
        ('civil', 'civil'),
        ('compuer organization', 'compuer organization'),
        ('data structures', 'data structures'),
        ('mathematics', 'mathematics'),
        ('chemistry', 'chemistry'),
        ('electrical', 'electrical'),
        ('at&c', 'at&c'),
        ('networking', 'networking'),
        ('dotnet', 'dotnet'),
        ('software engineering', 'software engineering'),
        ('algorthiums', 'algorthiums'),
        ('c', 'c'),
        ('physics', 'physics'),
        ('mechnical', 'mechnical'),
        ('electronics', 'electronics'),
        ('java', 'java'),
        ('management fot it', 'management fot it'),
        ('dbms', 'dbms'),
    )

    TAGS = (
        ('Respected', 'Respected'),
        ('Gives Homework', 'Gives Homework'),
        ('Accessible Outside Class', 'Accessible Outside Class'),
        ('Participation Matters', 'Participation Matters'),
        ('Can Skip Class Easily', 'Can Skip Class Easily'),
        ('Fluttershy', 'Fluttershy'),
        ('Inspirational', 'Inspirational'),
        ('Test Heavy', 'Test Heavy'),
        ('Group Projects', 'Group Projects'),
        ('Clear Grading Criteria', 'Clear Grading Criteria'),
        ('Hilarious', 'Hilarious'),
        ('Beware Of Pop Quizzers', 'Beware Of Pop Quizzers'),
        ('Amazing Lectures', 'Amazing Lectures'),
        ('Lecture Heavy', 'Lecture Heavy'),
        ('Caring', 'Caring'),
        ('Extra Credit', 'Extra Credit'),
        ('Tough Grader', 'Tough Grader'),
        ('Have to write notes', 'Have to write notes'),
    )
    SUGGEST = (
        ('yes', 'yes'),
        ('no', 'no'),
    )

    userID = models.ForeignKey(Signups, on_delete=models.DO_NOTHING)
    addteacherID = models.ForeignKey(AddTeacher, on_delete=models.DO_NOTHING)
    praiseID = models.AutoField(primary_key=True)
    worthListening = models.IntegerField()
    starts = models.CharField(max_length=1, choices=STARS)
    subjects = MultiSelectField(choices=SUBJECTS)
    tags = MultiSelectField(choices=TAGS)
    suggest = models.CharField(max_length=1, choices=SUGGEST)
    suggestion = models.TextField()
    datetime = models.DateTimeField(default=datetime.now())

    def __str__(self):
        return self.teacherID
예제 #26
0
class PatientConsultation(PatientBaseModel):
    SUGGESTION_CHOICES = [
        (SuggestionChoices.HI, "HOME ISOLATION"),
        (SuggestionChoices.A, "ADMISSION"),
        (SuggestionChoices.R, "REFERRAL"),
    ]

    patient = models.ForeignKey("PatientRegistration",
                                on_delete=models.CASCADE,
                                related_name="consultations")
    facility = models.ForeignKey("Facility",
                                 on_delete=models.CASCADE,
                                 related_name="consultations")
    symptoms = MultiSelectField(choices=SYMPTOM_CHOICES,
                                default=1,
                                null=True,
                                blank=True)
    other_symptoms = models.TextField(default="", blank=True)
    symptoms_onset_date = models.DateTimeField(null=True, blank=True)
    category = models.CharField(choices=CATEGORY_CHOICES,
                                max_length=8,
                                default=None,
                                blank=True,
                                null=True)
    examination_details = models.TextField(null=True, blank=True)
    existing_medication = models.TextField(null=True, blank=True)
    prescribed_medication = models.TextField(null=True, blank=True)
    suggestion = models.CharField(max_length=3, choices=SUGGESTION_CHOICES)
    referred_to = models.ForeignKey(
        "Facility",
        null=True,
        blank=True,
        on_delete=models.PROTECT,
        related_name="referred_patients",
    )
    admitted = models.BooleanField(default=False)
    admitted_to = models.IntegerField(choices=ADMIT_CHOICES,
                                      default=None,
                                      null=True,
                                      blank=True)
    admission_date = models.DateTimeField(null=True, blank=True)
    discharge_date = models.DateTimeField(null=True, blank=True)

    def __str__(self):
        return f"{self.patient.name}<>{self.facility.name}"

    def save(self, *args, **kwargs):
        if not self.pk or self.referred_to is not None:
            # pk is None when the consultation is created
            # referred to is not null when the person is being referred to a new facility
            self.patient.facility = self.referred_to or self.facility
            self.patient.save()

        super(PatientConsultation, self).save(*args, **kwargs)

    @staticmethod
    def has_write_permission(request):
        if not request.data.get("facility"):
            # Don't bother, the view shall raise a 400
            return True
        return request.user.is_superuser or (
            request.user.user_type >= User.TYPE_VALUE_MAP["Staff"]
            and Facility.objects.get(id=request.data["facility"]).created_by
            == request.user)

    @staticmethod
    def has_read_permission(request):
        return True

    def has_object_read_permission(self, request):
        return request.user.is_superuser or request.user == self.facility.created_by

    def has_object_write_permission(self, request):
        return request.user.is_superuser

    def has_object_update_permission(self, request):
        return request.user == self.facility.created_by

    class Meta:
        constraints = [
            models.CheckConstraint(
                name="if_referral_suggested",
                check=~models.Q(suggestion=SuggestionChoices.R)
                | models.Q(referred_to__isnull=False),
            ),
            models.CheckConstraint(
                name="if_admitted",
                check=models.Q(admitted=False)
                | models.Q(admission_date__isnull=False),
            ),
        ]
예제 #27
0
class car(models.Model):

    state_choice = (
        ('AL', 'Alabama'),
        ('AK', 'Alaska'),
        ('AZ', 'Arizona'),
        ('AR', 'Arkansas'),
        ('CA', 'California'),
        ('CO', 'Colorado'),
        ('CT', 'Connecticut'),
        ('DE', 'Delaware'),
        ('DC', 'District Of Columbia'),
        ('FL', 'Florida'),
        ('GA', 'Georgia'),
        ('HI', 'Hawaii'),
        ('ID', 'Idaho'),
        ('IL', 'Illinois'),
        ('IN', 'Indiana'),
        ('IA', 'Iowa'),
        ('KS', 'Kansas'),
        ('KY', 'Kentucky'),
        ('LA', 'Louisiana'),
        ('ME', 'Maine'),
        ('MD', 'Maryland'),
        ('MA', 'Massachusetts'),
        ('MI', 'Michigan'),
        ('MN', 'Minnesota'),
        ('MS', 'Mississippi'),
        ('MO', 'Missouri'),
        ('MT', 'Montana'),
        ('NE', 'Nebraska'),
        ('NV', 'Nevada'),
        ('NH', 'New Hampshire'),
        ('NJ', 'New Jersey'),
        ('NM', 'New Mexico'),
        ('NY', 'New York'),
        ('NC', 'North Carolina'),
        ('ND', 'North Dakota'),
        ('OH', 'Ohio'),
        ('OK', 'Oklahoma'),
        ('OR', 'Oregon'),
        ('PA', 'Pennsylvania'),
        ('RI', 'Rhode Island'),
        ('SC', 'South Carolina'),
        ('SD', 'South Dakota'),
        ('TN', 'Tennessee'),
        ('TX', 'Texas'),
        ('UT', 'Utah'),
        ('VT', 'Vermont'),
        ('VA', 'Virginia'),
        ('WA', 'Washington'),
        ('WV', 'West Virginia'),
        ('WI', 'Wisconsin'),
        ('WY', 'Wyoming'),
    )

    year_choice = []
    for r in range(2000, (datetime.now().year + 1)):
        year_choice.append((r, r))

    features_choices = (
        ('Cruise Control', 'Cruise Control'),
        ('Audio Interface', 'Audio Interface'),
        ('Airbags', 'Airbags'),
        ('Air Conditioning', 'Air Conditioning'),
        ('Seat Heating', 'Seat Heating'),
        ('Alarm System', 'Alarm System'),
        ('ParkAssist', 'ParkAssist'),
        ('Power Steering', 'Power Steering'),
        ('Reversing Camera', 'Reversing Camera'),
        ('Direct Fuel Injection', 'Direct Fuel Injection'),
        ('Auto Start/Stop', 'Auto Start/Stop'),
        ('Wind Deflector', 'Wind Deflector'),
        ('Bluetooth Handset', 'Bluetooth Handset'),
    )

    door_choices = (
        ('2', '2'),
        ('3', '3'),
        ('4', '4'),
        ('5', '5'),
        ('6', '6'),
    )

    car_title = models.CharField(max_length=255)
    state = models.CharField(choices=state_choice, max_length=100)
    city = models.CharField(max_length=100)
    color = models.CharField(max_length=100)
    model = models.CharField(max_length=100)
    year = models.IntegerField(('year'), choices=year_choice)
    condtion = models.CharField(max_length=100)
    price = models.IntegerField()
    descrption = RichTextField()
    car_photo = models.ImageField(upload_to='photos/%Y/%m/%d/')
    car_photo_1 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    car_photo_2 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    car_photo_3 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    car_photo_4 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    features = MultiSelectField(choices=features_choices)
    body_style = models.CharField(max_length=100)
    engine = models.CharField(max_length=100)
    transmtion = models.CharField(max_length=100)
    interior = models.CharField(max_length=100)
    miles = models.IntegerField()
    doors = models.CharField(choices=door_choices, max_length=10)
    passengers = models.IntegerField()
    vin_no = models.CharField(max_length=100)
    milage = models.IntegerField()
    fuel_type = models.CharField(max_length=50)
    no_of_owners = models.CharField(max_length=100)
    is_featured = models.BooleanField(default=False)
    created_date = models.DateTimeField(default=datetime.now, blank=True)

    def __str__(self):
        return self.car_title
예제 #28
0
class Visitor(models.Model):
    first_name = models.CharField(max_length=3000,
                                  verbose_name="First Name",
                                  blank=False)
    last_name = models.CharField(max_length=3000,
                                 verbose_name="Last Name",
                                 blank=False)
    email = models.EmailField(max_length=3000,
                              verbose_name="Email",
                              blank=False)
    phone_number = models.CharField(max_length=10,
                                    verbose_name="Main Phone Number",
                                    blank=False)
    address = models.CharField(max_length=3000,
                               verbose_name="Address",
                               blank=False)
    city = models.CharField(max_length=3000, verbose_name="City", blank=False)

    referral_choices = [
        ("Friend", "Friend"),
        ("Online Advertisement", "Online Advertisement"),
        ("Other", "Other"),
    ]
    referral = models.CharField(
        max_length=3000,
        choices=referral_choices,
        verbose_name="How did you hear about our services?",
        blank=True)

    options1 = (
        ("Job Placement Assistance", 'Job Placement Assistance'),
        ("Resume Preparation", 'Resume Preparation'),
        ("Mock Interviewing", 'Mock Interviewing'),
        ("Career Counseling", 'Career Counseling'),
    )
    options2 = (
        ("Construction", 'Construction'),
        ("Pre-Apprenticeship", 'Pre-Apprenticeship'),
        ("Microsoft Office Certification", 'Microsoft Office Certification'),
        ("A+ certification", 'A+ certification'),
        ("paintWorks", 'paintWorks'),
    )
    options3 = (
        ("Public Income Benefits Screening",
         'Public Income Benefits Screening'),
        ("Financial Workshop", 'Financial Workshop'),
        ("Financial Coaching", 'Financial Coaching '),
    )
    options4 = (
        ("Start Saving on a Shoestring", 'Start Saving on a Shoestring'),
        ("Early Career Guide to Becoming Financially Fit",
         'Early Career Guide to Becoming Financially Fit'),
        ("MoneyWISE is a Family Affair)", 'MoneyWISE is a Family Affair'),
        ("Managing Credit and Debt - The RIGHT Way",
         'Managing Credit and Debt - The RIGHT Way'),
        ("Protecting Your Assets; Protecting Your Family",
         'Protecting Your Assets; Protecting Your Family'),
    )
    options5 = (
        ("Rental Assistance / Counseling", 'Rental Assistance / Counseling'),
        ("First Time Homebuyer Counseling", 'First Time Homebuyer Counseling'),
        ("Foreclosure Counseling", 'Foreclosure Counseling'),
        ("Post Purchase Counseling", 'Post Purchase Counseling'),
    )
    options6 = (
        ("High School Equivalency Program", 'High School Equivalency Program'),
        ("Job Readiness", 'Job Readiness'),
        ("Career Preparation", 'Career Preparation'),
    )
    options7 = (
        ("Early Childhood Center", 'Early Childhood Center'),
        ("Newark Kids Code", 'Newark Kids Code'),
    )
    options8 = (
        ("Youth Programs", 'Youth Programs'),
        ("Adult Programs", 'Adult Programs'),
        ("Early Childhood", 'Early Childhood'),
    )
    options9 = (("Food Referral", 'Food Referral'), ("Computer Lab",
                                                     'Computer Lab'),
                ("Make Copies", 'Make Copies'), ("Other", 'Other'))
    purpose1 = MultiSelectField(
        choices=options1,
        default="None",
        verbose_name="<strong>Employment Assistance</strong>",
        blank=True)
    purpose2 = MultiSelectField(
        choices=options2,
        default="None",
        verbose_name="<strong>Training Programs</strong>",
        blank=True)
    purpose3 = MultiSelectField(
        choices=options3,
        default="None",
        verbose_name="<strong>Financial Information</strong>",
        blank=True)
    purpose4 = MultiSelectField(choices=options4,
                                default="None",
                                verbose_name="<strong>Workshops</strong>",
                                blank=True)
    purpose5 = MultiSelectField(
        choices=options5,
        default="None",
        verbose_name="<strong>Housing or Rental Assistance</strong>",
        blank=True)
    purpose6 = MultiSelectField(
        choices=options6,
        default="None",
        verbose_name="<strong>Young Adult Programs / Youth Programs</strong>",
        blank=True)
    purpose7 = MultiSelectField(
        choices=options7,
        default="None",
        verbose_name="<strong>Youth Education</strong>",
        blank=True)
    purpose8 = MultiSelectField(choices=options8,
                                default="None",
                                verbose_name="<strong>Volunteering</strong>",
                                blank=True)
    purpose9 = MultiSelectField(choices=options9,
                                default="None",
                                verbose_name="<strong>Other</strong>",
                                blank=True)
    major_purpose = models.CharField(max_length=264,
                                     default="None",
                                     verbose_name="Major Purpose")

    choices = [
        ("Male", "Male"),
        ("Female", "Female"),
        ("Other", "Other"),
    ]
    gender = models.CharField(max_length=100,
                              choices=choices,
                              verbose_name="Gender",
                              blank=False)

    ##Additional Info
    nums = [
        ("0", '0'),
        ("1", "1"),
        ("2", "2"),
        ("3", "3"),
        ("4", "4"),
        ("5 or above", "5 or above"),
    ]
    household_number = models.CharField(
        max_length=3000,
        choices=nums,
        verbose_name="Number of People in Household",
        blank=False)

    dob = models.CharField(
        max_length=10,
        help_text='Please provide in the following format: MM/DD/YYY',
        verbose_name="Date of Birth",
        blank=False)

    race_choices = [
        ("White", "White"),
        ("Black/Afro America", "Black/Afro American"),
        ("Hispanic", "Hispanic"),
        ("Asian", "Asian"),
        ("Mixed", "Mixed"),
        ("Other", "Other"),
    ]

    race = models.CharField(max_length=3000,
                            choices=race_choices,
                            verbose_name="Ethnicity",
                            blank=False)

    status = [
        ("Single", "Single"),
        ("Divorced", "Divorced"),
        ("Widowed", "Widowed"),
        ("Married", "Married"),
    ]

    marital_status = models.CharField(max_length=3000,
                                      choices=status,
                                      verbose_name="Matrial Status",
                                      blank=False)

    income = [
        ("under $25,000", 'under $25,000'),
        ("$25,000 - $35,000", '$25,000 - $35,000'),
        ("$35,000 - $45,000", '$35,000 - $45,000'),
        ("$45,000 - $55,000", '$45,000 - $55,000'),
        ("$55,000 - $65,000", '$55,000 - $65,000'),
        ("$65,000 - $75,000", '$65,000 - $75,000'),
        ("$75,000 - $85,000", '$75,000 - $85,000'),
        ("over $85,000", 'over $85,000'),
    ]

    household_income = models.CharField(max_length=100,
                                        choices=income,
                                        verbose_name="Household Income",
                                        blank=False)

    binary = [("Yes", "Yes"), ("No", "No")]

    veteran = models.CharField(max_length=100,
                               choices=binary,
                               verbose_name="Are you a Veteran?",
                               blank=False)

    disabled = models.CharField(max_length=100,
                                choices=binary,
                                verbose_name="Are you Disabled?",
                                blank=False)

    def __str__(self):
        return self.first_name
예제 #29
0
파일: models.py 프로젝트: rresendez/jasmin
class Customer(models.Model):

    #Create list of tuples for each choices field where the first element in each tuple is the actual value to be set on the model, and the second element is the human-readable name.

    genderList = (('Male', 'Male'), ('Female', 'Female'))
    occupationList = (('Arts', 'Arts'), ('Architecture', 'Architecture'),
                      ('Advertising', 'Advertising'),
                      ('Accounting', 'Accounting'), ('Information Technology',
                                                     'Information Technology'),
                      ('Clerical', 'Clerical'), ('Sales', 'Sales'), ('Other',
                                                                     'Other'))
    mediaList = (('Search Engine', 'Search Engine'), ('Social Network',
                                                      'Social Network'),
                 ('Advertisement',
                  'Advertisement'), ('Friend', 'Friend'), ('Other', 'Other'))

    fname = models.CharField(max_length=30,
                             verbose_name='First Name',
                             blank=False,
                             null=False)
    lname = models.CharField(max_length=30,
                             verbose_name='Last Name',
                             blank=False,
                             null=False)
    email = models.EmailField(null=False,
                              verbose_name='Email',
                              blank=False,
                              primary_key=True)
    phoneNumber = models.CharField(max_length=12,
                                   verbose_name='phoneNumber',
                                   null=False,
                                   blank=False)

    #use choices attribute to point to genderList; make sure to set default=None to avoid Django display an empty choice, ex: ----------
    gender = models.CharField(choices=genderList,
                              max_length=6,
                              verbose_name='Gender',
                              null=False,
                              blank=False,
                              default=None)

    #use choices attribute to point to occupationList; make sure to set default=None to avoid Django display an empty choice, ex: ----------
    occupation = models.CharField(choices=occupationList,
                                  max_length=30,
                                  verbose_name='Occupation',
                                  null=False,
                                  blank=False,
                                  default=None)

    #change media to a MultiSelectField and use choices attribute to point to mediaList; make sure to set default=None to avoid Django display an empty choice, ex: -----
    media = MultiSelectField(choices=mediaList,
                             max_length=200,
                             verbose_name='Media',
                             null=False,
                             blank=False,
                             default=None)

    comments = models.CharField(max_length=200,
                                verbose_name='Comments',
                                null=True,
                                blank=True)
    password = models.CharField(
        max_length=100,
        verbose_name='Password',
        help_text='Please use at least one uppercase and a number',
        null=False,
        blank=False)
    registeredDate = models.DateTimeField(auto_now_add=True, auto_now=False)
    updatedDate = models.DateTimeField(auto_now_add=False, auto_now=True)
예제 #30
0
class Car(models.Model):
    state_choice = {
        ('AP', 'Andhra Pradesh'),
        ('AR', 'Arunachal Pradesh'),
        ('AS', 'Assam'),
        ('BR', 'Bihar'),
        ('CG', 'Chhattisgarh'),
        ('GA', 'Goa'),
        ('GJ', 'Gujarat'),
        ('HR', 'Haryana'),
        ('HP', 'Himachal Pradesh'),
        ('JH', 'Jharkhand'),
        ('KA', 'Karnataka'),
        ('KL', 'Kerala'),
        ('MP', 'Madhya Pradesh'),
        ('MH', 'Maharashtra'),
        ('ML', 'Meghalaya'),
        ('MZ', 'Mizoram'),
        ('NL', 'Nagaland'),
        ('OD', 'Odisha'),
        ('PB', 'Punjab'),
        ('RJ', 'Rajasthan'),
        ('SK', 'Sikkim'),
        ('TN', 'Tamil Nadu'),
        ('TS', 'Telangana'),
        ('TR', 'Tripura'),
        ('UP', 'Uttar Pradesh'),
        ('UK', 'Uttarakhand'),
        ('WB', 'West Bengal'),
        ('AN', 'Andaman and Nicobar Islands'),
        ('CH', 'Chandigarh'),
        ('DD', 'Dadra and Nagar Haveli and Daman and Diu'),
        ('DL', 'Delhi'),
        ('JK', 'Jammu and Kashmir'),
        ('LA', 'Ladakhk'),
        ('LD', 'Lakshadweep'),
        ('PY', 'Puducherry'),
    }

    year_choice = []
    for r in range(2000, (datetime.now().year + 1)):
        year_choice.append((r, r))

    features_choices = (
        ('Cruise Control', 'Cruise Control'),
        ('Audio Interface', 'Audio Interface'),
        ('Airbags', 'Airbags'),
        ('Air Conditioning', 'Air Conditioning'),
        ('Seat Heating', 'Seat Heating'),
        ('Alarm System', 'Alarm System'),
        ('ParkAssist', 'ParkAssist'),
        ('Power Steering', 'Power Steering'),
        ('Reversing Camera', 'Reversing Camera'),
        ('Direct Fuel Injection', 'Direct Fuel Injection'),
        ('Auto Start/Stop', 'Auto Start/Stop'),
        ('Wind Deflector', 'Wind Deflector'),
        ('Bluetooth Handset', 'Bluetooth Handset'),
    )

    door_choices = (
        ('2', '2'),
        ('3', '3'),
        ('4', '4'),
        ('5', '5'),
        ('6', '6'),
    )

    car_title = models.CharField(max_length=255)
    state = models.CharField(choices=state_choice, max_length=100)
    city = models.CharField(max_length=100, default="")
    color = models.CharField(max_length=100)
    model = models.CharField(max_length=100)
    year = models.IntegerField(('year'), choices=year_choice)
    condition = models.CharField(max_length=100)
    price = models.IntegerField()
    description = RichTextField()
    car_photo = models.ImageField(upload_to='photos/%Y/%m/%d/')
    car_photo_1 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    car_photo_2 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    car_photo_3 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    car_photo_4 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    features = MultiSelectField(choices=features_choices)
    body_style = models.CharField(max_length=100)
    engine = models.CharField(max_length=100)
    transmission = models.CharField(max_length=100)
    interior = models.CharField(max_length=100)
    miles = models.IntegerField()
    doors = models.CharField(choices=door_choices, max_length=100)
    passengers = models.IntegerField()
    vin_no = models.CharField(max_length=100)
    milage = models.IntegerField()
    fuel_type = models.CharField(max_length=50)
    no_of_owners = models.CharField(max_length=100)
    is_featured = models.BooleanField(default=False)
    created_date = models.DateTimeField(default=datetime.now, blank=True)

    def __str__(self):
        return self.car_title