コード例 #1
0
class ValidatedMoneyModel(models.Model):
    money = MoneyField(
        max_digits=10,
        decimal_places=2,
        validators=[
            MinMoneyValidator({"EUR": 100, "USD": 50}),
            MaxMoneyValidator({"EUR": 1000, "USD": 500}),
            MinMoneyValidator(Money(500, "NOK")),
            MaxMoneyValidator(Money(900, "NOK")),
            MinMoneyValidator(10),
            MaxMoneyValidator(1500),
        ],
    )
コード例 #2
0
class Transaction(models.Model):
    balance = models.ForeignKey(Balance, on_delete=models.CASCADE)
    amount = MoneyField(max_digits=14,
                        decimal_places=2,
                        default_currency='USD',
                        validators=[
                            MinMoneyValidator(0),
                            MaxMoneyValidator(100000),
                            MinMoneyValidator({'USD': 0}),
                            MaxMoneyValidator({'USD': 100000}),
                        ])
    details = models.CharField(max_length=50)
    date_time = models.DateTimeField(auto_now=True)
コード例 #3
0
class ValidatedMoneyModel(models.Model):
    money = MoneyField(max_digits=10,
                       decimal_places=2,
                       validators=[
                           MinMoneyValidator({
                               'EUR': 100,
                               'USD': 50
                           }),
                           MaxMoneyValidator({
                               'EUR': 1000,
                               'USD': 500
                           }),
                           MinMoneyValidator(Money(500, 'NOK')),
                           MaxMoneyValidator(Money(900, 'NOK')),
                           MinMoneyValidator(10),
                           MaxMoneyValidator(1500),
                       ])
コード例 #4
0
 def __init__(self, *args, **kwargs):
     self.default_currency = kwargs.pop("default_currency", None)
     super(MoneyField, self).__init__(*args, **kwargs)
     # Rest Framework converts `min_value` / `max_value` to validators, that are not aware about `Money` class
     # We need to adjust them
     for idx, validator in enumerate(self.validators):
         if isinstance(validator, MinValueValidator):
             self.validators[idx] = MinMoneyValidator(self.min_value)
         elif isinstance(validator, MaxValueValidator):
             self.validators[idx] = MaxMoneyValidator(self.max_value)
コード例 #5
0
ファイル: models.py プロジェクト: mohamedelghool/stock_market
class UserProfile(models.Model):
    user = models.OneToOneField(User, related_name='user', on_delete=models.PROTECT)
    photo = models.ImageField(upload_to='profile_image', blank=True)
    website = models.URLField(default='', blank=True)
    bio = models.TextField(default='', blank=True)
    phone = models.CharField(max_length=20, blank=True, default='')
    city = models.CharField(max_length=100, default='', blank=True)
    country = models.CharField(max_length=100, default='', blank=True)
    organization = models.CharField(max_length=100, default='', blank=True)
    Credit = MoneyField(
        max_digits=10,
        decimal_places=2,
        validators=[
            MinMoneyValidator(0),
            MaxMoneyValidator(1500),
            MinMoneyValidator(Money(0, 'NOK')),
            MaxMoneyValidator(Money(900, 'NOK')),
            MinMoneyValidator({'EUR': 100, 'USD': 0}),
            MaxMoneyValidator({'EUR': 1000, 'USD': 500}),
        ])

    def __str__(self):
        return str(self.user)
コード例 #6
0
class PettycashReimbursementRequest(models.Model):
    dst = models.ForeignKey(
        User,
        help_text="Person to reemburse (usually you, yourself)",
        on_delete=models.CASCADE,
        related_name="isReimbursedTo",
    )

    date = models.DateField(help_text="Date of expense", default=timezone.now)

    submitted = models.DateTimeField(
        help_text="Date the request was submitted",
        default=timezone.now,
    )

    amount = MoneyField(
        max_digits=8,
        decimal_places=2,
        default_currency="EUR",
        validators=[
            MinMoneyValidator(0),
            MaxMoneyValidator(settings.MAX_PAY_REIMBURSE.amount),
        ],
        help_text=
        "This system will only accept reimbursement up to %s. Above that; contact the trustees directly (%s)"
        % (settings.MAX_PAY_REIMBURSE.amount, settings.TRUSTEES),
    )

    viaTheBank = models.BooleanField(
        default=False,
        help_text=
        "Check this box if you want to be paid via a IBAN/SEPA transfer; otherwise the amount will be credited to your Makerspace petty cash acount",
    )

    description = models.CharField(
        max_length=300,
        help_text="Description / omschrijving van waarvoor deze betaling is",
    )

    scan = StdImageField(
        upload_to=upload_to_pattern,
        delete_orphans=True,
        variations=settings.IMG_VARIATIONS,
        validators=settings.IMG_VALIDATORS,
        blank=True,
        null=True,
        help_text="Scan, photo or similar of the receipt",
    )
    history = HistoricalRecords()
コード例 #7
0
class Transaction(models.Model):
    STATUS = (('SUCCESS', 'Success'), ('FAILED', 'Failed'), ('PENDING',
                                                             'Pending'))
    SERVICES = (
        ('P2P', 'Pochi to Pochi'),
        ('DEPOSIT', 'Deposit'),
        ('WITHDRAW', 'Withdraw'),
        ('BONUS', 'Bonus'),
        ('FEES', 'Fees'),
    )
    full_timestamp = models.DateTimeField(auto_now_add=True)
    profile_id = models.CharField(max_length=10, db_index=True)
    account = models.CharField(max_length=13, db_index=True)
    msisdn = models.CharField(max_length=10, db_index=True, default='NA')
    trans_id = models.CharField(max_length=25, default='NA')
    service = models.CharField(max_length=8, db_index=True, choices=SERVICES)
    channel = models.CharField(max_length=25, db_index=True, default='NA')
    mode = models.CharField(max_length=6,
                            db_index=True,
                            choices=MODES,
                            default='POCHI')
    dst_account = models.CharField(max_length=25, db_index=True, default='NA')
    amount = MoneyField(max_digits=10,
                        decimal_places=2,
                        default_currency='TZS',
                        validators=[
                            MinMoneyValidator({
                                'TZS': 1000,
                                'USD': 50
                            }),
                            MaxMoneyValidator({
                                'TZS': 1000000000,
                                'USD': 1000000
                            }),
                        ])
    charge = MoneyField(max_digits=10,
                        decimal_places=2,
                        default_currency='TZS')
    reference = models.CharField(max_length=15, db_index=True, default='NA')
    status = models.CharField(max_length=7, choices=STATUS, default='PENDING')
    result_code = models.CharField(max_length=3, default='111', db_index=True)
    message = models.TextField(max_length=1024, default='NA')
    processed_timestamp = models.DateTimeField(null=True)
コード例 #8
0
class CashOut(models.Model):
    STATUS = (('SUCCESS', 'Success'), ('FAILED', 'Failed'), ('PENDING',
                                                             'Pending'))
    ext_entity = models.CharField(max_length=100)
    ext_acc_no = models.CharField(max_length=30, default='NA')
    amount = MoneyField(max_digits=10,
                        decimal_places=2,
                        default_currency='TZS',
                        validators=[
                            MinMoneyValidator({
                                'TZS': 1000,
                                'USD': 50
                            }),
                            MaxMoneyValidator({
                                'TZS': 1000000000,
                                'USD': 1000000
                            }),
                        ])
    status = models.CharField(max_length=8, choices=STATUS, default='PENDING')
    result = models.CharField(max_length=3, default='111', db_index=True)
    message = models.TextField(max_length=1024, default='NA')
    reference = models.CharField(max_length=15, db_index=True, default='NA')
    ext_trans_id = models.CharField(max_length=25, default='NA')
コード例 #9
0
class Ledger(models.Model):
    TYPES = (('DEBIT', 'Debit'), ('CREDIT', 'Credit'))
    full_timestamp = models.DateTimeField(auto_now_add=True)
    profile_id = models.CharField(max_length=10, db_index=True)
    account = models.CharField(max_length=13, db_index=True)
    trans_type = models.CharField(max_length=10, choices=TYPES)
    mode = models.CharField(max_length=6,
                            db_index=True,
                            choices=MODES,
                            default='POCHI')
    amount = MoneyField(max_digits=10,
                        decimal_places=2,
                        default_currency='TZS',
                        validators=[
                            MinMoneyValidator({
                                'TZS': 1000,
                                'USD': 50
                            }),
                            MaxMoneyValidator({
                                'TZS': 1000000000,
                                'USD': 1000000
                            }),
                        ])
    trans_id = models.CharField(max_length=25, default='NA')
    reference = models.CharField(max_length=15, db_index=True, default='NA')
    available_o_bal = MoneyField(max_digits=10,
                                 decimal_places=2,
                                 default_currency='TZS')
    available_c_bal = MoneyField(max_digits=10,
                                 decimal_places=2,
                                 default_currency='TZS')
    current_o_bal = MoneyField(max_digits=10,
                               decimal_places=2,
                               default_currency='TZS')
    current_c_bal = MoneyField(max_digits=10,
                               decimal_places=2,
                               default_currency='TZS')
コード例 #10
0
ファイル: models.py プロジェクト: ur6yr/UVA-rideshare
class Ride(models.Model):
    # id = serial number
    postedTime = models.DateTimeField('Posted Date')
    rideDate = models.DateField('Ride Date')
    rideTime = models.TimeField('Ride Departure Time:')
    rideStartLoc = LocationField('Departure location',
                                 map_attrs={
                                     'center': [38.034887, -78.504832],
                                     'marker_color': 'blue',
                                     'placeholder': 'Pick a location below'
                                 },
                                 null=True)
    startAddress = models.CharField('Start location',
                                    max_length=500,
                                    default='')
    rideEndLoc = LocationField('Destination',
                               map_attrs={
                                   'center': [38.034887, -78.504832],
                                   'marker_color': 'blue'
                               },
                               null=True)
    endAddress = models.CharField(max_length=500, default='')
    generalDest = models.CharField(max_length=500, default='')
    riderRequests = models.ManyToManyField(Rider, related_name='+')
    riderList = models.ManyToManyField(Rider, related_name='+')
    spacesAvailable = models.IntegerField('Spaces Available', default=0)
    cost = MoneyField(
        decimal_places=2,
        default=0,
        max_digits=5,
        default_currency='USD',
        validators=[MinMoneyValidator(0),
                    MaxMoneyValidator(1000)])
    details = models.TextField('Additional details for riders (optional)',
                               blank=True,
                               default='')
    driver = models.ForeignKey(CustomUser, on_delete=models.CASCADE, null=True)

    #feedback = models.ManyToManyField("self")

    def feedback_list(self):
        return list(self.feedback.all())

    def was_published_recently(self):
        return self.postedTime >= timezone.now() - datetime.timedelta(days=1)

    def has_rideDate(self):
        return self.rideDate != None

    def has_rideTime(self):
        return self.rideTime != None

    def has_rideTime(self):
        return self.rideTime != None

    def in_past(self):
        return (self.rideDate < datetime.date.today())

    def is_current(self):
        return (self.rideDate > datetime.date.today()
                or (self.rideTime > datetime.datetime.now().time()
                    and self.rideDate == datetime.date.today()))

    def has_space(self):
        return (self.spacesAvailable > 0)

    def has_endLoc(self):
        return self.rideEndLoc != None

    def __str__(self):  # __unicode__ on Python 2
        return (self.generalDest)