Revision 8cff5e41 snf-astakos-app/astakos/quotaholder/callpoint.py

b/snf-astakos-app/astakos/quotaholder/callpoint.py
44 44
from django.db.models import Q, Count
45 45
from django.db.models import Q
46 46
from .models import (Policy, Holding,
47
                     Commission, Provision, ProvisionLog, CallSerial,
47
                     Commission, Provision, ProvisionLog,
48 48
                     now,
49 49
                     db_get_holding, db_get_policy,
50
                     db_get_commission, db_filter_provision, db_get_callserial)
50
                     db_get_commission, db_filter_provision)
51 51

  
52 52

  
53 53
class QuotaholderDjangoDBCallpoint(object):
......
345 345
        return rejected
346 346

  
347 347
    def add_quota(self,
348
                  context=None, clientkey=None, serial=None,
348
                  context=None,
349 349
                  sub_quota=(), add_quota=()):
350 350
        rejected = []
351 351
        append = rejected.append
352 352

  
353
        if serial is not None:
354
            if clientkey is None:
355
                all_pairs = [(q[0], q[1]) for q in sub_quota + add_quota]
356
                raise QuotaholderError(all_pairs)
357
            try:
358
                cs = CallSerial.objects.get(serial=serial, clientkey=clientkey)
359
                all_pairs = [(q[0], q[1]) for q in sub_quota + add_quota]
360
                raise QuotaholderError(all_pairs)
361
            except CallSerial.DoesNotExist:
362
                pass
363

  
364 353
        sources = sub_quota + add_quota
365 354
        q_holdings = Q()
366 355
        holders = []
......
431 420
        if rejected:
432 421
            raise QuotaholderError(rejected)
433 422

  
434
        if serial is not None and clientkey is not None:
435
            CallSerial.objects.create(serial=serial, clientkey=clientkey)
436 423
        return rejected
437 424

  
438
    def ack_serials(self, context=None, clientkey=None, serials=()):
439
        if clientkey is None:
440
            return
441

  
442
        for serial in serials:
443
            try:
444
                c = db_get_callserial(clientkey=clientkey,
445
                                      serial=serial,
446
                                      for_update=True)
447
                c.delete()
448
            except CallSerial.DoesNotExist:
449
                pass
450
        return
451

  
452
    def query_serials(self, context=None, clientkey=None, serials=()):
453
        result = []
454
        append = result.append
455

  
456
        if clientkey is None:
457
            return result
458

  
459
        if not serials:
460
            cs = CallSerial.objects.filter(clientkey=clientkey)
461
            return [c.serial for c in cs]
462

  
463
        for serial in serials:
464
            try:
465
                db_get_callserial(clientkey=clientkey, serial=serial)
466
                append(serial)
467
            except CallSerial.DoesNotExist:
468
                pass
469

  
470
        return result
471

  
472 425
    def issue_commission(self,
473 426
                         context=None,
474 427
                         clientkey=None,

Also available in: Unified diff