diff --git a/FOSSDB_web/apps/fossdb/admin.py b/FOSSDB_web/apps/fossdb/admin.py index 099f80d..a74ba9e 100644 --- a/FOSSDB_web/apps/fossdb/admin.py +++ b/FOSSDB_web/apps/fossdb/admin.py @@ -1,12 +1,8 @@ from django.contrib import admin +from hosting_platform.admin import ProjectHostingPlatformInline from programming_language.admin import ProjectProgrammingLanguageInline -from .models import HostingPlatform, License, Project, ProjectHostingPlatform - - -class ProjectHostingPlatformInline(admin.TabularInline): - model = ProjectHostingPlatform - extra = 1 +from .models import Project class ProjectAdmin(admin.ModelAdmin): @@ -20,7 +16,5 @@ class ProjectAdmin(admin.ModelAdmin): return " | ".join([i.hosting_platform.hosting_platform for i in object.projecthostingplatform_set.all()]) -admin.site.register(ProgrammingLanguage) -admin.site.register(HostingPlatform) admin.site.register(Project, ProjectAdmin) admin.site.register(Tag) diff --git a/FOSSDB_web/apps/fossdb/forms.py b/FOSSDB_web/apps/fossdb/forms.py index 1dde296..b1f60e2 100644 --- a/FOSSDB_web/apps/fossdb/forms.py +++ b/FOSSDB_web/apps/fossdb/forms.py @@ -1,6 +1,6 @@ from django import forms -from .models import HostingPlatform, Project, ProjectHostingPlatform +from .models import Project class ProjectForm(forms.ModelForm): @@ -20,20 +20,3 @@ class ProjectForm(forms.ModelForm): }), "licenses": forms.CheckboxSelectMultiple(), } - - -class HostingPlatformForm(forms.ModelForm): - url = forms.URLField() - - class Meta: - model = HostingPlatform - fields = ["hosting_platform", "url"] - - -ProjectHostingPlatformFormSet = forms.inlineformset_factory( - Project, - ProjectHostingPlatform, - form=HostingPlatformForm, - extra=1, - can_delete=False -) diff --git a/FOSSDB_web/apps/fossdb/models.py b/FOSSDB_web/apps/fossdb/models.py index bf9a7bd..4700ea9 100644 --- a/FOSSDB_web/apps/fossdb/models.py +++ b/FOSSDB_web/apps/fossdb/models.py @@ -2,28 +2,13 @@ import uuid from django.conf import settings from django.db import models +from hosting_platform.models import HostingPlatform from license.models import License from programming_language.models import ProgrammingLanguage User = settings.AUTH_USER_MODEL -class HostingPlatform(models.Model): - hosting_platform = models.CharField(max_length=100) - - def __str__(self): - return self.hosting_platform - - -class ProjectHostingPlatform(models.Model): - project = models.ForeignKey("Project", on_delete=models.CASCADE) - hosting_platform = models.ForeignKey(HostingPlatform, on_delete=models.CASCADE) - url = models.URLField() - - def __str__(self): - return f"{self.project} | {self.hosting_platform}" - - class Tag(models.Model): name = models.CharField(max_length=100) description = models.TextField(null=True, blank=True) diff --git a/FOSSDB_web/apps/fossdb/views.py b/FOSSDB_web/apps/fossdb/views.py index 63d4ae2..34bb139 100644 --- a/FOSSDB_web/apps/fossdb/views.py +++ b/FOSSDB_web/apps/fossdb/views.py @@ -1,8 +1,9 @@ from django.contrib.auth.decorators import login_required, permission_required from django.shortcuts import redirect, render +from hosting_platform.forms import ProjectHostingPlatformFormSet from programming_language.forms import ProjectProgrammingLanguageFormSet -from .forms import ProjectForm, ProjectHostingPlatformFormSet +from .forms import ProjectForm from .models import Project diff --git a/FOSSDB_web/apps/hosting_platform/admin.py b/FOSSDB_web/apps/hosting_platform/admin.py index 8c38f3f..22ac739 100644 --- a/FOSSDB_web/apps/hosting_platform/admin.py +++ b/FOSSDB_web/apps/hosting_platform/admin.py @@ -1,3 +1,11 @@ from django.contrib import admin -# Register your models here. +from .models import HostingPlatform, ProjectHostingPlatform + + +class ProjectHostingPlatformInline(admin.TabularInline): + model = ProjectHostingPlatform + extra = 1 + + +admin.site.register(HostingPlatform) diff --git a/FOSSDB_web/apps/hosting_platform/forms.py b/FOSSDB_web/apps/hosting_platform/forms.py new file mode 100644 index 0000000..7d39747 --- /dev/null +++ b/FOSSDB_web/apps/hosting_platform/forms.py @@ -0,0 +1,21 @@ +from django import forms +from fossdb.models import Project + +from .models import HostingPlatform, ProjectHostingPlatform + + +class HostingPlatformForm(forms.ModelForm): + url = forms.URLField() + + class Meta: + model = HostingPlatform + fields = ["hosting_platform", "url"] + + +ProjectHostingPlatformFormSet = forms.inlineformset_factory( + Project, + ProjectHostingPlatform, + form=HostingPlatformForm, + extra=1, + can_delete=False +) diff --git a/FOSSDB_web/apps/hosting_platform/models.py b/FOSSDB_web/apps/hosting_platform/models.py index 71a8362..c401aa0 100644 --- a/FOSSDB_web/apps/hosting_platform/models.py +++ b/FOSSDB_web/apps/hosting_platform/models.py @@ -1,3 +1,17 @@ from django.db import models -# Create your models here. + +class HostingPlatform(models.Model): + hosting_platform = models.CharField(max_length=100) + + def __str__(self): + return self.hosting_platform + + +class ProjectHostingPlatform(models.Model): + project = models.ForeignKey("Project", on_delete=models.CASCADE) + hosting_platform = models.ForeignKey(HostingPlatform, on_delete=models.CASCADE) + url = models.URLField() + + def __str__(self): + return f"{self.project} | {self.hosting_platform}"