From d5bf12cf29423ac8f1f993e7870ad7a39acb4915 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Sat, 8 Apr 2023 13:10:28 +0300 Subject: [PATCH 1/5] Created License app --- FOSSDB_web/apps/license/__init__.py | 0 FOSSDB_web/apps/license/admin.py | 3 +++ FOSSDB_web/apps/license/apps.py | 6 ++++++ FOSSDB_web/apps/license/migrations/__init__.py | 0 FOSSDB_web/apps/license/models.py | 3 +++ FOSSDB_web/apps/license/tests.py | 3 +++ FOSSDB_web/apps/license/views.py | 3 +++ 7 files changed, 18 insertions(+) create mode 100644 FOSSDB_web/apps/license/__init__.py create mode 100644 FOSSDB_web/apps/license/admin.py create mode 100644 FOSSDB_web/apps/license/apps.py create mode 100644 FOSSDB_web/apps/license/migrations/__init__.py create mode 100644 FOSSDB_web/apps/license/models.py create mode 100644 FOSSDB_web/apps/license/tests.py create mode 100644 FOSSDB_web/apps/license/views.py diff --git a/FOSSDB_web/apps/license/__init__.py b/FOSSDB_web/apps/license/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/FOSSDB_web/apps/license/admin.py b/FOSSDB_web/apps/license/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/FOSSDB_web/apps/license/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/FOSSDB_web/apps/license/apps.py b/FOSSDB_web/apps/license/apps.py new file mode 100644 index 0000000..af50348 --- /dev/null +++ b/FOSSDB_web/apps/license/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class LicenseConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'license' diff --git a/FOSSDB_web/apps/license/migrations/__init__.py b/FOSSDB_web/apps/license/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/FOSSDB_web/apps/license/models.py b/FOSSDB_web/apps/license/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/FOSSDB_web/apps/license/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/FOSSDB_web/apps/license/tests.py b/FOSSDB_web/apps/license/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/FOSSDB_web/apps/license/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/FOSSDB_web/apps/license/views.py b/FOSSDB_web/apps/license/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/FOSSDB_web/apps/license/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. From a055cbe47659775fad268616b56ea787cd776026 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Sat, 8 Apr 2023 13:16:38 +0300 Subject: [PATCH 2/5] Moved License code to separate app --- FOSSDB_web/apps/fossdb/admin.py | 3 +-- FOSSDB_web/apps/fossdb/forms.py | 8 +------ ...2_delete_license_alter_project_licenses.py | 22 +++++++++++++++++ FOSSDB_web/apps/fossdb/models.py | 10 +------- FOSSDB_web/apps/license/admin.py | 4 +++- FOSSDB_web/apps/license/forms.py | 9 +++++++ .../apps/license/migrations/0001_initial.py | 24 +++++++++++++++++++ FOSSDB_web/apps/license/models.py | 10 +++++++- FOSSDB_web/apps/license/views.py | 3 --- FOSSDB_web/settings.py | 1 + 10 files changed, 71 insertions(+), 23 deletions(-) create mode 100644 FOSSDB_web/apps/fossdb/migrations/0002_delete_license_alter_project_licenses.py create mode 100644 FOSSDB_web/apps/license/forms.py create mode 100644 FOSSDB_web/apps/license/migrations/0001_initial.py diff --git a/FOSSDB_web/apps/fossdb/admin.py b/FOSSDB_web/apps/fossdb/admin.py index 353a014..e377288 100644 --- a/FOSSDB_web/apps/fossdb/admin.py +++ b/FOSSDB_web/apps/fossdb/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin -from .models import (HostingPlatform, License, ProgrammingLanguage, Project, +from .models import (HostingPlatform, ProgrammingLanguage, Project, ProjectHostingPlatform, ProjectProgrammingLanguage) @@ -25,7 +25,6 @@ class ProjectAdmin(admin.ModelAdmin): return " | ".join([i.hosting_platform.hosting_platform for i in object.projecthostingplatform_set.all()]) -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..0333317 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, License, ProgrammingLanguage, Project, +from .models import (HostingPlatform, ProgrammingLanguage, Project, ProjectHostingPlatform, ProjectProgrammingLanguage) @@ -23,12 +23,6 @@ class ProjectForm(forms.ModelForm): } -class LicenseForm(forms.ModelForm): - class Meta: - model = License - fields = ["short_name", "full_name", "url", "description"] - - class ProgrammingLanguageForm(forms.ModelForm): percentage = forms.IntegerField(min_value=0, max_value=100) diff --git a/FOSSDB_web/apps/fossdb/migrations/0002_delete_license_alter_project_licenses.py b/FOSSDB_web/apps/fossdb/migrations/0002_delete_license_alter_project_licenses.py new file mode 100644 index 0000000..0244548 --- /dev/null +++ b/FOSSDB_web/apps/fossdb/migrations/0002_delete_license_alter_project_licenses.py @@ -0,0 +1,22 @@ +# Generated by Django 4.1.7 on 2023-04-08 10:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('license', '0001_initial'), + ('fossdb', '0001_initial'), + ] + + operations = [ + migrations.DeleteModel( + name='License', + ), + migrations.AlterField( + model_name='project', + name='licenses', + field=models.ManyToManyField(to='license.license'), + ), + ] diff --git a/FOSSDB_web/apps/fossdb/models.py b/FOSSDB_web/apps/fossdb/models.py index d21d940..d25faa4 100644 --- a/FOSSDB_web/apps/fossdb/models.py +++ b/FOSSDB_web/apps/fossdb/models.py @@ -3,15 +3,7 @@ import uuid from django.contrib.auth.models import User from django.db import models - -class License(models.Model): - short_name = models.CharField(max_length=50) - full_name = models.CharField(max_length=100, null=True, blank=True) - url = models.URLField(null=True, blank=True) - description = models.TextField(null=True, blank=True) - - def __str__(self): - return self.short_name +from license.models import License class ProgrammingLanguage(models.Model): diff --git a/FOSSDB_web/apps/license/admin.py b/FOSSDB_web/apps/license/admin.py index 8c38f3f..9908df0 100644 --- a/FOSSDB_web/apps/license/admin.py +++ b/FOSSDB_web/apps/license/admin.py @@ -1,3 +1,5 @@ from django.contrib import admin -# Register your models here. +from .models import License + +admin.site.register(License) diff --git a/FOSSDB_web/apps/license/forms.py b/FOSSDB_web/apps/license/forms.py new file mode 100644 index 0000000..0c180da --- /dev/null +++ b/FOSSDB_web/apps/license/forms.py @@ -0,0 +1,9 @@ +from django import forms + +from .models import License + + +class LicenseForm(forms.ModelForm): + class Meta: + model = License + fields = ["short_name", "full_name", "url", "description"] diff --git a/FOSSDB_web/apps/license/migrations/0001_initial.py b/FOSSDB_web/apps/license/migrations/0001_initial.py new file mode 100644 index 0000000..26024b3 --- /dev/null +++ b/FOSSDB_web/apps/license/migrations/0001_initial.py @@ -0,0 +1,24 @@ +# Generated by Django 4.1.7 on 2023-04-08 10:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='License', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('short_name', models.CharField(max_length=50)), + ('full_name', models.CharField(blank=True, max_length=100, null=True)), + ('url', models.URLField(blank=True, null=True)), + ('description', models.TextField(blank=True, null=True)), + ], + ), + ] diff --git a/FOSSDB_web/apps/license/models.py b/FOSSDB_web/apps/license/models.py index 71a8362..172f707 100644 --- a/FOSSDB_web/apps/license/models.py +++ b/FOSSDB_web/apps/license/models.py @@ -1,3 +1,11 @@ from django.db import models -# Create your models here. + +class License(models.Model): + short_name = models.CharField(max_length=50) + full_name = models.CharField(max_length=100, null=True, blank=True) + url = models.URLField(null=True, blank=True) + description = models.TextField(null=True, blank=True) + + def __str__(self): + return self.short_name diff --git a/FOSSDB_web/apps/license/views.py b/FOSSDB_web/apps/license/views.py index 91ea44a..e69de29 100644 --- a/FOSSDB_web/apps/license/views.py +++ b/FOSSDB_web/apps/license/views.py @@ -1,3 +0,0 @@ -from django.shortcuts import render - -# Create your views here. diff --git a/FOSSDB_web/settings.py b/FOSSDB_web/settings.py index e4d3655..5a28844 100644 --- a/FOSSDB_web/settings.py +++ b/FOSSDB_web/settings.py @@ -37,6 +37,7 @@ ALLOWED_HOSTS = config["ALLOWED_HOSTS"] INSTALLED_APPS = [ "fossdb", + "license", "account", "django.contrib.admin", "django.contrib.auth", From 89143d6d43fa74937c49a367b3156ac080642667 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Sat, 8 Apr 2023 13:18:13 +0300 Subject: [PATCH 3/5] Added Tag model --- FOSSDB_web/apps/fossdb/admin.py | 3 ++- FOSSDB_web/apps/fossdb/models.py | 15 ++++++++++++--- FOSSDB_web/settings.py | 14 +++++++++++++- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/FOSSDB_web/apps/fossdb/admin.py b/FOSSDB_web/apps/fossdb/admin.py index 353a014..e7f018d 100644 --- a/FOSSDB_web/apps/fossdb/admin.py +++ b/FOSSDB_web/apps/fossdb/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin from .models import (HostingPlatform, License, ProgrammingLanguage, Project, - ProjectHostingPlatform, ProjectProgrammingLanguage) + ProjectHostingPlatform, ProjectProgrammingLanguage, Tag) class ProjectProgrammingLanguageInline(admin.TabularInline): @@ -29,3 +29,4 @@ admin.site.register(License) admin.site.register(ProgrammingLanguage) admin.site.register(HostingPlatform) admin.site.register(Project, ProjectAdmin) +admin.site.register(Tag) diff --git a/FOSSDB_web/apps/fossdb/models.py b/FOSSDB_web/apps/fossdb/models.py index d21d940..f4a7079 100644 --- a/FOSSDB_web/apps/fossdb/models.py +++ b/FOSSDB_web/apps/fossdb/models.py @@ -1,12 +1,14 @@ import uuid -from django.contrib.auth.models import User +from django.conf import settings from django.db import models +User = settings.AUTH_USER_MODEL + class License(models.Model): short_name = models.CharField(max_length=50) - full_name = models.CharField(max_length=100, null=True, blank=True) + full_name = models.CharField(max_length=100, blank=True) url = models.URLField(null=True, blank=True) description = models.TextField(null=True, blank=True) @@ -24,7 +26,7 @@ class ProgrammingLanguage(models.Model): class ProjectProgrammingLanguage(models.Model): project = models.ForeignKey("Project", on_delete=models.CASCADE) language = models.ForeignKey(ProgrammingLanguage, on_delete=models.CASCADE) - percentage = models.PositiveIntegerField() + percentage = models.PositiveIntegerField(default=0) def __str__(self): return f"{self.project} | {self.language} | {self.percentage}%" @@ -46,6 +48,12 @@ class ProjectHostingPlatform(models.Model): return f"{self.project} | {self.hosting_platform}" +class Tag(models.Model): + name = models.CharField(max_length=100) + description = models.TextField(null=True, blank=True) + icon = models.ImageField(upload_to="types/icons/", null=True, blank=True) + + class Project(models.Model): uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) author = models.ForeignKey(User, on_delete=models.CASCADE) @@ -54,6 +62,7 @@ class Project(models.Model): licenses = models.ManyToManyField(License) programming_languages = models.ManyToManyField(ProgrammingLanguage, through="ProjectProgrammingLanguage", related_name="projects") hosting_platform = models.ManyToManyField(HostingPlatform, through="ProjectHostingPlatform", related_name="projects") + project_type = models.ForeignKey(Tag, on_delete=models.CASCADE, blank=True, null=True) date_created = models.DateTimeField(auto_now_add=True) def save(self, *args, **kwargs): diff --git a/FOSSDB_web/settings.py b/FOSSDB_web/settings.py index e4d3655..cd5514a 100644 --- a/FOSSDB_web/settings.py +++ b/FOSSDB_web/settings.py @@ -82,7 +82,7 @@ WSGI_APPLICATION = "FOSSDB_web.wsgi.application" DATABASES = { "default": { - "ENGINE": "django.db.backends.mysql", + "ENGINE": f"django.db.backends.{config['DATABASE']['ENGINE']}", "NAME": config["DATABASE"]["NAME"], "USER": config["DATABASE"]["USER"], "PASSWORD": config["DATABASE"]["PASSWORD"], @@ -128,6 +128,7 @@ USE_TZ = True STATIC_URL = "/static/" STATIC_ROOT = BASE_PATH.joinpath("static") +MEDIA_URL = "/media/" MEDIA_ROOT = BASE_PATH.joinpath("media") # Default primary key field type @@ -136,3 +137,14 @@ MEDIA_ROOT = BASE_PATH.joinpath("media") DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" LOGIN_REDIRECT_URL = "/" LOGOUT_REDIRECT_URL = "/" + +# HTTPS settings +# SESSION_COOKIE_SECURE = True +# CSRF_COOKIE_SECURE = True +# SECURE_SSL_REDIRECT = True + +# HSTS settings +# SECURE_HSTS_SECONDS = 31536000 # 1 year +# SECURE_HSTS_SECONDS = 1 # 1 year +# SECURE_HSTS_PRELOAD = True +# SECURE_HSTS_INCLUDE_SUBDOMAINS = True From 1555f9d5e0bfcc4cad55ae111033f15eedffdd89 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Sat, 8 Apr 2023 13:26:12 +0300 Subject: [PATCH 4/5] Changed user --- FOSSDB_web/apps/fossdb/models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/FOSSDB_web/apps/fossdb/models.py b/FOSSDB_web/apps/fossdb/models.py index 8ca8573..ff362d2 100644 --- a/FOSSDB_web/apps/fossdb/models.py +++ b/FOSSDB_web/apps/fossdb/models.py @@ -2,9 +2,10 @@ import uuid from django.conf import settings from django.db import models - from license.models import License +User = settings.AUTH_USER_MODEL + class ProgrammingLanguage(models.Model): language = models.CharField(max_length=100) From 2207738a2a8b5fdc562cf5e963258ac239782ac2 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Sat, 8 Apr 2023 13:46:59 +0300 Subject: [PATCH 5/5] Created ProgrammingLanguage app --- FOSSDB_web/apps/fossdb/admin.py | 10 ++------- FOSSDB_web/apps/fossdb/forms.py | 20 +----------------- FOSSDB_web/apps/fossdb/models.py | 17 +-------------- FOSSDB_web/apps/fossdb/views.py | 4 ++-- .../apps/programming_language/__init__.py | 0 FOSSDB_web/apps/programming_language/admin.py | 11 ++++++++++ FOSSDB_web/apps/programming_language/apps.py | 6 ++++++ FOSSDB_web/apps/programming_language/forms.py | 21 +++++++++++++++++++ .../migrations/__init__.py | 0 .../apps/programming_language/models.py | 17 +++++++++++++++ FOSSDB_web/apps/programming_language/tests.py | 3 +++ FOSSDB_web/apps/programming_language/views.py | 3 +++ FOSSDB_web/settings.py | 1 + 13 files changed, 68 insertions(+), 45 deletions(-) create mode 100644 FOSSDB_web/apps/programming_language/__init__.py create mode 100644 FOSSDB_web/apps/programming_language/admin.py create mode 100644 FOSSDB_web/apps/programming_language/apps.py create mode 100644 FOSSDB_web/apps/programming_language/forms.py create mode 100644 FOSSDB_web/apps/programming_language/migrations/__init__.py create mode 100644 FOSSDB_web/apps/programming_language/models.py create mode 100644 FOSSDB_web/apps/programming_language/tests.py create mode 100644 FOSSDB_web/apps/programming_language/views.py 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",