Ejemplo n.º 1
0
def handle_submission_added(**kwargs):
    submission = kwargs["instance"]
    is_system_user = (
        submission.submitter == get_user_model().objects.get_system_user())
    if is_system_user:
        return
    update_scores.send(submission.unit.store.__class__,
                       instance=submission.unit.store,
                       users=[submission.submitter_id],
                       date=localdate(submission.creation_time))
Ejemplo n.º 2
0
 def save_subs(self, subs):
     subs = list(subs)
     if not subs:
         return
     self.unit.submission_set.bulk_create(subs)
     update_scores.send(
         self.unit.store.__class__,
         instance=self.unit.store,
         users=[sub.submitter_id for sub in subs],
         date=localdate(self.unit.mtime))
Ejemplo n.º 3
0
 def update_scores(self, objects):
     tps = {}
     if not isinstance(objects, list):
         scores = objects.select_related("user", "store",
                                         "store__translation_project")
     else:
         scores = objects
     for score in scores:
         tp = score.store.translation_project
         tps[tp.id] = tps.get(tp.id, dict(tp=tp, stores=[], users=[]))
         tps[tp.id]["stores"].append(score.store)
         tps[tp.id]["users"].append(score.user)
     for tp in tps.values():
         update_scores.send(tp["tp"].__class__,
                            instance=tp["tp"],
                            stores=tp["stores"],
                            users=tp["users"])
Ejemplo n.º 4
0
def handle_suggestion_change(**kwargs):
    suggestion = kwargs["instance"]
    is_system_user = (
        (suggestion.is_pending and
         (suggestion.user_id == get_user_model().objects.get_system_user().id))
        or (not suggestion.is_pending and
            (suggestion.reviewer_id
             == get_user_model().objects.get_system_user().id)))
    if is_system_user:
        return
    change_date = (suggestion.review_time
                   if not suggestion.is_pending else suggestion.creation_time)
    update_scores.send(suggestion.unit.store.__class__,
                       instance=suggestion.unit.store,
                       users=[
                           suggestion.user_id
                           if suggestion.is_pending else suggestion.reviewer_id
                       ],
                       date=localdate(change_date))
Ejemplo n.º 5
0
def _callback_handler(sender, updated, **kwargs):

    bulk_xtle = bulk_operations(
        models=(
            UserStoreScore,
            TPData,
            TPChecksData,
            StoreData,
            StoreChecksData))

    with keep_data(signals=(update_revisions, )):
        with bulk_xtle:

            @receiver(update_revisions)
            def handle_update_revisions(**kwargs):
                updated.revisions = True

            if updated.checks:
                update_checks.send(
                    sender.__class__,
                    instance=sender,
                    units=updated.checks,
                    **kwargs)
            if updated.data:
                update_data.send(
                    sender.__class__,
                    instance=sender,
                    **kwargs)
            if updated.scores:
                update_scores.send(
                    sender.__class__,
                    instance=sender,
                    users=updated.scores,
                    **kwargs)
    if updated.revisions:
        update_revisions.send(
            sender.__class__,
            instance=sender,
            keys=["stats", "checks"])
Ejemplo n.º 6
0
def handle_store_score_updated(**kwargs):
    tp = kwargs["instance"].store.translation_project
    update_scores.send(tp.__class__,
                       instance=tp,
                       users=[kwargs["instance"].user_id],
                       date=kwargs["instance"].date)
Ejemplo n.º 7
0
 def update_scores(self, objects):
     users = (set(user
                  for user in objects.values_list("user_id", flat=True))
              if not isinstance(objects, list) else set(x.user_id
                                                        for x in objects))
     update_scores.send(get_user_model(), users=users)