diff --git a/FOSSDB_web/apps/fossdb/admin.py b/FOSSDB_web/apps/fossdb/admin.py index 31ca3f4..099f80d 100644 --- a/FOSSDB_web/apps/fossdb/admin.py +++ b/FOSSDB_web/apps/fossdb/admin.py @@ -1,12 +1,7 @@ from django.contrib import admin +from programming_language.admin import ProjectProgrammingLanguageInline -from .models import (HostingPlatform, ProgrammingLanguage, Project, - ProjectHostingPlatform, ProjectProgrammingLanguage, Tag) - - -class ProjectProgrammingLanguageInline(admin.TabularInline): - model = ProjectProgrammingLanguage - extra = 1 +from .models import HostingPlatform, License, Project, ProjectHostingPlatform class ProjectHostingPlatformInline(admin.TabularInline): diff --git a/FOSSDB_web/apps/fossdb/forms.py b/FOSSDB_web/apps/fossdb/forms.py index 0333317..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, 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/models.py b/FOSSDB_web/apps/fossdb/models.py index ff362d2..bf9a7bd 100644 --- a/FOSSDB_web/apps/fossdb/models.py +++ b/FOSSDB_web/apps/fossdb/models.py @@ -3,26 +3,11 @@ import uuid from django.conf import settings from django.db import models from license.models import License +from programming_language.models import ProgrammingLanguage User = settings.AUTH_USER_MODEL -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(default=0) - - def __str__(self): - return f"{self.project} | {self.language} | {self.percentage}%" - - class HostingPlatform(models.Model): hosting_platform = models.CharField(max_length=100) diff --git a/FOSSDB_web/apps/fossdb/views.py b/FOSSDB_web/apps/fossdb/views.py index 19b6d09..63d4ae2 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 programming_language.forms import ProjectProgrammingLanguageFormSet -from .forms import (ProjectForm, ProjectHostingPlatformFormSet, - ProjectProgrammingLanguageFormSet) +from .forms import ProjectForm, ProjectHostingPlatformFormSet from .models import Project diff --git a/FOSSDB_web/apps/programming_language/__init__.py b/FOSSDB_web/apps/programming_language/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/FOSSDB_web/apps/programming_language/admin.py b/FOSSDB_web/apps/programming_language/admin.py new file mode 100644 index 0000000..74324bf --- /dev/null +++ b/FOSSDB_web/apps/programming_language/admin.py @@ -0,0 +1,11 @@ +from django.contrib import admin + +from .models import ProgrammingLanguage, ProjectProgrammingLanguage + + +class ProjectProgrammingLanguageInline(admin.TabularInline): + model = ProjectProgrammingLanguage + extra = 1 + + +admin.site.register(ProgrammingLanguage) diff --git a/FOSSDB_web/apps/programming_language/apps.py b/FOSSDB_web/apps/programming_language/apps.py new file mode 100644 index 0000000..4192b11 --- /dev/null +++ b/FOSSDB_web/apps/programming_language/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ProgrammingLanguageConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'programming_language' diff --git a/FOSSDB_web/apps/programming_language/forms.py b/FOSSDB_web/apps/programming_language/forms.py new file mode 100644 index 0000000..4cc8775 --- /dev/null +++ b/FOSSDB_web/apps/programming_language/forms.py @@ -0,0 +1,21 @@ +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/programming_language/migrations/__init__.py b/FOSSDB_web/apps/programming_language/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/FOSSDB_web/apps/programming_language/models.py b/FOSSDB_web/apps/programming_language/models.py new file mode 100644 index 0000000..9a624f1 --- /dev/null +++ b/FOSSDB_web/apps/programming_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/programming_language/tests.py b/FOSSDB_web/apps/programming_language/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/FOSSDB_web/apps/programming_language/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/FOSSDB_web/apps/programming_language/views.py b/FOSSDB_web/apps/programming_language/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/FOSSDB_web/apps/programming_language/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/FOSSDB_web/settings.py b/FOSSDB_web/settings.py index 70fa917..21159d2 100644 --- a/FOSSDB_web/settings.py +++ b/FOSSDB_web/settings.py @@ -39,6 +39,7 @@ INSTALLED_APPS = [ "fossdb", "license", "account", + "programming_language", "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes",