return None hook_id = self.check_hook(gh, force=True) if hook_id: identifiers = self.github_callable_identifiers_for_hooks + [hook_id] gh_callable = self.__class__.objects.get_github_callable(gh, identifiers) gh_callable.delete() self.hook_set = False self.save(update_fields=['hook_set']) return True return False contribute_to_model(_Repository, core_models.Repository) class EventManager(object): def __init__(self, repository_payload=None, repository=None): if repository is not None: self.repository = repository else: self.get_repository(repository_payload) def get_repository(self, repository_payload): try: self.repository = core_models.Repository.objects.get(github_id=repository_payload['id']) except Exception: self.repository = None return self.repository
from events.models import Event, EventPart from .managers import ActivityManager class _Repository(models.Model): class Meta: abstract = True @property def activity(self): from .limpyd_models import RepositoryActivity a, created = RepositoryActivity.get_or_connect(object_id=self.id) return a contribute_to_model(_Repository, Repository) class _Issue(models.Model): class Meta: abstract = True @property def activity(self): if not hasattr(self, '_activity_limpyd_object'): from .limpyd_models import IssueActivity self._activity_limpyd_object, created = IssueActivity.get_or_connect(object_id=self.id) return self._activity_limpyd_object def ask_for_activity_update(self): from .tasks import ResetIssueActivity
if html_part is None: return '' return '<div class="part-%s">%s</div>' % (self.field, html_part) from .trackers import * class _Repository(models.Model): class Meta: abstract = True @property def counters(self): if not hasattr(self, '_counters_limpyd_object'): from .limpyd_models import RepositoryCounters self._counters_limpyd_object, created = RepositoryCounters.get_or_connect(repository_id=self.id) if created: self._counters_limpyd_object.update_global() self._counters_limpyd_object.update_users() return self._counters_limpyd_object def ask_for_counters_update(self): from .tasks import ResetRepositoryCounters ResetRepositoryCounters.add_job(self.pk, priority=-5, delayed_for=timedelta(minutes=15)) contribute_to_model(_Repository, Repository) from .tasks import *
self.user.username, self.get_state_display()) class _Repository(models.Model): class Meta: abstract = True def has_subscriptions(self, states=SUBSCRIPTION_STATES.READ_RIGHTS): """ Return True if the repository has at least one subscription with the given rights (by detault all reading&more rights) """ return self.subscriptions.filter(state__in=states).exists() contribute_to_model(_Repository, Repository) class _GithubUser(models.Model): class Meta: abstract = True AUTHORIZED_RIGHTS = { SUBSCRIPTION_STATES.ADMIN: ('admin', ), SUBSCRIPTION_STATES.USER: ('admin', 'push', ), SUBSCRIPTION_STATES.READ: ('admin', 'push', 'pull', ), } MAX_RIGHT = { 'admin': SUBSCRIPTION_STATES.ADMIN, 'push': SUBSCRIPTION_STATES.USER,