forked from 20/mmedia
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsignals.py
34 lines (26 loc) · 1.11 KB
/
signals.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from django.dispatch import receiver
from django.core import serializers
from django.conf import settings
from gitannex.signals import filesync_done
from gitannex.models import GitAnnexRepository
import os
"""
Arquivo de definicao dos sinais.
Os sinais sao usados para interligar diferentes *apps* do Django.
"""
@receiver(filesync_done, sender=GitAnnexRepository)
def syncGitAnnexRepository(sender, **kwargs):
"""Inicia a sincronizacao do repositorio git annex."""
createObjectsFromFiles(os.path.join(settings.MEDIA_ROOT, settings.GITANNEX_DIR, sender.repositoryURLOrPath))
def createObjectsFromFiles(pathToFiles):
"""Recria os objetos no Django a partir dos objetos serializados em XML."""
print ">>> DESERIALIZING"
for root, dirs, files in os.walk(pathToFiles):
for file in files:
if file.endswith('.xml'):
xmlIn = open(os.path.join(root, file), "r")
for obj in serializers.deserialize("xml", xmlIn):
obj.id = None
obj.pk = None
obj.save()
os.remove(os.path.join(root, file))