class Assembly(models.Model): id = models.CharField(primary_key=True, max_length=100) sequences = models.ManyToManyField(to=Sequence, related_name='assemblies', blank=True) biosample = models.ForeignKey(BioSample, related_name="assemblies", on_delete=models.CASCADE, null=True) count = models.IntegerField(null=True, blank=True) bp = models.IntegerField(null=True, blank=True) Ns = models.IntegerField(null=True, blank=True) gaps = models.IntegerField(null=True, blank=True) min = models.IntegerField(null=True, blank=True) max = models.IntegerField(null=True, blank=True) avg = models.IntegerField(null=True, blank=True) N50 = models.IntegerField(null=True, blank=True) owner = models.ForeignKey(Account, related_name="genomes", on_delete=models.CASCADE) DateCreated = models.DateTimeField(verbose_name='date created', auto_now=True) LastUpdate = models.DateTimeField(verbose_name='last update', auto_now=True) description = models.TextField(null=True, blank=True) objects = models.DjongoManager() def __str__(self): return str(self.id)
class Task(models.Model): """ Represents a Tasks assignable to users for project/topic nodes """ STATUS_CHOICES = [ ("NEW", "New"), ("IN_PROGRESS", "In Progress"), ("COMPLETE", "Complete"), ] _id = models.ObjectIdField() # The node can be a Project or a Subclass of Topic node = models.ForeignKey("TreeStructure", on_delete=models.CASCADE) title = models.CharField(max_length=255, unique=False, blank=False) created_by = models.ForeignKey("vpmoauth.MyUser", on_delete=models.CASCADE, related_name="created_task_set") created_at = models.DateTimeField(auto_now_add=True, auto_now=False) updated_at = models.DateTimeField(auto_now=True) # The user the task is assigned to currently (defaults to created_by) assignee = models.ForeignKey("vpmoauth.MyUser", on_delete=models.CASCADE, related_name="assigned_task_set") status = models.CharField(max_length=11, choices=STATUS_CHOICES, blank=False, unique=False) due_date = models.DateField(auto_now=False, auto_now_add=False, null=False) closed_at = models.DateTimeField(auto_now=False, auto_now_add=False, null=True) def __str__(self): return "<{title}>: {due_date}".format(title=self.title, due_date=self.due_date.strftime("%d/%m/%Y")) def save(self, *args, **kwargs): """ Minor amendments to save for generic conditions """ if self.status != "COMPLETE": self.closed_at = None super(Task, self).save(*args, **kwargs)
class TimestampedModel(models.Model): created_at = models.DateTimeField(auto_now_add=True) last_modified = models.DateTimeField(auto_now=True) class Meta: abstract = True ordering = ['-created_at', '-last_modified']
class Account(AbstractBaseUser, PermissionsMixin): name = models.CharField(verbose_name="Name", max_length=100, null=False) email = models.EmailField(verbose_name="Email", max_length=100, unique=True) password = models.CharField(verbose_name="Password", max_length=100, null=False) date_joined = models.DateTimeField(verbose_name="Join Date", auto_now_add=True) last_login = models.DateTimeField(verbose_name="Last Login Date", auto_now=True) is_admin = models.BooleanField(default=False) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) is_superuser = models.BooleanField(default=False) objects = MyAccountManager() USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['name'] def __str__(self): return self.name def has_perms(self, perm_list, obj=None): return self.is_admin def has_module_perms(self, app_label): return self.is_superuser
class User(models.Model): ACTIVE_STATUS = 'active' PENDING_STATUS = 'pending' STATUS_CHOICES = ( (ACTIVE_STATUS, 'active'), (PENDING_STATUS, 'pending'), ) NORMAL_ROLE = 'normal' ADMIN_ROLE = 'admin' ROLE_CHOICES = ( (NORMAL_ROLE, 'normal'), (ADMIN_ROLE, 'admin'), ) _id = models.ObjectIdField() account = models.CharField(max_length=128, unique=True) password = models.CharField(max_length=128) status = models.CharField(max_length=7, choices=STATUS_CHOICES, default=ACTIVE_STATUS) role = models.CharField(max_length=6, choices=ROLE_CHOICES, default=NORMAL_ROLE) created_time = models.DateTimeField(auto_now_add=True) modified_time = models.DateTimeField(auto_now=True) last_login_time = models.DateTimeField() class Meta: db_table = 'users'
class Comment(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True) author = models.ForeignKey('userAuth.User', null=True, on_delete=models.SET_NULL, editable=False, related_name='comment') dateTimePosted = models.DateTimeField(auto_now_add=True, editable=False) dateTimeEdited = models.DateTimeField(auto_now=True, null=True) parentPost = models.ForeignKey('Post', null=True, on_delete=models.CASCADE, editable=True, related_name='comment') content = models.OneToOneField(Content, on_delete=models.CASCADE, related_name='comment') points = models.IntegerField(default=0) likers = models.ArrayReferenceField(to='userAuth.User', on_delete=models.SET_NULL, blank=True, null=True, related_name='+') dislikers = models.ArrayReferenceField(to='userAuth.User', on_delete=models.SET_NULL, blank=True, null=True, related_name='+') def __str__(self): return "Reply to: {}".format(self.post.title)
class order_abs(models.Model): order_id = models.IntegerField() buyer_id = models.IntegerField() product_id = models.IntegerField() date_of_order = models.DateTimeField() told_date_of_order = models.DateTimeField() date_of_delivery = models.DateTimeField() order_details = models.EmbeddedField( model_container=order_details_abs, model_form_class=order_details_abs_form) quantity = models.IntegerField(null=False) total_price = models.TextField() payment_status = models.BooleanField(default=False) delivery_status = models.BooleanField(default=False) loan_status = models.BooleanField(default=False) loan_amount = models.IntegerField(default=None) cancel_status = models.BooleanField(default=False) cancel_date = models.DateTimeField() class Meta: abstract = True
class Reservation(models.Model): # reservation_id = str(uuid.uuid1()) user = models.CharField(max_length=200) vin_no = models.CharField(max_length=200) reservation_datetime = models.DateTimeField() rental_location = models.CharField(max_length=200) return_datetime = models.DateTimeField() rental_charge = models.CharField(max_length=100) actual_returntime = models.DateTimeField(blank=True) # class ReservationStatus(models.TextChoices): # BOOKED = 'BKD', _('BOOKED') # RENTED = 'RNT', _('RENTED') # RETURNED = 'RTD', _('RETURNED') ReservationStatus = ( ('BKD', _('BOOKED')), ('RNT', _('RENTED')), ('RTD', _('RETURNED')), ) reservation_status = models.CharField( max_length=3, choices=ReservationStatus, default='BKD', ) def __str__(self): return self.user + self.vin_no + self.reservation_status
class Postt(models.Model): title = models.CharField(max_length=200, verbose_name="titulo") content = models.TextField(verbose_name="Contenido") published = models.DateTimeField(verbose_name="fecha de publicacion", default=now) image = models.ImageField(verbose_name="imagen", upload_to="blog", null=True, blank=True) author = models.ForeignKey(User, verbose_name="Autor", on_delete=models.CASCADE) categories = models.ManyToManyField(Category, verbose_name="Categorias", related_name="get_posts") created = models.DateTimeField(auto_now_add=True, verbose_name="Fecha de creacion") update = models.DateTimeField(auto_now=True, verbose_name="Fecha de actualizacion") class Meta: verbose_name = "post" verbose_name_plural = "posts" ordering = ['-created'] def __str__(self): return self.title
class Order(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) ref_code = models.CharField(max_length=20, blank=True, null=True) products = models.ManyToManyField(OrderItem, blank=True) start_date = models.DateTimeField(auto_now_add=True) ordered_date = models.DateTimeField() ordered = models.BooleanField(default=False) shipping_address = models.ForeignKey('Address', related_name='shipping_address', on_delete=models.CASCADE, default=None) billing_address = models.ForeignKey('Address', related_name='billing_address', on_delete=models.CASCADE, default=None) payment = models.ForeignKey('Payment', on_delete=models.CASCADE, default=None) being_delivered = models.BooleanField(default=False) received = models.BooleanField(default=False) def __str__(self): return self.user.username def get_total(self): total = 0 for order_item in self.products.all(): total += order_item.get_final_price() return total
class DogsData(models.Model): #collection name SEX_CHOICES = [("M", "Male"), ("F", "Female")] spayed_or_neutered_CHOICE = [("yes", "YES"), ("no", "NO")] created_at = models.DateTimeField(auto_now_add=True, auto_now=False) updated_at = models.DateTimeField(auto_now_add=False, auto_now=True) #Documents dog_name = models.CharField(max_length=20, null=True) gender = models.CharField(choices=SEX_CHOICES, max_length=1, null=True) breed = models.CharField(max_length=30, blank=True) birth = models.DateTimeField(auto_now_add=False, auto_now=False) dominant_color = models.CharField(max_length=20, blank=False) secondary_color = models.CharField(max_length=20, blank=True) third_color = models.CharField(max_length=20, blank=True) spayed_or_neutered = models.CharField(choices=spayed_or_neutered_CHOICE, max_length=1, default='yes') guard_or_trained = models.CharField(choices=spayed_or_neutered_CHOICE, max_length=1, null='no') borough = models.CharField(max_length=30, blank=False, null=False) zip_code = models.IntegerField(null=False) def __str__(self): return self.name
class AnswerBase(models.Model): question = models.ForeignKey( SubCriteria, on_delete=models.SET_NULL, blank=True, null=True) response = models.ForeignKey( Response, on_delete=models.SET_NULL, blank=True, null=True) created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True)
class Mlst(models.Model): id = models.CharField(primary_key=True, max_length=100) scheme = models.CharField(max_length=100) assembly = models.OneToOneField( Assembly, on_delete=models.CASCADE, ) #st = models.IntegerField(null=True, blank=True) st = models.CharField(max_length=10) profile = models.ArrayField(model_container=Allele, ) DateCreated = models.DateTimeField(verbose_name='date created', auto_now=True) LastUpdate = models.DateTimeField(verbose_name='last update', auto_now=True) Description = models.TextField() owner = models.ForeignKey(Account, related_name="mlsts", on_delete=models.CASCADE) objects = models.DjongoManager() def __str__(self): return str(self.id)
class Stats(models.Model): id = models.CharField(primary_key=True, max_length=100) assembly = models.OneToOneField( Assembly, on_delete=models.CASCADE, ) CDS = models.IntegerField(null=True, blank=True) CRISPR = models.IntegerField(null=True, blank=True) ncRNA = models.IntegerField(null=True, blank=True) oriC = models.IntegerField(null=True, blank=True) rRNA = models.IntegerField(null=True, blank=True) region = models.IntegerField(null=True, blank=True) regulatory_region = models.IntegerField(null=True, blank=True) tRNA = models.IntegerField(null=True, blank=True) tmRNA = models.IntegerField(null=True, blank=True) owner = models.ForeignKey(Account, related_name="stats", on_delete=models.CASCADE) DateCreated = models.DateTimeField(verbose_name='date created', auto_now=True) LastUpdate = models.DateTimeField(verbose_name='last update', auto_now=True) Description = models.TextField() objects = models.DjongoManager() def __str__(self): return str(self.id)
class LinhaRelatorio(models.Model): objects = models.Manager() trabalhador = models.ForeignKey(Trabalhador, on_delete=models.SET_NULL, null=True) horas_extras = models.FloatField(default=0, validators=[MinValueValidator(0)]) adicional_noturno = models.FloatField(default=0, validators=[MinValueValidator(0)]) faltas = models.IntegerField(default=0, validators=[MinValueValidator(0)]) dias_faltas = [] criado_em = models.DateTimeField(auto_now_add=True) modificado_em = models.DateTimeField(auto_now=True) def __str__(self): return "%s(%.1f, %.1f, %d)" % (self.trabalhador.nome, self.horas_extras, self.adicional_noturno, self.faltas) class Meta: ordering = ['trabalhador__nome'] verbose_name = "Linha de Relatório" verbose_name_plural = 'Linhas de Relatório' @staticmethod def transferencia(relatorio_fonte, relatorio_alvo, linha): if relatorio_fonte and relatorio_alvo and linha: if linha in relatorio_fonte.linhas.all(): try: relatorio_fonte.linhas.remove(linha) relatorio_alvo.linhas.add(linha) relatorio_fonte.save() relatorio_alvo.save() except Exception as e: print("Erro: %s", e)
class Variation(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) name = models.CharField(max_length=100) creator = models.ForeignKey(get_user_model(), on_delete=models.CASCADE) composition = models.ForeignKey(Composition, on_delete=models.CASCADE) tracks = models.ManyToManyField( Track, through='TrackInVariation', ) def copy_variation(self, variation): self.name = variation.name self.creator = variation.creator self.composition = variation.composition self.tracks.set(variation.tracks) def save(self, *args, **kwargs): user = kwargs.pop('user') composition_id = kwargs.pop('composition_id') self.creator = user self.composition = Composition.objects.get(id=composition_id) super().save(*args, **kwargs) # def __str__(self): # return self.name + ' (' + str(self.composition) + ') - ' + self.creator.username
class RelacaoAbono(models.Model): objects = models.Manager() abonos = models.ManyToManyField(Abono, blank=True) data_inicio = models.DateTimeField() data_termino = models.DateTimeField() class Meta: verbose_name = 'Relação de abonos' verbose_name_plural = "Relações de abonos" ordering = ['-data_inicio'] @staticmethod def factory(data_inicio, data_termino): abonos = Abono.objects.filter( Q(deferido=True) & Q(criado_em__gte=data_inicio) & Q(criado_em__lte=data_termino) ) relacao = RelacaoAbono.objects.create( data_inicio=data_inicio, data_termino=data_termino ) for abono in abonos: relacao.abonos.add(abono) relacao.save() return relacao
class StateSave(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=200, null=True) description = models.CharField(max_length=400, null=True) save_time = models.DateTimeField(auto_now=True, db_index=True) create_time = models.DateTimeField(auto_now_add=True) save_id = models.UUIDField(default=uuid.uuid4) data_dump = models.TextField(null=False) shared = models.BooleanField(default=False) owner = models.ForeignKey(get_user_model(), null=True, on_delete=models.CASCADE) base64_image = models.ImageField(upload_to='circuit_images', storage=file_storage, null=True) version = models.CharField(max_length=20, null=False) branch = models.CharField(max_length=20, null=False) is_arduino = models.BooleanField(default=False, null=False) esim_libraries = models.ManyToManyField(Library) project = models.ForeignKey(to=Project, on_delete=models.SET_NULL, null=True) def save(self, *args, **kwargs): super(StateSave, self).save(*args, **kwargs) def __str__(self): return self.name
class order(models.Model): buyer = models.ForeignKey(buyers, on_delete=models.CASCADE, related_name='buyer_id_order') product = models.ForeignKey(product, on_delete=models.SET_NULL, null=True, related_name='product_id_order') date_of_order = models.DateTimeField() told_date_of_order = models.DateTimeField() date_of_delivery = models.DateTimeField() order_details = models.EmbeddedField( model_container=order_details_abs, model_form_class=order_details_abs_form) quantity = models.IntegerField(null=False) total_price = models.TextField() payment_status = models.BooleanField(default=False) delivery_status = models.BooleanField(default=False) loan_status = models.BooleanField(default=False) loan_amount = models.IntegerField(default=None) cancel_status = models.BooleanField(default=False) cancel_date = models.DateTimeField() objects = models.DjongoManager()
class Assignment(models.Model): assignment_id = models.UUIDField(primary_key=True, blank=False, default=uuid.uuid4, editable=False) class_part = models.ForeignKey(to="Classes", on_delete=models.CASCADE) assignment_type = models.CharField(choices=assignment_choices, max_length=50) document = models.ForeignKey(to='Documents', blank=True, on_delete=models.CASCADE) name = models.CharField(max_length=300, blank=False, verbose_name='assignment name') available_at = models.DateTimeField( verbose_name='assignment available start date', blank=True) available_end = models.DateTimeField( verbose_name='assignment available end date', blank=False) graded = models.BooleanField(verbose_name='graded', blank=False) total_points = models.IntegerField( blank=False, verbose_name='total points in assignment') points_earned = models.IntegerField( blank=True, verbose_name='total points earned in assignment') def __str__(self): return self.name
class Disaster(models.Model): DANGER_LEVELS = (('E', 'Easy'), ('M', 'Medium'), ('D', 'Danger'), ('ED', 'Extra Danger')) #required diameter = models.FloatField(default=0.5) center_point = models.EmbeddedModelField(model_container=GeoJSON) level_of_danger = models.CharField(max_length=2, default='M', choices=DANGER_LEVELS) added = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) owner = models.ForeignKey('auth.User', related_name='posts', on_delete=models.CASCADE) lat = models.FloatField() lang = models.FloatField() #optional title = models.CharField(max_length=200, blank=True) description = models.CharField(max_length=500, blank=True) # class Disaster(Document): # #required # diameter = IntField(default = 0.5) # center = PointField() # level_of_danger = IntField(default = 0.5, choices = DANGER_LEVELS) # date_added = DateTimeField(default=datetime.now) # #optional # title = StringField() # description = StringField() # text = StringField(required=True)
class Contract(models.Model): item_id = models.CharField( max_length=50, primary_key=True ) # Workarround to prevent issues, not really a primary Key product_id = models.CharField(max_length=50, blank=True, null=True) offering = models.CharField( max_length=50 ) # Offering.pk as Foreing Key is not working for EmbeddedFields #offering = models.ForeignKey(Offering, on_delete=models.DO_NOTHING) # Parsed version of the pricing model used to calculate charges pricing_model = models.JSONField(default={}) # Dict # Date of the last charge to the customer last_charge = models.DateTimeField(blank=True, null=True) # List with the made charges charges = models.ArrayField(model_container=Charge, default=[]) # Usage fields correlation_number = models.IntegerField(default=0) last_usage = models.DateTimeField(blank=True, null=True) # Revenue sharing product class revenue_class = models.CharField(max_length=15, blank=True, null=True) suspended = models.BooleanField(default=False) terminated = models.BooleanField(default=False) class Meta: managed = False def __getitem__(self, name): return getattr(self, name)
class User(AbstractBaseUser, PermissionsMixin): """Database model for users in the system""" username = models.CharField(max_length=255, unique=True) email = models.EmailField(max_length=255, unique=True) is_verified = models.BooleanField(default=False) is_online = models.BooleanField(default=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) is_staff = models.BooleanField(default=False) subscription = models.ForeignKey(Subscription, on_delete=models.SET_NULL, null=True) objects = UserManager() USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email'] def __str__(self): """Return string representation of the user's username""" return self.username def tokens(self): """ Genreate Access and Refresh Token for current user """ user_token = RefreshToken.for_user(self) return { 'refresh': str(user_token), 'access': str(user_token.access_token), }
class Payment(models.Model): id = models.AutoField(primary_key=True) order = models.ForeignKey(Order, on_delete=models.DO_NOTHING) payment_type = models.CharField(max_length=10, choices=PAYMENT_MODE) allowed = models.BooleanField(default=False) created_at = models.DateTimeField(auto_now=False, auto_now_add=True) updated_at = models.DateTimeField(auto_now=True, auto_now_add=False)
class Match(models.Model): slug = models.SlugField(primary_key=True) scheduled = models.DateTimeField() event = models.CharField(max_length=255, null=True, blank=True) group = models.CharField(max_length=2, null=True) playoff = models.BooleanField(default=False) winner = models.CharField(max_length=255, null=True) timestamp = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) objects = models.DjongoManager() class Meta: ordering = ['event', 'group', 'scheduled'] unique_together = ['scheduled', 'event', 'group'] def __str__(self): if self.playoff: return "{}: playoff match {}".format(self.event, self.matchmeta.__str__()) return "{}, {}: match {}".format(self.event, self.group, self.matchmeta.__str__()) @property def is_winner(self): return True if self.winner else False
class Audit(models.Model): audit_id = models.AutoField(primary_key=True) organization = models.ForeignKey(to='organization.Organization', on_delete=models.CASCADE, blank=False, null=False, default=0) inventory_items = models.ManyToManyField(Item, blank=True, default=0) assigned_sk = models.ManyToManyField(to='user_account.CustomUser', blank=True, default=0) initiated_by = models.ForeignKey(to=USER_MODEL, on_delete=models.CASCADE, related_name='initiated_by') initiated_on = models.DateTimeField( auto_now_add=True) # Auto set when object is first created last_modified_on = models.DateTimeField( auto_now=True) # Auto set every time object is saved assigned_sk = models.ManyToManyField(to=USER_MODEL, blank=True, default=0) template_id = models.ForeignKey(AuditTemplate, on_delete=models.CASCADE, blank=True, null=True) accuracy = models.FloatField(default=0.0) ACTIVE = 'Active' AUDIT_STATUS = [(PENDING, 'Pending'), (COMPLETE, 'Complete'), (ACTIVE, 'Active')] status = models.CharField(max_length=12, choices=AUDIT_STATUS, default=PENDING)
class Account(AbstractBaseUser, PermissionsMixin): username = models.CharField(verbose_name="Username", max_length=30, null=False) email = models.EmailField(verbose_name="Email Address", max_length=30, unique=True) phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$', message="Phone number must be entered in the format: '+999999999'.Up to 15 digits " "allowed.") number = models.CharField(verbose_name="Phone Number", validators=[phone_regex], max_length=17) date_joined = models.DateTimeField(verbose_name="Join Date", auto_now_add=True) last_login = models.DateTimeField(verbose_name="Last Login Date", auto_now=True) password = models.CharField(verbose_name="Password", max_length=100, null=False) is_admin = models.BooleanField(default=False) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) is_superuser = models.BooleanField(default=False) hide_email = models.BooleanField(default=True) objects = MyAccountManager() USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['username'] def __str__(self): return self.username def has_perms(self, perm_list, obj=None): return self.is_admin def has_module_perms(self, app_label): return self.is_superuser
class Post(models.Model): id = models.AutoField(primary_key=True) category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='posts') title = models.CharField(max_length=255) # title_vn = models.CharField(max_length=255) content = models.TextField() # content_vn = models.TextField() created_at = models.DateTimeField(auto_now_add=True) update_at = models.DateTimeField(auto_now=True) thumbnail = models.TextField(null=True) author = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, related_name='posts', default=1) author_username = models.CharField(max_length=100, default="admin") # publish = models.DateTimeField(auto_now=False, auto_now_add=False) likes = models.ManyToManyField(get_user_model()) objects = models.DjongoManager() hidden = models.BooleanField(default=False) flag = models.BooleanField(default=False) def __str__(self): return f'{self.title}'
class Account(AbstractBaseUser): _id = models.ObjectIdField() email = models.EmailField(verbose_name="email", max_length=60, unique=True) # all required fields when build user model username = models.CharField(max_length=30, unique=True) date_joined = models.DateTimeField(verbose_name='date joined', auto_now_add=True) last_login = models.DateTimeField(verbose_name='last login', auto_now=True) is_admin = models.BooleanField(default=False) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) is_superuser = models.BooleanField(default=False) # set it to the field you want to use for login USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['username'] objects = MyAccountManager() def __str__(self): return self.email # For checking permissions. to keep it simple all admin have ALL permissons def has_perm(self, perm, obj=None): return self.is_admin # Does this user have permission to view this app? (ALWAYS YES FOR SIMPLICITY) def has_module_perms(self, app_label): return True
class CurrentAuction(models.Model): property_id = models.ForeignKey(PropertyReg, related_name='property', on_delete=models.CASCADE) registration_fees =models.IntegerField(default=0) auction_start_date = models.DateTimeField(null=True, default=timezone.now()) auction_end_date = models.DateTimeField(null=True) scheduled_status = models.BooleanField(default=False) current_auction_status = models.BooleanField(default=False) auction_finished_status= models.BooleanField(default=False) increment_ratio = models.FloatField(default=0.05) current_amount =models.IntegerField(default=0) current_ending_time=models.DateTimeField(null=True) next_bid= models.FloatField(default=0) # highest_bidder=models.ForeignKey(User,related_name='highest_bid',default=0, on_delete=models.CASCADE, null=True) def scheduled(self): self.scheduled_status=True self.current_ending_time=self.auction_end_date self.save() def bidding(self): self.next_bid= self.current_amount+(self.current_amount*self.increment_ratio) if self.current_ending_time.minute-timezone.now().minute<=3: self.current_ending_time=self.current_ending_time + timedelta(minutes=3) self.save() def get_absolute_url(self): return reverse_lazy('auctions:auction_detail', kwargs={'pk': self.pk})