Add external database with parser vacancies
All checks were successful
release / docker (push) Successful in 20s

This commit is contained in:
estromenko 2025-11-30 14:30:34 +03:00
parent c053a5676d
commit dab73dc4c1
6 changed files with 86 additions and 0 deletions

View File

@ -43,6 +43,7 @@ INSTALLED_APPS = [
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'vacancies.main', 'vacancies.main',
'vacancies.hh_parser',
] ]
MIDDLEWARE = [ MIDDLEWARE = [
@ -89,8 +90,19 @@ DATABASES = {
"PORT": os.getenv("PG_PORT", "5432"), "PORT": os.getenv("PG_PORT", "5432"),
"CONN_HEALTH_CHECKS": True, "CONN_HEALTH_CHECKS": True,
}, },
"hh_parser": {
"ENGINE": "django.db.backends.postgresql",
"NAME": os.getenv("HH_PARSER_PG_NAME", "postgres"),
"USER": os.getenv("HH_PARSER_PG_USER", "postgres"),
"PASSWORD": os.getenv("HH_PARSER_PG_PASSWORD", "postgres"),
"HOST": os.getenv("HH_PARSER_PG_HOST", "localhost"),
"PORT": os.getenv("HH_PARSER_PG_PORT", "5432"),
"CONN_HEALTH_CHECKS": True,
},
} }
DATABASE_ROUTERS = ["vacancies.hh_parser.routers.AppRouter"]
DB_URI = f"postgres://{DATABASES['default']['USER']}:{quote(DATABASES['default']['PASSWORD'])}@{DATABASES['default']['HOST']}:{DATABASES['default']['PORT']}/{DATABASES['default']['NAME']}?sslmode=disable" DB_URI = f"postgres://{DATABASES['default']['USER']}:{quote(DATABASES['default']['PASSWORD'])}@{DATABASES['default']['HOST']}:{DATABASES['default']['PORT']}/{DATABASES['default']['NAME']}?sslmode=disable"

View File

View File

@ -0,0 +1,14 @@
from django.contrib import admin
from vacancies.hh_parser import models
@admin.register(models.Vacancy)
class VacancyAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
return False
def has_change_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False

View File

@ -0,0 +1,6 @@
from django.apps import AppConfig
class HHParserConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'vacancies.hh_parser'

View File

@ -0,0 +1,31 @@
from django.db import models
class Vacancy(models.Model):
id = models.CharField(max_length=255, primary_key=True)
title = models.CharField(max_length=255, null=True, blank=True)
description = models.TextField(null=True, blank=True)
min_payment = models.IntegerField(null=True, blank=True)
max_payment = models.IntegerField(null=True, blank=True)
payment_currency = models.CharField(max_length=255, null=True, blank=True)
payment_type = models.CharField(max_length=255, null=True, blank=True)
payment_period = models.CharField(max_length=255, null=True, blank=True)
work_experience = models.CharField(max_length=255, null=True, blank=True)
type_of_employment = models.CharField(max_length=255, null=True, blank=True)
work_schedule = models.CharField(max_length=255, null=True, blank=True)
work_format = models.CharField(max_length=255, null=True, blank=True)
link = models.CharField(max_length=255, null=True, blank=True)
address = models.CharField(max_length=255, null=True, blank=True)
created_at = models.DateTimeField(null=True, blank=True)
processed = models.BooleanField()
source = models.CharField()
objects = models.Manager()
def __str__(self):
return f'{self.source} -> {self.id} {self.title}'
class Meta:
managed = False
db_table = "vacancies"
verbose_name_plural = 'Vacancies'

View File

@ -0,0 +1,23 @@
class AppRouter:
route_app_labels = {"hh_parser"}
db_name = "hh_parser"
def db_for_read(self, model, **hints):
if model._meta.app_label in self.route_app_labels:
return self.db_name
return None
def db_for_write(self, model, **hints):
if model._meta.app_label in self.route_app_labels:
return self.db_name
return None
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label in self.route_app_labels and obj2._meta.app_label in self.route_app_labels:
return True
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label in self.route_app_labels:
return db == self.db_name
return None