Files
rengine/web/dashboard/models.py
T

97 lines
2.6 KiB
Python

from django.db import models
from reNgine.definitions import *
from django.contrib.auth.models import User
class SearchHistory(models.Model):
query = models.CharField(max_length=1000)
def __str__(self):
return self.query
class Project(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=500)
slug = models.SlugField(unique=True)
insert_date = models.DateTimeField()
def __str__(self):
return self.slug
class OpenAiAPIKey(models.Model):
id = models.AutoField(primary_key=True)
key = models.CharField(max_length=500)
def __str__(self):
return self.key
class OllamaSettings(models.Model):
id = models.AutoField(primary_key=True)
selected_model = models.CharField(max_length=500)
use_ollama = models.BooleanField(default=True)
def __str__(self):
return self.selected_model
class NetlasAPIKey(models.Model):
id = models.AutoField(primary_key=True)
key = models.CharField(max_length=500)
def __str__(self):
return self.key
class ChaosAPIKey(models.Model):
id = models.AutoField(primary_key=True)
key = models.CharField(max_length=500)
def __str__(self):
return self.key
class HackerOneAPIKey(models.Model):
id = models.AutoField(primary_key=True)
username = models.CharField(max_length=500)
key = models.CharField(max_length=500)
def __str__(self):
return self.username
class InAppNotification(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE, null=True, blank=True)
notification_type = models.CharField(max_length=10, choices=NOTIFICATION_TYPES, default='system')
status = models.CharField(max_length=10, choices=NOTIFICATION_STATUS_TYPES, default='info')
title = models.CharField(max_length=255)
description = models.TextField()
icon = models.CharField(max_length=50) # mdi icon class name
is_read = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
redirect_link = models.URLField(max_length=255, blank=True, null=True)
open_in_new_tab = models.BooleanField(default=False)
class Meta:
ordering = ['-created_at']
def __str__(self):
if self.notification_type == 'system':
return f"System wide notif: {self.title}"
else:
return f"Project wide notif: {self.project.name}: {self.title}"
@property
def is_system_wide(self):
# property to determine if the notification is system wide or project specific
return self.notification_type == 'system'
class UserPreferences(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bug_bounty_mode = models.BooleanField(default=True)
def __str__(self):
return f"{self.user.username}'s preferences"