Ejemplo n.º 1
0
class CashoutCard(models.Model):
    type = models.CharField(max_length=100)
    terms_and_conditions = models.CharField(max_length=3000,
                                            null=True,
                                            blank=True)
    shipping_and_handling = models.CharField(max_length=3000,
                                             null=True,
                                             blank=True)
    brand_details = models.CharField(max_length=1000, null=True, blank=True)
    coupon_code = models.CharField(max_length=100)
    amount = MoneyField(max_digits=10,
                        decimal_places=2,
                        default_currency='INR')
    user = models.ForeignKey(BdayAppUser,
                             related_name='cards',
                             on_delete=models.CASCADE)
    created_date = models.DateTimeField(default=datetime.datetime.now)
    cashout_transaction_id = models.ForeignKey(Transaction,
                                               null=True,
                                               blank=True)
    associated_event = models.ForeignKey(Event,
                                         null=True,
                                         blank=True,
                                         related_name="associated_event")
    objects = money_manager(models.Manager())
Ejemplo n.º 2
0
class Transaction(models.Model):
    from_wallet = models.ForeignKey(Wallet,
                                    related_name='from_wallet',
                                    null=True)
    to_wallet = models.ForeignKey(Wallet, related_name='to_wallet', null=True)
    type = models.CharField(max_length=20,
                            choices=(('D', 'DEBIT'), ('C', 'CREDIT')))
    amount = MoneyField(max_digits=10,
                        decimal_places=2,
                        default_currency='INR')
    default_currency = models.CharField(max_length=10)
    status = models.CharField(max_length=20,
                              choices=(('S', 'TXN_SUCCESS'), ('P', 'PENDING'),
                                       ('F', 'TXN_FAILURE'), ('O', 'OPEN')))
    order_id = models.CharField(max_length=1000, null=True)
    external_transaction_flag = models.BooleanField()
    external_subscription_id = models.BigIntegerField(null=True)
    external_transaction_id = models.BigIntegerField(null=True)
    bank_transaction_id = models.CharField(max_length=100, null=True)
    # external_response_code = models.CharField(max_length=100, null=True)
    # external_response_message = models.CharField(max_length=100, null=True)
    transaction_date = models.DateTimeField()
    gateway_name = models.CharField(max_length=100, null=True)
    bank_name = models.CharField(max_length=100, null=True)
    payment_mode = models.CharField(max_length=100, null=True)
    promo_camp_id = models.CharField(max_length=100, null=True)
    promo_status = models.CharField(max_length=100, null=True)
    promo_response_code = models.CharField(max_length=100, null=True)
    #checksum_hash = models.CharField(max_length=1000, null=True)
    objects = money_manager(models.Manager())
Ejemplo n.º 3
0
class Female(MatrimonyProfile):
    objects = money_manager(FemaleManager())

    class Meta:
        proxy = True

    def save(self, *args, **kwargs):
        if self.id is None:
            self.gender = "F"
        super().save(*args, **kwargs)
Ejemplo n.º 4
0
class FeaturedEvent(models.Model):
    event = models.ForeignKey(Event, blank=False, null=False)
    owner = models.ForeignKey("accounts.Account", blank=True, null=True)
    start_time = models.DateTimeField('starting time')
    end_time = models.DateTimeField('ending time',
                                    auto_now=False,
                                    auto_now_add=False)
    active = models.BooleanField(default=False)
    owned_by_admin = models.BooleanField(default=False)

    views = models.IntegerField(default=0)
    clicks = models.IntegerField(default=0)

    cost = MoneyField(max_digits=10, decimal_places=2, default_currency='CAD')

    all_of_canada = models.BooleanField(default=True)
    regions = models.ManyToManyField("cities.Region")

    objects = money_manager(models.Manager())
    future = FutureFeaturedEventManager()
    admin = AdminFeaturedManager()

    def save(self, *args, **kwargs):
        self.end_time = self.end_time.replace(hour=23,
                                              minute=59,
                                              second=59,
                                              microsecond=0)

        super(FeaturedEvent, self).save(*args, **kwargs)
        return self

    def __unicode__(self):
        return self.event.name

    def click(self):
        FeaturedEvent.objects.filter(id=self.id).update(clicks=F("clicks") + 1)

    def view(self):
        FeaturedEvent.objects.filter(id=self.id).update(views=F("views") + 1)

    def event_day(self):
        try:
            event = Event.future_events.get(id=self.event.id)
        except Event.DoesNotExist:
            event = Event.archived_events.get(id=self.event.id)

        return event

    def regions_representation(self):
        return ", ".join(self.regions.all().values_list("name", flat=True))

    @staticmethod
    def click_featured_events(featured_events):
        FeaturedEvent.objects.filter(id__in=featured_events).update(
            clicks=F("clicks") + 1)
Ejemplo n.º 5
0
class AdvertisingType(models.Model):
    name = models.CharField(max_length=128)
    width = models.IntegerField()
    height = models.IntegerField()
    cpm_price = MoneyField(max_digits=10,
                           decimal_places=2,
                           default_currency='CAD')
    cpc_price = MoneyField(max_digits=10,
                           decimal_places=2,
                           default_currency='CAD')
    active = models.BooleanField(default=True)

    objects = money_manager(models.Manager())

    def __unicode__(self):
        return "%s (%d x %d)" % (self.name, self.width, self.height)
Ejemplo n.º 6
0
class GroupyWallet(models.Model):
    balance = MoneyField(max_digits=10,
                         decimal_places=2,
                         default_currency='INR')
    minimum_balance = MoneyField(max_digits=10,
                                 decimal_places=2,
                                 default_currency='INR')
    maximum_balance = MoneyField(max_digits=10,
                                 decimal_places=2,
                                 default_currency='INR')
    default_currency = models.CharField(max_length=20)
    associated_user = models.OneToOneField(BdayAppUser,
                                           related_name='user_wallet',
                                           null=True)
    creation_date = models.DateTimeField()
    objects = money_manager(models.Manager())
    deduct_percentage = models.DecimalField(max_digits=2)
Ejemplo n.º 7
0
class Membership(User):
    objects = money_manager(MembershipManager())

    start_date = DateField("Inicio Membresía", auto_now_add=True)
    balance = MoneyField("Balance",
                         max_digits=10,
                         decimal_places=2,
                         null=True,
                         blank=True,
                         default=Money(100, MXN),
                         default_currency=MXN,
                         currency_choices=VALID_CURRENCIES)
    mx_state = MXStateField("Ubicación", default='NLE')

    class Meta:
        ordering = ('start_date', )
        verbose_name = 'Membresía'
        db_table = 'demo_membership'
Ejemplo n.º 8
0
class Wallet(models.Model):
    balance = MoneyField(max_digits=10,
                         decimal_places=2,
                         default_currency='INR')
    minimum_balance = MoneyField(max_digits=10,
                                 decimal_places=2,
                                 default_currency='INR')
    maximum_balance = MoneyField(max_digits=10,
                                 decimal_places=2,
                                 default_currency='INR')
    type = models.CharField(max_length=20,
                            choices=(('U', 'USER'), ('E', 'EVENT')))
    default_currency = models.CharField(max_length=20)
    associated_user = models.OneToOneField(BdayAppUser,
                                           related_name='user_wallet',
                                           null=True)
    associated_event = models.OneToOneField(Event,
                                            related_name='event_wallet',
                                            null=True)
    creation_date = models.DateTimeField()
    objects = money_manager(WalletManager())
Ejemplo n.º 9
0
class ModelWithCustomManager(models.Model):
    field = MoneyField(max_digits=10, decimal_places=2)

    manager = money_manager(MoneyManager())
Ejemplo n.º 10
0
class NotNullMoneyFieldModel(models.Model):
    money = MoneyField(max_digits=10, decimal_places=2)

    objects = money_manager(ModelManager())
Ejemplo n.º 11
0
class Account(UserenaBaseProfile, FacebookProfileModel, AccountSettingsMixin):
    user = models.OneToOneField(User,
                                unique=True,
                                verbose_name=_('user'),
                                related_name='my_profile')

    tax_origin_confirmed = models.BooleanField(default=False)
    not_from_canada = models.BooleanField(default=False)
    native_region = models.ForeignKey(Region,
                                      blank=True,
                                      null=True,
                                      related_name="native_for_accounts")

    website = models.URLField(blank=True, null=True, default='')

    # Reminder

    # remind options
    # remind time before event
    reminder_time_before_event = models.TimeField(blank=True, null=True)
    reminder_days_before_event = models.IntegerField(blank=True, null=True)
    reminder_hours_before_event = models.IntegerField(blank=True, null=True)

    # remind on week day
    reminder_on_week_day = models.CharField(max_length=1,
                                            choices=DAYS_OF_WEEK,
                                            blank=True,
                                            null=True,
                                            default=0)
    reminder_on_week_day_at_time = models.TimeField(blank=True, null=True)

    # remind each day, starting from
    reminder_each_day_from = models.IntegerField(blank=True, null=True)
    reminder_each_day_at_time = models.TimeField(blank=True, null=True)

    reminder_type_state = models.IntegerField(
        blank=True, null=False, default=REMINDER_TYPES['HOURS']['id'])

    # remind types

    reminder_with_website = models.BooleanField(default=True)
    reminder_with_email = models.BooleanField(default=True)
    reminder_with_sms = models.BooleanField(default=False)

    reminder_email = models.EmailField(blank=True, null=True)
    reminder_phonenumber = models.CharField(max_length=15,
                                            blank=True,
                                            null=True)

    # single events for remind
    reminder_single_events = models.ManyToManyField('event.SingleEvent',
                                                    blank=True,
                                                    null=True)

    in_the_loop_tags = TaggableManager(blank=True)

    # In the Loop

    in_the_loop_with_website = models.BooleanField(default=True)
    in_the_loop_with_email = models.BooleanField(default=True)
    in_the_loop_with_sms = models.BooleanField(default=False)

    in_the_loop_email = models.EmailField(blank=True, null=True)
    in_the_loop_phonenumber = models.CharField(max_length=15,
                                               blank=True,
                                               null=True)

    all_of_canada = models.BooleanField()
    regions = models.ManyToManyField(Region)
    cities = models.ManyToManyField(City)

    bonus_budget = MoneyField(max_digits=10,
                              decimal_places=2,
                              default_currency='CAD')
    fb_pages = models.TextField(blank=True, null=True)

    objects = models.Manager()
    accounts = money_manager(models.Manager())

    def future_events(self):
        return SingleEvent.future_events.filter(event__owner_id=self.user.id)

    def featured_events(self):
        return FeaturedEvent.objects.filter(owner__id=self.id)

    def archived_events(self):
        return SingleEvent.archived_events.filter(event__owner_id=self.id)

    def in_the_loop_events(self):
        region_ids = self.regions.all().values_list("id", flat=True)
        city_ids = self.cities.all().values_list("id", flat=True)

        if self.all_of_canada:
            location_query = Q(event__venue__country__name="Canada")
        else:
            location_query = Q(event__venue__city__id__in=city_ids) | Q(
                event__venue__city__region__id__in=region_ids) | Q(
                    event__venue__city__subregion__id__in=region_ids)

        return SingleEvent.future_events.filter(
            Q(event__tagged_items__tag__name__in=self.in_the_loop_tags.all().
              values_list("name", flat=True)),
            location_query).annotate(Count("id"))

    def reminder_single_events_in_future(self):
        return SingleEvent.future_events.filter(
            id__in=self.reminder_single_events.values_list('id', flat=True))

    def ads(self):
        return Advertising.objects.filter(campaign__account__id=self.id)

    def campaigns(self):
        return AdvertisingCampaign.objects.filter(account__id=self.id)

    def taxes(self):
        if self.native_region:
            return AccountTax.objects.filter(regions__id=self.native_region.id)
        else:
            return []

    def reminder_weekday(self):
        return "%s" % dict(DAYS_OF_WEEK)[self.reminder_on_week_day]

    def in_the_loop_tag_names(self):
        return self.in_the_loop_tags.all().values_list("name", flat=True)

    def advertising_region(self):
        if self.not_from_canada:
            return None

        return self.native_region

    def shared_campaigns(self):
        return AdvertisingCampaign.objects.filter(
            Q(account=self) | Q(shareadvertisingcampaign__account=self))

    def notices(self):
        return Notice.objects.filter(user__id=self.user.id,
                                     read=False).order_by('-id')

    def notices_history(self):
        return Notice.objects.filter(user__id=self.user.id).order_by('-id')

    def venues(self):
        return Venue.objects.filter(user=self.user, suggested=True)

    def check_reminder_type_state(self, type, state=None):
        if not state:
            state = self.reminder_type_state

        return bool(state & REMINDER_TYPES[type]['id'])
Ejemplo n.º 12
0
class AdvertisingCampaign(models.Model):
    name = models.CharField(max_length=128)
    account = models.ForeignKey('accounts.Account')
    venue_account = models.ForeignKey('accounts.VenueAccount',
                                      blank=True,
                                      null=True,
                                      on_delete=models.SET_NULL)
    all_of_canada = models.BooleanField()
    regions = models.ManyToManyField(Region)

    budget = MoneyField(max_digits=10,
                        decimal_places=2,
                        default_currency='CAD')
    ammount_spent = MoneyField(max_digits=18,
                               decimal_places=10,
                               default_currency='CAD')

    enough_money = models.BooleanField(default=False)

    started = models.DateTimeField(auto_now=True, auto_now_add=True)
    ended = models.DateTimeField(auto_now=False,
                                 auto_now_add=False,
                                 null=True,
                                 blank=True)

    active_from = models.DateTimeField('active to',
                                       null=True,
                                       blank=True,
                                       auto_now=False,
                                       auto_now_add=False)
    active_to = models.DateTimeField('active to',
                                     null=True,
                                     blank=True,
                                     auto_now=False,
                                     auto_now_add=False)

    website = models.URLField()

    free = models.BooleanField(default=False)

    objects = money_manager(models.Manager())
    admin = AdminAdvertisingCampaignManager()
    with_unused_money = AdvertisingCampaignWithUnsusedMoney()

    active = ActiveAdvertisingCampaign()
    expired = ExpiredAdvertisingCampaign()

    def save(self, *args, **kwargs):
        if self.enough_money and self.ammount_spent >= self.budget and self.budget > Money(
                0, CAD):
            inform_user_that_money_was_spent(self)

        if self.ammount_spent >= self.budget:
            self.enough_money = False
        else:
            self.enough_money = True

        super(AdvertisingCampaign, self).save(*args, **kwargs)
        return self

    def __unicode__(self):
        return self.name

    def ammount_remaining(self):
        return self.budget - self.ammount_spent

    def regions_representation(self):
        return ", ".join(self.regions.all().values_list("name", flat=True))

    def is_active(self):
        now = datetime.datetime.now()
        return (self.enough_money or self.free) and (
            not self.active_from
            or self.active_from < now) and (not self.active_to
                                            or self.active_to > now)

    def is_finished(self):
        return self.active_to and self.active_to < datetime.datetime.now()

    def is_future(self):
        return self.active_from and self.active_from > datetime.datetime.now()