mirror of
https://github.com/kristoferssolo/FOSSDB.git
synced 2025-10-21 17:50:35 +00:00
Combined all fossdb models into 1 file
This commit is contained in:
parent
ad68430b94
commit
6ea8e2c3c3
@ -0,0 +1,19 @@
|
||||
# Generated by Django 4.2.2 on 2023-06-28 16:17
|
||||
|
||||
import account.models
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('account', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='user',
|
||||
name='profile_picture',
|
||||
field=models.ImageField(default='profile-pics/default.jpg', upload_to=account.models.get_profile_pic_path),
|
||||
),
|
||||
]
|
||||
@ -1,11 +1,16 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from .hosting_platform.models import HostingPlatform, ProjectHostingPlatform
|
||||
from .license.models import License
|
||||
from .models import Project
|
||||
from .operating_system.models import OperatingSystem, OperatingSystemVersion
|
||||
from .programming_language.models import ProgrammingLanguage, ProjectProgrammingLanguage
|
||||
from .tag.models import Tag
|
||||
from .models import (
|
||||
HostingPlatform,
|
||||
License,
|
||||
OperatingSystem,
|
||||
OperatingSystemVersion,
|
||||
ProgrammingLanguage,
|
||||
Project,
|
||||
ProjectHostingPlatform,
|
||||
ProjectProgrammingLanguage,
|
||||
Tag,
|
||||
)
|
||||
|
||||
|
||||
class ProjectProgrammingLanguageInline(admin.TabularInline):
|
||||
|
||||
@ -1,6 +1,40 @@
|
||||
from django import forms
|
||||
|
||||
from .models import Project
|
||||
from .models import HostingPlatform, ProgrammingLanguage, Project, ProjectHostingPlatform, ProjectProgrammingLanguage
|
||||
|
||||
|
||||
class HostingPlatformForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ProjectHostingPlatform
|
||||
fields = (
|
||||
"url",
|
||||
"hosting_platform",
|
||||
)
|
||||
widgets = {
|
||||
"hosting_platform": forms.Select(
|
||||
choices=HostingPlatform.objects.all(),
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
class ProgrammingLanguageForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ProjectProgrammingLanguage
|
||||
fields = (
|
||||
"programming_language",
|
||||
"percentage",
|
||||
)
|
||||
widgets = {
|
||||
"programming_language": forms.Select(
|
||||
choices=ProgrammingLanguage.objects.all(),
|
||||
),
|
||||
"percentage": forms.NumberInput(
|
||||
attrs={
|
||||
"min": "0",
|
||||
"max": "100",
|
||||
}
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
class ProjectForm(forms.ModelForm):
|
||||
|
||||
@ -1,17 +0,0 @@
|
||||
from django import forms
|
||||
|
||||
from .models import HostingPlatform, ProjectHostingPlatform
|
||||
|
||||
|
||||
class HostingPlatformForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ProjectHostingPlatform
|
||||
fields = (
|
||||
"url",
|
||||
"hosting_platform",
|
||||
)
|
||||
widgets = {
|
||||
"hosting_platform": forms.Select(
|
||||
choices=HostingPlatform.objects.all(),
|
||||
)
|
||||
}
|
||||
@ -1,17 +0,0 @@
|
||||
from django.db import models
|
||||
|
||||
|
||||
class HostingPlatform(models.Model):
|
||||
name = models.CharField(max_length=100, unique=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class ProjectHostingPlatform(models.Model):
|
||||
hosting_platform = models.ForeignKey(HostingPlatform, on_delete=models.CASCADE)
|
||||
project = models.OneToOneField("Project", on_delete=models.CASCADE)
|
||||
url = models.URLField(unique=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.url
|
||||
@ -1,11 +0,0 @@
|
||||
from django.db import models
|
||||
|
||||
|
||||
class License(models.Model):
|
||||
short_name = models.CharField(max_length=50, unique=True)
|
||||
full_name = models.CharField(max_length=100, unique=True)
|
||||
url = models.URLField(blank=True, default="")
|
||||
text = models.TextField(blank=True, default="")
|
||||
|
||||
def __str__(self):
|
||||
return self.short_name
|
||||
29
src/apps/fossdb/migrations/0004_alter_tag_icon_star.py
Normal file
29
src/apps/fossdb/migrations/0004_alter_tag_icon_star.py
Normal file
@ -0,0 +1,29 @@
|
||||
# Generated by Django 4.2.2 on 2023-06-28 16:17
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('fossdb', '0003_alter_projectprogramminglanguage_percentage'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='tag',
|
||||
name='icon',
|
||||
field=models.ImageField(blank=True, null=True, upload_to='tags/icons/'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Star',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='fossdb.project')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
]
|
||||
@ -4,10 +4,60 @@ from django.conf import settings
|
||||
|
||||
from django.db import models
|
||||
|
||||
from .license.models import License
|
||||
from .operating_system.models import OperatingSystemVersion
|
||||
from .programming_language.models import ProgrammingLanguage
|
||||
from .tag.models import Tag
|
||||
|
||||
class License(models.Model):
|
||||
short_name = models.CharField(max_length=50, unique=True)
|
||||
full_name = models.CharField(max_length=100, unique=True)
|
||||
url = models.URLField(blank=True, default="")
|
||||
text = models.TextField(blank=True, default="")
|
||||
|
||||
def __str__(self):
|
||||
return self.short_name
|
||||
|
||||
|
||||
class OperatingSystem(models.Model):
|
||||
name = models.CharField(max_length=100, unique=True)
|
||||
description = models.TextField(blank=True, default="")
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class OperatingSystemVersion(models.Model):
|
||||
operating_system = models.ForeignKey(OperatingSystem, on_delete=models.CASCADE)
|
||||
version = models.CharField(max_length=50, blank=True, default="")
|
||||
codename = models.CharField(max_length=100, blank=True, default="")
|
||||
is_lts = models.BooleanField(blank=True, default=False)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.operating_system.name} {self.version} {'LTS' if self.is_lts else ''}"
|
||||
|
||||
class Meta:
|
||||
constraints = (
|
||||
models.UniqueConstraint(
|
||||
fields=(
|
||||
"operating_system",
|
||||
"version",
|
||||
),
|
||||
name="unique_os_version",
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
class Tag(models.Model):
|
||||
name = models.CharField(max_length=100, unique=True, db_index=True)
|
||||
description = models.TextField(blank=True, default="")
|
||||
icon = models.ImageField(upload_to="tags/icons/", null=True, blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class ProgrammingLanguage(models.Model):
|
||||
name = models.CharField(max_length=100, unique=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Project(models.Model):
|
||||
@ -41,3 +91,33 @@ class Project(models.Model):
|
||||
name="unique_owner_name",
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
class ProjectProgrammingLanguage(models.Model):
|
||||
project = models.ForeignKey(Project, on_delete=models.CASCADE)
|
||||
programming_language = models.ForeignKey(ProgrammingLanguage, on_delete=models.CASCADE)
|
||||
percentage = models.PositiveIntegerField(blank=True, null=True)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.project.owner}/{self.project.name} | {self.programming_language} | {self.percentage}%"
|
||||
|
||||
|
||||
class HostingPlatform(models.Model):
|
||||
name = models.CharField(max_length=100, unique=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class ProjectHostingPlatform(models.Model):
|
||||
hosting_platform = models.ForeignKey(HostingPlatform, on_delete=models.CASCADE)
|
||||
project = models.OneToOneField(Project, on_delete=models.CASCADE)
|
||||
url = models.URLField(unique=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.url
|
||||
|
||||
|
||||
class Star(models.Model):
|
||||
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
|
||||
project = models.ForeignKey(Project, on_delete=models.CASCADE)
|
||||
|
||||
@ -1,30 +0,0 @@
|
||||
from django.db import models
|
||||
|
||||
|
||||
class OperatingSystem(models.Model):
|
||||
name = models.CharField(max_length=100, unique=True)
|
||||
description = models.TextField(blank=True, default="")
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class OperatingSystemVersion(models.Model):
|
||||
operating_system = models.ForeignKey(OperatingSystem, on_delete=models.CASCADE)
|
||||
version = models.CharField(max_length=50, blank=True, default="")
|
||||
codename = models.CharField(max_length=100, blank=True, default="")
|
||||
is_lts = models.BooleanField(blank=True, default=False)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.operating_system.name} {self.version} {'LTS' if self.is_lts else ''}"
|
||||
|
||||
class Meta:
|
||||
constraints = (
|
||||
models.UniqueConstraint(
|
||||
fields=(
|
||||
"operating_system",
|
||||
"version",
|
||||
),
|
||||
name="unique_os_version",
|
||||
),
|
||||
)
|
||||
@ -1,23 +0,0 @@
|
||||
from django import forms
|
||||
|
||||
from .models import ProgrammingLanguage, ProjectProgrammingLanguage
|
||||
|
||||
|
||||
class ProgrammingLanguageForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ProjectProgrammingLanguage
|
||||
fields = (
|
||||
"programming_language",
|
||||
"percentage",
|
||||
)
|
||||
widgets = {
|
||||
"programming_language": forms.Select(
|
||||
choices=ProgrammingLanguage.objects.all(),
|
||||
),
|
||||
"percentage": forms.NumberInput(
|
||||
attrs={
|
||||
"min": "0",
|
||||
"max": "100",
|
||||
}
|
||||
),
|
||||
}
|
||||
@ -1,17 +0,0 @@
|
||||
from django.db import models
|
||||
|
||||
|
||||
class ProgrammingLanguage(models.Model):
|
||||
name = models.CharField(max_length=100, unique=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class ProjectProgrammingLanguage(models.Model):
|
||||
project = models.ForeignKey("Project", on_delete=models.CASCADE)
|
||||
programming_language = models.ForeignKey(ProgrammingLanguage, on_delete=models.CASCADE)
|
||||
percentage = models.PositiveIntegerField(blank=True, null=True)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.project.owner}/{self.project.name} | {self.programming_language} | {self.percentage}%"
|
||||
@ -1,7 +0,0 @@
|
||||
from django.conf import settings
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Star(models.Model):
|
||||
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
|
||||
project = models.ForeignKey("Project", on_delete=models.CASCADE, related_name="stars")
|
||||
@ -1,10 +0,0 @@
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Tag(models.Model):
|
||||
name = models.CharField(max_length=100, unique=True, db_index=True)
|
||||
description = models.TextField(blank=True, default="")
|
||||
icon = models.ImageField(upload_to="types/icons/", null=True, blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
@ -3,7 +3,7 @@ from django.urls import path
|
||||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
path("", views.ProjectListView.as_view(), name="index"),
|
||||
path("explore/", views.ProjectListView.as_view(), name="explore"),
|
||||
path("add/", views.ProjectCreateView.as_view(), name="add-project"),
|
||||
path("<str:owner>/<str:project_name>/", views.ProjectDetailView.as_view(), name="project-detail"),
|
||||
path("<str:owner>/<str:project_name>/edit/", views.ProjectUpdateView.as_view(), name="project-update"),
|
||||
|
||||
@ -7,11 +7,8 @@ from django_filters.views import FilterView
|
||||
|
||||
from .filters import ProjectFilter
|
||||
|
||||
from .forms import ProjectForm
|
||||
from .hosting_platform.forms import HostingPlatformForm
|
||||
from .models import Project
|
||||
from .programming_language.forms import ProgrammingLanguageForm
|
||||
from .programming_language.models import ProjectProgrammingLanguage
|
||||
from .forms import HostingPlatformForm, ProgrammingLanguageForm, ProjectForm
|
||||
from .models import Project, ProjectProgrammingLanguage
|
||||
|
||||
ProgrammingLanguageInlineFormset = inlineformset_factory(
|
||||
Project,
|
||||
@ -23,7 +20,7 @@ ProgrammingLanguageInlineFormset = inlineformset_factory(
|
||||
|
||||
class ProjectListView(FilterView):
|
||||
model = Project
|
||||
template_name = "fossdb/index.html"
|
||||
template_name = "fossdb/explore.html"
|
||||
filterset_class = ProjectFilter
|
||||
context_object_name = "projects"
|
||||
paginate_by = 10 # optional 10 projects a page
|
||||
|
||||
Loading…
Reference in New Issue
Block a user