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 django.contrib import admin
|
||||||
|
|
||||||
from .hosting_platform.models import HostingPlatform, ProjectHostingPlatform
|
from .models import (
|
||||||
from .license.models import License
|
HostingPlatform,
|
||||||
from .models import Project
|
License,
|
||||||
from .operating_system.models import OperatingSystem, OperatingSystemVersion
|
OperatingSystem,
|
||||||
from .programming_language.models import ProgrammingLanguage, ProjectProgrammingLanguage
|
OperatingSystemVersion,
|
||||||
from .tag.models import Tag
|
ProgrammingLanguage,
|
||||||
|
Project,
|
||||||
|
ProjectHostingPlatform,
|
||||||
|
ProjectProgrammingLanguage,
|
||||||
|
Tag,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ProjectProgrammingLanguageInline(admin.TabularInline):
|
class ProjectProgrammingLanguageInline(admin.TabularInline):
|
||||||
|
|||||||
@ -1,6 +1,40 @@
|
|||||||
from django import forms
|
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):
|
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 django.db import models
|
||||||
|
|
||||||
from .license.models import License
|
|
||||||
from .operating_system.models import OperatingSystemVersion
|
class License(models.Model):
|
||||||
from .programming_language.models import ProgrammingLanguage
|
short_name = models.CharField(max_length=50, unique=True)
|
||||||
from .tag.models import Tag
|
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):
|
class Project(models.Model):
|
||||||
@ -41,3 +91,33 @@ class Project(models.Model):
|
|||||||
name="unique_owner_name",
|
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
|
from . import views
|
||||||
|
|
||||||
urlpatterns = [
|
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("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>/", views.ProjectDetailView.as_view(), name="project-detail"),
|
||||||
path("<str:owner>/<str:project_name>/edit/", views.ProjectUpdateView.as_view(), name="project-update"),
|
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 .filters import ProjectFilter
|
||||||
|
|
||||||
from .forms import ProjectForm
|
from .forms import HostingPlatformForm, ProgrammingLanguageForm, ProjectForm
|
||||||
from .hosting_platform.forms import HostingPlatformForm
|
from .models import Project, ProjectProgrammingLanguage
|
||||||
from .models import Project
|
|
||||||
from .programming_language.forms import ProgrammingLanguageForm
|
|
||||||
from .programming_language.models import ProjectProgrammingLanguage
|
|
||||||
|
|
||||||
ProgrammingLanguageInlineFormset = inlineformset_factory(
|
ProgrammingLanguageInlineFormset = inlineformset_factory(
|
||||||
Project,
|
Project,
|
||||||
@ -23,7 +20,7 @@ ProgrammingLanguageInlineFormset = inlineformset_factory(
|
|||||||
|
|
||||||
class ProjectListView(FilterView):
|
class ProjectListView(FilterView):
|
||||||
model = Project
|
model = Project
|
||||||
template_name = "fossdb/index.html"
|
template_name = "fossdb/explore.html"
|
||||||
filterset_class = ProjectFilter
|
filterset_class = ProjectFilter
|
||||||
context_object_name = "projects"
|
context_object_name = "projects"
|
||||||
paginate_by = 10 # optional 10 projects a page
|
paginate_by = 10 # optional 10 projects a page
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user