class Customer(models.Model): """ 客户(学生)表 """ name = EncryptedCharField(verbose_name='姓名', max_length=64) gender_choices = ((1, '男'), (2, '女')) gender = models.SmallIntegerField(verbose_name='性别', choices=gender_choices) nation = models.CharField(verbose_name='民族', max_length=64, default='汉族') birth_place = models.CharField(verbose_name='籍贯', max_length=64, default='湖北武汉') identity_num = models.CharField(verbose_name='身份证号', max_length=64, unique=True) address = models.CharField(verbose_name='通知书邮寄地址', max_length=128) postcode = models.CharField(verbose_name='邮编', max_length=12) tel = EncryptedCharField(verbose_name='联系电话', max_length=64, help_text='必填') # 学生的学校 stu_school = models.ForeignKey(verbose_name='院校', to='School', on_delete=models.CASCADE) # 报读专业 course = models.ManyToManyField(verbose_name='报读专业', to='Course') # auto_now_add:创建时间不用复制,默认使用当前时间赋值 create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True) # 验证码(销售码) consultant = models.ForeignKey(verbose_name="验证码", to='UserInfo', to_field='code', on_delete=models.CASCADE) def __str__(self): return self.name
class Vault(models.Model): """Vault of vaults""" VAULT_CATEGORY = ( ('account', _('vault_account')), ('card', _('vault_card')), ('membership', _('vault_membership')), ('other', _('vault_other')), ) user = models.ForeignKey(settings.AUTH_USER_MODEL) order = models.IntegerField(default=1) category = models.CharField(max_length=12, choices=VAULT_CATEGORY, default='account') name = EncryptedCharField(max_length=23) number = EncryptedCharField(max_length=64) valid = EncryptedCharField(max_length=20, blank=True) cvc = EncryptedCharField(max_length=10, blank=True) description = EncryptedCharField(max_length=128, blank=True) image = models.ImageField(upload_to="vaults/", blank=True) def delete(self, *args, **kwargs): """To delete attached too""" self.image.delete() super(Vault, self).delete(*args, **kwargs) def get_absolute_url(self): """Back to list""" return reverse_lazy('vaults:open_vault')
class MerchantItem(models.Model): Adult_or_Child = ( ('A', 'Adult'), ('C', 'Child'), ('B', 'Both'), ) Gender_Allowed = ( ('M', 'Male'), ('F', 'Female'), ('B', 'Both'), ) merchant_code = models.ForeignKey(Merchant, on_delete=models.CASCADE, related_name='merchantcode') item_code = models.CharField(primary_key=True, unique=True, max_length=50) description = EncryptedCharField(max_length=200) adult_child = EncryptedCharField(max_length=2, choices=Adult_or_Child) gender_allowed = EncryptedCharField(max_length=1, choices=Gender_Allowed) quantity = EncryptedIntegerField(default=0, blank=True) price = models.DecimalField(decimal_places=2, default=0.00, max_digits=10, blank=True) discount = models.DecimalField(decimal_places=2, default=0.00, max_digits=10, blank=True) def __str__(self): return self.item_code
class BarCodeTransfer(models.Model): sender_profile_id = models.IntegerField() receiver_barcode = models.CharField(max_length=15, blank=True, null=True) transaction_amount = models.DecimalField(decimal_places=2, max_digits=10, default=0.00, blank=True) sender_emailid = EncryptedCharField(max_length=35, blank=True, null=True) message = EncryptedCharField(max_length=50, blank=True, null=True) transaction_id = models.CharField(max_length=30, blank=True)
class Lead(models.Model): name = EncryptedCharField(max_length=100) email = EncryptedEmailField(max_length=100) message = EncryptedCharField(max_length=500, blank=True) eeg = models.FileField(upload_to='eeg_files/', blank=True) owner = models.ForeignKey(User, related_name="leads", on_delete=models.CASCADE, null=True) created_at = models.DateTimeField(auto_now_add=True)
class FacebookApp(models.Model): """The Facebook app auth information needed for running ads through the marketing API. Each client would typically only need one 'app' to run ads with. """ company = models.ForeignKey(Company, on_delete=models.CASCADE) app_id = models.CharField(max_length=100, unique=True) app_secret = EncryptedCharField(max_length=100) access_token = EncryptedCharField(max_length=256) name = models.CharField(max_length=100, blank=True) business_id = models.CharField(max_length=100, blank=True)
class Cliente(models.Model): Servico = (('a', 'b'), ('c', 'd')) nome = EncryptedTextField(max_length=20, verbose_name='Telefone') telefone = models.CharField(max_length=20, verbose_name='Telefone') email = EncryptedEmailField(max_length=255, verbose_name='Email') date = EncryptedCharField(max_length=20, verbose_name='Data da sessão') servico = EncryptedCharField(max_length=50, verbose_name='Servico', choices=Servico) created_at = EncryptedDateField(auto_now_add=True) def __str__(self): return (self.nome)
class User(AbstractUser): # First Name and Last Name do not cover name patterns # around the globe. name = CharField(_("Name of User"), blank=True, max_length=255) pushover_user_key = EncryptedCharField( _("Pushover User Key"), null=True, default=None, blank=True, max_length=255 ) pushover_api_token = EncryptedCharField( _("Pushover API Token"), null=True, default=None, blank=True, max_length=255 ) def get_absolute_url(self): return reverse("users:detail", kwargs={"username": self.username})
class Employee(models.Model): history = AuditlogHistoryField(pk_indexable=False) EmployeeName = EncryptedCharField(max_length=1000) EmployeeId = models.IntegerField(primary_key=True) EmployeeSSN = EncryptedIntegerField() EmployeePosition = EncryptedCharField(max_length=1000) EmployeeSalary = EncryptedIntegerField DepartId = models.ForeignKey(Department) UniId = models.ForeignKey(University) def __unicode__(self): return self.EmployeeName class Meta: db_table = 'employee'
class Student(models.Model): history = AuditlogHistoryField(pk_indexable=False) StudentId = models.IntegerField(primary_key=True) StudentName = EncryptedCharField(max_length=1000) StudentAddress = EncryptedCharField(max_length=1000) Gender = EncryptedCharField(max_length=1000) DateOfBirth = EncryptedDateField() DeptId = models.ForeignKey(Department) UniverseId = models.ForeignKey(University) def __unicode__(self): return self.StudentName class Meta: db_table = 'student'
class SMTPSetting(models.Model): CONSEC = (('NO', 'None'), ('STARTTLS', 'STARTTLS'), ('SSLTLS', 'SSL/TLS')) description = models.CharField(max_length=100, blank=False) from_user = models.CharField(max_length=100, blank=True) smtp_server = models.CharField(max_length=255, blank=False) smtp_port = models.PositiveSmallIntegerField(blank=False) connection_security = models.CharField(max_length=20, choices=CONSEC, default='NO', blank=False) smtp_user = models.CharField(max_length=255, blank=True) smtp_password = EncryptedCharField(max_length=255, blank=True) active = models.BooleanField() kit_admin = models.ForeignKey('core.KITUser', models.CASCADE, blank=False, limit_choices_to={'is_admin': True}) cou_group = models.ManyToManyField(CoUserGroup, verbose_name="Group Availability", blank=True) cloud_smtp_configuration = models.BooleanField(default=False) last_modified = models.DateTimeField(auto_now=True) created = models.DateTimeField(auto_now_add=True) def __str__(self): return "%s - %s" % (self.description, self.smtp_server) def get_absolute_url(self): return reverse('core:smtp-detail', args=[self.pk])
class ServiceStation(models.Model): balance = models.IntegerField(blank=False, default=0) pin = EncryptedCharField(max_length=100) service = models.ForeignKey(Service, on_delete=models.CASCADE) station = models.ForeignKey(Station, on_delete=models.CASCADE, related_name='service_stations') created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: unique_together = ( 'service', 'station', ) ordering = ('updated_at', ) def __str__(self): return self.service.name + " " + self.station.name + " ( " + str( self.balance) + " FCFA )" @staticmethod def remember_state(sender, **kwargs): instance = kwargs.get('instance') instance.previous_balance = instance.balance
class OpenStackCredentials(Credentials): username = models.CharField(max_length=50) password = EncryptedCharField(max_length=50, blank=True, null=True) tenant_name = models.CharField(max_length=50, blank=True, null=True) project_name = models.CharField(max_length=50, blank=True, null=True) project_domain_name = models.CharField(max_length=50, blank=True, null=True) user_domain_name = models.CharField(max_length=50, blank=True, null=True) identity_api_version = models.IntegerField(blank=True, null=True) class Meta: verbose_name = "OpenStack Credentials" verbose_name_plural = "OpenStack Credentials" def as_dict(self): d = {'os_username': self.username, 'os_password': self.password} if self.tenant_name: d['os_tenant_name'] = self.tenant_name if self.project_name: d['os_project_name'] = self.project_name if self.project_domain_name: d['os_project_domain_name'] = self.project_domain_name if self.user_domain_name: d['os_user_domain_name'] = self.user_domain_name if self.identity_api_version: d['os_identity_api_version'] = self.identity_api_version return d
class AzureCredentials(Credentials): subscription_id = models.CharField(max_length=50, blank=False, null=False) client_id = models.CharField(max_length=50, blank=False, null=False) secret = EncryptedCharField(max_length=50, blank=False, null=False) tenant = models.CharField(max_length=50, blank=True, null=True) resource_group = models.CharField(max_length=64, blank=False, null=False, default='cloudbridge') storage_account = models.CharField(max_length=24, blank=False, null=False, default='cbstorage') vm_default_username = models.CharField(max_length=100, blank=False, null=False, default='cbuser') class Meta: verbose_name = "Azure Credential" verbose_name_plural = "Azure Credentials" def as_dict(self): d = super(AzureCredentials, self).as_dict() d['azure_subscription_id'] = self.subscription_id d['azure_client_id'] = self.client_id d['azure_secret'] = self.secret d['azure_tenant'] = self.tenant d['azure_resource_group'] = self.resource_group d['azure_storage_account'] = self.storage_account d['azure_vm_default_username'] = self.vm_default_username return d
class PatientSearch(PatientBaseModel): patient_id = EncryptedIntegerField() name = models.CharField(max_length=120) gender = models.IntegerField(choices=GENDER_CHOICES) phone_number = models.CharField(max_length=14) date_of_birth = models.DateField(null=True) year_of_birth = models.IntegerField() state_id = models.IntegerField() facility = models.ForeignKey("Facility", on_delete=models.SET_NULL, null=True) patient_external_id = EncryptedCharField(max_length=100, default="") allow_transfer = models.BooleanField(default=True) is_active = models.BooleanField(default=True) class Meta: indexes = [ models.Index( fields=["year_of_birth", "date_of_birth", "phone_number"]), models.Index(fields=["year_of_birth", "phone_number"]), ] @staticmethod def has_read_permission(request): if request.user.is_superuser or request.user.user_type >= User.TYPE_VALUE_MAP[ "DistrictLabAdmin"]: return True elif request.user.user_type >= User.TYPE_VALUE_MAP[ "Staff"] and request.user.verified: return True return False
class SavedAccount(models.Model): websiteName = models.CharField(max_length=100) websiteUrl = models.CharField(max_length=100) websiteImage = models.TextField() #cause we'll put image here emailSpecial = EncryptedCharField(max_length=100) usernameSpecial = EncryptedCharField(max_length=100) passwordSpecial = EncryptedCharField( max_length=100 ) #this may need to be changed since we'll probably encrypt it userID = models.ForeignKey( User, on_delete=models.CASCADE) #connection to the user's credentials, # not sure whether we have to also add the primary key here #magic method - It returns what we want to see when a SavedAccount object is printed. def __str__(self): return self.websiteName
class CredentialSet(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=25) description = models.TextField(default='', blank=True) user = models.CharField(verbose_name="unpriviledged username", max_length=25) userPass = EncryptedCharField(verbose_name="unpriviledged password", max_length=254) privUser = models.CharField(verbose_name="priviledged username", max_length=25, blank=True) privUserPass = EncryptedCharField(verbose_name="priviledged password", max_length=254, blank=True) def __str__(self): return self.name
class Vault(models.Model): TYPE_OPTIONS = ( ('1account', '계좌'), ('2card', '카드'), ('3membership', '멤버십'), ('4etc', '기타'), ) LOGO_OPTIONS = ( ('logos/kdb.png', '산업은행'), ('logos/keb.png', '외환은행'), ('logos/woori.png', '우리은행'), ('logos/shinhan.png', '신한은행'), ('logos/kfcc.png', '새마을금고'), ('logos/kiwoom.png', '키움증권'), ('logos/samsungfn.png', '삼성증권'), ('logos/samsungcard.png', '삼성카드'), ('logos/koreanair.png', '대한항공'), ('logos/asiana.png', '아시아나'), ('logos/asiamiles.png', '아시아마일스'), ('logos/finnair.png', '핀에어'), ('logos/spg.png', 'SPG'), ('logos/hertz.png', 'Hertz'), ('logos/hyatt.png', 'HYATT'), ('logos/marriot.png', '매리어트'), ('logos/gs.png', 'GS'), ('logos/homeplus.png', '홈플러스'), ('logos/okcashbag.png', 'OK 캐쉬백'), ('logos/skt.png', 'SKT'), ('logos/olleh.png', '올레'), ) User = models.ForeignKey(settings.AUTH_USER_MODEL) Type = models.CharField(max_length=20, choices=TYPE_OPTIONS, default='1account') Name = EncryptedCharField(max_length=20) Number = EncryptedCharField(max_length=50) Valid = EncryptedCharField(max_length=20, blank=True) CVC = EncryptedCharField(max_length=10, blank=True) Logo = models.CharField(max_length=50, choices=LOGO_OPTIONS, blank=True) Serial = EncryptedCharField(max_length=20, blank=True) Code = EncryptedTextField(blank=True) def get_absolute_url(self): return reverse_lazy('show vault')
class SmtpAccount(models.Model): email = models.EmailField( unique=True, help_text="Specify the email of the SMTP account.") password = EncryptedCharField( max_length=255, blank=True, help_text= "Specify the password of the SMTP account. If the SMTP account does not require authentication, leave the password blank.<br>IMPORTANT: Remember to re-enter the password every time you edit the SMTP account." ) server = models.CharField( max_length=255, help_text= "Specify the server of the SMTP account. For example: smtp.office365.com" ) port = models.PositiveIntegerField( help_text="Specify the port of the SMTP account. For example: 587") tls = models.BooleanField( "SSL/TLS", default=True, help_text="Specify whether the SMTP account requires 'SSL/TLS'.") activated = models.BooleanField( default=False, help_text="Specify whether the SMTP account should be active.") status = models.CharField( max_length=255, default="Active", editable=False, help_text="Indicates the status of the SMTP account.") date_created = models.DateTimeField(auto_now_add=True, editable=False) date_updated = models.DateTimeField(auto_now=True, editable=False) history = HistoricalRecords() class Meta: verbose_name = 'SMTP account' verbose_name_plural = 'SMTP accounts' def __str__(self): return self.email def clean(self): if self.activated and SmtpAccount.objects.filter( activated=True).exclude(id=self.id).exists(): raise ValidationError( 'An activated SMTP account already exists! Make sure to not activate this account or deactivate the activated account.' ) def save_without_historical_record(self, *args, **kwargs): self.skip_history_when_saving = True try: ret = self.save(*args, **kwargs) finally: del self.skip_history_when_saving return ret
class NewsPort(models.Model): news_title_slug = models.SlugField() news_editor = EncryptedCharField(max_length=50) news_title = EncryptedCharField(max_length=60) description = EncryptedCharField(max_length=10000) newspic = models.ImageField(blank=True, null=True, upload_to='newsimgs/') news_source = EncryptedCharField(max_length=50) news_date = models.DateTimeField(default=get_default_my_date) news_video_file = models.FileField(upload_to='videos/', null=True, blank=True) def __str__(self): return self.news_title #redefining the save method def save(self, *args, **kwargs): self.news_title_slug = slugify(self.news_title) super(NewsPort, self).save(*args, **kwargs)
class AmazonS3Datastore(FileDatastore): username = models.CharField(max_length=100) bucket_name = models.CharField(max_length=200) access_key_id = EncryptedCharField(max_length=128) secret_access_key = EncryptedCharField(max_length=128) def save(self, *args, **kwargs): # If the object is not yet created, set the aws username. if not self.pk: self.username = get_aws_account_username(self.access_key_id, self.secret_access_key) super(AmazonS3Datastore, self).save(*args, **kwargs) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.s3 = boto3.resource("s3", aws_access_key_id=self.access_key_id, aws_secret_access_key=self.secret_access_key) self.bucket = self.s3.Bucket(self.bucket_name) def __str__(self): return f"{self.username} (Amazon S3)" def get_connection_details(self): return f"Access key ID: {self.access_key_id}, Secret access key: {self.secret_access_key}, " \ f"Bucket name: {self.bucket_name}" def is_connection_valid(self): # If the key id and key are valid (needed to initialize the object), we assume the connection is valid. return True def get_viable_datasets(self): return get_viable_blob_datasets(self.bucket.objects.all(), "key") def _download_data(self, file_id): data = io.BytesIO() self.bucket.download_fileobj(file_id, data) file_type = file_id.split(".")[-1] return io.BytesIO(data.getvalue()), file_type
class AWSCredentials(Credentials): access_key = models.CharField(max_length=50, blank=False, null=False) secret_key = EncryptedCharField(max_length=50, blank=False, null=False) class Meta: verbose_name = "AWS Credentials" verbose_name_plural = "AWS Credentials" def as_dict(self): return {'aws_access_key': self.access_key, 'aws_secret_key': self.secret_key, }
class PurchasedCommodity(models.Model): purchased_groc = models.ForeignKey(PurchasedGrocery, on_delete=models.CASCADE, related_name='purch_groc_id') commodityitemcode = models.CharField(max_length=50) commodityitemname = EncryptedCharField(max_length=100) def __str__(self): return str(self.commodityitemname) class Meta: verbose_name_plural = "Purchased Commodities"
class AWSCredentials(Credentials): access_key = models.CharField(max_length=50, blank=False, null=False) secret_key = EncryptedCharField(max_length=50, blank=False, null=False) class Meta: verbose_name = "AWS Credential" verbose_name_plural = "AWS Credentials" def as_dict(self): d = super(AWSCredentials, self).as_dict() d['aws_access_key'] = self.access_key, d['aws_secret_key'] = self.secret_key
class Merchant(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) merchant_code = models.CharField(max_length=50, unique=True, primary_key=True) merchant_contact_email = EncryptedEmailField() merchant_contact_name = EncryptedCharField(max_length=50) merchant_contact_no = EncryptedCharField(max_length=20) merchant_address = EncryptedCharField(max_length=50) merchant_city = EncryptedCharField(max_length=20) merchant_country = EncryptedCharField(max_length=20) merchant_img = models.ImageField(blank=True, null=True, upload_to='merchantimgs/') merchant_wallet = models.DecimalField(decimal_places=2, max_digits=12, default=0.00, blank=True) def __str__(self): return self.merchant_code
class CommodityItem(models.Model): commodity_code = models.ForeignKey(Commodity, on_delete=models.CASCADE, related_name='commodity_item') commodity_item_code = models.CharField(primary_key=True, unique=True, max_length=50) item_desc = EncryptedCharField(max_length=100) brand = EncryptedCharField(max_length=50) hundred_price = models.DecimalField(decimal_places=2, null=True, max_digits=10, blank=True) twohundred_price = models.DecimalField(decimal_places=2, null=True, max_digits=10, blank=True) fivehundred_price = models.DecimalField(decimal_places=2, null=True, max_digits=10, blank=True) onekg_price = models.DecimalField(decimal_places=2, null=True, max_digits=10, blank=True) fivekg_price = models.DecimalField(decimal_places=2, null=True, max_digits=10, blank=True) twentyfivekg_price = models.DecimalField(decimal_places=2, null=True, max_digits=10, blank=True) fiftykg_price = models.DecimalField(decimal_places=2, null=True, max_digits=10, blank=True) def __str__(self): return self.item_desc
class Commodity(models.Model): grocery_code = models.ForeignKey(Grocery, on_delete=models.CASCADE, related_name='grocery_commodity') commodity_code = models.CharField(primary_key=True, unique=True, max_length=50) commodity_desc = EncryptedCharField(max_length=200) def __str__(self): return self.commodity_code class Meta: verbose_name_plural = "commodities"
class SocialAccount(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL) email = models.EmailField() email_verified = models.BooleanField(default=False) provider = models.CharField(max_length=30, choices=choices.PROVIDER_CHOICES) access_token = models.CharField(max_length=255) uid = models.CharField(max_length=255) last_login = models.DateTimeField(auto_now=True) created_date = models.DateTimeField(auto_now_add=True) phone_number = EncryptedCharField(max_length=128, blank=True) class Meta: unique_together = (('email', 'provider', 'uid', 'access_token'), )
class PythonFunctionExecution(models.Model): python_function = models.ForeignKey(PythonFunction, null=True, on_delete=models.SET_NULL) request_user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL) request_ip = EncryptedCharField(max_length=255) input = EncryptedTextField() output = EncryptedTextField() code = EncryptedTextField() time_start = models.DateTimeField(null=True, blank=True) time_end = models.DateTimeField(null=True, blank=True)
class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) first_name = EncryptedCharField(max_length=50) last_name = EncryptedCharField(max_length=50) email = EncryptedEmailField() password = EncryptedCharField(max_length=50) mobile_no = models.CharField(max_length=20, unique=True) address_line_1 = EncryptedCharField(max_length=50) address_line_2 = EncryptedCharField(max_length=50, blank=True) postal_code = EncryptedCharField(max_length=7) city = EncryptedCharField(max_length=20) country = EncryptedCharField(max_length=20) image = models.ImageField(upload_to='images/', blank=True) referral_contact = models.CharField(max_length=15, blank=True) promo_coupon = models.CharField(max_length=100, blank=True) ic = EncryptedCharField(max_length=50, blank=True, null=True) barcode_val = models.CharField(max_length=15, blank=True, null=True) def get_absolute_url(self): return reverse('accounts:profile_detail', kwargs={'pk': self.pk}) def __str__(self): return self.mobile_no