def add(self, unit, translation, user=None): """Adds a new suggestion to the unit. :param translation: suggested translation text :param user: user who is making the suggestion. If it's ``None``, the ``system`` user will be used. :return: a tuple ``(suggestion, created)`` where ``created`` is a boolean indicating if the suggestion was successfully added. If the suggestion already exists it's returned as well. """ dont_add = ( not filter(None, translation) or translation == unit.target or unit.get_suggestions().filter(target_f=translation).exists()) if dont_add: return (None, False) if isinstance(user, User): user = user.id user = user or User.objects.get_system_user().id try: suggestion = Suggestion.objects.pending().get( unit=unit, user_id=user, target_f=translation) return (suggestion, False) except Suggestion.DoesNotExist: suggestion = Suggestion.objects.create( unit=unit, user_id=user, state_id=self.states["pending"], target=translation, creation_time=make_aware(timezone.now())) return (suggestion, True)
def save(self): comment = self.comment comment.submit_date = make_aware(datetime.now()) comment.save() comment_was_saved.send( sender=comment.__class__, comment=comment)
def get_date_interval(month): from xtle.core.utils.timezone import make_aware now = start = end = timezone.now() default_month = start.strftime('%Y-%m') if month is None: month = default_month try: month_datetime = datetime.strptime(month, '%Y-%m') except ValueError: month_datetime = datetime.strptime(default_month, '%Y-%m') start = make_aware(month_datetime) if start < now: if start.month != now.month or start.year != now.year: end = get_max_month_datetime(start) else: end = start start = start.replace(hour=0, minute=0, second=0) end = end.replace(hour=23, minute=59, second=59, microsecond=999999) return [start, end]
def to_datetime(possible_dt): if possible_dt is None: return if isinstance(possible_dt, datetime): return possible_dt if isinstance(possible_dt, date): return make_aware(datetime.combine(possible_dt, datetime.min.time())).astimezone( pytz.timezone("UTC"))
def sub_unmute_qc(self, **kwargs): quality_check = kwargs["quality_check"] submitter = kwargs["submitter"] _kwargs = dict( creation_time=make_aware(timezone.now()), submitter=submitter, field=SubmissionFields.CHECK, type=SubmissionTypes.WEB, old_value=MUTED, new_value=UNMUTED, quality_check=quality_check) _kwargs.update(kwargs) return self.create_submission(**_kwargs)
def reject_suggestion(self, suggestion): store = suggestion.unit.store suggestion.state_id = self.states["rejected"] suggestion.review_time = make_aware(timezone.now()) suggestion.reviewer = self.reviewer suggestion.save() unit = suggestion.unit if unit.changed: # if the unit is translated and suggestion was rejected # set the reviewer info unit.change.reviewed_by = self.reviewer unit.change.reviewed_on = suggestion.review_time unit.change.save() update_data.send(store.__class__, instance=store)