diff --git a/FOSSDB_web/apps/fossdb/admin.py b/FOSSDB_web/apps/fossdb/admin.py index 893dce9..18dbec5 100644 --- a/FOSSDB_web/apps/fossdb/admin.py +++ b/FOSSDB_web/apps/fossdb/admin.py @@ -1,8 +1,8 @@ from django.contrib import admin +from .language.models import ProgrammingLanguage, ProjectProgrammingLanguage from .license.models import License -from .models import (HostingPlatform, ProgrammingLanguage, Project, - ProjectHostingPlatform, ProjectProgrammingLanguage, Tag) +from .models import HostingPlatform, Project, ProjectHostingPlatform, Tag class ProjectProgrammingLanguageInline(admin.TabularInline): diff --git a/FOSSDB_web/apps/fossdb/forms.py b/FOSSDB_web/apps/fossdb/forms.py index 1eafc30..1dde296 100644 --- a/FOSSDB_web/apps/fossdb/forms.py +++ b/FOSSDB_web/apps/fossdb/forms.py @@ -1,7 +1,6 @@ from django import forms -from .models import (HostingPlatform, License, ProgrammingLanguage, Project, - ProjectHostingPlatform, ProjectProgrammingLanguage) +from .models import HostingPlatform, Project, ProjectHostingPlatform class ProjectForm(forms.ModelForm): @@ -23,23 +22,6 @@ class ProjectForm(forms.ModelForm): } -class ProgrammingLanguageForm(forms.ModelForm): - percentage = forms.IntegerField(min_value=0, max_value=100) - - class Meta: - model = ProgrammingLanguage - fields = ["language", "percentage"] - - -ProjectProgrammingLanguageFormSet = forms.inlineformset_factory( - Project, - ProjectProgrammingLanguage, - form=ProgrammingLanguageForm, - extra=1, - can_delete=True, -) - - class HostingPlatformForm(forms.ModelForm): url = forms.URLField() diff --git a/FOSSDB_web/apps/fossdb/language/forms.py b/FOSSDB_web/apps/fossdb/language/forms.py new file mode 100644 index 0000000..a7cadf3 --- /dev/null +++ b/FOSSDB_web/apps/fossdb/language/forms.py @@ -0,0 +1,22 @@ +from django import forms + +from fossdb.models import Project + +from .models import ProgrammingLanguage, ProjectProgrammingLanguage + + +class ProgrammingLanguageForm(forms.ModelForm): + percentage = forms.IntegerField(min_value=0, max_value=100) + + class Meta: + model = ProgrammingLanguage + fields = ["language", "percentage"] + + +ProjectProgrammingLanguageFormSet = forms.inlineformset_factory( + Project, + ProjectProgrammingLanguage, + form=ProgrammingLanguageForm, + extra=1, + can_delete=True, +) diff --git a/FOSSDB_web/apps/fossdb/language/models.py b/FOSSDB_web/apps/fossdb/language/models.py new file mode 100644 index 0000000..9a624f1 --- /dev/null +++ b/FOSSDB_web/apps/fossdb/language/models.py @@ -0,0 +1,17 @@ +from django.db import models + + +class ProgrammingLanguage(models.Model): + language = models.CharField(max_length=100) + + def __str__(self): + return self.language + + +class ProjectProgrammingLanguage(models.Model): + project = models.ForeignKey("Project", on_delete=models.CASCADE) + language = models.ForeignKey(ProgrammingLanguage, on_delete=models.CASCADE) + percentage = models.PositiveIntegerField() + + def __str__(self): + return f"{self.project} | {self.language} | {self.percentage}%" diff --git a/FOSSDB_web/apps/fossdb/models.py b/FOSSDB_web/apps/fossdb/models.py index 3061570..ff3703a 100644 --- a/FOSSDB_web/apps/fossdb/models.py +++ b/FOSSDB_web/apps/fossdb/models.py @@ -3,6 +3,7 @@ import uuid from django.conf import settings from django.db import models +from .language.models import ProgrammingLanguage from .license.models import License User = settings.AUTH_USER_MODEL @@ -15,13 +16,6 @@ class HostingPlatform(models.Model): return self.hosting_platform -class ProgrammingLanguage(models.Model): - language = models.CharField(max_length=100) - - def __str__(self): - return self.language - - class Tag(models.Model): name = models.CharField(max_length=100) description = models.TextField(blank=True, default="") @@ -31,15 +25,6 @@ class Tag(models.Model): return self.name -class ProjectProgrammingLanguage(models.Model): - project = models.ForeignKey("Project", on_delete=models.CASCADE) - language = models.ForeignKey(ProgrammingLanguage, on_delete=models.CASCADE) - percentage = models.PositiveIntegerField() - - def __str__(self): - return f"{self.project} | {self.language} | {self.percentage}%" - - class ProjectHostingPlatform(models.Model): project = models.ForeignKey("Project", on_delete=models.CASCADE) hosting_platform = models.ForeignKey(HostingPlatform, on_delete=models.CASCADE) diff --git a/FOSSDB_web/apps/fossdb/views.py b/FOSSDB_web/apps/fossdb/views.py index 710ee59..3249af3 100644 --- a/FOSSDB_web/apps/fossdb/views.py +++ b/FOSSDB_web/apps/fossdb/views.py @@ -1,8 +1,8 @@ from django.contrib.auth.decorators import login_required, permission_required from django.shortcuts import redirect, render -from .forms import (ProjectForm, ProjectHostingPlatformFormSet, - ProjectProgrammingLanguageFormSet) +from .forms import ProjectForm, ProjectHostingPlatformFormSet +from .language.forms import ProjectProgrammingLanguageFormSet from .models import Project