Add conflictology map mode and fix graph rendering reliability.
Support conflict types, involvement sizing, and map-type toggles while keeping polar sector layout; improve GraphView init retries and edge matching on network maps. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
from django.core.validators import MaxValueValidator, MinValueValidator
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('contacts', '0008_alter_relation_interaction_intensity'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='networkmap',
|
||||
name='conflictology_enabled',
|
||||
field=models.BooleanField(default=False, verbose_name='Режим конфликтологии'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='networkmap',
|
||||
name='conflict_subject',
|
||||
field=models.CharField(blank=True, max_length=255, verbose_name='Предмет конфликта (центр карты)'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='networkmapmembership',
|
||||
name='conflict_involvement',
|
||||
field=models.PositiveSmallIntegerField(
|
||||
default=3,
|
||||
validators=[MinValueValidator(1), MaxValueValidator(5)],
|
||||
verbose_name='Вовлечённость в конфликт (1–5)',
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='relation',
|
||||
name='relation_type',
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
('colleague', 'Коллега'),
|
||||
('friend', 'Друг'),
|
||||
('family', 'Родственник'),
|
||||
('acquaintance', 'Знакомый'),
|
||||
('business', 'Деловой партнёр'),
|
||||
('other', 'Другое'),
|
||||
('conflict_open', 'Открытый конфликт'),
|
||||
('conflict_tension', 'Напряжение'),
|
||||
('conflict_alliance', 'Союз / поддержка'),
|
||||
('conflict_neutral', 'Нейтральная связь'),
|
||||
],
|
||||
default='acquaintance',
|
||||
max_length=50,
|
||||
verbose_name='Тип связи',
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,32 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
def migrate_conflictology_to_map_type(apps, schema_editor):
|
||||
NetworkMap = apps.get_model('contacts', 'NetworkMap')
|
||||
NetworkMapType = apps.get_model('contacts', 'NetworkMapType')
|
||||
|
||||
for network_map in NetworkMap.objects.filter(conflictology_enabled=True).select_related('map_type'):
|
||||
map_type = network_map.map_type
|
||||
if map_type and not map_type.conflictology_enabled:
|
||||
map_type.conflictology_enabled = True
|
||||
map_type.save(update_fields=['conflictology_enabled'])
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('contacts', '0009_conflictology'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='networkmaptype',
|
||||
name='conflictology_enabled',
|
||||
field=models.BooleanField(default=False, verbose_name='Режим конфликтологии'),
|
||||
),
|
||||
migrations.RunPython(migrate_conflictology_to_map_type, migrations.RunPython.noop),
|
||||
migrations.RemoveField(
|
||||
model_name='networkmap',
|
||||
name='conflictology_enabled',
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user