diff --git a/FOSSDB_web/apps/fossdb/admin.py b/FOSSDB_web/apps/fossdb/admin.py index 353a014..4bcb5bd 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, License, ProgrammingLanguage, Project, - ProjectHostingPlatform, ProjectProgrammingLanguage) - - -class ProjectProgrammingLanguageInline(admin.TabularInline): - model = ProjectProgrammingLanguage - extra = 1 +from .models import HostingPlatform, License, Project, ProjectHostingPlatform class ProjectHostingPlatformInline(admin.TabularInline): @@ -26,6 +21,5 @@ class ProjectAdmin(admin.ModelAdmin): admin.site.register(License) -admin.site.register(ProgrammingLanguage) admin.site.register(HostingPlatform) admin.site.register(Project, ProjectAdmin) diff --git a/FOSSDB_web/apps/fossdb/forms.py b/FOSSDB_web/apps/fossdb/forms.py index 9da02f4..355ed69 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, License, Project, ProjectHostingPlatform class ProjectForm(forms.ModelForm): @@ -29,23 +28,6 @@ class LicenseForm(forms.ModelForm): fields = ["short_name", "full_name", "url", "description"] -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 d21d940..1921743 100644 --- a/FOSSDB_web/apps/fossdb/models.py +++ b/FOSSDB_web/apps/fossdb/models.py @@ -2,6 +2,7 @@ import uuid from django.contrib.auth.models import User from django.db import models +from programming_language.models import ProgrammingLanguage class License(models.Model): @@ -14,22 +15,6 @@ class License(models.Model): return self.short_name -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}%" - - 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 e4d3655..4df1802 100644 --- a/FOSSDB_web/settings.py +++ b/FOSSDB_web/settings.py @@ -38,6 +38,7 @@ ALLOWED_HOSTS = config["ALLOWED_HOSTS"] INSTALLED_APPS = [ "fossdb", "account", + "programming_language", "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes",